Valid XHTML 1.0! Valid CSS! Made in NANO

There are 10 kinds of people in the world. Those who understand binary, and those who don't.

BSD on Twinhead Slimnote 5 a.k.a. HP Omnibook 4000c

I picked up this laptop at a MIT Swapmeet for $20. It makes a great terminal! Here's my struggle in installing some form of BSD on it back in 2003.

* OpenBSD 3.2 Install fails on the floppy bootdisk boot.

* FreeBSD 4.7 Install boots great, but refuses to find my Xircom Ethernet PC Card.

* NetBSD 1.6 Install boots great, and crashes/burns upon discovery of Xircom. HOWEVER, IT WORKS IF I USE MY WIRELESS CARD! I have an Avaya Gold card (same as Lucent/Agere/Orinoco).

So after much fussing and fumbling around, I finally found a BSD install that just might work. FreeBSD might have liked my wireless card too, I never tried it. NetBSD worked for me, but I ran into a lot of problems along the way. My hard drive is 520MB, and I wanted to install a bootable 30MB partition for DOS stuff (I do some 8086 assembly work in TASM) and give the rest to BSD.

EXTREMELY IMPORTANT NOTE: After my first install, I thought I killed my laptop. Upon reboot, it POSTed through the ram check...and then stopped. It wouldn't even boot a floppy, and I couldn't get into BIOS setup! I pulled out the hard drive and then the system let me get into BIOS and boot via a floppy. I also later found out that if I simply let the system sit for about two minutes when the hard drive was still in, it would wake up and let me boot a floppy. This happened because I did not correctly set up the BSD boot partition using fdisk during the install. Be careful!

You can find the official INSTALL document for this release under a mirror's "pub/NetBSD/NetBSD-1.6/i386/" directory, named INSTALL.html (html version). This document is much more comprehensive than what you are reading. IF YOU HAVE PCMCIA TROUBLE, READ THE INSTALL NOTES, SEARCH FOR "POSSIBLE PCMCIA ISSUES".

1.) Starting out
----------------------
The first thing to do is make the necessary boot disks. I started by using the special laptop version (this version enables 32-bit Cardbus PCMCIA support..which this old laptop does not need). It didn't work with my Xircom Realport Ethernet card, so I went on to try the normal two bootdisks. Again, my Xircom did not work..but the Avaya Wireless World Gold 802.11b (WiFi) card did, so I went with that. Your mileage may vary.

To create these bootdisks, go to www.netbsd.org, and pick an FTP mirror closest to you, then goto the directory /pub/NetBSD/NetBSD-1.6/i386/installation/. From there, the DOS diskwriting utility is under the misc/ directory: rawrite. The floppy boot images are in floppy/. You want boot1.fs and boot2.fs in this case. There are other versions there as well, such as a special boot for machines with only 4mb of RAM. If the standard boot doesn't work for you, check out the FAQs to see if another might.

2.) Boot up & Setup
----------------------
Boot up with your install disks. It may sit awhile after "init: Creating mfs /dev". Once a menu pops up, we're ready to go. Choose "Install NetBSD to hard disk".

After a couple warning prompts and a message about your hard drive, we'll get to drive geometry. The default settings here are probably fine, I wouldn't set the geometry by hand unless you know what you are doing.

Next, the fun begins. We must choose to use part of the disk, or the whole thing. I want a small DOS partition, so I decided on only part of the disk. After that, I chose units of Megabytes.

My total disksize is 516 MB, and I want 30 for a DOS partition. I set partition 0 to a NetBSD Kind, start at 0, end at 486 (this is in megabytes). MAKE SURE IT IS SET ACTIVE! Partition 1 I set as DOS Fat16 < 32M, starting at -0 (offset from partition 0), and ending at the end of the disk. On the next screen, since I have two partitions, the install program offers to install a bootselector to choose what to boot to. I accepted. It lets you configure the boot menu items and timeout on the next menu. I set a couple names and made the timeout value 1 second.

After partition and bootselector configuration is complete, it is time to use BSD-disklabel. Many other Operating Systems use separate partitions for sections of the disk hierarchy..not BSD. Typically you make one partition (per disk), which is subdivided into "slices" by the disklabel program. It's basically just sub-partitioning our BSD partition - but only the BSD operating system knows about the sub-partitions. I chose to use the automatic system for Base install plus X-Windows (this takes a minimum of 210 megs).

If you want to do your own custom disklabel, there are a few standard things to keep in mind. First, each slice has its own name, designated by a single character. The "a" partition is always where you mount root (/). You can make this 50 to 100 megs. Next, the "b" partition is where your swap space goes. Swap is typically made to be about 2 to 3 times the amount of physical RAM in your system...but if you have 16MB or less, make this a minimum of 64MB! After "a" and "b", things get a little odd. The "c" partition cannot be used; it is a representation of the entire BSD partition. Similarly, "d" represents the entire disk, and also cannot be used. Note that in other distributions of BSD, "c" may represent the entire disk, and "d" may be usable. In our case, you can start entering more mount points from e through p. At a minimum, you should specify a /usr partition in addition to root (this can be the rest of the disk space). Other distributions of BSD recommend making root 100 MB, adding an appropriate swap, a /var slice that is 50 MB, and leaving the rest to /usr. You can even leave some space unused, and throw it somewhere later on.

The automatic install divided my 486 MB BSD Partition into a 53 meg root mount on "a", 64 MB of swap space on "b", and put the remaining 368 MB for /usr, on "e". After disklabel, the install program asks to name the BSD disk. Choose any appropriate short name.

Now we're ready to start the install! The next menu will ask you if you want to continue. IF YOU SAY NO IT WILL RETURN YOU TO THE FIRST MENU, AND YOU MUST START OVER. I did this accidently : ). Pick Yes and let's go on. You should see a bunch of stuff messing with the hard drive. After it is finished running, we'll be asked about bootblocks. Choose normal, and more stuff will run on the disk.

It's finally time to begin the install.

3.) Installation
----------------------
Choose a custom install. From here, we have choices..it's a good thing, since we're running with a very small hard drive. Required packages are:
* Kernel (GENERIC) (6 MB)
* Base (45 MB)
* System (/etc) (1 MB)
I recommend also adding:
* Compiler Tools (54 MB)
* Man Pages (27 MB)
* Misc (8 MB)
* Text (6 MB)
In addition, Games and X-Windows may make useful additions:
* Games (7 MB)
* X11 Base & Clients (12 MB)
* X11 Fonts (19 MB)
* X11 Servers (20 MB)
* X11 Cont. Programs (1 MB)
* X11 Programming (14 MB)
* X11 Misc Programs (1 MB)

That's 52 megs for required stuff, 95 megs for recommended additions, 7 megs for games, and 67 megs for X-Windows. 221 MB Total with these options (a little more if you add all the Kernels).

After you are finished, the next screen asks if you want to see file names as each file is extracted. Your call, I say yes.

Now it's time to choose the install medium. With a low end laptop like this one, the best choice is FTP, using whatever network card happens to work. For me it's wireless. After choosing FTP, we'll be asked to setup the network device. For most questions, the default is what you want. Use DHCP Autoconfig if you have DHCP going on your server (if you don't know, try it anyway, and if it doesn't work, you'll need to get all your TCP/IP settings, like IP, Subnet mask, DNS Domain, Gateway, DNS Servers, etc). If DHCP works, the DNS domain should be correct by default. Enter in a host name (shouldn't matter much what). You do not need to perform IPv6 autoconfig (in fact, it made things not work for me). If everything looks OK, confirm the entered information and go on.

Stick with the default directory the install program asks about. Here we need to choose an install host. The default will work, but a mirror will probably be faster if it's close to you or simply a faster server. A list of mirrors is at http://www.netbsd.org/mirrors/#ftp.

I choose ftp.stealth.net, and it went very fast. Note that you only need to change the Host name in most cases, the Directory and User/Password should be fine. If you use a proxy to access the Internet, enter Proxy information. When everything is set, choose "Get Distribution".

During the download and installation procedure, if things are going really slow, you can CTRL-C it to start over and choose a new server. Anything you finished downloading will not re-download.

Things will take awhile to download and install. Once it's all set, the rest should be self explanatory.

4.) Post-Install
----------------------
I would like to note that after I finished my complete correct install, upon reboot my laptop sat there doing nothing. Two minutes later, it finally brought up the boot selector.

Optional stuff:

I like OpenBSD..I would have installed it had it worked for my laptop. It has some nice shortcuts and options, one of which is a user adding script. If you know useradd, then great - but if not, the script "adduser" makes it a cinch. This can be "borrowed" from an OpenBSD (probably other places) install under /usr/sbin/. It requires Perl to be installed. Install stuff with the package system, like so:

% PKG_PATH=ftp://ftp.stealth.net/pub/NetBSD/packages/1.6/i386/All
% export PKG_PATH
% pkg_add -v perl

Cool, ain't it? BSD makes installing stuff a breeze. A full list of packages is right on that ftp site, or can be found other places via the netbsd.org website. Right away I installed pico as my favorite editor, and set the environment variable EDITOR to it.

Note that adding users will copy the contents of the /etc/skel directory as their base set of stuff.