From df12151280d592e46aa0a10473dc9cc529f93a25 Mon Sep 17 00:00:00 2001 From: espie <> Date: Sun, 20 Sep 1998 15:12:06 +0000 Subject: [PATCH] Not yet complete, probably completely wrong on several important points. *PLEASE* help me fixing that !!!! --- src/etc/etc.i386/INSTALL.linux | 222 +++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 src/etc/etc.i386/INSTALL.linux diff --git a/src/etc/etc.i386/INSTALL.linux b/src/etc/etc.i386/INSTALL.linux new file mode 100644 index 00000000..fb06efd9 --- /dev/null +++ b/src/etc/etc.i386/INSTALL.linux @@ -0,0 +1,222 @@ +$OpenBSD: INSTALL.linux,v 1.1 1998/09/20 15:12:06 espie Exp $ + +Warning: this document is currently being written. It's not yet complete, +and probably contains loads of errors. + + Linux + OpenBSD: it's possible + + by Marc Espie -- Marc.Espie@openbsd.org + +It is perfectly possible to have linux and openbsd on the same disk. +As of this writing, OpenBSD can read and write linux' partitions, whereas +Linux cannot access OpenBSD partitions (they differ from NetBSD partitions). + +You can even install OpenBSD from an ext2fs partition (choose install from +disk... ext2fs does not appear in the choices, but `default' it is). + +First, make a bootable floppy of linux. Then, you have to find some room +for OpenBSD. Don't worry about swap space: you can share Linux' swap +partition. + +If you want to grab space from a Windows/DOS partition, use fips. +Fips20 knows all about FAT32, so windows 95 is no longer a problem. + +First principles +---------------- +OpenBSD does not use the DOS partitions for more than booting. You just +need a small DOS partition to put your OpenBSD root. Afterwards, OpenBSD +heeds some other information entirely, called the BSD disklabel. This +disklabel is another completely distinct description of your hard disk. +It does not even have to be consistent with the usual DOS partitions +information. + +Throughout this document, we will distinguish between DOS partitions and +BSD partitions whenever this is necessary. + +For consistency, it's better if all parts of the disks that +are actually used by OpenBSD are flagged as occupied, type A6, though it +is not necessary. The only part of the disk that should appear both as a BSD +partition and as a DOS partition is the root partition: it MUST begin on +the same sector for the boot process to work. + +One way to visualize things is to picture OpenBSD embedded inside DOS +partitions: the DOS partition(s) used by OpenBSD may each contain several +OpenBSD partitions. As long as the DOS partition table has the right +start and length for each partition it will be kept happy. + +The OpenBSD disklabel is just another mechanism that yield another +description of the disk. It is vitally important that the BSD root +partition start precisely where the corresponding DOS partition is supposed +to start, and it is better when all BSD partitions stay inside their +DOS partitions boundary. Apart from OpenBSD partitions proper, the +BSD disklabel can yield a BSD description of other DOS partitions, but +this is not mandatory. If you don't have any constraints, having a correct +description of all partition is better, but with bigger disks, keep in mind +that OpenBSD disklabels can't hold more than 16 partitions. + +Contrarily to popular belief, OpenBSD does *NOT* need one contiguous chunk +of the disk. It is probably the simplest setup, but other considerations +(such as the need to boot several OS, and have several small primary +partitions that all start before cylinder 1024) may lead you to use +two chunks for OpenBSD. + +If you can, it is MUCH better to devote a full disk to OpenBSD: this limits +the number of mistakes you can do. Admittedly there are some cases where +this isn't a option (my machine is a laptop... I have to cope with the +harddisk I have). + +Mapping your disk +----------------- +Starting from Linux, get a grasp of your partitions. Use df to check which +is what, then fdisk to get the actual setup of the disk. +Here is my disk: +-- + +Disk /dev/hda: 128 heads, 63 sectors, 993 cylinders +Units = cylinders of 8064 * 512 bytes + + Device Boot Begin Start End Blocks Id System + /dev/hda1 1 1 260 1048288+ 6 DOS 16-bit >=32M + /dev/hda2 261 261 273 52416 83 Linux native + /dev/hda4 287 287 993 2850624 5 Extended + /dev/hda5 287 287 303 68512 82 Linux swap + /dev/hda6 304 304 456 616864+ 83 Linux native + /dev/hda7 457 457 520 258016+ 83 Linux native + /dev/hda8 521 521 537 68512+ 83 Linux native + /dev/hda9 538 538 601 258016+ 83 Linux native + +(In case you're wondering, yes this is a big disk. The linux playground is +large, the OpenBSD area will be huge. As a developper, I usually have loads +of source & binaries lying around... a simple OpenBSD installation can fit +within 300 Mb with room to spare). + +Get the display to sectors with u, and jot down the corresponding +information as well: +-- +Disk /dev/hda: 128 heads, 63 sectors, 993 cylinders +Units = sectors of 1 * 512 bytes + + Device Boot Begin Start End Blocks Id System + /dev/hda1 63 63 2096639 1048288+ 6 DOS 16-bit >=32M + /dev/hda2 2096640 2096640 2201471 52416 83 Linux native + /dev/hda4 2306304 2306304 8007551 2850624 5 Extended + /dev/hda5 2306368 2306368 2443391 68512 82 Linux swap + /dev/hda6 2443455 2443455 3677183 616864+ 83 Linux native + /dev/hda7 3677247 3677247 4193279 258016+ 83 Linux native + /dev/hda8 4193343 4193343 4330367 68512+ 83 Linux native + /dev/hda9 4330431 4330431 4846463 258016+ 83 Linux native + +Okay, finally switch to expert mode, and note the corresponding data. +Disk /dev/hda: 128 heads, 63 sectors, 993 cylinders + +Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID + 1 00 1 1 0 127 63 259 63 2096577 06 + 2 00 0 1 260 127 63 272 2096640 104832 83 + 3 00 0 0 0 0 0 0 0 0 00 + 4 00 0 1 286 127 63 992 2306304 5701248 05 + 5 00 1 2 286 127 63 302 64 137024 82 + 6 00 1 1 303 127 63 455 63 1233729 83 + 7 00 1 1 456 127 63 519 63 516033 83 + 8 00 1 1 520 127 63 536 63 137025 83 + 9 00 1 1 537 127 63 600 63 516033 83 + +Note that this is STILL the same data. The good point about this last +display is that it is what you're going to see in OpenBSD fdisk ! + +You will notice that the 3rd primary partition is empty... this is where +I intend to stick my OpenBSD root partition (both DOS and BSD partitions), +and that I have cylinders 602-993 empty... this is where I intend to +stick the rest of OpenBSD. + +Before starting to install OpenBSD, now would be a good time to check the +INSTALL.pt document... Especially note the alignment restriction of +partitions (first sector of a partition must be at head 0, sector 1 of a +cylinder). This is enforced by linux' fdisk. + +The other point to note is that extended partitions are actually linked +lists. This will also show up in OpenBSD' fdisk. + +Your clock and OpenBSD +---------------------- +One last thing you can do before starting OpenBSD: OpenBSD expects your +hardware clock to be in universal time, and uses timezones to give you +local time. With linux, this depends... most distributions use a small +program called hwclock to set up the system time from the hardware clock +when booting... there is a --utc option if your hardware clock is in +universal time, but this is not always the case. + +Check your distribution, on redhat 5.1, this occurs in /etc/rc.d/rc.sysinit +which loads /etc/sysconfig/clock which defines a variable called UTC before +calling hwclock. +- ensure UTC is set to true +- adjust your hardware clock from the system time if necessary, e.g., +hwclock --systohc --utc + +Linux fs and OpenBSD +-------------------- +There is a problem with many linux rc that do mount all filesystems even +in single-user mode. After you've installed OpenBSD, if your linux kernel +knows about bsd disklabels, it may insert lots of bsd partitions in its +list. Then at the next reboot, you're in trouble. The simplest way around +that is probably to make sure you have a linux kernel around that doesn't +know about disklabels. Otherwise, you may wish to check your inittab +and your rc to make deadly sure that single-user boot will work. + + +The OpenBSD installation +------------------------ +If you've got the space, you can install from your ext2fs partitions. This +is what I did, as I have a slip connexion to the rest of the world, and +the OpenBSD install floppy does not include slip. + +REMEMBER TO BACKUP ALL IMPORTANT DATA ON YOUR DISK BEFORE DOING THE +INSTALLATION !!! + +So you cp floppy*.fs /dev/fd0, then reboot... + +<<<* TO BE COMPLETED *>>> + + +Booting +------- +First time I booted my system back, I did not get into linux... I forgot +I had installed lilo in the master boot block, and lilo does not heed +the active partition flag. Fix was rather simple though. Once I was into +linux, I just had to edit lilo.conf to read: + +boot=/dev/hda +map=/boot/map +install=/boot/boot.b +prompt +timeout=50 +image=/boot/myvmlinuz + label=linux + root=/dev/hda2 + vga=4 + read-only +image=/boot/vmlinuz-2.0.34-1 + label=redhat + root=/dev/hda2 + read-only +other=/dev/hda1 + label=dos + table=/dev/hda +other=/dev/hda3 + label=obsd + table=/dev/hda + +(changed were the last 3 lines) and rerun lilo, and voila, +OpenBSD was able to boot ! + +Linux and OpenBSD partitions +---------------------------- +As of 2.0.35/2.1.122, linux does not support OpenBSD partitions. The way +the linux kernel works is reasonably straightforward, code in +drivers/block/genhd.c: when it detects a BSD disklabel, it does read it +and instantiates some new partitions, that will show up in that drive's +partition list. Unfortunately, that check is hardcoded for type A5 +(NetBSD/FreeBSD) disklabel, and it recognizes only 8 partitions disklabels +anyway. + +JUST HACKING THAT CODE TO RECOGNIZE A6 IS NOT ENOUGH !!! +MORE IS INVOLVED AS THE OPENBSD PARTITION TABLE FORMAT IS *DIFFERENT*.