A boot loader is a small program used to load an operating system (or "OS") from disk into RAM, pass the OS various parameters, and finally start running the OS. All operating systems use such a loader. The boot loader is found by the BIOS code. It may be on a boot-floppy, in the MBR (master boot record), or in the boot-blocks of any bootable partition.
There are many different boot loaders available. Some provide GUI menus and many options, others provide no interface at all. For example the first sector (512 or 4096) bytes of the Linux kernel contains boot loader code, so if a Linux kernel is copied onto a floppy disk the kernel will boot! Fancy commercial boot loaders are available such as "Boot Magic" (comes with "Partition Magic") and "System Commander". MS Windows and Solaris each come with boot loaders that can be somewhat configured to provide a menu of bootable partitions.
If a boot loader is installed in the MBR and a problem arises,
the system will not be bootable.
For such a situation it useful to keep a DOS bootable floppy
disk around containing the DOS program "
The DOS version of
fdisk allows an (undocumented but
widely known) option.
fdisk/MBR" will over-write the MBR with a
fresh, vanilla version.
Hopefully this will allow at least one of your operating systems
to boot normally.
You can then use various tools to fix the problem.
(A boot floppy for each of your installed operating systems
kept near the server is a handy precaution to take.)
The most flexible (and common) boot loaders are "LILO" and "GRUB".
Of these LILO ("LInux LOader") is older and less powerful.
Originally LILO did not include a GUI menu choice (but did provide
a text user interface).
To work with LILO an administrator would edit the file
/etc/lilo.conf, to set a default partition to
boot, the time-out value, which choices should appear in a
menu, kernel parameters, which partition to mount as the root partition,
whether or not to initially load a RAM disk, where
LILO should be installed, and other information.
man page for "lilo.conf".)
After editing this file the administrator must then update
the loader by running the
Doing so updates either the MBR or the boot blocks (according
lilo.conf says the loader is to be installed).
GRUB is a bit easier to administer because the GRUB loader is
smart enough to locate the
/boot/grub/grub.conf file when
So an administrator only needs to install GRUB once, using
Any changed made to
grub.conf will be automatically
used when the system is next booted.
info page for
Linux systems must use a Linux-aware boot loader, usually LILO or GRUB. If you setup a dual-boot system and choose to use some other boot loader, say a commercial one or the Windows boot loader, you must also use LILO or GRUB. In this case you would install your main boot loader in the MBR, and the Linux boot loader in the boot-blocks of the Linux bootable partition. When the main boot loader runs and the user chooses to boot Linux, rather than try to run the kernel directly the main boot loader will look for a (secondary) boot loader in that partition's boot blocks. (Note in this setup the secondary boot loader is usually configured to not display a menu, although it certainly can be setup that way.)
Even today some home PCs and portable computers ship with hardware
for which only Windows drivers are available.
This situation is changing but it may be a problem for some home
users (on a server who cares about video or sound cards).
One way to deal with this situation is to setup a bootable DOS partition
that contains the correct drivers.
Then you can put a special command "
as the last statement in the
Linux and Unix can access FAT and FAT32 partitions. A kernel update is required for Linux to access NTFS (Solaris can’t). Windows installers destroy non-MS partitions, so you must install Windows first. For Win9x (including ME), you can use lilo or grub in the MBR. To use grub: 1. fdisk the hard drive and make a partition for Windows XP and leave whatever you want to allocate to Linux unpartitioned. 2. Install Windows XP onto this partition. (This should be a primary partition!) 3. Boot to the Linux install CD and partition the remaining unpartitioned part of the HD and install Linux. (Install GRUB into the MBR, it should detect both OSes.) 4. Reboot and enjoy your new dual boot system. 5. Sometimes grub only detects one OS. The fix is simple, add the following lines to the /etc/grub.conf file to show the WinXP OS too: title Windows XP root (hd0,0) or rootnoverify (hd0,0) makeactive or nothing chainloader +1 As it says in the grub.conf file, you do not have to restart grub (as you do with LILO) for the changes to take effect. Simply save the file and reboot. WinNT, Win2K, and WinXP have issues with the MBR, they get upset if it is altered and WinXP will check it occasionally and overwrite whatever is there. The easy way to deal with this is to use a commercial boot loader that supports modern Windows OSes and Unix/Linux. (Grub is able to do this.) Or you can use a boot floppy for Linux (and CD for Solaris). Just install the Linux boot loader in the boot blocks of the bootable partition, not in the MBR. You can configure the WinXP boot loader to boot either Windows or Linux (not for the faint of heart). First to display the root (“/”) partition device name: # rdev /dev/hda8 Next, copy the boot sector (disk block) of the root partition to a file using dd: # SECTOR_SIZE=512 # or 4096 # dd if=/dev/hda8 bs=$SECTOR_SIZE count=1 of=/boot/bootsec.lin Then you must modify /etc/lilo.conf (or /etc/grub.conf) to write to this file and not to the boot sector as it normally would. In lilo.conf add (or modify) the “boot=” line to read: boot=/boot/bootsec.lin Finally, copy this file to your WinXP partition (say at C:\bootsec.lin) and add the following line to the XP BOOT.INI file (don’t ask me where it is, I don’t know): C:\bootsec.lin="Linux"
Partition the drive to leave at least 2GB of space available for Solaris; more drive space is desirable. As with Linux, install Windows first then Solaris. Do not use the Installation CD but boot and install from Software CD 1. If you accept the default partitioning scheme which the installer provides you will soon run out of space in your / and /usr partitions since only enough space is allocated to install the system. All extra space is allocated to /export/home. A typical installation on a 4.5GB partition might look something like this: Filesystem Size Used Avail Use% Mounted on /dev/dsk/c0d0s0 900M 536M 310M 64% / /dev/dsk/c0d0s1 334M 109M 192M 36% /var swap 671M 8.0k 671M 1% /var/run swap 671M 8.0k 671M 1% /tmp /dev/dsk/c0d0s5 845M 222M 565M 29% /opt # (FAT32 partition): /dev/dsk/c0d0p0:1 5.0G 3.3G 1.6G 66% /c /dev/dsk/c0d0s7 1.1G 92M 954M 9% /export/home /dev/dsk/c0d0s4 752M 225M 474M 33% /usr/local The Solaris boot selector enables you to choose either Solaris or Windows with Solaris as the default. (I prefer grub or lilo!) To mount FAT under Solaris: # mount -F pcfs /dev/dsk/c0d0p0:c /dos (or “:1”?) And the vfstab file: /dev/dsk/c0d0p0:c - /dos pcfs - yes - To create a GRUB boot floppy, follow these steps: $ mkfs -t ext2 /dev/fd0 $ mount /dev/fd0 /mnt/fd0 $ mkdir /mnt/fd0/boot /mnt/fd0/boot/grub $ cp /boot/grub/stage /boot/grub/grub.conf \ > /mnt/fd0/boot/grub $ /sbin/grub --batch <
The following is a posting from Netnews that describes how to work around a possible problem with a Solaris dual-boot system:
Subject: Re: multibooting Solaris8(x86) and Linux Date: Mon, 15 Jul 2002 22:26:18 +0100 From: "David Williams"
Newsgroups: comp.unix.solaris "Paul Floyd" wrote in message news:email@example.com... > As I said, there are two things that Solaris fdisk gets wrong: partitions > not on (conventional) cylinder boundaries, and CHS values filled with > crap. The former of these two cannot be fixed other than by deleting the > partition. The latter of the two can be fixed by various methods. > Presumably the 'fix-table' option does something to the put CHS > values that match the LBA values. What it won't do is move the > partitions to be on cylinder boundaries. > Moving the partition is a rebuild job! > If you use a functional fdisk to create your partitions, then install > Solaris, it will probably do its party trick and shit on the CHS values, > but at least it will not change the partition geometry. The > solutions that I've used for this are to manually edit the PT, and to > make backups of the PTs and restore them after installing Solaris. I have partition magic on 2 floppies!! I did a: - Delete Solaris partition using Linux fdisk - Recreate using Partition Magic (which puts the right CHS values in AND start it on a cylinder boundary! Linux fdisk works but does not care if a partition starts on cylinder boundaries! - Exit partition magic and change back to the first Partition Magic floppy. This first floppy has PTEDIT.EXE on it which displays: - Partition Type - Active Flag - CHS start/end values - LBA start/end values Note all values down! - Reboot into Sun CD - Re-create Solaris slices inside Solaris fdisk partition - Reboot to Partition Magic and get weird error code and Partition Magic won't touch the disk! - Run PARTTINFO.EXE from Partition Magic floppy THE CHS values are now wrong - Use 1st floppy of Partition Magic which has PTEDIT.EXE on it to repair the values - Reboot into Solaris CD and restore Solaris partition using cpio. - Use installboot to make Slice 8 bootable - Reboot back into Partition Magic and the CHS values are wrong again! - Use PTEDIT to correct the CHS values again! All is ok now - Reboot into Partition Magic and the partition magic is happy with the disk. - Use PARTINFO.EXE from Partition Magic Floppy and see all the values are correct I'm happy now but it was a long weekend! > If in the future you have a partition tables with Sun's geometry, then > even if you fix the CHS values, I don't think that you will be able to > use a tool like Partition Magic on the disk. > -- > Paul Floyd http://paulf.free.fr (for what it's worth)
How to Make a Linux Boot Floppy
To make installation boot floppies for systems that can’t boot CDs, mount the CD on a Windows machine, say as drive D:. Then enter:D:\dosutils> rawrite src name: ..\images\boot.img target: a:
Or, Under Linux use:# uname -r # (or use -v instead) # mkbootdisk -v version
or under any Unix/Linux system:# dd -if=boot.img of=/dev/fd0 bs=1440k
Note that typical Linux systems today assume IDE controllers. If you have SCSI you may need a bit more work to make a proper boot disk (see the "
Send comments and questions to