Slashdot Mirror


The Boot Loader Showdown

Francesca writes "What utility do practically all Linux users use, regardless of their job or expertise? A boot loader. In this article from IBM, see how a boot loader works, meet two popular loaders -- LILO (LInux LOader) and GNU GRUB (GRand Unified Boot loader) -- and review the pros and cons of each." From the article: "Most simply, a boot loader loads the operating system. When your machine loads its operating system, the BIOS reads the first 512 bytes of your bootable media (which is known as the master boot record, or MBR). You can store the boot record of only one operating system in a single MBR, so a problem becomes apparent when you require multiple operating systems. Hence the need for more flexible boot loaders."

39 of 349 comments (clear)

  1. Lilo...pros? by Anonymous Coward · · Score: 2, Informative

    There are pros to Lilo?
    It's such a heap of crap. The only reason it's still used is because people were brought up on it.

    1. Re:Lilo...pros? by Anonymous Coward · · Score: 1, Informative

      If GRUB doesn't work, then you have no choice. And except for the inflexibility at boot time (can't change boot parameters and such), it really does fine. It does it's job and doesn't cause me any problems.

  2. Linux bios by goombah99 · · Score: 4, Informative
    or why not skip the entire boot loader and go straight to a linux bios

    then microsoft could write a winLoader to load windows if you wanted to dual boot your linux machine :-)

    seriosly for anyone who uses linux clusters or is otherwise uninterested in Dual boot, it makes sense to flash you roms and get it over with.

    --
    Some drink at the fountain of knowledge. Others just gargle.
  3. Re:AMD64 by Homology · · Score: 2, Informative
    The bad part here is that Grub hangs whenever I try to get it to load Windows. I don't think it likes a 32 bit kernel image. So.... I have to go into the BIOS and change primary boot drives everytime I want to switch

    You can try GAG to see if it works with AMD64.

  4. Re:Okay...How do I install these things... by 10101001011 · · Score: 2, Informative

    Taken from Usenet --

    If you have a WinXP installation CD, just boot it and select the repair option and then do a fixmbr and a fixboot on the boot drive. That should re-install the WinXP mbr and boot sector. You would need something like Partition Magic to reclaim the linux partition for WinXP. I am not sure what to do if you don't have a WinXP installation CD. (Some WinXP installations only have a "recovery" CD). You could try to find a Win98 boot floppy or a DOS boot floppy and then do a fdisk /mbr to restore a DOS mbr. That should get rid of Grub, but you will probably still have a problem booting WinXP.

    jimbo

  5. Re:Okay...How do I install these things... by Kalak · · Score: 4, Informative

    Backup our data, etc.

    Boot off of the Windows CD, and go into the recovery console. I always forget which command, so I do both:
    fixmbr
    fixboot

    --
    I am, and always will be, an idiot. Karma: Coma (mostly effected by .hack)
  6. Re:Why couldn't they post this BEFORE the weekend? by Homology · · Score: 3, Informative

    If you use i386, then ditch Lilo and GRUB, and use something that works out of the box : GAG

  7. Re:AMD64 by Svenne · · Score: 5, Informative

    Of course, LILO doesn't work with AMD64

    Yes it does. It's working just fine for me, thank you very much. I'm using Ubuntu AMD64 with LILO, since I couldn't quite get the hang on GRUB which was installed by default.

    --

    Slagborr
  8. Re:A study about Linux bootloaders maybe? by game+kid · · Score: 2, Informative
    you can use the Windows Boot Manager to boot Linux, but...its a major pita

    You mean without WinGrub? I use it with Windows XP/Fedora Core 4 and love it.

    As for LILO...never tried it.

    --
    You can hold down the "B" button for continuous firing.
  9. Re:Useful tool, but necessary article? by Kalzus · · Score: 2, Informative

    LILO's "compact" option would probably have helped you out here.

    --
    "The Devil does not know a lot because He's the Devil, He knows a lot because he's old." -- unknown
  10. Re:Okay...How do I install these things... by cpugeniusmv · · Score: 2, Informative

    It does, actually. Though fixmbr from the Recovery Console is the preferred method.

  11. Re:Get off BIOS by xenocide2 · · Score: 2, Informative

    You have no choice in the matter. The end.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  12. It's fixmbr. by game+kid · · Score: 4, Informative

    Just for reference. fixboot fixes something else (NTLDR? first sector of booting partition? I forget...).

    --
    You can hold down the "B" button for continuous firing.
  13. Explaining the joke :-P by einhverfr · · Score: 2, Informative

    If you log in as root, you might see a prompt that ends in #.

    If you type # in a Bash shell, the rest of the line is handled as a comment.

    But it is convention to tell users to type a command and start it with a # to denote root login. If you type the # however, Bash interprets it as a comment and doesn't do anything :-)

    --

    LedgerSMB: Open source Accounting/ERP
  14. Re:Why couldn't they post this BEFORE the weekend? by Anonymous Coward · · Score: 1, Informative

    You can even boot windows from a non-primary drive, simply put in grub.conf in the windows section:

    map (hd0) (hdx)
    map (hdx) (hd0)

    where hdx is the disk with windows.

  15. Re:Could a micro-OS bootloader aid security? by AdamInParadise · · Score: 2, Informative

    You've just described the basic architecture proposed by the TCG. Microsoft is planning to use this architecture in order to implement Palladium (Palladium and the TCG are two different things).

    Anyway, this concept can be traced back to the seventies. It's coming alive only now because:
      -- security is much more of an issue,
      -- it's just damn hard to get it right,
      -- it's just damn hard to get everyone to agree on a common spec.

    Regards

    --
    Nobox: Only simple products.
  16. GRUB on AMD64 by Craig+Ringer · · Score: 2, Informative

    To load Windows, GRUB just chain-loads the bootloader on the primary Windows partition (what Windows will use as C: drive). That's actually 16 bit code, even on AMD64.

    WinXP 64 bit ed may be different, but your post suggests you're using the basic XP.

    If I recall correctly a definition like:

    root (hd0,0)
    chainload +1

    should do the trick (adjusting root to match your win32 c: ). I use Fedora, so to be honest it "just works".

    *HOWEVER* it sounds like you're trying to boot XP off a secondary disk. If XP thinks that disk is the primary disk (ie you installed XP then rearranged the disks), it'll get really confused when you load its boot sector, and will fail to boot. I don't know if it's an easy thing to fix - I've always just installed windows where I expect it to live (it installs quite happily on a secondary disk).

    You might be able to boot the XP cd, run "fixboot" and "fixmbr" from the recovery console, then re-install GRUB from a Linux rescue CD.

    1. Re:GRUB on AMD64 by spleentor · · Score: 3, Informative

      if windows is on a secondary hard drive, but it thinks its on a primary drive, you need to edit grubs menu.lst as such:

      title Windows

      root (hd1,0)

      map (hd0) (hd1)

      map (hd1) (hd0)

      chainloader +1

  17. Re:Huh? by TheRaven64 · · Score: 4, Informative

    The windows bootloader can boot other OSes as well. Just dd the first 512 bytes of a partition to a file and add that file as a valid target in C:\boot.ini (or use the bootpart utility to do it for you).

    --
    I am TheRaven on Soylent News
  18. XOSL by crache · · Score: 2, Informative

    Anyone remember XOSL? I thought it was great.
    Unfortunately the Open Source model didn't work
    out so great for it:
    http://xosl.sourceforge.net/manifesto.html
    No longer active..

    Mirror of the Original Site:
    http://www2.arnes.si/~fkomar/xosl.org/

  19. NT Loader by teslatug · · Score: 5, Informative

    The author says "Unlike the Linux boot loaders, the majority of Windows boot loaders will not allow you to load Linux."

    I don't know what he calls a majority, but the NT loader (used by Windows NT, 2K, XP, 2003) can boot Linux. It's just that Microsoft is being a pain about it. You have to first dd the first 512 bytes of your partition, save those to a file, and create an entry in boot.ini which points to that file.
    For example:
    dd if=/dev/hda1 of=/mnt/cpart/linux.mbr bs=512 count=1

    [Boot Loader]
    Timeout=5
    Default=multi(0)disk(0)rdisk(0)partition(4)\WINNT
    [Operating Systems]
    multi(0)disk(0)rdisk(0)partition(4)\WINNT="Microso ft Windows 2000 Professional" /fastdetect
    C:\linux.mbr = "Linux"

    1. Re:NT Loader by bobbozzo · · Score: 2, Informative

      If you install lilo or grub into the boot sector of the partition linux which is installed, then you can point the NT loader at that partition without having to copy anything.

      --
      Nothing to see here; Move along.
    2. Re:NT Loader by allan_q · · Score: 3, Informative
      I don't know what he calls a majority, but the NT loader (used by Windows NT, 2K, XP, 2003) can boot Linux. It's just that Microsoft is being a pain about it. You have to first dd the first 512 bytes of your partition, save those to a file, and create an entry in boot.ini which points to that file.

      An easier way is to use BootPart to automate the whole process. It will even add an entry in boot.ini.

      From the site:
      BOOTPART creates a 512 byte file which contains an image of the boot sector that loads the boot sector of the partition. After, this file is declared in C:\BOOT.INI (a text file used by the Windows NT boot menu).

    3. Re:NT Loader by Anonymous Coward · · Score: 1, Informative

      The NT Loader isn't booting Linux. It's loading LILO (or GRUB), and LILO boots Linux.

  20. Re:booting from CD with LILO or GRUB by mopslik · · Score: 2, Informative

    It's better to try something like Smart Boot Manager. It brings up a menu allowing you to boot from any of your listed devices.

    I have used it several times when installing Linux on older laptops that do not allow CD-booting.

  21. grub-2 all the way by Meeuw · · Score: 2, Informative

    Grub *seems* to be undeveloped but some brave guys are developing grub-2, which looks much nicer...

    http://www.gnu.org/software/grub/grub-2.en.html

  22. Re:Too smart by Trevelyan · · Score: 3, Informative

    It does not need to understand the fs of all systems it is to boot.

    At minimum it needs to understand the fs that the stage2 files are stored.

    You can then use the chainloader to boot the boot loader on an individual partition. eg the windows bootloader on your c: ntfs partition. ie the way you suggested

    Of course if grub knows something about your kernel and the fs it is n, then it can do a lot more for you.

    For me the main thing about grub is that it does not need to be configured in advanced, so it make a good rescue disk.

  23. Let's see some more bootloaders! by SanityInAnarchy · · Score: 5, Informative

    I don't have the links, but Google is your friend:

    XOSL -- Xtended Operating System Loader

    Pros:
    - an actual GUI in a bootloader
    - support for loading keystrokes into the keybuffer, which gives it indirect support for simpler keystroke-based bootloaders like Lilo -- it can "type" in a kernel name for Lilo to load.
    - relatively easy to install from Win98 -- I believe it can even use a FAT partition to store its stuff on.
    - Password protection, can boot a default entry after a timeout.
    - Entirely configurable from inside the bootloader -- and it's user-friendly, due to the built-in windowing system.

    Cons:
    - Not much direct support for anything. While it can load Linux through Grub or Lilo, and it can boot CDs through SmartBootManager, it's really a very simplistic x86 bootloader with a very advanced GUI.
    - Support for booting a default requires a timeout, meaning that 90% of the time, when you're just booting the default OS, you have to wait an extra few seconds or press a keystroke -- and if you don't want to boot the default OS, you have to hit a key at just the right time to select a different one.
    - Doesn't seem to be configurable outside the bootloader, meaning if you download a howto on configuring XOSL, you have to print it out and reboot in order to configure.

    GRUB: Grand Unified Bootloader

    Pros:
    - Only bootloader I know of that supports the Multiboot spec, which unfortunately is a "standard" supported by only one bootloader (Grub) and one OS (Hurd) -- but it's still pretty cool that Grub could, in theory, insert kernel modules on boot, eliminating most initrds.
    - Contains a built-in commandline and actual FS support, so a mistyped or forgotten menu entry is no problem -- type it in manually to boot, then fix the menu entry from your main OS, not a rescue disk.
    - Powerful menu system -- the "configfile" command allows for multiple nested menus. Password protection.
    - Config file is readable an Unix-ey, and is a plain Unix text file parsed directly by Grub -- no need to type a command after each kernel update.
    - Supports booting from PXE (giving multiple netbooted images as a menu)
    - Supports booting from CD, allowing an easy menu to access multiple kernels and tools like memtest86.

    Cons:
    - Like XOSL, it lacks actual support for booting from CDs or net. You can install it to a CD or Net, in which case you can probably also boot stuff from the hard drive, but if it's run from the hard drive, it can't boot CD or net.
    - Lacks XOSL's keybuffer feature (which is probabyl unique), meaning if you want to use SmartBootManager to boot a CD, you will see the Grub menu, and then the SBM menu.
    - Since it groks FSes, you may need a separate /boot partition if it doesn't natively support your / partition.
    - Commandline, while useful, really only protects you from typos in grub.conf. It doesn't protect you from forgetting to install Grub to the MBR in the first place, or reinstalling if the stage 1.5 files got physically moved around.
    - Like XOSL, booting a default requires a timeout.

    NTLDR -- NT Loader

    Pros:
    - Already installed on Windows NT based OSes.
    - Supports NTFS, and can boot most x86 boot images if they are available on the boot NTFS partition.
    - Plain-text config file.

    Cons:
    - No native support for anything but NT and chainloading (x86 boot images)
    - Menu system is bad. It seems locked into a 30 second timeout, and like XOSL and GRUB, you have to have the timeout to have a default.
    - No native support for booting other partitions -- this can be accomplished by putting Grub or another bootloader into an image file, but it's not a trivial process, especially considering you have to redo it often.
    - Not open source. It has limitations, and you can't do a damn thing about it.

    Lilo -- Linux Loader

    Pros:
    - Dirt simple. No flashy menus or windows or FS support -- it just loads a kernel and goes.
    - Plain text config file, with a simple command t

    --
    Don't thank God, thank a doctor!
    1. Re:Let's see some more bootloaders! by Gallvs · · Score: 4, Informative

      It seems locked into a 30 second timeout

      Actually the NT bootloader timeout is configurable inside the boot.ini file:

      [boot loader]
      timeout=n
    2. Re:Let's see some more bootloaders! by Leffe · · Score: 2, Informative

      - kexec probably isn't very well documented, and possibly not entirely stable

      I've never had any problems.

      - I don't think kexec supports Linux-specific or Multiboot-specific stuff like setting the kernel commandline or loading a module/ramdisk.

      Of course it does!

      - No UI implemented yet at all, not even a kexec binary -- there's only a kexec system call, and most of us don't speak system calls directly, especially to boot our OS.

      kexec-tools.

    3. Re:Let's see some more bootloaders! by KillerBob · · Score: 2, Informative

      My LILO bootloader has an option in the menu that never changes: the original install kernel, with append="3" to force it into runlevel 3. If, somehow, I manage to royally screw things up, I can choose that option to boot with a known-good kernel.

      As for what the grandparent was talking about, however... that option in the bootmenu doesn't show up. By commenting out the line "prompt" in the lilo.conf, it skips the menu and automatically boots the default image (2.6.12.3 kernel on the laptop). If, OTOH, I want the boot menu with the known good kernel, I hold down CTRL at boot, and I'm presented with the LILO bootmenu where I can choose whatever image I want.

      Incidentally... commenting out the "prompt" line will disable the automatic display of the menu irregardless of what you've set the timeout to. Likewise, holding down CTRL to force it to display the menu will show the menu with no timeout, no matter what the timeout is set to. With LILO, you only need to start typing, or on newer versions use the arrow keys to choose between menu options and the timer stops until you press return/enter.

      --
      If you believe everything you read, you'd better not read. - Japanese proverb
    4. Re:Let's see some more bootloaders! by Nailer · · Score: 2, Informative

      Great post, one addition: grub supports NTFS too.

  24. Re:AMD64 by kuzb · · Score: 2, Informative

    I've been using grub for ages to dual boot without problems. Your bootloader is obviously misconfigured. My only question here is, how did this get modded up to informative? There is nothing informative about it. All this is, is a user who can't figure out how to configure his bootloader.

    --
    BeauHD. Worst editor since kdawson.
  25. Re:Huh? by TetryonX · · Score: 3, Informative
    It is not booting other OSes. It is booting a bootloader. If you lack a bootloader in that 512byte section, you will not boot at all.
    Oh yeah, have fun if you use lilo.
    /sbin/lilo && dd if=/dev/hdXX of=/windows/lilo.bs count=512 bs=1
    instead of:
    /sbin/lilo
    And that is assuming the windows partition is a FAT32 partition. (No, most people STILL don't use NTFS-write support)
    --
    [!] No, I can't see my comments. They are not worthy of +3 moderation.
  26. Re:AMD64 by JBMesserly · · Score: 4, Informative

    Is your Windows XP on a secondary drive? If so, you may need to add these two lines to your Windows XP entry in your menu.lst/grub.conf file:

    map (hd0) (hd1)
    map (hd1) (hd0)

    With those lines added, your Windows entry will look something like this:

    title Windows XP
            map (hd0) (hd1)
            map (hd1) (hd0)
            rootnoverify (hd1,0)
            makeactive
            chainloader +1

    Those two lines do some magic that makes Windows think it's on the primary drive, allowing it to boot up.

  27. Re:overwhelming majority don't dual boot by shywolf9982 · · Score: 2, Informative

    Well, I don't dual boot but i still use LILO/GRUB. Why? Because every time I recompile a new kernel, I add a new entry to the bootloader menu so I can easily access the old kernel in case something went wrong. Or to add a "safe mode" or such that allows me to avoid to type dozens of params. It's pretty useful.

    --
    nbody2002:If you can read this you may be addicted to the internet
  28. Re:Why couldn't they post this BEFORE the weekend? by Anonymous Coward · · Score: 3, Informative

    Hello:

    I'm the author of GAG. The copyright is only for the web page itself, since GAG is 100% GPL. I put the copyright note after a problem with a spanish magazine, who published my personal photo (adding some abusive comments) without my permission.

  29. grub4dos and grldr -- skip linux mbr altogether by Anonymous Coward · · Score: 2, Informative
    Grub4DOS makes dual-booting a lot less intrusive on a Windows system. From your NT+ box:
    • Install Linux on any free partition on any drive -- during the install process, dont bother installing a boot record or boot sector anywhere.
    • Copy grldr.exe and menu.lst from http://grub4dos.sf.net/ into c:\ .
    • Edit c:\menu.lst to point to the correct partition, directory, and filenames for any/all of the kernel and initrd's you installed on the linux partition:
      title Debian Linux on first partition of second hard drive
      kernel (hd1,0)/boot/vmlinuz-2.6.10 root=/dev/hdd1
      initrd (hd1,0)/boot/initrd-2.6.10.img

      title DOS/Win9x/Me/NT/2K/XP on first hard drive
      chainloader (hd0,0)+1
      rootnoverify (hd0)
    • Add
      C:\grldr="Linux, et al via GRUB"
      to c:\boot.ini .
    Done. Notes:
    • New kernel? Just add it to c:\menu.lst like you added the first one.
    • Old kernel, new options (e.g., /boot/vmlinuz-2.6.10 single)? Copy-n-paste the old title/kernel/initrd entries in c:\menu.lst, change the title, and add the new options.
    • If you screw up an entry in menu.lst, you can still enter grub directly during boot and grope around for the right partition/directory for the kernel/initrd. Then write them down, boot up, and fix them appropriately in c:\menu.lst.
    • Want to boot by default into Linux? Change the 'default=' line in c:\boot.ini to point to your grldr entry.
    • Dont want to run Linux anymore? Just remove the line from c:\boot.ini.
  30. The best thing about GRUB... by ceswiedler · · Score: 4, Informative

    The best thing about grub is that as long as it's correctly loaded onto your MBR (not particularly difficult) you don't really need a config file at all. Anything which can go in the config file can be typed at the command-line. That's really useful in a bootloader, which otherwise can be particularly difficult to fix when you make a boneheaded mistake. GRUB has saved me several times with this feature. It's also handy when you want to boot into a different runlevel or whatever, it's easy to edit the kernel parameters before booting.

    The other best thing is that you don't need to do much when you do something like install a new kernel or initrd; just update the config file (and you really don't even need to do that, see above). With Lilo you have to remember to run /sbin/lilo to update the MBR.

    The worst thing about GRUB is that it was written for the Hurd, and has a Hurd-centric view of disks which can be difficult to work with in other operating systems.