Multi-boot using Grub/Linux
===========================
Multi-boot Using Grub Linux
===========================
===== Part 1. Using a Dedicated Grub Linux Partition =====
-----
What:
-----
A single Linux partition dedicated solely to controlling the GRUB
configuration that allows a multi-boot environment.
----
Why:
----
To create a stable multi-boot system/environment that can be easily modified,
repaired or restored.
----
How:
----
Goal -- Install a minimal Debian Linux to a dedicated partition (no swap) on
an empty hard disk connected as master to the primary IDE interface, and to
install GRUB as a master boot loader. This partition will then be used to
manage the boot loader.
Minimal Debian Linux requires at least a 110Mb partition, and recommends 250Mb
for a minimal console-based system. I recommend using a 250Mb partition.
If your machine has an ethernet card that is automatically recognized by
Debian, you have two options for the network configuration:
1) DHCP. By far the easiest, if you already have a DHCP server running on
your LAN.
2) Static IP. Boot from the Debian install CDROM using:
linux netcfg/disable_dhcp=true
If you have an automatically recognized NIC, but are not connected to a
network, you should DEFINITELY disable DHCP, unless you are prepared to wait
while the install times out attempting DHCP queries!!!
I've as of yet have not discovered a way to disable networking entirely from
a Debian install if a NIC is recognized.
THE PROCESS:
After booting from the install CD, if Debian automatically recognizes your
NIC, you'll need to go through the network configuration process.
Next, you'll need to partition the hard disk:
- Choose the "Manually edit partition table" option.
- Choose the correct hard disk to partition (IDE0 master (hda)...) and
create a new empty partition table on the device.
- Choose the FREE SPACE on the new partition table and create a new
partition.
- Make the partition as close to 250Mb as possible, (but larger if
necessary), as a Primary partition at the beginning of available space.
- The partition should be configured as:
Use as: Ext3 journaling file system
Mount point: /
Mount options: defaults
Label: GrubLinux
Reserved blocks: 0%
Typical usage: standard
Bootable flag: off
Size: 250.0 MB (260 MB for demo)
- Choose "Done setting up the partition"
- Choose "Finish partitioning and write changes to disk"
- Confirm formatting of the filesystem
The installer will then go on to install the Debian base system. (9 Minutes)
When you get to the screen asking if you want to "Install the GRUB boot loader
to the master boot record?", the answer is YES!.
Upon rebooting the newly installed Debian base system, you are asked to
configure the base system:
- Set the system timezone (For Demo use Hardware Clock GMT, US/Eastern)
- Set the root password (For Demo use nonesuch)
- When asked to create a user account, CANCEL
- At the "base system configuration menu"
- Skip down to "Configure apt"
- For demo, choose cdrom (scan disks 1 - 3), no other
apt source, do NOT use security updates from security.debian.org
- Skip select and install packages
- Configure MTA: no split configuration, local delivery only, real-root
- Finish configuring the base system
- OK!
Now we make a rescue boot floppy, and a backup copy of our hard disk's MBR
(Master Boot Record):
# fdformat /dev/fd0h1440
# mke2fs /dev/fd0
# mount /media/floppy
# mkdir -p /media/floppy/boot/grub
# cp /boot/grub/stage[12] /media/floppy/boot/grub
# cp /boot/grub/menu.lst /media/floppy/boot/grub
# grub --batch --device-map=/dev/null
grub> device (fd0) /dev/fd0
grub> root (fd0)
grub> setup (fd0)
grub> quit
(For demo edit /media/floppy/boot/grub/menu.lst to show booting from floppy
works!!!)
# dd if=/dev/hda of=/media/floppy/MBR-`date "+%Y%m%d-%H%M%S"`.bin bs=512 count=1
# sync; sync; umount /media/floppy
NOTE: MBR backup copies should be done prior to (and after) modifying the
partition table or installing another OS.
Next, we install our preferred editor(s) and tools, ie.:
# aptitude install less (disk 1)
# aptitude install mc (disk 3)
# aptitude install joe (disk 1)
And finally, we test our boot floppy.
----------------------
Recommended Practices:
----------------------
1) Remove extraneous comments from GrubLinux:/boot/grub/menu.lst.
(Or at least move them to the bottom of the file).
2) Add comments near the top of GrubLinux:/boot/grub/menu.lst that
list the system's hard drive(s) partition layout(s), ie:
hda1 (hd0,0): GrubLinux
hda2 (hd0,1): Shared Linux Swap
hda3 (hd0,2): Debian Linux (Main System)
hda4 (hd0,3): Extended Partition
hda5 (hd0,4): Shared Linux ext3 (ie. /home/shared/...)
hda6 (hd0,5): SuSE Linux (Test System)
hda7 (hd0,6): FreeBSD
hda8 (hd0,7): BeOS
hdb1 (hd1,0): Microsoft DOS
hdb2 (hd1,1): Microsoft Win2k
hdb3 (hd1,2): OpenBSD
3) Disable splashscreen images (They make life pretty, but add to potential
risk of problems configuring and trouble-shooting GRUB.
------------------
Other Useful Info:
------------------
GRUB Website (Download & Documentation):
http://www.gnu.org/software/grub/
GRUB Examples:
grub-examples.txt
===== Part 2. Project: GrubLinux =====
------------
Project Goal
------------
To create a minimalist Linux distribution (based on Debian) that can reside on
a rescue/install cdrom or a single small (<100Mb) hard disk partition. The
purpose of the distribution is to install and manage and rescue a multi-boot
system using GRUB as the boot loader.
-------------
Needed People
-------------
Developers and Beta-Testers who have/need a multi-boot environment, and who
are willing to help develop and or test the distro, as well as those who
wish to discuss needs and make suggestions for such a distro.
Interested parties should contact me using the info at this URL:
http://www.jrwz.net/contact/
---------------
Needed Software
---------------
Basic OS (Linux/Busybox), bootable from cdrom, runs from ramdisk, in a minimal
memory environment (32Mb of memory or better)
Grub + Utilities
Assorted Editors (nvi, jove, joe, nano, +others?)
Disk Partition Utilities
Filesystem Utilities ([ext2/3, vfat]: mkfs, format, mformat, etc)
Menu Software (Shell Scripts? Perl Scripts?, dialog?)
Custom Installation/Configuration Software
Network Communication/Copy Software (telnet, ssh/scp/sftp, ftp, tftp, wget, lynx)