| .. _direct_005flinux_005fboot: |
| |
| Direct Linux Boot |
| ----------------- |
| |
| This section explains how to launch a Linux kernel inside QEMU without |
| having to make a full bootable image. It is very useful for fast Linux |
| kernel testing. |
| |
| The syntax is: |
| |
| .. parsed-literal:: |
| |
| |qemu_system| -kernel bzImage -drive file=rootdisk.img,format=raw -append "root=/dev/sda" |
| |
| Use ``-kernel`` to provide the Linux kernel image and ``-append`` to |
| give the kernel command line arguments. The ``-initrd`` option can be |
| used to provide an INITRD image. |
| |
| The ``-shim`` option specifies the ``shim.efi`` binary. This is needed |
| when you are booting UEFI firmware and using the ``-kernel`` option to |
| tell UEFI to boot a specific kernel image, and the UEFI firmware you |
| are booting has UEFI secure boot enabled. |
| |
| When this option is specified, the guest UEFI firmware will first |
| load, verify and run the shim binary, which is typically signed by |
| Microsoft so the firmware accepts it. The shim binary in turn will |
| load and verify the Linux kernel. The kernel is typically signed by |
| the distro and the certificates needed to verify them are compiled |
| into the shim binary, so shim and kernel must come from the same Linux |
| distribution. |
| |
| Usually you can find shim.efi as ``EFI/BOOT/BOOT{X64,AA64}.EFI`` on |
| distro install media. You might find a second shim copy in the |
| ``EFI/$distro/`` directory. |
| |
| If you do not need graphical output, you can disable it and redirect the |
| virtual serial port and the QEMU monitor to the console with the |
| ``-nographic`` option. The typical command line is: |
| |
| .. parsed-literal:: |
| |
| |qemu_system| -kernel bzImage -drive file=rootdisk.img,format=raw \ |
| -append "root=/dev/sda console=ttyS0" -nographic |
| |
| Use :kbd:`Ctrl+a c` to switch between the serial console and the monitor (see |
| :ref:`GUI_keys`). |