-
A grub menu booting 100+ systems of Dos, Windows, Linux, BSD and Solaris
Important! Please read post #21 of this thread first
----Edited 19 Jan 2006---reference to "Just booting tips" added---------
----Edited 30 Dec2006 ----A "How to" is now avaibale --------------------
I apologise for this long thread. To simplify it I have cut it into separate posts
Part 1 - main menu of 100+ systems
Part 2 - special menu for BSD and Solaris systems
Part 3 - Q & A
So that you don't have to bother with the bits of no interest to you.
Edited addition : After this thread I have since put together a collection of booting tips in here
If you have an issue with Windows and desire Grub not to take over the MBR then this thread may be relevant
Linux and its boot loaders are relentlessly under continuous improvement. The purpose of the thread is to document in 2005 how easy for a newcomer like myself to mulit-boot different operating systems in a PC because up to 1.5 years ago I knew nothing about booting or Linux after being served exclusively by the MS systems. It is hope that the thread may be of use to the newcomers who are unsure if the inherently powerful Linux can also be easy to learn and boot.
edited note --The above para. has been colored red after the thread has been incorrectly reported/interpreted in the Internet. My intention is to demonstrate that Linux is easy to learn, powerful to use and simple to boot. This may be my personal view but at least I offer proof.
--------------------------------------------------------------
Part 1 of 3
--------------------------------------------------------------
(A) One Grub menu that boots 100+ systems
The 100+ systems comprise of
3 Dos
3 Windows
5 BSDs (in Part 2 Menu)
2 Solaris (in Part 2 Menu)
97 Linux including 2 versions of NetBSD
I have kept all the boot loaders of the above systems. Grub is used to boot all of them because it is the only one capable of handing a large number of systmes. I had no access to a commercial boot loader and relied solely on the standard facilities within Linux.
Initially I hope to have one menu for all the above systems but ran into technical problems with the BSD and Solaris system because their conflicts with the extended partition in a disk. I had to separate the BSD and Solaris into their own hard disks and the menu is described in Part 2.
Here is the Grub menu that boots 100+ systems
Code:
# Grub menu booting 103 systems out of 144 partitions
color white/blue black/light-gray
default 0
timeout 1000
# Disk hda has 60 partitions fully populated 56 are bootable systems
title DOS 6.22 @ hda1
unhide (hd0,0)
root (hd0,0)
chainloader +1
# hda2 is the extended partition and has no storage space itself
title Empty @ hda3 #initially used by a BSD system moved to another disk
root (hd0,2)
chainloader +1
title Empty @ hda4#initially used by a BSD system moved to another disk
root (hd0,3)
chainloader +1
# hda5 is a swap partition common to all Linux in the box
title Puppy 1.0.6 @ hda6
root (hd0,5)
chainloader +1
title Arch 0.71 @ hda7
root (hd0,6)
chainloader +1
title Mandrake 9.2 @ hda8
root (hd0,7)
chainloader +1
title Suse 9.1 pro @ hda9
root (hd0,8)
chainloader +1
title eLive 0.3 @ hda10
root (hd0,9)
chainloader +1
title Red Hat 9 @ hda11
root (hd0,10)
chainloader +1
title Lycoris 4 @ hda12
root (hd0,11)
chainloader +1
title Libranet 2.8.1 @ hda13
root (hd0,12)
chainloader +1
title Mandrake 10 @hda14
root (hd0,13)
chainloader +1
title Debian Woody @ hda15
root (hd0,14)
chainloader +1
title Yoper 2.0.0 @ hda16
root (hd0,15)
chainloader +1
title Knoppix 3.6 @ hda17
root (hd0,16)
chainloader +1
title Bufflo 1.5 @ hda18
root (hd0,17)
chainloader +1
title Kanotix 2004.9 @ hda19
root (hd0,18)
chainloader +1
title Kalango 3.2 @ hda20
root (hd0,19)
chainloader +1
title Blax 30001 @ hda21
root (hd0,20)
chainloader +1
title Fedora Core 4 @ hda22
root (hd0,21)
chainloader +1
title Debian Sarge (booted directly because high partitions not supported) in hda23
root (hd0,22)
kernel /boot/vmlinuz-2.4.27-2-386 root=/dev/hda23 ro
initrd /boot/initrd.img-2.4.27-2-386
title Red Flag 4.1 @ hda24
root (hd0,23)
chainloader +1
title Linare prof Edition 2 @ hda25
root (hd0,24)
chainloader +1
title Tiny Sofa 2.0 @ hda26
root (hd0,25)
chainloader +1
title Slackware 10.0 @ hda27
root (hd0,26)
chainloader +1
title Xandros 201 @ hda28
root (hd0,27)
chainloader +1
title Vine 3.2 @ hda29
root (hd0,28)
chainloader +1
title Specifix 0.15 @ hda30
root (hd0,29)
chainloader +1
title Ubunto 5.04 @ hda31
root (hd0,30)
chainloader +1
title PCLinuxOS 9.1 @ hda32
root (hd0,31)
chainloader +1
# Here is the approximate 137Gb barrier in the hard disk hda
title Asian Linux @ hda33
root (hd0,32)
chainloader +1
title Ubuntu 6.04 Dapper (by direct boot) @ hda34
root (hd0,33)
kernel /boot/vmlinuz-2.6.15-8-386 root=/dev/hda34 ro quiet splash
initrd /boot/initrd.img-2.6.15-8-386
title Wolvix 1.0.4 @ hda35
root (hd0,34)
kernel /boot/vmlinuz rw root=/dev/hda35
title Mepis 3.4.2 rc1 (by direct booting) @ hda36
root (hd0,35)
kernel /boot/vmlinuz-2.6.12-1-586tsc root=/dev/hda36 nomce quiet splash=verbose vga=791
initrd /boot/initrd.img-2.6.12-1-586tsc
title TurboLinux V7 @ hda37 (boot with Slackware 10 kernel in hda27 +rw)
root (hd0,36)
kernel (hd0,26)/boot/vmlinuz rw root=/dev/hda37
title Slampp 1.1 @ hda38
root (hd0,37)
chainloader +1
title Slax 5.0.4 @ hda39
root (hd0,38)
chainloader +1
title PCLinuxOS 0.92 @ hda40
root (hd0,39)
chainloader +1
title Sam 1.1 @ hda41
root (hd0,40)
chainloader +1
title Vector 5.1 @ hda42
root (hd0,41)
chainloader +1
title Suse 10.0 @ hda43
root (hd0,42)
chainloader +1
title Kororaa 2005 Beta 2 @ hda44
root (hd0,43)
chainloader +1
title smgl 0.45 @ hda45
root (hd0,44)
kernel /boot/vmlinuz root=/dev/hda45 ro
title Lunar 1.6 @ hda46
root (hd0,45)
kernel /boot/2.6.14.1-normal ro root=/dev/hda46 devfs=no mount
title Foresight 0.93 @ hda47
root (hd0,46)
chainloader +1
title Skolelinux Pro 6 in hda48
root (hd0,47)
kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda48 ro
initrd /boot/initrd.img-2.6.8-2-386
title Kubuntu dapper in hda49
root (hd0,48)
kernel /boot/vmlinuz-2.6.12-9-386 root=/dev/hda49 ro quiet splash
initrd /boot/initrd.img-2.6.12-9-386
title Klax 3.5 @ hda50
root (hd0,49)
chainloader +1
title K12LTSP 4.10 (need rw switch on) @ hda51
root (hd0,50)
kernel /boot/vmlinuz-2.6.7-1.494.2.2 rw root=/dev/hda51
initrd /boot/initrd-2.6.7-1.494.2.2.img
title Progeny 2.0 booted by Slackware's kernel @ hda52
root (hd0,51)
kernel (hd0,26)/boot/vmlinuz ro root=/dev/hda52
title grml 0.5 @ hda53
root (hd0,52)
chainloader +1
title Fedora Core 2 @ hda54 (must be booted directly with rw switch)
root (hd0,53)
kernel /boot/vmlinuz-2.6.5-1.358 rw root=/dev/hda54
initrd /boot/initrd-2.6.5-1.358.img
title Whax 3.0 @ hda55
root (hd0,54)
chainloader +1
title Troppix 1.2 @ hda56
root (hd0,55)
chainloader +1
title TopologLinux 6.0 @ hda57
root (hd0,56)
chainloader +1
title Haansoft 2006 ws @ hda58
root (hd0,57)
chainloader +1
title Fedora Core 3 @ hda59
root (hd0,58)
chainloader +1
title Scientific Linux (with rw) @ hda60
root (hd0,59)
kernel /boot/vmlinuz-2.6.9-5.0.5.EL rw root=/dev/hda60 rhgb quiet
initrd /boot/initrd-2.6.9-5.0.5.EL.img
# Disk hdc has 54 partitions with 30 systems
title Dos 7.10 @ hdc1
hide (hd0,0)
unhide (hd1,0)
map (hd1) (hd0)
map (hd0) (hd1)
root (hd1,0)
makeactive
chainloader +1
title Win98 @ hdc2
hide (hd0,0)
hide (hd1,0)
unhide (hd1,1)
root (hd1,1)
makeactive
map (hd1) (hd0)
map (hd0) (hd1)
chainloader +1
title Empty @ hdc3
root (hd1,2)
chainloader +1
# Extended partition is hdc4
title B2D Pure KDE 2005 @ hdc5
root (hd1,4)
chainloader +1
title CollegeLinux 2.5 @ hdc6
root (hd1,5)
chainloader +1
title Berry 0.65 @ hdc7
root (hd1,6)
chainloader +1
title Morhpix KDE 0.4 @ hdc8
root (hd1,7)
chainloader +1
title Feather 0.6 @ hdc9
root (hd1,8)
chainloader +1
title Buffalo 1.7.3.9 @ hdc10
root (hd1,9)
chainloader +1
title CentOS 4.1 @ hdc11
root (hd1,10)
chainloader +1
title Vector 4.3 @ hdc12
root (hd1,11)
chainloader +1
title Tao Linux 4.0 @ hdc13
root (hd1,12)
chainloader +1
title Frugaalware 0.1 @ hdc14
root (hd1,13)
chainloader +1
title Agnula Demudi 1.2 @ hdc15
root (hd1,14)
chainloader +1
title Damn Small Linux @ hdc16
root (hd1,15)
chainloader +1
title Monoppix 1.1.8 booted by Slackware 10.2 kernel from (hd1,34) @ hdc17
root (hd1,16)
kernel (hd1,34)/boot/vmlinuz ro root=/dev/hdc17
title Symphony A4 @ hdc18
root (hd1,17)
chainloader +1
title Pocket Linux 1.2 @ hdc19
root (hd1,18)
chainloader +1
title UltimaLinux 4.0 @ hdc20
root (hd1,19)
chainloader +1
title VLOS 1.2 @ hdc21
root (hd1,20)
kernel /boot/vmlinuz-2.6.12-vidalinux_r3 ro root=/dev/ram0 init=/linuxrc real_root=/dev/hdc21 video=vesafb:1024x768-32@85 splash=silent,theme:vlos-1.2 quiet CONSOLE=/dev/tty1
initrd /boot/initrd-2.6.12-vidalinux_r3.img
title Tiny Sofa (Ceara) @ hdc22
root (hd1,21)
chainloader +1
title 64 Studio 0.6 @ hdc23
root (hd1,22)
kernel /boot/vmlinuz-2.6.13-1-multimedia-amd64-generic root=/dev/hdc23 ro vga=791 splash=silent
initrd /boot/initrd.img-2.6.13-1-multimedia-amd64-generic
title Empty @ hdc24
root (hd1,23)
chainloader +1
title Empty @ hdc25
root (hd1,24)
chainloader +1
title Empty @ hdc26
root (hd1,25)
chainloader +1
# here is the approximate boundary of the 137Gb barrier of hdc
title Empty @ hdc27
root (hd1,26)
chainloader +1
title Empty @ hdc28
root (hd1,27)
chainloader +1
title Empty @ hdc29
root (hd1,28)
chainloader +1
title Empty @ hdc30
root (hd1,29)
chainloader +1
title rPath 0.99.2 @ hdc31
root (hd1,30)
chainloader +1
title STX 1.0 rc2 @ hdc32
root (hd1,31)
chainloader +1
title Fedora Core 5 @ hdc33
root (hd1,32)
chainloader +1
title StartCom 4.0.4 Raam @ hdc34
root (hd1,33)
chainloader +1
title Slackware 10.2 @ hdc35
root (hd1,34)
chainloader +1
title Foresight Foresight 0.9 @ hdc36
root (hd1,35)
kernel /boot/vmlinuz-2.6.12.5-fdl.2.x86.i686.cmov ro root=/dev/hdc36 splash=silent vga=791 quiet
initrd /boot/initrd-2.6.12.5-fdl.2.x86.i686.cmov.img
title Xandros 3.0 @ hdc37
root (hd1,36)
chainloader +1
title Ubuntu 5.10 Breezy Badger @ hdc38
root (hd1,37)
chainloader +1
title Kate 2.2 (booted by Suse 10 Kernel in hdc43) @ hdc39
root (hd1,38)
kernel (hd0,42)/boot/vmlinuz ro root=/dev/hdc39
initrd (hd0,42)/boot/initrd
# Partitions hdc40 to hdc54 are partitions each 200Mb for Grub working as submenus.
title Grub menu for MS systems only (Dos & Windows) @ hdc40
root (hd1,26)
chainloader +1
title Grub menu for recent additions @ hdc41
root (hd1,40)
chainloader +1
title Grub menu for only small distros @ hdc42
root (hd1,41)
chainloader +1
title Grub menu for only large distros @ hdc43
root (hd1,42)
chainloader +1
title Grub reserved menu (Empty) @ hdc44
root (hd1,43)
chainloader +1
title Grub menu for IDE disk hda only @ hdc45
root (hd1,44)
chainloader +1
title Grub menu for IDE disk hdc only @ hdc46
root (hd1,45)
chainloader +1
title Grub menu for Sata disk sda only @ hdc47
root (hd1,46)
chainloader +1
title Grub menu for Sata disk sdb only @ hdc48
root (hd1,47)
chainloader +1
title Complete menu for all 100+ systems @ hdc49
root (hd1,48)
chainloader +1
title Master Menu to boot submenus @ hdc50
root (hd1,49)
chainloader +1
title Grub reserved menu (Empty) @ hdc51
root (hd1,50)
chainloader +1
title Grub reserved menu (Empty) @ hdc52
root (hd1,51)
chainloader +1
title Grub reserved menu (Empty) @ hdc53
root (hd1,52)
chainloader +1
title Grub reserved menu (Empty) @ hdc54
root (hd1,53)
chainloader +1
# Third disk sda is a Sata with 15 partitions, 9 are bootable
title XP pro @ sdb1
hide (hd0,0)
hide (hd1,0)
hide (hd1,1)
unhide (hd2,0)
map (hd2) (hd0)
map (hd0) (hd2)
root (hd2,0)
makeactive
chainloader +1
title Empty @ sda2
root (hd2,1)
chainloader +1
title Empty @ sda3
root (hd2,2)
chainloader +1
# Extended partition here is the sdb4
title Empty @ sda5
root (hd2,4)
chainloader +1
title Ututu x2 2005.1 @ sda6
root (hd2,5)
chainloader +1
title Helix 1.7 @ sda7
root (hd2,6)
chainloader +1
title MagicLinux 2.0 rc2 @ sda8
root (hd2,7)
chainloader +1
title Zenwalk 1.2 @ sda9
root (hd2,8)
chainloader +1
title MedianLinux 4 rc5 @ sda10
root (hd2,9)
chainloader +1
title NetBSD i386 3.0 rc6 @ sda11
root (hd2,10)
chainloader +1
title Arabian 0.6 rc1 @ sda12
root (hd2,11)
chainloader +1
title Mepis 3.3.2 @ sda13
root (hd2,12)
chainloader +1
# Persinal data partion @ sda14
title Empty @ sda15
root (hd2,14)
chainloader +1
# Fourth disk sdb is a Sata with 15 partitions, 8 are bootable
title Win2k @ sdb1
hide (hd0,0) # hiding DOS 6.22 partition in hda1
hide (hd1,0) # hiding DOS 7.10 partition in hdc1
hide (hd1,1) # hiding Win98 partition in hdc2
hide (hd2,0) # hiding Win XP partition in sda1
unhide (hd3,0) # unhide Win2k partition for execution
root (hd3,0)
makeactive
map (hd3) (hd0)
map (hd0) (hd3)
chainloader +1
title FreeDOS @ sdb2
hide (hd0,0) # hiding DOS 6.22 partition in hda1
hide (hd1,0) # hiding DOS 7.10 partition in hdc1
hide (hd1,1) # hiding Win98 partition in hdc2
hide (hd2,0) # hiding Win XP partition in sda1
hide (hd3,0) # hiding Win2k partition in sdb1
unhide (hd3,1)
root (hd3,1)
makeactive
map (hd3) (hd0)
map (hd0) (hd3)
chainloader +1
title Empty @ sdb3
root (hd3,4)
chainloader +1
# Partition sdb4 is an extended partition
title NetBSD 3.0 AMD64 @ sdb5
root (hd3,4)
chainloader +1
title Empty @ sdb6
root (hd3,5)
chainloader +1
title Empty @ sdb7
root (hd3,6)
chainloader +1
title Frugalware 0.4 @ sdb8
root (hd3,7)
chainloader +1
title Empty @ sdb9
root (hd3,8)
chainloader +1
title Quantian 0.7.9.1 @ sdb10
root (hd3,9)
chainloader +1
title Suse 10.1 x86 64 @ sdb11
root (hd3,10)
chainloader +1
title Empty @ sdb12
root (hd3,11)
chainloader +1
title Knoppix 4.0.2 @ sdb13
root (hd3,12)
chainloader +1
title Mandriva Release 2006 @ sdb14
root (hd3,13)
chainloader +1
title Empty @ sdb15
root (hd3,14)
chainloader +1
Last edited by saikee; 07-21-2007 at 06:13 PM.
-
(B) Partition scheme and system hardware
4 disks used
Disk 1 = hda 300Gb IDE with 60 partitions
Disk 2 = hdc 200Gb IDE with 54 partitions
Disk 3 = sda 200Gb Sata with 15 partitions
Disk 4 = sdb 200Gb Sata with 15 partitions
(See Part 2 for BSD and Solaris systems on their own hard disks)
Partition scheme as indicated by Linux command "fdisk -l" is as follow
Code:
linux:/home/saikee # fdisk -l
Disk /dev/hda: 300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 122 979933+ 6 FAT16
/dev/hda2 123 34051 272534692+ 5 Extended
/dev/hda3 35268 36483 9767520 a5 FreeBSD
/dev/hda4 34052 35267 9767520 a5 FreeBSD
/dev/hda5 123 365 1951866 82 Linux swap / Solaris
/dev/hda6 366 973 4883728+ 83 Linux
/dev/hda7 974 1581 4883728+ 83 Linux
/dev/hda8 1582 2189 4883728+ 83 Linux
/dev/hda9 2190 2797 4883728+ 83 Linux
/dev/hda10 2798 3405 4883728+ 83 Linux
/dev/hda11 3406 4013 4883728+ 83 Linux
/dev/hda12 4014 4621 4883728+ 83 Linux
/dev/hda13 4622 5229 4883728+ 83 Linux
/dev/hda14 5230 5837 4883728+ 83 Linux
/dev/hda15 5838 6445 4883728+ 83 Linux
/dev/hda16 6446 7053 4883728+ 83 Linux
/dev/hda17 7054 7661 4883728+ 83 Linux
/dev/hda18 7662 8269 4883728+ 83 Linux
/dev/hda19 8270 8877 4883728+ 83 Linux
/dev/hda20 8878 9485 4883728+ 83 Linux
/dev/hda21 9486 10093 4883728+ 83 Linux
/dev/hda22 10094 10701 4883728+ 83 Linux
/dev/hda23 10702 11309 4883728+ 83 Linux
/dev/hda24 11310 11917 4883728+ 83 Linux
/dev/hda25 11918 12525 4883728+ 83 Linux
/dev/hda26 12526 13133 4883728+ 83 Linux
/dev/hda27 13134 13741 4883728+ 83 Linux
/dev/hda28 13742 14349 4883728+ 83 Linux
/dev/hda29 14350 14957 4883728+ 83 Linux
/dev/hda30 14958 15565 4883728+ 83 Linux
/dev/hda31 15566 16173 4883728+ 83 Linux
/dev/hda32 16174 16781 4883728+ 83 Linux
/dev/hda33 16782 17389 4883728+ 83 Linux
/dev/hda34 17390 17997 4883728+ 83 Linux
/dev/hda35 17998 18605 4883728+ 83 Linux
/dev/hda36 18606 19213 4883728+ 83 Linux
/dev/hda37 19214 19821 4883728+ 83 Linux
/dev/hda38 19822 20429 4883728+ 83 Linux
/dev/hda39 20430 21037 4883728+ 83 Linux
/dev/hda40 21038 21645 4883728+ 83 Linux
/dev/hda41 21646 22253 4883728+ 83 Linux
/dev/hda42 22254 22861 4883728+ 83 Linux
/dev/hda43 22862 23469 4883728+ 83 Linux
/dev/hda44 23470 24077 4883728+ 83 Linux
/dev/hda45 24078 24685 4883728+ 83 Linux
/dev/hda46 24686 25293 4883728+ 83 Linux
/dev/hda47 25294 25901 4883728+ 83 Linux
/dev/hda48 25902 26509 4883728+ 83 Linux
/dev/hda49 26510 27117 4883728+ 83 Linux
/dev/hda50 27118 27725 4883728+ 83 Linux
/dev/hda51 27726 28333 4883728+ 83 Linux
/dev/hda52 28334 28941 4883728+ 83 Linux
/dev/hda53 28942 29549 4883728+ 83 Linux
/dev/hda54 29550 30157 4883728+ 83 Linux
/dev/hda55 30158 30765 4883728+ 83 Linux
/dev/hda56 30766 31373 4883728+ 83 Linux
/dev/hda57 31374 31981 4883728+ 83 Linux
/dev/hda58 31982 32589 4883728+ 83 Linux
/dev/hda59 32590 33197 4883728+ 83 Linux
/dev/hda60 33198 34051 6859723+ 83 Linux
Partition table entries are not in disk order
Disk /dev/hdc: 203.9 GB, 203928109056 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 1 122 979933+ 1b Hidden W95 FAT32
/dev/hdc2 * 123 730 4883760 1b Hidden W95 FAT32
/dev/hdc3 731 3162 19535040 93 Amoeba
/dev/hdc4 3163 24792 173742975 5 Extended
/dev/hdc5 3163 3770 4883728+ 83 Linux
/dev/hdc6 3771 4378 4883728+ 83 Linux
/dev/hdc7 4379 4986 4883728+ 83 Linux
/dev/hdc8 4987 5594 4883728+ 83 Linux
/dev/hdc9 5595 6202 4883728+ 83 Linux
/dev/hdc10 6203 6810 4883728+ 83 Linux
/dev/hdc11 6811 7418 4883728+ 83 Linux
/dev/hdc12 7419 8026 4883728+ 83 Linux
/dev/hdc13 8027 8634 4883728+ 83 Linux
/dev/hdc14 8635 9242 4883728+ 83 Linux
/dev/hdc15 9243 9850 4883728+ 83 Linux
/dev/hdc16 9851 10458 4883728+ 83 Linux
/dev/hdc17 10459 11066 4883728+ 83 Linux
/dev/hdc18 11067 11674 4883728+ 83 Linux
/dev/hdc19 11675 12282 4883728+ 83 Linux
/dev/hdc20 12283 12890 4883728+ 83 Linux
/dev/hdc21 12891 13498 4883728+ 83 Linux
/dev/hdc22 13499 14106 4883728+ 83 Linux
/dev/hdc23 14107 14714 4883728+ 83 Linux
/dev/hdc24 14715 15322 4883728+ 83 Linux
/dev/hdc25 15323 15930 4883728+ 83 Linux
/dev/hdc26 15931 16538 4883728+ 83 Linux
/dev/hdc27 16539 17146 4883728+ 83 Linux
/dev/hdc28 17147 17754 4883728+ 83 Linux
/dev/hdc29 17755 18362 4883728+ 83 Linux
/dev/hdc30 18363 18970 4883728+ 83 Linux
/dev/hdc31 18971 19578 4883728+ 83 Linux
/dev/hdc32 19579 20186 4883728+ 83 Linux
/dev/hdc33 20187 20794 4883728+ 83 Linux
/dev/hdc34 20795 21402 4883728+ 83 Linux
/dev/hdc35 21403 22010 4883728+ 83 Linux
/dev/hdc36 22011 22618 4883728+ 83 Linux
/dev/hdc37 22619 23226 4883728+ 83 Linux
/dev/hdc38 23227 23834 4883728+ 83 Linux
/dev/hdc39 23835 24442 4883728+ 83 Linux
/dev/hdc40 24443 24466 192748+ 83 Linux
/dev/hdc41 24467 24490 192748+ 83 Linux
/dev/hdc42 24491 24514 192748+ 83 Linux
/dev/hdc43 24515 24538 192748+ 83 Linux
/dev/hdc44 24539 24562 192748+ 83 Linux
/dev/hdc45 24563 24586 192748+ 83 Linux
/dev/hdc46 24587 24610 192748+ 83 Linux
/dev/hdc47 24611 24634 192748+ 83 Linux
/dev/hdc48 24635 24658 192748+ 83 Linux
/dev/hdc49 24659 24682 192748+ 83 Linux
/dev/hdc50 24683 24706 192748+ 83 Linux
/dev/hdc51 24707 24730 192748+ 83 Linux
/dev/hdc52 24731 24754 192748+ 83 Linux
/dev/hdc53 24755 24778 192748+ 83 Linux
/dev/hdc54 24779 24792 112423+ 83 Linux
Disk /dev/sda: 203.9 GB, 203928109056 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 5099 40957686 17 Hidden HPFS/NTFS
/dev/sda2 5100 6315 9767520 b5 Unknown
/dev/sda3 6316 6923 4883760 b W95 FAT32
/dev/sda4 6924 24792 143532742+ 5 Extended
/dev/sda5 6924 7531 4883728+ 83 Linux
/dev/sda6 7532 8139 4883728+ 83 Linux
/dev/sda7 8140 8747 4883728+ 83 Linux
/dev/sda8 8748 9355 4883728+ 83 Linux
/dev/sda9 9356 9963 4883728+ 83 Linux
/dev/sda10 9964 10571 4883728+ 83 Linux
/dev/sda11 10572 11179 4883728+ a9 NetBSD
/dev/sda12 11180 11787 4883728+ 83 Linux
/dev/sda13 * 11788 12395 4883728+ 83 Linux
/dev/sda14 12396 24553 97659103+ c W95 FAT32 (LBA)
/dev/sda15 24554 24792 1919736 83 Linux
Disk /dev/sdb: 203.9 GB, 203928109056 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1216 9767488+ 17 Hidden HPFS/NTFS
/dev/sdb2 1217 1338 979965 b W95 FAT32
/dev/sdb3 1339 1460 979965 b W95 FAT32
/dev/sdb4 1461 24792 187414290 f W95 Ext'd (LBA)
/dev/sdb5 1461 2676 9767488+ a9 NetBSD
/dev/sdb6 2677 3892 9767488+ 83 Linux
/dev/sdb7 3893 6324 19535008+ 83 Linux
/dev/sdb8 6325 8756 19535008+ 83 Linux
/dev/sdb9 8757 11188 19535008+ 83 Linux
/dev/sdb10 11189 13620 19535008+ 83 Linux
/dev/sdb11 13621 16052 19535008+ 83 Linux
/dev/sdb12 16053 18484 19535008+ 83 Linux
/dev/sdb13 18485 20916 19535008+ 83 Linux
/dev/sdb14 20917 23348 19535008+ 83 Linux
/dev/sdb15 23349 24792 11598898+ 83 Linux
linux:/home/saikee #
There are a total of 144 partitions. 103 are bootable systems. 20 are empty partitions ready for booting if future systems are installed in them. I used 15 small partitions, each 200Mb, for placing Grub on its own so that I could have a range of menus tailored for booting selected groups. The 4 extended partitions (4 disks), the Swap and a Data partition make up the remainder.
The PC is a self-assembled unit using the cheapest components but not necessarily the lowest spec.
Mother board : Asrock 939NF4G
CPU : AMD 64 3200
ram : 1024 Mb
Video : unknown onboard PCI Express that I only know it works with the"vesa" driver
Ethernet card : Realtek 8139 (cheapest £5 or US$ 10)
Sound card : Generic Sound Baslter 5.1
Mouse & Keyboard : PS2
(C) Tools required
(C.1) One Grub floppy created according to Chapter 3.1 of the Grub Manual or or Chapter 4 of “Linux in a Nutshell” by Siever, Figgins and Webber. The floppy may be burn into a CD by following the emulation method outlined by this site or created directly by following Chapter 3.4 of the Grub Manual. This Grub floppy, or a CD, is unattached to a system and as such it the most important tool because it can boot any of the above 100+ systems manually. The menu itself contains the necessary instructions to boot each system manually!!! I mention the CD alternative for the benefit of laptop owners.
(C.2) One Dos 6.22 bootable floppy for restoring the MBR for all versions of Dos and Windows (including XP and Win2k) by command "fdisk /mbr". Laptop users can use an installation CD from a XP or Win2k's command "fixmbr" to do the same thing. I found the usages of a Dos floppy and a NT versions of Window installation CD are interchangeable because I consistently use a XP's CD to restore a Dos MBR but a Dos floppy for XP’s MBR.
(C.3) One Linux Live CD. Any one will do but I found Slax 5.0.6 most versatile as it has no fear of high partition number and able to cross the 137Gb barrier in a hard disk. This is the standard tool for access an unbootable Linux. As an example if I need to make a Linux in hda9 “chainloadable” by replicate its boot loader in its root partition I boot up the Live CD and type
Code:
mkdir /mnt/hda9
mount /dev/hda9 /mnt/hda9
chroot /mnt/hda9
grub-install /dev/hda9
To put Grub in a floppy attached to Linux of hda9 or in the MBR I need to replace “hda9” with “fd0” or “hda” respectively in the last statement.
The boot loader Lilo can be similarly replicated by replacing the above "grub-install" with "lilo-b". For example the instructions to put Lilo in the MBR are
Code:
mkdir /mnt/hda9
mount /dev/hda9 /mnt/hda9
chroot /mnt/hda9
lilo-b /dev/hda
I mention replicating the boot loader here because 83% of the 100+ systems have been "chainloaded" using Grub to boot another boot loader. Chainloading works only if a system keeps a copy of its boot loader in its root partition.
(D) Booting techniques involved
There are only two methods available to Grub to boot an operating system.
(D.1) Direct booting
When Grub can read a filing system it goes into the required partition to load its kernel and also the ram disk file "initrd" if used. This is how Grub boots all Linux and some BSDs when being employed as their boot loader. Typical instructions to tell Grub to carry out this task are
Code:
title rPath 0.99 @ hdc31
kernel /boot/vmlinuz-2.6.13.4-1-.x86.i386.cmov ro root=/dev/hdc31 quiet
initrd /boot/initrd-2.6.13.4-1-.x86.i386.cmov.img
The first line identifies the root partition to be booted. The second line "kernel" command is to fetch the kernel named as "vmlinuz-2.6.13.4-1-.x86.i386.cmov". The initrd command of the third line is to load the ram disk file "initrd-2.6.13.4-1-.x86.i386.cmov.img".
(D.2) Indirect booting
When Grub can't read a file system foreign to itself it boots that system's own boot loader instead. It is up to that boot loader to boot its own master. This method is known as chainloading in which the first 512 byte of Grub is "cut" and "paste" with a second boot loader starting at its 513th byte position. This is the "general" method used by all other boot loaders, like NTlrd and Lilo, capable of multi boot.
Every boot loader needs to have a stage-1 and stage-2 because the former is always 512 bytes large ready to be read by the BIOS if this boot loader is in the MBR. The duty of Stage-1 is to load the Stage-2 which in turn does the actual loading of the system.
The following systems appear to have no problem for being booted indirectly by Grub;-
Dos, Windows, BSD, Solaris and Darwin x86
A Linux can also be booted indirectly but the distro may fail if it were installed but has not been designed beyond 137Gb barrier in a hard disk or in a partition number higher than 16. In such case it may be still bootable by directly method.
Both recent versions of Lilo and Grub have no problem crossing the 137Gb barrier or high partition number or I have not met one that has an issue with it. It is a common mistake to blame on the boot loader even if it is the kernel that fails to locate the root partition.
The main advantage of indirect booting is that the partition number is the "sole" information needed to boot that system, with 3 generic lines needed
Code:
title This is a system in jth partition of ith disk
root (hdi,j)
chainloader +1
Grub counts from 0 and so the 3rd partition in the second disk will have root (hd1,2)
One can actually say the success of the booting of the 100+ systems was made possible essentially by Grub's ability to "chainload" the boot loaders of the other systems.
It should also be stated here the indirect method used by Grub is no different from any of the boot loaders in the above 100+ systems except Grub is the simplest of them all.
(E) Some featues of Grub
In using NTldr, Lilo, Loadlin, BSD and Solaris boot loaders I found Grub excels others by the following features
(E.1) Grub can be implemented unattached to an operating system to carry out the booting manually. It acts simply as a mini operating system of its own prior to a user asking it to boot the "main" system of his/her choice. This feature is unique amount the boot loaders of the above-mentioned 100+ systems. When booting manually step by step the process is extremely fast as Grub is a very small program. This combination allows a user to know his/her mistake immediately at every steps. By entering the amended command a user is able to boot a system up virtually by trial and error without wasting time to reboot the computer repeatedly.
(E.2) The automation of booting in Grub is done by executing a script file which is always stored as /boot/grub/menu.lst or /boot/menu.lst. Thus a user totally ignorant of how to boot a Linux by Grub can ask Grub to display this file on the screen and type in the same instruction to boot the system manually. As one can ask at a Grub prompt to see the partitioning scheme of any disk, display the configuration file showing how a Linux is to booted, search the partition that has the appropriate booting configuration file (the equivalent to Grub's /boot/grub/menu.lst for Lilo is /etc/lilo.conf and so Grub can boot a Linux served by Lilo) therefore a user can, with the use a Grub floppy or CD, to boot any PC system in a computer totally new to him/her. Unlike Lilo, which checks the accuracy of its configuration file /etc/lilo.conf every time a change has been made, the entries in a Grub's menu.lst does not need to be 100% operable. Thus one can compile the 100+ systems menu, copy it in a PC even before any of the 100+ systems is installed, as Grub can be installed in a partition on its own. By instructing a Linux installer to put its boot loader inside its root partition the Linux become instantly bootable on completion of the installation by the previously-prepared menu. The Grub menu above still have 20 empty partitions ready for this purpose.
(E.3) Grub has "hide", "unhide" and "map" commands to make unwanted partition invisible to the booting system. These commands allow systems originally not designed to co-exist together can still be installed and booted in one machine. For example MS own boot loaders are incapable of booting all versions of Dos and Windows together and a BSD system can have conflict with the second and third BSD installed into the same hard disk, yet with Grub all these become possible.
(E.4) Grub has a scrolling screen able to accept 100+ booting entries. This is far more powerful than the Solaris/BSD's boot loaders, Windows' NTldr and Linux's Lilo which have a static boot screen with a maximum of 4, 10 and 27 entries respectively.
(E.5) Grub can be installed anywhere in a bootable media like a floppy, a CD, the MBR of the first bootable disk, any root partition of a system (Grub is used by Dos, Linux, BSD or Solaris). When it is installed and attached to a system it always boots to that system. However Grub can also be installed without a system in a tiny partition with nothing except itself.
Last edited by saikee; 12-12-2006 at 06:54 AM.
-
(F) A few points to watch out in booting
(F.1) All Dos, Windows, Solaris and BSDs need to be installed and booted from primary partitions. The only exception I am aware of from this group is NetBSD which can be fitted inside a logical partition. I have two versions installed in partitions sda11 and sdb5. (Edited addition:I have been made aware that it is possible to install MS systems in logical partitions by amending MS MBR by this thread).
(F.2) The Unix systems have an inner subdivisions treated as logical partition by Grub. Linux conforms to PC standard by disallowing more than one extended partition and so the fifth partition and above are always used to denote logical partitions. The extended partition can only be created when one of the 4 primaries is not used. This means both MS and Linux systems have no mechanism to distinguish from which of the 4 primaries the logical partitions come from. BSD and Solaris on the other hand can name their inner subdivisions uniquely according to their primary partition position. This creates a problem for Grub if more than one Unix system is installed into a hard disk because the Unix inner subdivisions are named as "a", "b", "c"....etc. Two BSD systems in the same disk will have two "a" inner subdivisions and BSD's boot loader appears to only boot the first one it encounters. Thus hiding/unhiding technique is needed for booting several BSDs in the same hard disk. More details are given in Part 2.
(F.3) The Unix uses an alphabet system to name the inner subdivisions and therefore the maximum number of BSD-subparts is limited by the number of alphabets available. Linux permits up to 60 logical partitions in an IDE (and 15 partitions for a Sata/SCSI disk). It appears that a BSD cannot tolerate the presence of such large number of logical partitions and would not install or operate. My current solution is to use BSD and Solaris on their own disks, as described in Part 2.
(F.4) Many Linux have not been engineered to cross the 137Gb barrier or to cope with a partition number higher than 16 in a hard disk. If such system can be installed beyond its designed limit it usually fails to boot and cannot be chainloaded because some of its components cannot find its own root partition. This type of Linux can still be booted using the direct method. Details are obvious inside the 100+ system Grub menu. In extreme cases I had to use the kernel from another Linux to boot them.
(F.5) There is a potential confusion that a user may mix up a Grub shell with a Grub prompt. The former is what you get when typing at Bash shell the command "grub". At which time the Linux would have already been in operation in a "protected" mode and many Grub's booting instructions would have been disabled to protected the Linux. Small amount of commands are still usable. A Grub prompt is obtained after booting Grub only and "without" a Linux presence. At a Grub prompt one can choose any system to boot and all the Grub commands are operable.
(F.6) The actual maximum number of partitions permitted in Linux for an IDE disk is actually 60 including the extended partition. The maximum partition number 63 can be reached when no primary partition is used so that the 5th to 63th plus the extended partition itself amount to 60 again. The extended partition exists in name only and has no usable storage area inside.
(G) Some statistics of the 100+ systems
(G.1) Linux is a system by the people for the people. The 97 distros installed in my box originated from 27 countries and 3 different regions. The contributions are from Argentina(1), Asia(1), Australia(4), Austria(1), Belgium(1), Brazil(1), Canada(6), China(2), Czech(1), Europe(1), France(5), Germany(10), Global(3), Hungary(2), Isle of Man(4), Israel(2), Italy(1), Japan(3), Netherland(2), New Zealand(1), Norway(3), Poland(1), Puerto Rico(1), S Korea(1), Sweden(1), Switzerland(1), Syria(1), Taiwan(1), UK(3), USA(32).
(G.2) The main menu boots 103 systems. 85 (83%) of the 103 systems were indirectly booted by chainloading while the remaining 18 (17%) require direct booting.
(G.3) The average size of the Linux is only 2.24Gb. Minimum size is 0.4Gb while the biggest dsitro Quantian 0.7.9.1 at sdb10 has 7.57 Gb. Quantian has been pre-packed with a lot of educational software and should be regarded as an exception.. The next largest Linux is Knoppix 4.0.2 with 5.1Gb. All the rest are below 5Gb.
(G.4) I have only one personal data Fat32 partition in sda14 accessible by all systems. The one swap partition hda5 is picked up by every Linux in installation without my intervention.
(G.5) Out of the 97 Linux distros 60 use Grub while 37 use Lilo as the boot loader. There are only a few distros that offer both choices from which only one can be nominated.
(G.6) For those who wonder if a user needs to compile a kernel and search for drivers in order to use a Linux I have some news for them. I have never had a need to compile a kernel (got over 90 of them to choose from, haven't I?) and never had to find a driver for all of my distros. The only bit I have done over and above what is provided by the Linux was to download the latest Grub and built it into the distros to help me to boot them.
(H) Recommendations for users intending to multi boot
(H.1) It is always better to partition the disk first. You will know exactly where the systems are going to reside in. Your own data in other partitions are safer from inadvertent damage. You are less likely to be confused by the installer.
(H.2) Try not to mix your personal data with an operating system. An operating system can go down any time so it pays to keep the personal data on a separate partition that can be read and written by all systems. The personal data will be a lot easier to backup and maintained.
(H.3) I prefer to use one partition per Linux and have not met any resistance and suffered any drawback. It is definitely easier to boot and maintained.
(H.4) Learn to boot the system manually. This will force you to use Grub because other boot loaders do not have manual booting capability. You will have a much better appreciation of how a system is booted. Grub will always warn us with an error message if it has found an instruction difficult to comply. It is therefore a lot easier to be confronted with one hurdle at a time instead of looking at a compound problem as a result of several faults.
--------------------------------------------------------------
Part 2 of 3 (BSD/Solaris systems)
--------------------------------------------------------------
(2A) The Grub menu
Code:
# Grub menu to boot 5 BSDs, 2 Solaris, 1 Win98 & 3 Linux
timeout 1000
color cyan/blue white/blue
foreground ffffff
background 0639a1
title PcBSD 1.0 RC1 @ hda1 (ad0s1)
hide (hd0,1) #hide FreeBSD in hda2
unhide (hd0,2) #Solaris partition is hidden if "unhided" by Grub
hide (hd0,3) #hide DesktopBSD in hda4
unhide (hd0,0) #unhide PcBSD partition
root (hd0,0) #specify its root
chainloader +1 #Ask Grub to chainload PcBSD's own boot loader
title FreeBSD Release 6 @ hda2 (ad0s1)
hide (hd0,0)
unhide (hd0,2)
hide (hd0,3)
unhide (hd0,1)
root (hd0,1)
chainloader +1
title Solaris Express @ hda3 (c0d0s0)
# Solaris is invisible to others if unhide (a special case)
hide (hd0,0)
hide (hd0,1)
hide (hd0,3)
hide (hd0,2) #Grub's hide statement actually makes Solaris visible
root (hd0,2)
chainloader +1
title DesktopBSD 1.0 RC3 AMD64 @ hda4
hide (hd0,0)
hide (hd0,1)
unhide (hd0,2)
unhide (hd0,3)
root (hd0,3)
chainloader +1
# the following partitions are in the second disk
title Win98 @ hdc1 # Win98 supplies Grub to multi boot the rest
root (hd1,0)
map (hd1) (hd0) # disk order is re-arranged on-the-fly
map (hd0) (hd1) # because Win98 was installed as a "C" drive
chainloader +1
title DragonflyBSD 11.2 @ hdc2
unhide (hd1,1)
unhide (hd1,2)
hide (hd1,3)
root (hd1,1)
chainloader +1
#The following 2 lines are for direct booting DragonflyBSD directly
#but it isn't used because in hiding DragonflyBSD its menu becomes invisible
#root (hd1,a)
#kernel /boot/loader
title Solaris 10 @ hdc3
hide (hd1,1)
hide (hd1,2) #Hiding Solaris in Grub actually make Solaris visible
hide (hd1,3)
root (hd1,2)
chainloader +1
# hda4 is the extended partition
# hda5 is used as a Linux Swap partition
title Pocket Linux 2.0 @ hdc6
hide (hd1,1)
unhide (hd1,2)
unhide (hd1,3) #unhiding the whole extended partition
root (hd1,5)
chainloader +1
title NetBSD 3.0 RC5 AMD64 @ hdc7
hide (hd1,1)
unhide (hd1,2)
unhide (hd1,3)
root (hd1,6)
chainloader +1
title Demudi 1.3 @ hdc8
hide (hd1,1)
unhide (hd1,2)
unhide (hd1,3)
root (hd1,7)
chainloader +1
title MEPIS 3.4.2 at hda9
hide (hd1,1)
unhide (hd1,2)
unhide (hd1,3)
root (hd1,8)
chainloader +1
(2B) Why BSD/Solaris on their own?
The above Grub menu was orginally part of a bigger menu for 100+ systems but I had to separate the BSD and Solaris systems from the main disks because of the following reasons;-
(2B.1) Just like Dos and Windows the BSD and Solaris systems each need a primary partition to reside in but there is only a mximum of 4 primaries in a disk. By installing 100+ systems I need one primary partition from each disk to turn into an extended partition to house the large number of Linux and so I simply ran out of primary partitions available in the 4 hard disks. The current 5 BSD and 2 Solaris on their own hard disks. The Win98 and Linux were added to show that all can be accommodated if their conflicts are suitably avoided.
(2B.2) The BSD-subparts are treated as logical partitions in Linux. When co-existing with Linux logical partitions I experienced regular corruption in partition table and loss of the boot loaders. By moving the BSD and Solaris out of the main Linux installations I hope to cut down the in-between systems interferences.
(2B.3) Booting of multiple BSD and Solaris is more involved than booting Linux. The main menu is alreadys burdened with the special arrangement of multiple versions of Dos and Windows. Thus a separate and shorter Grub menu is simpler to understand and explain.
(2B.4) The majority of BSD systems could not be installed in the presence of large disks with logical partitions grossly in excess of the number of alphabets BSD employs to distingusih their BSD-subparts. I had no choice but to house the BSDs in separate disks because my main IDE disks have 60 and 54 partitions respective. The BSDs simply rebooted on an installation whenever any of these two disks were present and were happily installed on their immediate removals.
(2C) Disks & partitioning scheme
Disk1 hda 60Gb (4 primaries taken up by PcBSD, FreeBSD, Solaris Express & DesktopBSD)
Disk2 hdc 60Gb (3 primaries taken up by Win98, DragonflyBSD, Solaris 10 one extended partition holding Pocket Linux, NetBSD, Demudi & Mepis)
The partitioning schemes of the two IDE disks, each 60Gb, are
Code:
bash-3.00# fdisk -l
Disk /dev/hdc: 60.0 GB, 60040544256 bytes
255 heads, 63 sectors/track, 7299 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 1 608 4883728+ b W95 FAT32
/dev/hdc2 609 1216 4883760 b5 Unknown
/dev/hdc3 * 4379 6810 19535040 af Unknown
/dev/hdc4 1825 4378 20515005 5 Extended
/dev/hdc5 1825 1946 979933+ 82 Linux swap
/dev/hdc6 1947 2554 4883728+ 83 Linux
/dev/hdc7 2555 3162 4883728+ a9 NetBSD
/dev/hdc8 3163 3770 4883728+ 83 Linux
/dev/hdc9 3771 4378 4883728+ 83 Linux
Partition table entries are not in disk order
Disk /dev/hda: 61.4 GB, 61492838400 bytes
255 heads, 63 sectors/track, 7476 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 1824 14651248+ b5 Unknown
/dev/hda2 1825 3648 14651280 b5 Unknown
/dev/hda3 * 3649 5472 14651280 af Unknown
/dev/hda4 5473 7476 16097130 a5 FreeBSD
bash-3.00#
(2D) Notes
(2D.1) I start first by stating that a BSD or a Solaris system has inner subdivisions, which Grub refers to as BSD-subparts, that are regarded as the logical partitions in Linux. Multiple installation of BSD/Solaris can therefore result in repeated appearance of logical-partition like BSD-subparts within the possible 4 primary partitions. This confuses Linux and its boot loaders. Both Linux and Grub cannot distinguish uniquely the inner BSD-subparts within a BSD system in if there is more than one of them installed in a hard disk. The BSD-subparts are named by a alphabet system. Thus a Grub's partition reference of (hd0,a) will cause Grub to search the first occurence of a BSD-subpart with disklabel "a" even if there may 3 other different BSD systems in the same disk (hd0). The fact Grub is only able to boot the first occurenece of (hd0,a) has been documented in the Grub Manual and this has happened consistently to me.
(2D.2) This multi installation problem has been overcome by hiding the unwanted BSD systems and booting the taget BSD by the standard indirect method ( or chainloading) whereby addressing the partition reference using the noraml (hd0,2) is poosible again instead of relying on the BSD-subparts convention of (hd0,a). In the indirect method Grub boots the boot loader of BSD only and leaves BSD's own boot loader to boot its master. It is the same method used by BSD to boot a non-BSD system like Dos or Windows.
(2D.3) In the above Grub menu every one of the 5 BSDs, 2 Solaris, Win98 and 3 Linux was booted indirectly. Usually the system that host Grub must be booted directly but in here the host is Win98 and I only use it partition to house Grub. I had to use Win98 because it is the only system that I don't have to hide.
(2D.4) In installing all the above systems I did not allow any of them the access to the MBR and so all of them installed their boot loaders inside their root partitions and subsequently "chainloadable" by Grub. I had a Grub floppy, described in Para. C1 abovel, left in the drive so that I could boot any of the system manually. The Grub menu was compiled as the last step when all the systems were in. The menu itself conatins all instructions to boot each one manually. I only need to add the line "boot" after the "chainloader +1" statement when booting any of them manually.
(2D.5) I found building Grub in any of the above BSDs to be identical to that in Linux. I just follow the procedure exactly as per Grub Manual. I could not use the Grub in Linux and BSD because their partitions are liable to be hidden. In such a case Grub would be denied access to its own menu and its ability to multi boot would be crippled.
(2D.6) The NetBSD is an odd ball among the BSD systems in that it is the only one I found capable of being installed and booted from a "logical" partition. It has been sandwiched between the two Linux to demonstrate its ability to co-exist harmoniously with other systems in the logical partitions.
(2D.7) Solaris Express has a Grub implementation. At time of writing this thread that Grub implementation appears to be a special version as a third parameter like (hd0,2,a), denoting the inner subpart "a", is used and that is not supported by the standard versions of Grub in Linux. Having tried it out in various ways I found it quicker just to put Grub from into Win98 and use its /boot/grub/menu.lst to multi boot the rest.
(2D.8) The common system to hide a partition in PC seems to flip the 5th bit in the byte that identifies the partition type. Most system have a "0" at the 5th bit and so hiding flips it into a "1". However Solaris type bf has a "1" already at the 5th bit so hiding and unhiding have will achieve the opposite effects. Therefore I use Grub to "hide" it when I have to use Solaris and "unhide" when I want Solaris invisible to other systems. I have added annotations in my menu to highlight this oddity.
(2D.9) To put Grub into Win98, in partition hdc1, I just created the directory \boot\grub in "C" and copied Grub's stage1, stage2 and menu.lst there, the last one is the menu showed above. I then boot up a Grub floppy. These 2 lines instruct Grub to set itself up in the MBR using the stage1 and stage2 obtainable from the root partition of (hd1,0), which is hdc1 in Linux, and display the menu.lst there on a boot up
Code:
root (hd1,0)
setup (hd0)
Last edited by saikee; 02-15-2006 at 06:49 AM.
-
-------------------------------------------
Part 3 of 3 (Q&A)
-------------------------------------------
(H) Q & A
Q1 : How long did it take you to boot the 100+ systems?
A : I started my Linux adventure 18 months ago. I have been trying to “retain” what I have installed from the free downloads. That is all.
Q2 : Are you from the computer industry?
A : No just an average user of a PC. Trained as a civil engineer by profession. Use the computer to "calculate"mainly.
Q3 : Why did you do such a stupid thing? Nobody in his right mind needs 100+ systems to work on.
A : I found booting with Linux easy and simple. Just to want to see what is the limit for Grub to boot other systems..
Q4 : What is your point of showing off 100+ systems booted by Grub?
A : To help people still with problems with "dual boot", "tri boot" in Linux.
Q5 : This Grub floppy sounds fantastic but I haven’t got a Linux in my PC how can I make a copy?
A : Easy piece, just download a Linux Live CD that supports Grub and use it to generate the Grub floppy
Q6 : Which Live CD can I find Grub support?
A : Mepis, Puppy,Damn Small Linux, Linux rescue CD, Ubuntu, Arch Linux, ……
Q7 : Can you give the instructions for making a Grub floppy with a Live CD and no installed Linux?
A : Boot up the Live CD, click terminal, ask Linux to find the directory that holds stage1 and stage2 files, change directory to it, pop in a floppy and use Linux’s dd command to write the Grub’s atge1 and stage2 files onto the floppy. For Mepis 3.3.2 Live CD you will find the files stage1 and stage2 in /linux/lib/grub/i386-pc directory or any directory you find stage1 in the Live CD of your choice. The file stgae2 is always in the same directory. You then type (using /linux/lib/grub/i386-pc as the directory as an example here so please adjust to suit your own circumstance)
cd /linux/lib/grub/i386-pc
dd if=stage1 of=/dev/fd0 bs=512 cout=1
dd if=stage2 of=/dev/fd0 bs=512 seek=2
Q8 :What is the catch of using this Grub floppy to boot 100+ systems?
A : The Grub floppy works on any system that has a boot loader inside its root partition
Q9 : But the boot loader of my Linux is in the MBR, how can I put its boot loader in its root partition hda6? By the way it has Grub
A : You can replicate Grub any time, which requires root privilege in terminal, to its root partition say hda6 by typing
. Alternatively you can invoke a Grub shell, which is only available if the distro selects Grub as its boot loader, and type
Code:
grub
root (hd0,5)
setup (hd0,5)
Q10 : Sorry I meant my Linux uses Lilo and not Grub, how can I make Lilo replicate its boot loader in root partition hda6?
A : You can replicate Lilo, while log in as root in terminal, in its root partition hda6 by typing
Q11 : How do I replicate the boot loader for a Dos, Win3x, Win9x, Win2k and XP?
A : No need. These systems must be installed in an active primary partition and will automatically have their boot loaders installed in their root partitions by default.
Q12 : How do I replicate the boot loader for a BSD and Solaris?
A : During installation of these system do not permit the boot loader into the MBR and each system will automatically place its boot loader in the root partition.
Q13 : How is your method differs from my Linux’s Grub in booting Windows?
A : My method is same as how Grub boot every Windows. With a Grub floppy you do it manually but the process is automated by a script file always stored as /boot/grub/menu.lst. Putting Grub in the MBR save you the typing work, that is all.
Q14 : So all the instructions of how to boot a Linux or Windows manually are already inside the /boot/grub/menu.lst of my Linux?
A : Yep. It is all there. Except in manual booting you always end the instruction with a statement
Q15 : Hold on a minute, what happen if my Linux uses Lilo?
A : You can boot any Linux using “chainloading” and it doesn’t matter if it has Lilo or Grub as its resident boot loader.
Q16 : I am sure Lilo is booting Windows in a similar fashion, is its method simlar to Grub?
A : NT version of Windows, Lilo and Grub can chainloader each other. Lilo chainloads a system, say in hda7 by just 2 lines
other=/dev/hda7
label=Linux-in-hda7
Q17 : So Lilo is simpler with only 2 lines to chainload a system while Grub needs 3 lines?
A : You can use only two lines in Grub to chainload the above hda7 too like this
title My Linux in hda7
chainloader (hd0,6)+1
Q18 : So the “label” statement in Lilo is same as “title” statement in Grub?
A : Except Lilo has a fixed field limiting the number characters in the label statement. You can put any thing in Grub’s “title” statement.
Q19 : Why are you so keen on the indirect booting or chainloading?
A : I am a simple guy who can't cope with complications. Naturally one one set of instruction to boot all the systems is easy on me.
Q20 : Grub seems to be a nice boot loader, it is a shame we haven’t got it in FreeBSD.
A : The standard Grub can be built into all Dos, Linux and BSD. Just follow the instruction from the GNU/Grub site. I have it installed in FreeBSD, PcBSD, DesktopBSD and DragonflyBSD. I just follow the instruction given by Appendix A of the Grub Manual
Q21 : Having installed a large number distros yourself which one is the best?
A : There are horses for courses so it is up to the individual to sample and pick the ones he/she likes. The big distros are always well put together, robust in variety of situations and well supported by documentations. For newcomers any distro will do. By exposing to more than one distro one can pick on the common commands easier and able to survive better in a new environment.
Q22 Is Grub the best boot loader to use?
A I can’t confirm that even after I have used it extensively. It is definitely the easiest among the boot loaders in the above 100+ systems. I am just surprised that I could get so much out of it when others don’t seem to bother.
Q23 : How does Grub measured against the commercial boot loaders that claim to be able to do just as many type of systems?
A : Never have the cash to try them out myself but I am reasonably certain that it is an easy task for any boot loader to boot a PC system indirectly. To boot directly the boot loader has to understand a filing structure in order to go inside a partition to pick out the kernel and ram disk file to load them directly. Since Grub is engineered for the Linux and BSD I doubt if a third party boot loader can carry the booting duty better than Grub. There are things Grub can do while other simply can’t. One example is we can ask Grub to use the kernel of Linux A to boot Linux B. I would be interested in knowing a commercial boot loader having a better ability than Grub (or Lilo) to pass on parameters at boot time to a kernel.
Last edited by saikee; 12-26-2005 at 06:57 AM.
-
Very, very impressive. ![Wink](images/smilies/wink.gif)
Do you actually use all those installations on a regular basis?
psi42
-
I started my Linux adventure 1.5 years ago by joining JustLinux. The systems are progressively built up and constantly checked. Some older versions of distros were put back in an attempt to install them beyond the 137Gb barrier after I gained more knowledge.
Some of them have fancinating features relative to the others.
-
-
I am humbled by the public interest in this thread in the last 2.5 days. Previously the thread received just over 42 views per day in its 48-day existence. In the last 2.5 days it received about 10,000 views per day.
In view of the public interest I shall put together an easy HOWTO later. So far the information above is just a demonstration type which may be sufficient for the experienced readers to piece the picture together.
I shall append a easy HOWTO to the same thread. So watch this space. Hopefully it should available in before April 2006 as I am away till mid March.
I also take this opportunity to thank the viewers rating this thread.
------------------------------------------------
julzian12321,
Am I supposed to provide a response to you?
Last edited by saikee; 02-20-2006 at 06:10 AM.
-
okie
No I'm just being a fool. I found this link on a local 'LAN' forum. Cool
-
Congratulations, a very impressive piece of work. Bravo!
Feel free to PM me for help
Using PCLinuxos 2007 on my laptop and 2009 on my Desktop and proud of it!
Desktop:
AMD Phenom II x2 545 3GB DDR2 RAM 500GB SATA,250GB SATA, 250GB IDE, ATI Radeon HD 4870 512 DDR3
Laptop:
Intel Core 2 Duo T7500 (2.2) 2GB RAM, 160GB Sata HDD, nVidia 8600GM 512MB
Please come back and tell us if your problem is solved, it may help others, and stop us from wondering what happened.
-
This thread has attracted a lot of attention but also has been incorrectly reported. Some reporters may lack the understanding of my thread and reporting it as
(1) a Howto
and
(2) runs 100 operating systems at once
Although I have made sure sufficient materials have been put forward for any interested reader to go through the same process again the thread is not a tutorial or a HOWTO because I have never provide step-by-step instructions. I shall offer a real "HOWTO" in another post later in this thread but since I shall be away for 3 weeks soon it will not happen immediately (it is already under preparation).
The running 100+ system at once is a mistake by others as I never gave a slightest hint such thing could be done in my write-up. My thread is exactly what it says in the title --->A grub menu booting 100+ systems of Dos, Windows, Linux, BSD and Solaris .
I have investigated the possibility of running them together. The current technology is to use virtual machine in which each OS is assigned a portion of memory to operate. It is basically a "red herring" to most of us! The standard system offered by the vendor normally limits something like no more than 4 systems to be run at any one time, without massively upgrading the memory. One should have no difficulty in seeing why this application isn't ideal if he/she suddenly has only 1/4 of the ram to run the same OS. Basically in virtual machine we introduce one more operating system to control the rest of the systems and every one of them need memory to function. Whatever you want to run can only be done with a fraction of the installed physical memory in a PC. Broardly speaking if we run 4 systems at once we must operate each one at 1/4 of the resource. Only big servers with massive amount of rams and multi core CPU can afford to running a modest number of systems "at once". Whichever way one looks at it "running 100+ systems at once" isn't a viable solution at today's technology. Even if the motherboard can take it and we are happy with the slow speed of say running each system with 512Mb ram in a queue of 100 systems we would be talking 50Gb of ram of having all of them available "at once"!
My thread of 100+ systems is for having 100+ systems "installed" and available for selection by "one" menu. Only one system is run at any one time.
It is regretable that it has been mis-reported beyond the original scope.
-----------------
Edited addition 14:33GMT 15/2/06 -- One Web site has agreed to replace "at once" with "in a PC" in the reporting title after being alerted of the inaccuracy.
----------------------------
edited 16 Feb 06
A future prediction
I could be wrong but from the interest expressed so far in this thread I can see a new trend coming. Dual-boot and tri-boot could soon be in history if users switch to multi-boot. I am seeing more Linux and Windows users are starting to retain the systems after they have tested them.
Instead of removing operating systems after it isn't used regularly a user may opt to "retain" the system if hard disk storage is cheap and there is no problem in booting it. In my case I even dug up old dead Dos and Win9x to load them back into the PC so that I can refresh and access my previous knowledge again.
It is noteworthy to point out that time is ripe if a user wishes to keep a large number of Linux in a PC, possibly assisted by the following points
(a) Large capacity hard disks are affordable - Despite UK prices are always higher than those in USA we can get an OEM 300Gb IDE or Sata for 84GBP now (Maxtor DiamondMax Plus 10 series). To store a Linux in a 5Gb partition costs 1.40GBP and such money is not enough even to buy a beer. So drink one beer less per day and one can run 100+ systems in 3 months.
(b) Today's multi-booting is a lot easier than in the past - The Linux has improved considerably since I started in June 2004. At that time the majority of distros could not cross the 137Gb barrier in the hard disk or mount a partition higher than the 20th. This was already a huge improvement over the past when various methods had to be developed just to keep the Linux boot loaders below the 1024 cylinders limit (about 8.5Gb). Both current Lilo and Grub can boot at the end of a 300Gb disk. In Feb 2006 it is a minority that is still having the same trouble with 137Gb barrier and high-number partitions.
(c) Multi-installation helps a user to have immediate functionalities of the operating system without being stuck with hardware not recognized - Standard Linux distros use generic drivers and many are not well put together to fire up all the hardware in a PC. My experience is that some distros are better than other in kicking start the hardware and so there is no need to pull the hair out if one Linux fails to activate one piece of the hardware while the others have no problem with it. By comparing the settings of them one can resolve the hardware problem quicker and easier.
(d) Multi-installation is an alternative method to learn an operating system - There is a huge choice of "free" Linux and BSD distros available further supplemented by the open-source Solaris and Darwin X86. A user will need to expose himself/herself to several systems in order just to form an "informed" opinion on one distro. There is no better way to learn one operating system if one is able to use several and able to see the similarities and understand the reason why things have to be done in a certain way. Surviving in multiple installations requires a user to know the commands common to all distros instead of the commands particular to one distro. This is a definite benefit to the newcomers.
Thanks for the patience of reading this long thread and hope you have found something useful or informative.
My opinions and views are not representative of those of Justlinux which in this area has a lot more real experts from whom I learn all my stuff from.
Do enjoy JustLinux as much as I do.
Last edited by saikee; 02-16-2006 at 02:21 PM.
-
Congratulations!
Really impressive. As far as I can see you are missing BeOS...
-
Well I took your advice and download BeOS 5.
Had it installed in Windows in two different machines, made different floppies for booting but it didn't work. My guess is BeOS may not have Sata support as the floppies did try to load but gave up at the end. I have Windows in Sata in both PCs.
When I have a bit of time I shall try it on an IDE disk. It is a weird system living inside a Windows partition almost like a parasite (hope I am not offending the BeOS lovers).
It is going to be a challenge to boot it as it doesn't use the boot sector or the MBR.
-
Use the BeOS that loads from Linux
You're correct, BeOS does not support SATA (yet). Since you already have Linux installed, rather than trying to run it inside a windows file, grab the Linux installer version from BeBits:http://www.bebits.com/app/2680 and install it. It installs into a file inside of Linux, but once you are running BeOS you can select to install it into its own BFS partition. Then you can get a real feel for what it can do.
There's instructions there telling how to install it. To see if your hardware is supported check the BeOS hardware matrix at:
http://www.bedrivers.com/hardware/
-scottmc
-
DAMN, and I thought I was committed to excellence. This is very, very useful. I haven't even read that much of it either but I know it will come in handy soon.
EVAC
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|