Installing OpenBSD is a relatively complex process, but if you have this document in hand it shouldn't be too much trouble. There are several ways to install OpenBSD onto a disk. The easiest way in terms of preliminary setup is to use the OpenBSD miniroot that can be booted off your local disk's swap partition. The normal way is to use the OpenBSD installation floppies. If your Sparc is hooked up in a network and you can find a server to arrange for a diskless setup, which is a convenient way to install on a machine whose disk does not currently hold a usable operating system. This is difficult to get set up correctly the first time, but easy to use afterwards. (see ``Installing using a diskless setup'' below). It is also possible to install OpenBSD "manually" from a running SunOS system, using SunOS tools and gnu tar and gunzip (see ``Installing from SunOS'' below). This section of the install document is really broken into several parts: - About the "new" and "old" Install Scripts - booting from the installation media - the "new" single floppy or miniroot install script - the "old" multiple floppy install script - after completing an installation - installing from Sun OS - net boot or diskless setup information The first section explains why we have two different install scripts. The second section gets you up to the point where you've booted the kernel from whatever media or setup described in the previous section, to where you have to respond to prompts from the install script(s). The next two sections describe the path through the "new" and "old" install scripts, which are quite different, and the remainder are notes which might be useful, but outside the bounds of simple "how two" instructions. About the "new" and "old" Install Scripts: The OpenBSD/sparc floppies come in two varieties, a newer single floppy "ramdisk" version and the older multi-floppy set. Both accomplish the same thing, but the install/upgrade scripts and procedures are quite different between the old and new version. The other difference between the the two forms are in their bootblocks, and filesystems. The "floppy{:--:}OSrev.fs" image is the compressed ramdisk form, the "kc{:--:}OSrev.fs" paired with either "inst{:--:}OSrev.fs" or "upgr{:--:}OSrev.fs" comprise a bootable kernel floppy and associated install/upgrade filesystem floppy. The CD-ROM, miniroot and netboot install scripts are essentially the same as the new single floppy install script. Booting from the Installation Media: Prior to attempting an installation, you should make sure that everything of value on the target system has been backed up. While installing OpenBSD does not necessarily wipe out all the partitions on the hard disk, errors during the install process can have unforeseen consequences and you will probably render the system unbootable if you start, but do not complete the installation. Have the installation media for the prior installation, be it a SunOS or OpenBSD CD-ROM or OpenBSD install diskettes is good insurance if you want to be able to "go back" for some reason. After taking care of all that, bring your system down gracefully using the shutdown(8) and/or halt(8) commands. This will get you to the monitor prompt. Sun PROM monitor commands and setup differ considerably depending on the system architecture and age, you may needed to reference the PROM monitor manual for your system for details. There are four main cases: sun4 (older servers, deskside workstations): prompt is a ">", boot command is "b", uses sd(c,s,p) syntax with s defined as scsi-unit*8+lun in hex OpenBoot Version 1 (newer servers, desktop workstations): prompt is "ok", boot command is "boot" uses sd(c,s,p) syntax with s defined as scsi-unit. OpenBoot Version 2 (newer servers, desktop workstations): prompt is "ok", boot command is "boot" uses diskn:p syntax. OpenBoot Version 2 (certain newer desktop workstations): prompt is "ok", boot command is "boot" uses diskn syntax unless booting from a non-standard partition, in which case: boot /sbus/esp/sd@t,0:p bsd (where "t" is the scsi target, and "p" is the partition. examples would be t="3" and p="b") If you expect your workstation to have an OpenBoot Prom but get a ">", enter then "n" command to enter the "new command mode". You can set this as the default by doing a "setenv sunmon-compat? false" command, followed by a "reset" command. Note that OpenBoot Proms also do the Sun SCSI-ID shuffle for disks, this is described elsewhere in some detail. For the purposes of this section, drive 0 refers to the internal or first SCSI drive, which usually has a SCSI-ID of 3. Booting from Floppy Disk installation media: ok boot fd()bsd # for version 1 OpenBOOT ROMs ok boot floppy bsd # for version 2 OpenBOOT ROMs This will cause the kernel contained in the floppy to be booted. After the kernel loads, it will eject the bootable floppy and prompt for a filesystem floppy - for the two floppy installation insert the appropriate filesystem floppy, for the ramdisk installation, just hit return, the filesystem image is internal to the kernel. After the initial device probe messages you'll asked to start the install or upgrade procedure. Proceed to the section ``Running the installation scripts'' below. Booting From CD-ROM installation media: > b sd(,30,0)OSREV/sparc/bsd.rd # for Sun4 monitors* (not working currently) ok boot sd(,6,0)OSREV/sparc/bsd.rd # for version 1 OpenBOOT ROMs ok boot cdrom OSREV/sparc/bsd.rd # for version 2 OpenBOOT ROMs If the boot is successful, you will get a loader version message, executable sizes and then the Kernel copyright and device probe messages. Boot failure modes are typically a lot of CD-ROM drive activity, but no messages or complaints about magic numbers, checksums or formats. Not all sparc systems support bootable CDROMS and the current boot image is only known to work on sun4c architectures. If it does not work, you'll have to create a boot floppy or bootable hard disk using the instructions under preparing boot media. After the initial device probe messages you'll asked to start the install or upgrade procedure. Proceed to the section ``Running the installation scripts'' below. Booting from SCSI disk (miniroot or floppy image) Boot the miniroot by typing the appropriate command at the PROM: > b sd(,,1)bsd # for sun4 monitors* ok boot sd(,,1)bsd # for version 1 OpenBOOT ROMs ok boot disk:b bsd # for version 2 OpenBOOT ROMs ok boot /sbus/esp/sd@3,0:b bsd # for version 2 OpenBOOT ROMs # that won't take disk:p syntax. If you've loaded the miniroot onto some other disk than the default drive 0, modify the boot specifier accordingly, keeping in mind the drive vs. scsi-id shuffling and partition a=0, b=1... > b sd(0,10,1)bsd # example - scsi target 2 on sun4 monitors* ok boot sd(0,3,1)bsd # example - scsi target 0 on V1 OpenBOOT ROM ok boot disk3:b bsd # example - scsi target 0 on v2 OpenBOOT ROM ok boot /sbus/esp/sd@0,0:b bsd # example - scsi target 0 on v2 # OpenBOOT ROM that won't take # disk:p syntax. (*) for sun4 this is scsi-target*8+scsi-lun (usually 0) expressed in hex... This will cause the kernel contained in the miniroot to be booted. After the initial probe messages you'll asked to start the install or upgrade procedure. Proceed to the section ``Running the installation scripts'' below. Installing using a diskless setup. First, you must setup a diskless client configuration on a server. If you are using a OpenBSD system as the boot-server, have a look at the diskless(8) manual page for guidelines on how to proceed with this. If the server runs another operating system, you'll have to consult documentation that came with it (on SunOS systems, add_client(8) and the Sun System/Networks administrators guide constitute a good start). Boot your workstation from the server by entering the appropriate `boot' command at the monitor prompt. Depending on the PROM version in your machine, this command takes one of the following forms: > b le()bsd.rd # for sun4 monitors ok boot le()bsd.rd # for version 1 OpenBOOT ROMs ok boot net bsd.rd # for version 2 OpenBOOT ROMs This will cause the kernel provided by the diskless setup to be booted. After the initial probe messages you'll asked to start the install or upgrade procedure. Proceed to the section ``Running the installation scripts'' below. Installing using the "new" Single Floppy, CD-ROM, miniroot or netboot procedure: The following is a walk-through of the steps you will take while getting OpenBSD installed on your hard disk. If any question has a default answer, it will be displayed in brackets ("[]") after the question. If you wish to stop the installation, you may hit Control-C at any time, but if you do, you may have to begin the installation process again from scratch. Using Control-Z to suspend the process may be a better option. Boot your machine from the installation media as described above. It will take a while to load the kernel especially from a floppy or slow network connection, most likely more than a minute. If some action doesn't eventually happen, or the spinning cursor has stopped and nothing further has happened, either your boot medias is probably bad, your diskless setup isn't correct or you may have a hardware or configuration problem. You will then be presented with the OpenBSD kernel boot messages. You will want to read them to determine your disk's name and geometry. Its name will be something like "sd0" or "wd0" and the geometry will be printed on a line that begins with its name. As mentioned above, you will need your disk's geometry when creating OpenBSD partitions. You will also need to know the device name to tell the install tools what disk to install on. While booting, you will probably see several warnings. You may be warned that the kernel can't figure out what device it booted from and that no swap space is present. Do not be alarmed, these are completely normal. The first warning occurs because while OpenBSD/sparc can boot from the floppy drive, the kernel itself lacks a floppy driver for some architectures. When the loading process is complete, the boot floppy will be ejected and you will be prompted to insert a filesystem floppy, just hit return since the filesystem is contained in the kernel image just loaded. Next there will be a prompt asking you for a shell name, just hit return to start executing the installation setup script. You will next be asked for your terminal type. If you are installing from a keyboard/monitor console, the default of "sun" if correct. If you are installing from a serial console you should choose the terminal type from amongst those listed. (If your terminal type is xterm, just use vt100). Next you will be prompted for a choice of which text editor to use at several places in the install script. You will probably want to use "vi" if your terminal supports this. After entering the terminal type you will be greeted by a welcome message and asked if you really want to continue. Assuming you answered yes, the install program will then tell you which disks of that type it can install on, and ask you which it should use. The name of the disk is typically "sd0". Reply with the name of your disk. Next you will have to edit or create a disklabel for the disk OpenBSD is being installed on. The installation script will invoke the text editor allowing you to do this. Note that partition 'c' inside this disk label should ALWAYS reflect the entire disk, including any non-OpenBSD portions. The root file system should be in partition 'a', and swap is usually in partition 'b'. It is recommended that you create separate partitions for root and /usr, you may also want to specify /var and /home partitions. The swap partition (usually 'b') should have a type of "swap", all other native OpenBSD partitions should have a type of "4.2BSD". Block and fragment sizes are usually 8192 and 1024 bytes, but can also be 16384 and 2048 bytes. The install program will now label your disk and ask which file systems should be created on which partitions. It will auto- matically select the 'a' partition to be the root file system. Next it will ask for which disk and partition you want a file system created on. This will be the same as the disk name (eg. "sd0") with the letter identifying the partition (eg. "d") appended (eg. "sd0d"). Then it will ask where this partition is to be mounted, eg. /usr. This process will be repeated until you type "done". At this point you will be asked to confirm that the file system information you have entered is correct, and given an opportunity to change the file system table. Next it will create the new file systems as specified, OVERWRITING ANY EXISTING DATA. This is the point of no return. After all your file systems have been created, the install program will give you an opportunity to configure the network. The network configuration you enter (if any) can then be used to do the install from another system using NFS, HTTP or FTP, and will also be the configuration used by the system after the installation is complete. If you select to configure the network, the install program will ask you for a name of your system and the DNS domain name to use. Note that the host name should be without the domain part, and that the domain name should NOT {:-include-:} the host name part. Next the system will give you a list of network interfaces you can configure. For each network interface you select to configure, it will ask for the IP address to use, the symbolic host name to use, the netmask to use and any interface-specific flags to set. The interface-specific flags are usually used to determine which media the network card is to use. This is driver dependent, but for the sparc le(4) driver, the flags usually carry meaning: -link0 -link1 Use existing setting (only setup by netboot) link0 -link1 Use UTP (twisted pair) port -link0 link1 Use AUI port *** IMPORTANT - these are the correct setting for Sparc ethernet cards, the suggestions shown by the install script are generic and may or may not be correct... After all network interfaces have been configured the install pro- gram will ask for a default route and IP address of the primary name server to use. You will also be presented with an opportunity to edit the host table. At this point you will be allowed to edit the file system table that will be used for the remainder of the installation and that will be used by the finished system, following which the new file systems will be mounted to complete the installation. After these preparatory steps has been completed, you will be able to extract the distribution sets onto your system. There are several install methods supported; FTP, HTTP, tape, CD-ROM, NFS or a local disk partition. To install from a tape, the distrib- ution sets must have been written to tape prior to running the installation program, either as tar images or as gzipped tar images. Note that installation sets on multiple floppies is not currently supported. OpenBSDFTPInstall OpenBSDHTTPInstall OpenBSDTAPEInstall OpenBSDCDROMInstall OpenBSDNFSInstall OpenBSDDISKInstall({:-"wdN" or -:},{:-only -:}) OpenBSDCommonFS OpenBSDCommonURL Installing using the old Multi-Floppy procedure. If you are upgrading a OpenBSD installation, start the upgrade script: OpenBSD# sh upgrade.sh else, start the installation script: OpenBSD# sh install.sh These scripts will do most of the work of transferring the system from the tar files onto your disk. You will frequently be asked for confirmation before the script proceeds with each phase of the installation process. Occasionally, you'll have to provide a piece of information such as the name of the disk you want to install on or IP addresses and domain names you want to assign. If your system has more than one disk, you may want to look at the output of the dmesg(8) command to see how your disks have been identified by the kernel. The installation script goes through the following phases: - determination of the disk to install OpenBSD on - checking of the partition information on the disk - creating and mounting the OpenBSD filesystems - setup of IP configuration - extraction of the distribution tar files - installation of boot programs After completing an installation: Now try a reboot. (If needed, swap your scsi id's first). Initially I'd suggest you "boot sd()bsd -bs", then try multiuser after that. if you boot single-user the OpenBSD incantation to make the root filesystem writable is OpenBSD# mount -u /dev/sd0a / The Sun monitor normally tries to load a file called "vmunix". On OpenBOOT ROM systems you can change it to load OpenBSD instead using the following commands: On version 1 OpenBOOT ROMs: >n ok setenv boot-from sd(0,0,0)bsd ok On version 2 OpenBOOT ROMs: ok setenv boot-file bsd ok setenv boot-device /sbus/esp/sd@0,0 On sun4 systems, you may not need to specify the boot file, as the OpenBSD boot blocks will look for "bsd" on the boot device by default. OpenBSDCongratulations If you will be running your OpenBSD system from a serial console, you may need to edit /etc/ttys and change the terminal type, and getty method from "sun" and "suncons" to "vt100" and "std.9600" or something similar. Also when running from a serial console, you may wish to adjust the eeprom settings for input-device, output-device, screen-#columns, and screen-#rows as appropriate. If you plan on using the extra serial ports on 4/300 systems, you'll need to make sure you have device nodes for them e.g.: mknod /dev/ttyc c 12 4 mknod /dev/ttyd c 12 5 To use these ports for terminals etc, you will want to add them to /etc/ttys. In order to use 'tip' on OpenBSD/sparc, you'll need to edit /etc/ttys and add "local" to the end of the tty configuration line, and run 'ttyflags -a' to put your changes into effect. On installing X11 for OpenBSD/sparc, you may wish to add a line similar to 'ldconfig /usr/X11R6/lib' to the end of your /etc/rc.local file. This will add the X libraries to your dynamic linking search path at boot time. If you are unfamiliar with UN*X-like system administration, it's recommended that you buy a book that discusses it. Installing from SunOS. You need a SunOS machine to install OpenBSD. You also need at least the following pieces: the *.tar.gz files you want to install (as a minimum, base{:--:}OSrev.tar.gz) gunzip (GNU gzip) SunOS binary gtar (GNU tar) SunOS binary a "/boot" file from a SunOS machine that matches your machine type (e.g. sun or sun4c) a kernel, most likely "/bsd" All these pieces, except "/boot" and the GNU utilities are supplied in the OpenBSD/sparc distribution. You need to format and partition the disk using SunOS (since OpenBSD/sparc uses SunOS disk labels.) Give yourself adequate partition sizes. Here is an example layout: partition size offset will be.. sd2a 28140 0 / sd2b 16170 28140 swap sd2c 204540 0 `whole disk' sd2g 160230 44310 /usr BTW, These are not recommended sizes. They simply match the first (tiny) disk that OpenBSD/sparc ran on. Use SunOS to newfs the partitions which will have filesystems on them. (OpenBSD's filesystem format is identical to SunOS). sunos# newfs /dev/rsd2a [... lots of output] sunos# newfs /dev/rsd2g [... lots of output] NOTE: If you are able to, there is a performance benefit from newfs'ing using OpenBSD. If you newfs using the OpenBSD newfs command, be sure to use the -O flag for your / partition, so that newfs will use the 4.3BSD filesystem format, rather than the new 4.4BSD filesystem format. If you forget, you will not be able to boot -- the SunOS boot blocks do not understand the extended 4.4BSD filesystem format. Mount those partitions in a tree formation, under /mnt; ie: sunos# df Filesystem kbytes used avail capacity Mounted on [...] /dev/sd2a 11501 0 11501 0% /mnt /dev/sd2g 179529 0 179529 0% /mnt/usr Place a standard SunOS "boot" program in /mnt (your new root partition), and use the SunOS command "installboot" to make it work. The installboot man page says to do something like this: sunos# cp /usr/mdec/sdboot /mnt/boot sunos# sync; sync sunos# /usr/mdec/installboot -vlt /mnt/boot /usr/mdec/bootsd /dev/rsd2a You can now extract the provided "*.tar.gz files onto your disk. sunos# ls -FC base{:--:}OSrev.tar.gz comp{:--:}OSrev.tar.gz man{:--:}OSrev.tar.gz xfont{:--:}OSrev.tar.gz bsd etc{:--:}OSrev.tar.gz misc{:--:}OSrev.tar.gz xserv{:--:}OSrev.tar.gz bsd.scsi3 game{:--:}OSrev.tar.gz xbase{:--:}OSrev.tar.gz sunos{:-#-:} gunzip < base{:--:}OSrev.tar.gz | (cd /mnt; gtar xvpf -) [...] for each set And finally copy an OpenBSD kernel (either bsd or bsd.scsi3) onto your disk. sunos# cp bsd.scsi3 /mnt/bsd The GNU gunzip and gtar programs are not distributed as part of SunOS, but may be present in your local/bin. If not, you will need to obtain them from a GNU archive and install before proceeding. The OpenBSD tar files are in the "new format" that includes directory information, and the standard SunOS tar will not extract from them successfully. After the files have been extracted, setup /mnt/etc/fstab to match your actual disk layout. (Minus the "/mnt" component of each path, of course :-) Now proceed to reboot the machine and the customize your installation. Net Boot or Diskless Setup Information: The set up is similar to SunOS diskless setup, but not identical, because the Sun setup assumes that the bootblocks load a kernel image, which then uses NFS to access the exported root partition, while the OpenBSD bootblocks use internal NFS routines to load the kernel image directly from the exported root partition. Please understand that no one gets this right the first try, since there is a lot of setup and all the host daemons must be running and configured correctly. If you have problems, extract the diskless(8) manpage, find someone who's been through it before and use the host syslog and tcpdump(8) to get visibility of what's happening (or not). Your Sparcstation expects to be able to download a second stage bootstrap program via TFTP after having acquired its IP address through RevARP when instructed to boot "over the net". It will look for a filename composed of the machine's IP address followed by the machine's architecture, separated by a period. For example, a sun4c machine which has been assigned IP address 130.115.144.11, will make an TFTP request for `8273900B.SUN4C'. Normally, this file is a symbolic link to an appropriate second-stage boot program, which should be located in a place where the TFTP daemon can find it (remember, many TFTP daemons run in a chroot'ed environment). You can find the boot program in `/usr/mdec/boot' in the OpenBSD/sparc distribution. Unfortunately, it is necessary to install this file differently for sun4 and sun4c clients: the sun4 version needs to have its `a.out' header stripped off (otherwise the machine will crash), while the sun4c version must retain it (otherwise the PROM will complain). Here's an example to illustrate this whole mess: server# cd //usr/mdec if client is a sun4: server# set SKIP=1 server# set KARCH=SUN4 else server# set SKIP=0 server# set KARCH=SUN4C server# dd if=boot of=/tftpboot/boot.sparc.OpenBSD.$KARCH skip=$SKIP bs=32 server# cd /tftpboot server# ln -s boot.sparc.OpenBSD.$KARCH 8273900B.$KARCH After the boot program has been loaded into memory and given control by the PROM, it starts locating the machine's remote root directory through the BOOTPARAM protocol. First a BOOTPARAM WHOAMI request is broadcast on the local net. The answer to this request (if it comes in) contains the client's name. This name is used in next step, a BOOTPARAM GETFILE request -- sent to the server that responded to the WHOAMI request -- requesting the name and address of the machine that will serve the client's root directory, as well as the path of the client's root on that server. Finally, this information (if it comes in) is used to issue a REMOTE MOUNT request to the client's root filesystem server, asking for an NFS file handle corresponding to the root filesystem. If successful, the boot program starts reading from the remote root filesystem in search of the kernel which is then read into memory. You will want export the miniroot{:--:}OSrev.fs filesystem to the client. You can dd this filesystem image to some spare partition, mount and export that partition or use tar to copy the contents to a more convenient spot. Alternatively you can build a bootable partition from the distribution sets as follows: Unpack `base{:--:}OSrev.tar.gz' and `etc{:--:}OSrev.tar.gz' on the server in the root directory for your target machine. If you elect to use a separately NFS-mounted filesystem for `/usr' with your diskless setup, make sure the "./usr" base files in base{:--:}OSrev.tar.gz end up in the correct location. One way to do this is to temporarily use a loopback mount on the server, re-routing /usr to your server's exported OpenBSD "/usr" directory. Also put the kernel and the install/upgrade scripts into the root directory. A few configuration files need to be edited: /etc/hosts Add the IP addresses of both server and client. /etc/myname This files contains the client's hostname; use the same name as in /etc/hosts. /etc/fstab Enter the entries for the remotely mounted filesystems. For example: server:/export/root/client / nfs rw 0 0 server:/export/exec/sun4.OpenBSD /usr nfs rw 0 0 Now you must populate the the `/dev' directory for your client. If you server runs SunOS 4.x, you can simply change your working directory to `/dev' and run the MAKEDEV script: `sh MAKEDEV all'. On SunOS 5.x systems, MAKEDEV can also be used, but there'll be error messages about unknown user and groups. These errors are inconsequential for the purpose of installing OpenBSD. However, you may want to correct them if you plan to the diskless setup regularly. In that case, you may re-run MAKEDEV on your OpenBSD machine once it has booted.