Saturday, 18. June 2022

Legends start at 1.0! - FreeBSD in 1993 (pt. 1)

[This article has been bi-posted to Gemini and the Web]

In 2017, I wrote a series of articles on FreeBSD's famous version 4.11 (and an experiment to use Pkgsrc to get modern software running on it), but I've been interested in the history of my operating system of choice for longer than that.

Updating FreeBSD 4.11 (1/4) - Blast from the past

Updating FreeBSD 4.11 (2/4) - Digging up old graves

Updating FreeBSD 4.11 (3/4) – Neophyte's notorious necromancy

Updating FreeBSD 4.11 (4/4) - Reflecting radical resurrection

It's been half a decade since I visited 4.x, my familiarity with FreeBSD has grown further and I finally dare to embark on the adventure to look at the very beginning. I had originally thought about doing this in a VM. However while dusting off an old laptop of mine to test 13.1-BETA releases on, I thought that I might give ancient FreeBSD a shot on that machine. It is an _Acer TravelMate 272XC_ laptop that I got in 2003 (see dmesg at the bottom if you want to know more). It is not the oldest machine that I still have, but it is the last one with a working floppy drive!

So I would simply install FreeBSD 1.0, mess with it a little and then write an article about it. Nothing too complicated, should be done in a couple of hours on a weekend! Except it turned out to be... just _a little_ more involved.

A little Internet meme that the process inspired me to create (JPG)

Pre-history

The dream of being able to run BSD on a home computer came true when Lynne and William Jolitz released 386BSD version 0.0 in March 1992. It is said to have been rather rough around the edges, but many people contributed fixes and improvements and so a much better version 0.1 could be released 3 months later.

People continued to hand in patches, but a major disagreement on the further direction of the project had come to be. A group of users started to distribute an unofficial _patchkit_ of enhancements and fixes that had been declined by the project lead. Eventually it became obvious that 386BSD as a whole was going nowhere and the FreeBSD project was started to build a new system based on 386BSD and the patchkit. Around the same time a different group had set out to create NetBSD.

FreeBSD 1.0 was eventually released in November 1993. For some context: Only about a month later, ID Software unleashed (get the reference?) the DooM shareware unto the FTPs and it took the world by storm. If you had any interest in computer games at that time, you were about guaranteed to be "Knee-deep in the Dead" at that time!

Preparations

I've never seen an actual physical FreeBSD 1.x CD. The oldest thing that I ever had in hand was some 2.x CDs. But fortunately we have the Internet Archive and somebody bothered to upload an image of a Walnut Creek CDROM FreeBSD 1.0 disk:

FreeBSD 1.0 ISO image

When I had that, I installed FreeBSD 13.1 on my old laptop, so I could create the boot floppy. Yes, actual 3.5" floppies - while CD-ROMs already existed, PCs could not yet boot off of them! They gave me a lot of headaches because some of them haven't aged too well and have a lot of defective sectors. Fortunately I kept one case of diskettes with about 50 of those around and eventually got enough good ones (or at least mostly good ones) to work with.

FreeBSD 1.0 requires you to prepare at least 3 floppies:

Those three are dd'd onto the diskettes:

dd if=kcopy_ah.flp of=/dev/fd0
dd if=filesys.flp of=/dev/fd0
dd if=cpio.flp of=/dev/fd0

FreeBSD 1.0 comes in the form of various _distribution sets_ which can be installed. The required one is the _binary distribution_ or "bindist". It consists of 81 files like "bin_tgz.aa", "bin_tgz.ab" and so on, all but the last one 235k in size for about ~ 20 MB in total. The naming scheme suggests that these were created from a big gzipped tarball using the split(1) command. There's also an _extract.sh_ script which will concatenate all parts, decompress the resulting tarball and... well, extract it.

There's also "objdist", which contains (except for the extract script) a single file, "obj_tgz.aa" which is 7 KB in size. It's content is the empty folders in the /usr/obj hierarchy. I honestly don't understand what you need that for, but ok, it's there in case you want it.

Much more interesting is "srcdist", the _source distribution_. It contains 76 tarball part files which are 16 MB combined (plus the usual extract script). This distribution set consists of multiple tarballs for components like _base_, _bin_, _contrib_, _etc_, _games_ and so on, _gnu_ (which contains the compiler and other things) being by far the largest. I assume being able to pick was meant for people who were low on disk space and not wanting to rebuild the system but being interested in parts of the source code for reference.

And then we have "xfree86" and "xfreesrc" being 22 MB and 20 MB in size and consisting of various tarball fragments and several additional readme files each (plus the extract scripts of course).

I definitely need the binary distribution, however FreeBSD 1.0 does not support the CD drive in my laptop (which is not all _that_ surprising, considering that the machine was built about a decade later!). The network card isn't supported, either, and of course there was no USB, yet. So I'm stuck with transferring all the data over via floppies - and unfortunately, as mentioned above, I have only a single machine with a working drive. Which makes things even less pleasant.

Because back in the day, DOS-formatted (FAT-12) floppies were the common thing, that is what the FreeBSD tools expect you to use. You can of course use UFS-formatted floppies and copy everything over manually. But why would you want to ignore the helper script that the installation system ships with? So let's first format a bunch of floppies (I used about 30) by running this command over and over:

newfs_msdos -f 1440 fd0

Then I mount the filesystem and copy over the files from the directory that I changed to before:

mount_msdosfs /dev/fd0 /mnt
cp bin_tgz.aa bin_tgz.ab bin_tgz.ac bin_tgz.ad bin_tgz.ae bin_tgz.af /mnt

When one disk is done, I check if all the files on the floppy are actually readable. There's no guarantee that they actually _are_ correct, but if there were no write errors and there are no read errors now, the chance is pretty high that they are. Copying the files off the floppy again right away is not of much help since they are cached. To have the cache dropped, I unmount and re-mount the filesystem on the floppy before the copy operation:

umount /mnt
mount_msdos /dev/fd0 /mnt
cp /mnt/* /tmp/

All fine? Great, next floppy! Read error? Too bad, delete the corrupted file and put it onto the next floppy... A surprisingly large amount of my floppies were able to hold five parts just fine, but on some I only got as little as two because too many defective sectors would not allow for more.

That was actually hard work, but eventually I had my set of floppies ready for the installation. Let's do it!

Installation: Disk geometry

The first thing to do is to boot the machine off of the kernel floppy which also contains the boot code. Once the kernel booted, it will ask you to insert the filesystem floppy and hit Enter. An installer script runs which will ask you various questions. This is kind of like what OpenBSD still does but with much more excessive information and more questions to answer. I'm going to document this unusual installation process completely for those who'd like to read it all (I sure did) and comment on it. If that's too much text for you, of course feel free to skim / skip over parts as you please.

There are some inconsistencies with quoting and punctuation. I've tried to preserve them as they were displayed. I didn't notice actual typos, though, so if you see one here, that may very well have been me (I was more interested in the installation than double-checking every single line! 😉)

Welcome to FreeBSD.
This program is designed to help put FreeBSD on a hard disk with
at least 16 Megabytes of free space.
Before starting, it is important to know your hard disk's geometry
(i.e., number of cylinders, heads and sectors/track). If installing
FreeBSD on the same disk as another operating system, then the
two systems should use the same geometry. In particular, FreeBSD's
default geometry is inappropriate for MS-DOS. So in this case, the
DOS geometry should be used instead.
As with anything which modifies a hard drive's contents, this program
can cause SIGNIFICANT data loss. We strongly recommend making sure
that the hard drive is backed up before going further with the
installation process.
Proceed with installation? [y]

As noted above, keeping DOS around on your most powerful machine (or probably your only PC!) made a lot of sense. For this little adventure I'm going to ignore the existence of any other operating systems, though and just go "ultra-violence" on this system (or will it be "hurt me plenty" only? Who knows!) [two more DooM references in case you don't know that game]. So I'm free to choose any geometry that suits me (and that FreeBSD works with) without having to consider DOS. I want to do this, so: Yes, the default option looks fine to me!

Cool! Let's get to it...
If a mistake is made along the way, don't bail out.
At the end, you have the option of redoing the configuration.
If you really must quit at some point, type <CTRL>+C and
enter `halt' at the command prompt, `#'.
First, we need to know the drive type. This can be one of
ESDI, SCSI, ST506, or IDE.
Drive type? [IDE]

Yes, I've got an IDE disk (lucky me!). I'm not sure what type of disk the first 80286 that my father owned had, but from the disks that I do remember, I'm not old enough to have encountered ESDI or even ST506.

Disk is of device type wd.
Please wait. Examining device /dev/rwd0d...
wd0: cannot find label (no disk label)
Disk doesn't appear to be initialized...

There's some interesting info in this paragraph. We can see that the hard disk is still identified as _wd0_ and not as _ad4_ (or something, depending on how it's connected) as it was later and certainly not as _ada0_ as it would be today. So it's much closer to NetBSD and OpenBSD which still use this old scheme obviously inherited from 386BSD. Also you can see that FreeBSD 1.0 still uses the old device nodes for _raw_ disk access ("rwd0d").

Now we want to build a data base entry in /etc/disktab describing
the geometry of the /dev/wd0 disk. The name of the entry
should be descriptive of the disk's type and model. For example,
a Maxtor IDE, model 7080 disk might be named `maxtor7080'.
Disk label name (one word, please)? [mfr_model]

Ah, the joy (not!!) of hard disk management of ye olden days! If you're not familiar with the so-called _CHS addressing_ (Cylinder-Head-Sector), just be glad that it's gone and that _LBA_ became a thing in the mid 90's IIRC. However where we're venturing right now, CHS was still a thing (or rather: _the_ thing).

My laptop has only one hard drive and I do not bother to come up with a good name for the disktab entry. The "default" abbreviation for "manufacturer_model" (if I'm guessing correctly) is fine. It's just an arbitrary label, right?

FreeBSD should use the same hard disk geometry as used by other
operating systems on the hard disk.
Number of bytes per disk sector? [512]
Total number of disk cylinders? [2102]
Number of disk heads (i.e., tracks/cylinder)? [16]
Number of disk sectors (i.e., sectors/track)? [63]

I decide to go with the defaults here. Yes, the drive I have is actually 20x bigger, but having 1 GB of usable space was plenty back in the day. I remember that at some point the drive in the PC of a friend could not hold all the data of a full CD-ROM (650 MB) while mine could. As we were very much into WarCraft II at that time, that must have been early to mid 1996. So 1 GB in late 1993 should be pretty good if my memories serve me correctly.

Ok, I admit that I had allocated the whole disk on my first installation attempt, planning create a huge unused partition which covered most of the drive. That did not work out as the installed system simply would not boot. Unfortunately I forgot to correct the numbers below which will look like I chose the whole disk for the slice. Sorry for that! So while I corrected the numbers in square brackets, the others are bogus.

Partition Offset* Size* Name
--------- ------ ---- ----
0 1 38759 386BSD
1 0 0 (Unused)
2 0 0 (Unused)
3 0 0 (Unused)
* Sizes and offsets are in units of cylinders.
WARNING: >1024 cylinders. On some hardware, this prevents
FreeBSD from sharing the disk with other operating systems.
Install FreeBSD on entire disk, overwriting existing partitions? [n] y

The drive had /dev/zero dd'd all over it before I started, so there's nothing valuable to lose. Let's do it.

Installation: Slicing and partitioning the disk

Disk has a total of 19077 Mb.
The size of the FreeBSD portion of the disk must be at least
32 cylinders, and should not exceed 38759 cylinders.
The offset of FreeBSD from the beginning of the disk should be at
least 1 cylinder.
For efficiency, partitions begin and end on cylinder boundaries.
If you know the size NN im Megabytes (Mb) of a partition you want, then
use the following formula to determine the number of NC of cylinders to use:
NC = integer { ( NN * 2048 ) / 1008 }
Total size of the FreeBSD portion of the disk (in cylinders)? [2102]

As I mentioned, I first tried to go with much more space and chose the maximum of 38759 mentioned here but did not have any luck with that. So on my second try I decided to be much more modest.

WARNING: Existing partitions will be lost. In addition,
installing at cylinder 0 may cause problems for some disk
controllers. If the filesystem is corrupted or install
fails, install at cylinder 1.
There are 19077 Mb (38760 cylinders) to allocate.
The FreeBSD portion of the disk must itself be divided into at least
two partitions: one for the root filesystem and one for swap. It is a
good idea to have at least a third (large) FreeBSD partition for the /usr
filesystem.

Ok, here we have what we FreeBSD users are all familiar with: The "FreeBSD portion" is the disk slice (a.k.a. "BIOS partition") and the partitions are disklabel partitions. Would I have understood this back in my DOS days from just reading this text (well, If my English had been sufficient)? Probably not. But hey, going with the defaults results in a working installation and chances are that I would eventually have learned it, anyway.

The root partition cannot exceed 38744 cylinders. It is usually
no larger than about 15 Mb (30 cylinders), and sometimes
as small as 7 Mb (14 cylinders).
Root partition size (in cylinders)? [30] 64

I've got plenty of space to assign, so let's about double the default and create a very large root partition of 32 MB in size!

We can build the filesystems with block/fragment sizes of either
1) 4k/512, to save disk space at the expense of speed, or
2) 8k/1k for speed at the expense of disk space.
Which blocking factor should we use for the filesystems? [2]

I haven't touched good old UFS in a while. While the files back in the day certainly were smaller overall, I do not plan on littering that system with tiny files of less than 1k in size. And for the files that are smaller, wasting some bytes up to that fragment size is very much fine by me.

19018 Mb (38640 cylinders) remaining in FreeBSD portion of disk.
Minimum swap space is 16 cylinders.
For running X, if your RAM size is NR Mb, then the recommended swap
size NS (in cylinders) is:
NS = integer { ( NR x 4300 ) / 1008 }
Swap partition size (in cylinders)? [68] 272

For the swap partition I decided to be very generous by quadrupling the default (the machine has unbelievable 256 MB of RAM after all! 😉).

Now we enter information about any other partitions and filesystems
to be created in the FreeBSD portion of the disk. This process
is complete when we've filled up all remaining space in the FreeBSD
portion of the disk.
18884 Mb (38368 cylinders) remaining in FreeBSD portion of disk.
Next partition size (in cylinders)? [1766]

While I originally also had separate partitions for /var, /tmp and an unused one, in my second installation attempt, I decided to go with a simplistic scheme of putting the rest of the available space into /usr.

On which directory should this filesystem be mounted? [usr]
There appears to be a MS-DOS filesystem on the hard disk.
Make this be accessible from FreeBSD? [y] n

This one is interesting. Since the drive is completely blank, it cannot have detected anything and I would guess that they simply made the assumption that basically everybody would have a DOS filesystem on the drive! But nope, I really haven't.

mfr_model|FreeBSD installation generated:\
:dt=ST506:ty=winchester:\
:nc#2102:ns#63:nt#16:\
:se#512:\
:pa#64512:oa#0:ta=4.2BSD:ba#8192:fa#1024:\
:pb#274176:ob#64512:tb=swap:\
:pc#2118816:oc#0:\
:pe#1780128:oe#338688:te=4.2BSD:be#8192:fe#1024:\
:pd#39070080:od#0:

Here the installer script prints out the disktab entry that it generated from the answers that I gave so far. I found it important enough to actually correct the values afterwards, so what you see here is what I ended up using. Interestingly enough, it seems that the script has selected ST506 after all for what I assume is the disk type (didn't bother to look up disktab specifics). You can see the slice total capacity, the drive geometry and the partitions (classic style with "c" and "d" having their special meaning of "whole drive" and "whole slice").

Installation: Writing the system to disk

Verbose installation? [n]

I tried this out because I was curious; if you state "y", you'll get info like which files are extracted from the tarball and such. If you're not debugging anything, it's too much.

OK! THIS IS THE LAST CHANCE!!! Data on the hard disk will be lost.
Are you sure you want to install on the hard drive? (yes/no) yes

Right, let's go!

OK! Here we go...
Labelling disk... done
Initializing root filesystem, and mounting...

At this point there was quite a bit of output for filesystem creation. I don't think it's too exciting (and it flew by too quickly to take notes of it, anyway).

Please wait. Copying to disk...
2119 blocks
The next step: reboot from the kernel-copy disk, copy a kernel
to the hard disk, and finally reboot from the hard disk.
To do this, enter `halt' now to halt the machine. After it
announces that it has halted, remove the floppy from the drive
and insert the kernel-copy disk that was booted before.
Press any key to reboot. When prompted to insert the filesystem
floppy, this time, just hit RETURN without changing floppies.
If all goes well, you can enter the command `copy' at the prompt to
copy the kernel to the hard disk. When asked for which partition to
copy to, enter to `wd0a' (without the quotes).
Okay, that's all for now. I'm waiting for you to enter `halt'...

So at this point we have some kind of special "installation system" on the disk, missing just the kernel so it cannot yet boot. Let's do as the instructions suggest and bring the system down now.

# halt
syncing disks... done
The operating system has halted.
Please press any key to reboot.

Ok, I'm supposed to insert the kernel disk again, so I replace the filesystem disk with it, then reboot.

Enter "copy" at the prompt to copy the kernel on this
floppy to your hard disk. enter anything else to reboot,
but wait for the machine to restart to remove the floppy.

So after booting the kernel without giving it the filesystem disk, these instructions appear. Doesn't sound too hard to do.

kc> copy
What disk partition should the kernel be installed on?
(e.g., wd0a, sd0a, etc.)
copy kernel to> wd0a
Checking the filesystem on wd0a...

Here I leave out fsck output. It's not very interesting in detail.

mounting wd0a on /mnt...
Please wait. Copying kernel...
unmouting wd0a...
Time to reboot the machine!
Once the machine has halted (it'll tell you when),
remove the floppy from the disk drive and press
any key to reboot.
halting the machine...
syncing the disks... done
The operating system has halted.
Please press any key to reboot.

Alright, that's it! We have a minimal system on the drive now that also should be bootable. With that, the first part of the installation is done. This article has been long enough, so I'll end it here and cover the rest in part two.

dmesg

For those interested in what machine I'm using, here's the dmesg:

Copyright (c) 1992-2021 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 13.1-BETA3 releng/13.1-n250010-ca2b1e3480b GENERIC i386
FreeBSD clang version 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303)
VT(vga): resolution 640x480
CPU: Intel(R) Pentium(R) 4 Mobile CPU 1.60GHz (1593.60-MHz 686-class CPU)
Origin="GenuineIntel" Id=0xf24 Family=0xf Model=0x2 Stepping=4
Features=0x3febf9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM>
real memory = 268435456 (256 MB)
avail memory = 217411584 (207 MB)
arc4random: WARNING: initial seeding bypassed the cryptographic random device because it was not yet seeded and the knob 'bypass_before_seeding' was enabled.
random: entropy device external interface
kbd1 at kbdmux0
vtvga0: <VT VGA driver>
smbios0: <System Management BIOS> at iomem 0xf7060-0xf707e
smbios0: Version: 2.31
aesni0: No AES or SHA support.
acpi0: <PTLTD RSDT>
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x8008-0x800b on acpi0
acpi_ec0: <Embedded Controller: GPE 0x17> port 0x62,0x66 on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
agp0: <SiS 650 host to AGP bridge> on hostb0
WARNING: Device "agp" is Giant locked and may be deleted before FreeBSD 14.0.
pcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0
pci1: <ACPI PCI bus> on pcib1
vgapci0: <VGA-compatible display> port 0xa000-0xa07f mem 0xf0000000-0xf7ffffff,0xec100000-0xec11ffff irq 10 at device 0.0 on pci1
vgapci0: Boot video device
isab0: <PCI-ISA bridge> at device 2.0 on pci0
isa0: <ISA bus> on isab0
ohci0: <SiS 5571 USB controller> mem 0xec000000-0xec000fff irq 10 at device 2.2 on pci0
usbus0 on ohci0
ohci1: <SiS 5571 USB controller> mem 0xec001000-0xec001fff irq 10 at device 2.3 on pci0
usbus1 on ohci1
atapci0: <SiS 961 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x9480-0x948f at device 2.5 on pci0
ata0: <ATA channel> at channel 0 on atapci0
ata1: <ATA channel> at channel 1 on atapci0
pci0: <simple comms, generic modem> at device 2.6 (no driver attached)
pcm0: <SiS 7012> port 0x8800-0x88ff,0x9080-0x90ff irq 5 at device 2.7 on pci0
pcm0: <Avance Logic ALC202 AC97 Codec>
pci0: <serial bus, FireWire> at device 5.0 (no driver attached)
rl0: <RealTek 8139 10/100BaseTX> port 0x8c00-0x8cff mem 0xec002800-0xec0028ff irq 10 at device 6.0 on pci0
miibus0: <MII bus> on rl0
rlphy0: <RealTek internal media interface> PHY 0 on miibus0
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
rl0: Ethernet address: 00:02:3f:ad:eb:19
cbb0: <ENE CB1420 PCI-CardBus Bridge> irq 10 at device 9.0 on pci0
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
pccard0: Obsolete code will be removed soon: PC Card to be removed.
cbb1: <ENE CB1420 PCI-CardBus Bridge> irq 10 at device 9.1 on pci0
cardbus1: <CardBus bus> on cbb1
pccard1: <16-bit PCCard bus> on cbb1
pccard1: Obsolete code will be removed soon: PC Card to be removed.
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
WARNING: Device "psm" is Giant locked and may be deleted before FreeBSD 14.0.
psm0: model Synaptics Touchpad, device ID 0
acpi_syscontainer0: <System Container> on acpi0
battery0: <ACPI Control Method Battery> on acpi0
acpi_acad0: <AC Adapter> on acpi0
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
fdc0: <floppy drive controller> port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
ppc0: <Parallel port> port 0x378-0x37b,0x778-0x77b irq 7 drq 3 on acpi0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
ppbus0: <Parallel port bus> on ppc0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
orm0: <ISA Option ROMs> at iomem 0xc0000-0xcbfff,0xcc000-0xcffff,0xdf800-0xdffff pnpid ORM0000 on isa0
acpi_perf0: <ACPI CPU Frequency Control> on cpu0
Timecounter "TSC" frequency 1593529614 Hz quality 800
Timecounters tick every 1.000 msec
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
ugen1.1: <SiS OHCI root HUB> at usbus1
uhub0 on usbus1
uhub0: <SiS OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen0.1: <SiS OHCI root HUB> at usbus0
uhub1 on usbus0
uhub1: <SiS OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
Trying to mount root from cd9660:/dev/iso9660/13_1_BETA3_I386_BO [ro]...
ata0: DMA limited to UDMA33, controller found non-ATA66 cable
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: <TOSHIBA MK2018GAP M1.42 A> ATA-5 device
ada0: Serial Number 62C56610T
ada0: 33.300MB/s transfers (UDMA2, PIO 8192bytes)
ada0: 19077MB (39070080 512 byte sectors)
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <TOSHIBA DVD-ROM SD-R2102 1016> Removable CD-ROM SCSI device
cd0: Serial Number 424R703213
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: 301MB (154273 2048 byte sectors)
uhub0: 3 ports with 3 removable, self powered
uhub1: 3 ports with 3 removable, self powered
GEOM: ada0: invalid disklabel.
GEOM: diskid/DISK-62C56610T: invalid disklabel.
random: unblocking device.
lo0: link state changed to UP
rl0: link state changed to UP

(June 2022) Legends start at 1.0! - FreeBSD in 1993 (pt. 2)

BACK TO NEUNIX INDEX