The following tables compare general and technical information for a number of available boot loaders.
The QEMU PC System emulator simulates the following peripherals: - qemu-kvm(1) - Linux man page Name. Qemu-doc - QEMU Emulator User Documentation Synopsis. Usage: qemu options diskimage Description. The QEMU PC System emulator simulates the following peripherals:. The MAC address can be changed to mac, the device address set to addr.
- Virtual machines let users emulate one operating system within another, which means you can have the best of all the software worlds. Don't stick with just what Windows or MacOS offers you, expand.
- Network connection setup for the KVM Images. In order to allow qemu to connect via the hostsystem to the external network there has to exist a bridge and you have to connect your existing network interface eth0 to a bridge.
Features[edit]
Note: The column MBR (Master Boot Record) refers to whether or not the boot loader can be stored in the first sector of a mass storage device. The column VBR (Volume Boot Record) refers to the ability of the boot loader to be stored in the first sector of any partition on a mass storage device.
Name | License | Can reside in | Can boot from | Can boot | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ESP (UEFI) | MBR | VBR | Floppy | Hard disk | Second Hard disk | Logical partitions | CD-ROM | Floppy | USB | Zip | LAN | MS-DOS | Windows 9x/Me | Windows NT series | Windows Vista/7/8/10 | Linux | ReactOS | MenuetOS | *BSD | Mac OS X | ||
Acronis OS Selector | Proprietary | ? | ? | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | Yes | ? | ? | Yes | Yes |
AiR-Boot | GPLv3 | ? | Yes | No | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes | Yes | Yes | ? | ? | ? | ? |
AKernelLoader | GPLv2 | ? | Yes | No | Yes | Yes | Yes | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | Yes | ? | ? | ? | ? |
Barebox | GPLv2 | Yes | Yes | No | ? | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | ? | ? | ? | ? | Yes | ? | ? | ? | ? |
BootIt Bare Metal (formerly BootIt Next Generation) | Proprietary | ? | ? | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | ? |
BootKey | Proprietary | ? | No | No | Yes | No | No | No | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | ? |
BootManager | MIT | ? | Yes | No | No | Yes | ? | ? | ? | ? | ? | ? | No | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Calls GRUB or LILO | ? | ? | ? | ? |
BootX (Apple) | Proprietary | ? | ? | ? | ? | Yes | ? | ? | ? | ? | ? | ? | Yes | ? | ? | ? | ? | ? | ? | ? | ? | Yes |
BootX (Linux) | Proprietary | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes | ? | ? | ? | ? |
Darwin Boot Loader | APSL 2.0 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes | Yes |
Das U-Boot | GPLv2 | ? | ? | ? | ? | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | ? | ? | ? | ? | Yes | ? | ? | Yes (FreeBSD) | ? |
GAG | GPLv2+ | ? | Yes (SafeBoot) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Calls GRUB or LILO | Calls bootloader | Calls bootloader | Calls bootloader | No |
GRUB Legacy | GPLv2+ | ? | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Yes | Calls FreeLoader | Yes | Yes | Yes |
GNU GRUB | GPLv3 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Yes | Calls FreeLoader | Yes | Yes | Yes |
GRUB4DOS | GPLv2+ | ? | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Yes | ? | ? | ? | ? |
GPLv2 | ? | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Calls NTLDR | Yes | Yes | ? | ? | ? | ? | |
systemd-boot / Gummiboot | LGPL 2.1 | Yes | No | No | ? | Yes | Yes | Yes | ? | ? | Yes | ? | ? | No | No | Windows Server 2013 64bits with UEFI only | Calls Windows Boot Manager[1] | Yes | ? | ? | UEFI only | Yes[1] |
iBoot | Proprietary | Yes | ? | ? | ? | Yes | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Yes |
Libreboot | GPLv3 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
LILO | BSD license | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | Yes | Calls NTLDR | Yes | Yes | ? | ? | Calls biosboot (FreeBSD, PC-BSD, ...) | ? |
loader(8) | BSD license | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | ? | ? | ? | ? | ? | ? | ? | Yes (FreeBSD, TrueOS) | ? |
loadlin | GPLv2+ | ? | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | No | ? | ? |
MasterBooter | Proprietary | ? | Yes | ? | ? | Yes | Yes | Yes | ? | Yes | ? | ? | ? | Yes | Yes | Yes | Yes | Yes | ? | ? | Yes | ? |
NTLDR | Proprietary | ? | No | Yes | Yes | Yes | ? | No | No | Yes | Yes | ? | ? | Yes | Yes | Yes | No | Calls GRUB4DOS | ? | ? | ? | Calls Darwin bootloader[2] |
OSL2000 Boot Manager | Proprietary | ? | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Calls GRUB or LILO | ? | ? | ? | ? |
PLoP Bootmanager | Proprietary | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls GRUB or LILO | ? | ? | ? | ? |
RedBoot | GPLv2+ | ? | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Yes | Calls FreeLoader | Yes | Yes | Yes |
rEFInd | GPLv3/BSD license | Yes | No | No | No | Yes | Yes | ? | Yes | ? | Yes | ? | No | ? | ? | Yes | Yes | Yes | ? | ? | Yes | Yes |
Smart Boot Manager | GPLv2+ | ? | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | Yes | Yes | Yes | ? | Yes | ? | ? | Yes | ? |
SPFdisk | GPLv2+ | ? | Yes | Yes | Yes | Yes | Yes | ? | ? | Yes | ? | ? | ? | Yes | Yes | ? | ? | ? | ? | ? | ? | ? |
SYSLINUX | GPLv2+ | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Calls NTLDR | Calls Windows Boot Manager | Yes | ? | Yes | via mboot.c32 module [2] | ? |
XOSL | GPLv2 | ? | No | No | Yes | Yes | Yes | Yes | Yes | ? | No | ? | No | Yes | Yes | Yes | Yes | Yes | ? | ? | ? | ? |
Windows Boot Manager | Proprietary | Yes | No | Yes | No | Yes | Yes | ? | Yes | Yes | Yes | Yes | ? | ? | Yes | Calls NTLDR | Yes | Calls GRUB or LILO | ? | ? | ? | ? |
FreeLoader (ReactOS Boot Loader) | GPLv2+ | ? | No | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | ? | Yes | Yes | Partial[3] | Calls Windows Boot Manager | Yes | Yes | ? | ? | ? |
Name | Software license | Can reside in | Can boot from | Can boot | ||||||||||||||||||
ESP (UEFI) | MBR | VBR | Floppy | Hard disk | Second hard disk | Logical partitions | CD-ROM | Floppy | USB | Zip | LAN | MS-DOS | Windows 9x/Me | Windows NT series | Windows Vista/7/8 | Linux | ReactOS | MenuetOS | *BSD | Mac OS X |
Technical information[edit]
Name | Advanced command | Scriptable | Supported architecture | Supported filesystem | Supported OS | Supported executable | Supported protocol | Supported decompression | Others |
---|---|---|---|---|---|---|---|---|---|
GRUB Legacy | Yes | No | x86 (PC) | FAT16, FAT32, MINIX fs, Linux ext2, ext3, ext4, ReiserFS, JFS, XFS, VSTa fs, Btrfs | FreeBSD, NetBSD, OpenBSD, GNU/Linux | ELF | TFTP | gzip | |
GRUB 2 | Yes | Yes | x86 (PC, UEFI, coreboot, OLPC, Mac), IA-64, ARM (U-Boot, UEFI), PowerPC (Mac, Pegasos II, IBM), MIPS, SPARC (SPARC v9), QEMU | ext2, ext3, ext4, btrfs, zfs, ufs, minix, iso9660, udf, jfs, hfs, hfs+, afs, affs, sfs, xfs, reiserfs, tar, cpio, NTFS, FAT16, FAT32 | Linux (PC, mac), FreeBSD (PC), OpenBSD (PC), NetBSD (PC) | Multiboot and others | ? | gzip, xz[4] | |
LILO | No | No | x86 (PC) | indifferent[citation needed] | ? | ? | ? | bzip2, gzip | |
loader(8) | Yes | Yes | x86 (PC, UEFI, coreboot, OLPC, Mac), ARM (U-Boot, UEFI), MIPS, PowerPC, SPARC v9 | FAT12/FAT16/FAT32/VFAT, ext2, NANDFS, ISO-9660, UFS, ZFS | FreeBSD | ELF | TFTP, NFS | gzip, bzip2 | |
LOLO (Logic PD) | Yes | Yes | ARM7, ARM9, ARM11, Cortex-A8, StrongARM, SH, ColdFire | FAT16, FAT32, YAFFS1, YAFFS2 | Linux, WinCE | ELF, binary, BIN (WinCE), SREC | TFTP | ? | Supported devices: MCF54xx, MCF5329, MCF5373, LLH7A400, LLH7A404, LLH79520, LLH79524, LSH7727, LSH7750, LSH7760, PXA270, PXA320, IMX31, IMX27, OMAP35xx, OMAP37xx |
SYSLINUX | via cmd.c32 module | via lua.c32 module | x86 (PC) | ext2, ext3, ext4, btrfs, ufs 1/2, FAT16, FAT32, iso9660, udf, NTFS (since 4.06), ? | GNU/Linux | Multiboot[5] | TFTP | gzip, bzip2, lzo, zip, lzma, ? | |
AKernelLoader | No | No | x86 (PC) | FAT32, ext2, ext3 | GNU/Linux | ELF, Binary | ? | ? | |
Yaboot | No | No | PowerPC (Open Firmware) | ext2, ext3, ext4, hfs | GNU/Linux, FreeBSD, NetBSD, OpenBSD, MacOSX | ? | ? | ? | |
RedBoot | Yes | yes (boot only) | ARM, ColdFire, H8300, x86, Freescale/Motorola 68000, MIPS, PPC, SH, SPARC, SPARCLite | JFFS2 | Linux, eCos | ELF | TFTP, serial (X-modem) | gzip | |
Das U-Boot | Yes | Yes | PPC, ARM, AVR32, Blackfin, ColdFire, IXP, Leon2, m68k, MicroBlaze, MIPS, NIOS, NIOS2, PXA, x86, StrongARM, SH2, SH3, SH4, ... | FAT12(RO), FAT16, FAT32, VFAT, ext2, ext3, ext4, jffs2, cramfs, reiserfs, yaffs2, ubifs, nfs | 4_4bsd, Artos, Dell, Esix, FreeBSD, Irix, Linux, LynxOS, NCR, NetBSD, OpenBSD, pSOS, QNX, RTEMS, SCO, Solaris, SVR4, U-Boot, VXworks | ELF, U-Boot image format | TFTP, NFS, serial (S-Record, Y-Modem, Kermit binary protocol) | bzip2, gzip, lzma | |
Barebox | Yes | Yes | ARM, Blackfin, NIOS2, MIPS, x86, PPC | FAT, VFAT, ext2, ext3, ext4, bpkfs, cramfs, NFS, EFI, efivarfs, ubifs | Linux | ELF, U-Boot image format | TFTP, NFS, serial (S-Record, Y-Modem, Kermit binary protocol) | bzip2, gzip, lz4, xz, lzo | |
kboot | ? | ? | x86, PowerPC64 | most supported by Linux Kernel (ext2, ext3, ext4, reiserfs, xfs, jfs, etc..) | Linux | ? | HTTP, FTP, TFTP | ? | SSH, NFS support. kexec-based bootloader. |
Runnix | ? | ? | ? | ? | Linux | ? | ? | ? | kexec and SYSLINUX based bootloader. |
kexec-loader | No | No | x86 | most supported by Linux Kernel (ext2, ext3, ext4, reiserfs, xfs, jfs, etc..) | Linux/multiboot | ? | No networking | gzip (for kernel modules) | Kernel/multiboot module support |
NTLDR | No | No | x86 (PC) | ? | Windows | ? | ? | ? | default bootloader on Windows NT |
Windows Boot Manager | No | No | x86 (PC), ARM (only on Windows Mobile remake) | NTFS | Windows Vista, 7, 8, and 10 | Portable Executable | ? | ? | Successor of NTLDR; used on Vista and up. |
FREELDR | No | No | x86 (PC), ARM, PowerPC | ext2, FAT12, FAT16, FAT32, ISO, NTFS,BtrFS | ReactOS, Linux, Windows NT 4.0, Windows 2000, Windows XP, Windows 2003 | ? | ? | ? | clone of NTLDR |
boot0 | ? | ? | ? | ? | ? | ? | ? | ? | FreeBSD's master boot record |
extipl | ? | ? | ? | ? | ? | ? | ? | ? | IBM IPL upper compatible |
Multiple Boot Manager | ? | ? | ? | ? | PC DOS, MS-DOS, Windows, OS/2, Linux, FreeBSD, NetBSD, OpenBSD, BeOS, B-right/V, Solaris, OpenStep, Plan 9, EOTA[6] | ? | ? | ? | |
bootload (Technologic Systems) | ? | ? | ARM | ? | Linux | ? | ? | ? | Proprietary |
Name | Advanced command | Scriptable | Supported architecture | Supported filesystem | Supported OS | Supported executable | Supported protocol | Supported decompression | Others |
Notes[edit]
- ^ abRod Smith, 'Managing EFI Boot Loaders for Linux: Using gummiboot', 5 November 2012.
- ^http://wiki.osx86project.org/wiki/index.php/Chain0
- ^http://www.reactos.org/newsletter-37 - Freeloader can load Windows Server 2003 directly, as long as it is on a FAT32 partition
- ^'GNU GRUB Manual 2.02: Features'.
- ^'Mboot.c32 - Syslinux Wiki'. www.syslinux.org. Retrieved 2018-10-12.
- ^ELM - Multiple Boot Manager
External links[edit]
- PLoP Let you boot legacy PCs from CD-ROM and USB without BIOS support
QEMU supports networking by emulating some popular network cards (NICs), and establishing virtual LANs (VLAN). There are four ways how QEMU guests can be connected then: user mode, socket redirection, Tap and VDE networking.
- 1User mode networking
- 2TAP interfaces
User mode networking[edit]
If no network options are specified, QEMU will default to emulating a single Intel e1000 PCI card with a user-mode network stack that bridges to the host's network. The following three command lines are equivalent:
To use this network setup with the Linux kernel, you must set the configuration option CONFIG_E1000=y when compiling.
The -net option is superseded by -netdev in newer QEMU versions.[1]
The guest OS will see an E1000 NIC with a virtual DHCP server on 10.0.2.2 and will be allocated an address starting from 10.0.2.15. A virtual DNS server will be accessible on 10.0.2.3, and a virtual SAMBA file server (if present) will be accessible on 10.0.2.4 allowing you to access files on the host via SAMBA file shares.
User mode networking is great for allowing access to network resources, including the Internet. In particular, it allows ssh from the guest to the host. By default, however, it acts as a firewall and does not permit any incoming traffic. It also doesn't support protocols other than TCP and UDP - so, for example, ping and other ICMP utilities won't work.
Redirecting ports[edit]
To allow network connections to the guest OS under user mode networking, you can redirect a port on the host OS to a port on the guest OS. This is useful for supporting file sharing, web servers and SSH servers from the guest OS.
Here is how to set up QEMU with a Windows XP guest sharing files and web pages under user mode networking. TCP port 5555 on the host is redirected to the guest's port 80 (the web server) and TCP port 5556 on the host is redirected to the guest's port 445 (Windows networking):
NB: When sharing folders from guest to host via Windows networking, you must specify a password for the user that mount will use to login; if you try to use no password, mount will fail with an I/O error.
TAP interfaces[edit]
QEMU can use TAP interfaces to provide full networking capability for the guest OS. This can be useful when the guest OS is running several network services and must be connected to via standard ports; where protocols other than TCP and UDP are required; and where multiple instances of QEMU need to connect to each other (although this can also be achieved in user mode networking via port redirects, or via sockets).
In QEMU 1.1 and newer the network bridge helper can set tun/tap up for you without the need for additional scripting.
For older versions, setting up a TAP interface is a bit more complicated than user mode networking. It requires installing virtual private networking (VPN) on the host OS, and then establishing a bridge between the host's networking and the virtual network.
Here's how to do it on Fedora 8 with static IP address assignment. The procedure should be very similar on other Linux distros, and probably not too different on other *nix systems.
TAP/TUN device[edit]
According to tuntap.txt, we create the TAP/TUN device first:
qemu-ifup[edit]
First, set up a script to create the bridge and bring up the TAP interface. We'll call this script /etc/qemu-ifup
.
qemu-ifdown[edit]
You will also need a script to reset your networking after QEMU exits. To be consistent, we'll call it /etc/qemu-ifdown
.
Allowing users to call the scripts[edit]
In qemu 1.1 and above just use the helper program, which doesn't require any scripts and can be setuid root.
For older versions, the two scripts above need to be run as the superuser, so that they can modify the network settings of the system. The most convenient way to achieve that is to permit users of QEMU to call the scripts using the sudo
command. To set this up, add the following to the file /etc/sudoers
:
Starting QEMU with a TAP interface[edit]
Now create a script to start QEMU with a VLAN, and clean up after itself when it exits. This one uses tap0. Specifying script=no
tells QEMU to just use the tap device without calling the scripts - we do this so that QEMU can be run as a regular user, not root.
Run that script, and it will create a TAP interface, bridge it to eth0, run QEMU, and drop the bridge and TAP interface again on exit.
Windows Vista and later – Network Location[edit]
Windows Vista and later classify network connections as either public or private. The classification determines the firewall rules that will be applied to that connection. Windows maintains a list of known connections and if it finds a network connection which is not in that list it will prompt the user to indicate whether this is a 'Home', 'Work' or 'Public' network. The network is identified by the MAC address of its default gateway, which QEMU seems to allocate randomly each time it starts. The result is that every time a Windows session is started with QEMU it pops up a window asking you to indicate the 'network location'. This is not normally a serious problem, but it can be annoying.
The solution is to force the netdev interface to always use the same MAC address. QEMU does not appear to provide an option to set this, but it can be set in the ifup script. Using Iproute2, which has superceded ifconfig, the command:
will change the MAC address of the host-side interface to that given, which could be any legal MAC address that is unique within the local network.
Sockets[edit]
QEMU can connect multiple QEMU guest systems on a VLAN using TCP or UDP sockets.
To do: |
SMB server[edit]
If the host system has a SMB server installed (SAMBA/CIFS on *nix), QEMU can emulate a virtual SMB server for the guest system using the -smb option. Specify the folder to be shared, and it will be available to the guest as 10.0.2.4qemu (or you can put 10.0.2.4 into the hosts or lmhosts file as smbserver and map to smbserverqemu).
This isn't strictly necessary, because guests in QEMU can typically access SMB servers in the host environment. It can be quite useful, however, for setting up independent workspaces for each QEMU guest without needing to configure SMB shares for each one.
External links[edit]
Mac Os X 10.3 Qemu
- documentation[1]
Qemu Gui Mac
References[edit]
- ↑'qemu git'. commit message. September 14, 2012. http://git.qemu.org/?p=qemu.git;a=commit;h=08d12022c7f1aba6acccc75150659c6e4c9dff23.