diff --git a/src/etc/etc.i386/INSTALL.linux b/src/etc/etc.i386/INSTALL.linux index fb06efd9..7d082723 100644 --- a/src/etc/etc.i386/INSTALL.linux +++ b/src/etc/etc.i386/INSTALL.linux @@ -1,7 +1,10 @@ -$OpenBSD: INSTALL.linux,v 1.1 1998/09/20 15:12:06 espie Exp $ +$OpenBSD: INSTALL.linux,v 1.2 1998/09/22 17:21:22 espie Exp $ + +Warning: this document is currently being reviewed. It's not yet complete, +and probably contains loads of errors. As an example, I can't figure out +why linux doesn't need mkswap as it shares the exact same blocks with +OpenBSD. -Warning: this document is currently being written. It's not yet complete, -and probably contains loads of errors. Linux + OpenBSD: it's possible @@ -75,10 +78,10 @@ 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 + 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/hda4 287 287 600 1270080 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 @@ -89,6 +92,8 @@ Units = cylinders of 8064 * 512 bytes 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). +In my setup hda2 is /, hda6 is /usr, hda7 is /usr/local hda8 is /var, and +hda9 is /home. Get the display to sectors with u, and jot down the corresponding information as well: @@ -96,10 +101,10 @@ 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 + 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/hda4 2306304 2306304 4846464 1270080 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 @@ -113,7 +118,7 @@ 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 + 4 00 0 1 286 127 63 600 2306304 2540160 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 @@ -121,7 +126,10 @@ Nr AF Hd Sec Cyl Hd Sec Cyl Start Size ID 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 ! +display is that it is almost what you're going to see in OpenBSD fdisk ! +The only difference is that: +- OpenBSD fdisk displays cyl/hd/sec, which is a more sensible order. +- OpenBSD fdisk displays `real' offsets from the beginning of the disk. 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), @@ -138,12 +146,12 @@ 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. +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 what happens by default. 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 @@ -162,7 +170,6 @@ 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 @@ -173,9 +180,165 @@ 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 *>>> - +After a while, you will see your disk configuration scroll up. +I got: +wd0 at wdc0 drive 0: +wd0: 3909MB, 7944 cyl, 16 head, 63 sec, 512 bytes/sec, 8007552 sec total +wd0: using 16-sector 16-bit pio transfers, lba addressing +at which point I got somewhat confused, especially as this is a config with +more than 1024 cylinders. In fact, this is the real disk geometry, when +you inquire about it, but the geometry that the BIOS sees IS the fdisk +geometry, with 993 cylinders. As the 1024 cylinders is purely a BIOS +limitation, there is no actual trouble. +If you want to be sure, right after the machine loads the kernel, there is +a boot prompt: +boot> +at which point you can enter: machine diskconfig +before the automatic boot sequence continues. + +Then I got into fdisk, and I proceeded to enter my new OpenBSD partition. +This is what the fdisk dump looked after I added the OpenBSD partition: + +Disk: wd0 geometry: 992/128/63 [7999488 sectors] +Offset: 0 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 06 0 1 1 - 259 127 63 [ 63 - 2096577] DOS > 32MB + 1: 83 260 0 1 - 272 127 63 [ 2096640 - 104832] Linux files* + 2: A6 273 0 1 - 285 127 63 [ 2201472 - 104832] OpenBSD + 3: 05 286 0 1 - 600 127 63 [ 2306304 - 2540160] Extended DOS + +Selected extended partition 3 +New MBR at offset 2306304. +Offset: 2306304 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 82 286 1 2 - 302 127 63 [ 2306368 - 137024] Linux swap + 1: 05 303 0 1 - 455 127 63 [ 2443392 - 1233792] Extended DOS + 2: 00 0 0 0 - 0 0 0 [ 2306304 - 0] unused + 3: 00 0 0 0 - 0 0 0 [ 2306304 - 0] unused + +Selected extended partition 1 +New MBR at offset 2443392. +Offset: 2443392 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 83 303 1 1 - 455 127 63 [ 2443455 - 1233729] Linux files* + 1: 05 456 0 1 - 519 127 63 [ 3677184 - 516096] Extended DOS + 2: 00 0 0 0 - 0 0 0 [ 2443392 - 0] unused + 3: 00 0 0 0 - 0 0 0 [ 2443392 - 0] unused + +Selected extended partition 1 +New MBR at offset 3677184. +Offset: 3677184 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 83 456 1 1 - 519 127 63 [ 3677247 - 516033] Linux files* + 1: 05 520 0 1 - 536 127 63 [ 4193280 - 137088] Extended DOS + 2: 00 0 0 0 - 0 0 0 [ 3677184 - 0] unused + 3: 00 0 0 0 - 0 0 0 [ 3677184 - 0] unused + +Selected extended partition 1 +New MBR at offset 4193280. +Offset: 4193280 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 83 520 1 1 - 536 127 63 [ 4193343 - 137025] Linux files* + 1: 05 537 0 1 - 600 127 63 [ 4330368 - 516096] Extended DOS + 2: 00 0 0 0 - 0 0 0 [ 4193280 - 0] unused + 3: 00 0 0 0 - 0 0 0 [ 4193280 - 0] unused + +Selected extended partition 1 +New MBR at offset 4330368. +Offset: 4330368 Signatures: 0xAA55,0x0 + Starting Ending + #: id cyl hd sec - cyl hd sec [ start - size] +------------------------------------------------------------------------- + 0: 83 537 1 1 - 600 127 63 [ 4330431 - 516033] Linux files* + 1: 00 0 0 0 - 0 0 0 [ 0 - 0] unused + 2: 00 0 0 0 - 0 0 0 [ 4330368 - 0] unused + 3: 00 0 0 0 - 0 0 0 [ 4330368 - 0] unused + +Nothing to it... you just follow the extended partition links using select, +jot down whatever you need, add the OpenBSD partition to look like you want +it to, and save everything. + +After you leave fdisk, you get to the interesting part: the disklabel +itself. If all goes well, OpenBSD synthetizes a nice disklabel out of what +it can deduce from the disk, including the ext2fs partitions. + +There are only a few subtleties to take care of: +- initially, you can ONLY edit the disklabel part that matches the OpenBSD +DOS partition (a `slice' in FreeBSD linguo). You can use b 0 * to be able +to edit the whole disk, +- the real disk geometry becomes relevant. OpenBSD file system can't use +partial cylinder groups, hence bsd partitions should start on cylinder +boundaries, any remaining sectors will be lost anyway. +- units for size and offset can be given as sectors (default) or cylinders +(suffix c). + +After edition, this is what my disklabel looks like: + +# using MBR partition 2: type A6 off 2201472 (0x219780) size 104832 (0x19980) +# /dev/rwd0c: +type: ESDI +disk: +label: TOSHIBA MK4006M +flags: +bytes/sector: 512 +sectors/track: 63 +tracks/cylinder: 16 +sectors/cylinder: 1008 +cylinders: 7944 +total sectors: 8007552 +rpm: 3600 +interleave: 1 +trackskew: 0 +cylinderskew: 0 +headswitch: 0 # milliseconds +track-to-track seek: 0 # milliseconds +drivedata: 0 + +16 partitions: +# size offset fstype [fsize bsize cpg] + a: 104832 2201472 4.2BSD 1024 8192 16 # (Cyl. 2184 - 2287) + b: 137024 2306368 swap # (Cyl. 2288 - 2423*) + c: 8007552 0 unused 0 0 # (Cyl. 0 - 7943) + d: 409248 4846464 4.2BSD 1024 8192 16 # (Cyl. 4808 - 5213) + e: 511056 5255712 4.2BSD 1024 8192 16 # (Cyl. 5214 - 5720) + f: 204624 5766768 4.2BSD 1024 8192 16 # (Cyl. 5721 - 5923) + g: 1073520 5971392 4.2BSD 1024 8192 16 # (Cyl. 5924 - 6988) + h: 962640 7044912 4.2BSD 1024 8192 16 # (Cyl. 6989 - 7943) + i: 2096577 63 MSDOS # (Cyl. 0*- 2079*) + j: 104832 2096640 ext2fs # (Cyl. 2080 - 2183) + l: 1233729 2443455 ext2fs # (Cyl. 2424*- 3647*) + m: 516033 3677247 ext2fs # (Cyl. 3648*- 4159*) + n: 137025 4193343 ext2fs # (Cyl. 4160*- 4295*) + o: 516033 4330431 ext2fs # (Cyl. 4296*- 4807*) + +Things to check: +- this disklabel is saved in MBR2 (basic dos partition 2), as expected. +- all the bsd partitions proper are aligned on a cylinder boundary. +the root partition begins at the precise same offset the corresponding DOS +partition begins, and it extends for the same length. +Other bsd partitions don't show up in the dos partition setup, hence they +begin precisely on cylinder 601/4808. +- the ext2fs partitions have the exact same layout under the OpenBSD +disklabel. + +One point that is somewhat laborious is that the disklabel -E mode +(which you are currently using) tends to move partitions around to ensure +that ALL partitions fit are contiguous. Hence, you may need some fiddling +and printing around to ensure that Linux partitions do show up where they +should. In my case, disklabel moved the swap and all the ext2fs partitions +slightly, and I add to adjust them manually... + +Once the disklabel is written to disk, the installation proceeds as usual. Booting ------- @@ -218,5 +381,18 @@ 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*. +Just hacking the linux code to recognize A6 is not quite enough. You also +need to trim down the resulting list of partitions, as your ext2fs +partitions will now show up twice ! +I'm currently trying to implement some smart recognition scheme, where +the bsd disklabel would appear AFTER linux partitions, and where native +linux partitions wouldn't show up as duplicates in the disklabel. + +You also need a working ufs, such as + +Usually, the patch must be done manually so that the new module will +compile. + +Binary compatibility +-------------------- +not yet written...