Windows, Redhat GNU/Linux, and FreeBSD on one computer
Thu Feb 13 16:29:37 EST 2003
last update June 14 2003


The goal of this project is to install
as many operating systems as possible
in as little space as possible
with as much inter-operability as possible.


Some resources:
Partition tutorial - primary, extended and logical
Black Viper's tutorial
OS/2 tutorial
Slashdot article
Richard's Multiboot Menagerie
One PC, Six Hard Drives, 37 OSes!
Ranish Partition manager, XOSL
Archer's Hard Disk Management
Multi-booting Solaris and other operating systems
The REAL Multi-boot


The most effective(only?) way to achieve is to partition the system's master hard disk.
One partition is needed for each operating system installed on the disk, and one separate
data partition in FAT32 format can be used to store common data.
The operating system can be chosen at boot time with the use of a Boot Loader, through either a text menu of some sort of gui.
The user may change operating systems at any time by rebooting the computer, and may store data into a common partition from which it may be accessed by any operating system on the list.


Sat Mar 1 13:31:33 EST 2003
3 Operating Systems have been installed and are all functional, including the following: The data partition is accessible by each OS on the drive.

Pikkon system information
Trunks system information


Procedure:

Partitioning the Disk:
Before you partition the disk, you need to know the following things:
Taking all these factors into account, there is only one possible configuration which satisfies our needs:
Windows first
Data second 
FreeBSD third (still primary)
Linux (extended)
... more extended partitions here - mountable by Linux, FreeBSD
Now we should make a rough list of our ideal partition table on a piece of paper or something for reference.
So we have a few partitioning tools to choose from:
So we boot into out handy Redhat 7.2 installer disc(any recent Redhat version will do nicely).
Navigate the menus as if we are performing an install, but really we're stopping after the partitioning step.
choose Partition manually(using Disk Druid)

Now we will cut our disk up into partitions. We need to decide how much disk space each OS will need, and how big to size our data partition.
Be aware that the exact size you specify for a partition may not be the size you get - its likely that these partitions need to lie on track or sector boundaries, so approximate values need to suffice.
We have to create the partitions in ascending order.
An installation can be optimized by creating different sized sub-partitions for certain tasks(/var, /usr, /opt, /, etc.)
An easier way is to just create one large partition for the operating system install, and in the FreeBSD case, subdivide the partition into slices(?) for more specialized uses.


This requires the installation of a boot loader
Choose one from the following list. As far as i know, there is no major difference between them.
Windows XP:
install windows first - the first primary partition of the master disk will become C:.
D: will be the first primary of the slave disk.
E: is the next primary of the master disk.
This may seem counter-intuitive - but as I've been finding with the Windows style of doing things,
it is often as effective as any other.
/dev/hda1  C:  (hda_=disk 1    ___1=partition 1)
/dev/hdb1  D:  (hdb_=disk 2    ___1=partition 1)
/dev/hda2  E:  (hda_=disk 1    ___2=partition 2)
/dev/hdb2  F:  (hdb_=disk 2    ___2=partition 2)
/dev/hda3  G:  (hda_=disk 1    ___3=partition 3)
/dev/hdb3  H:  (hdb_=disk 2    ___3=partition 3)


About Windows and your MBR:
The reason why we install Windows first is that it does not cooperate with other operating systems.
The Windows installer will overwrite your Master Boot Record(MBR) stored in the first track of the hard disk.
The MBR contains information to point a booting computer system to a particular partition of the disk, where any operating system may be installed.
The Windows installer will overwrite this record to point to only itself.
This effect can potentially be reversed by using the Redhat installer in linux rescue mode.
You boot to the cd, type:
linux rescue
and then it should hopefully find your previously installed Redhat system.
My guess is it just checks every partition for signs of a filesystem.
Once it finds your system, it will exit to a shell and give a command prompt. You are to type:
chroot /mnt/sysimage
/sbin/lilo
reboot
Check the output of lilo to make sure that the process completed without errors. When lilo is executed, it creates a new MBR and writes it onto the first track of the disk for you.
The system will reboot, and the first thing you should see is a lilo screen, with as many options as you supplied to it in /etc/lilo.conf.
Remember to add entries for Windows and FreeBSD in lilo.conf. You will have to manually add the partitions from which to boot, but this should not be a problem if you have kept a record of your partition table. In linux, partitions are referenced by /dev/hdYX where X is the letter of the ordinal number of the partition(1=a, 2=b, 3=c...) and Y is the drive letter(a for first IDE master, b for slave, etc.)
Try the command 'df' in Linux to display your partitions.



Linux - Redhat 7.2(Enigma):

The Redhat installer is very straightforward and pretty easy to use.
I selected a custom install, and hand picked lots of packages from the developer section, fonts, etc.

Once the installer has completed and you have a booting Redhat system, recover your old system's state with the following files:
 - linux kernel .config
 - NVIDIA 3123 requires kernel-2.4.13
     nvidia driver 3123+kernel2.4.13 == stable
     {3123,4191}+2.4.18 = ???  - had to change XF86Config nv to nvidia
 - /etc/lilo.conf
 - /etc/fstab
 - /etc/sysconfig/network - - change hostname at startup
 - /etc/X11/XF86Config-4

copy kernel config to linux src dir, then...
Linux custom kernel compilation instructions:
## Here is a more detailed tutorial from kernelnewbies.org

cd /usr/src/linux ## this directory can also be in your user space, in my case /home/jim/linux
make mrproper
make xconfig ## or make menuconfig or make config - configure your options here
make dep bzImage modules
su ## root commands in orange
make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.XXX ## replace XXX with your custom version ID string
cp System.map /boot/System.map-2.4.XXX
pico /etc/lilo.conf
/sbin/lilo
linux problems on fresh install:
------------------------------------------------------
 - whats with the new xmms that has song select latency and no volume control??  1.2.5??
   tried copying 1.2.4 from the old drive to /usr/bin - launches, but freezes after that.
   WILL NOT PLAY.   what happened?
 - /etc/init.d/sshd
     sshd not accepting?? why not? worked in the last redhat



sshd wont accept connections.
it just refuses them......
Now it'll prompt me for a password, but won't accept it(even though its correct!)
also it doesnt start on boot.... i thought i told the rh installer to do that
to make sshd work:
download newest release, openssl.org
install it
groupadd sshd
useradd -g sshd sshd
For security reasons? it requires its own user.  Make sure you cant log in as sshd.




FreeBSD 4.7:
Installer hangs in the probe phase after kernel config:
usb0: SMM not responding, resetting...

Googling on that line produces a bunch of installer output, but nobody seems to have ever frozen
on that part of the process.  The same thing happens on the FreeBSD mini install.

Is this a USB issue?  is usb0 the one built into the motherboard?
OK, in BIOS settings, turn off the secondary USB ports using option USB_function?? 
  - primary, both, or none.  choose primary.  The secondary usb ports freeze the installer, not eh primary.  i wonder why.

Installer process configures X fairly well.
once installed, 



FreeBSD custom kernel compilation instructions:
cd /usr/src ##(as root):
ee sys/i386/conf/PIKKON ## adding the following options here
    option USER_LDT ### for nvidia
    option EXT2FS ### to mount linux partitions
    option PNPBIOS ### for sound?
    device pcm ### for sound device
make buildkernel KERNCONF=PIKKON
make installkernel KERNCONF=PIKKON


 - bsd kernel config PIKKON
 - /etc/fstab
 - /etc/X11/XF86Config


 - /etc/sysconfig/network - - change hostname at startup


cvsup stable-supfile   # from Dan K.
/usr/libexec/locate.updatedb
run dhclient to get dhcp up if its not
ifconfig to work with interfaces
/bin/sh  rc,network start
$SHELL     csh - rehash    # setup

radon.slashnet.org  #linux
irc.freebsdhackers.net  #freebsd



Be wary of the Plug-N-Play BIOS functionality - there is a BIOS option of PlugNPlayOS, which forwards
control to the operating system.  In FreeBSD, there is a PNPBIOS option, sending control back to 
the BIOS.  Make sure both options have the same state, either both on or both off.





GUI/Shell Environment:
 - custom scripts /home/jim/bin
 - /usr/local/share/blackbox/ menu 
 - .blackboxrc
 - .emacs
 - .bashrc
 - .blackboxrc
 - .toprc
 - .xinitrc

 - browser bookmarks
 - get all your paths straight(and other ENV vars)