dnl $OpenBSD: install,v 1.79 2015/03/27 20:55:56 miod Exp $ OpenBSDInstallPrelude({:-SMD disks-:}) There are several ways to install OpenBSD onto a disk. The normal way is to use the OpenBSD CD-ROM, or the bootable CD-ROM mini image, or an installation floppy, depending on your hardware. Alternatively, if you already have an operating system installed and do not wish to change the existing partition layout, it is simpler to use the OpenBSD miniroot that can be booted off your local disk's swap partition. If your SPARC is hooked up to a network, try and find a server to arrange for a diskless setup. This 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.) 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. Having 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 the "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. Booting from CD-ROM installation media: > b sd(,30,0)OSREV/MACHINE/bsd.rd # for Sun4 monitors* # (not working currently) ok boot sd(,6,0)OSREV/MACHINE/bsd.rd # for version 1 OpenBOOT ROMs ok boot cdrom OSREV/MACHINE/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 MACHINE systems support bootable CD-ROM and the current boot image is only known to work on sun4c and sun4m 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. Note that older SPARC machines will not boot from CD-ROM drives unless the drive is set to use 512-byte blocks instead of the usual 2048-byte blocks. Sun-provided CD-ROM drives from that era are OK; some third-party drives have a dip-switch or jumper setting. 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... Installing using a diskless setup: First, you must set up a diskless client configuration on a server. If you are using an 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; on Solaris systems, share(1M) is a good starting point as well). 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 Installing using the Floppy, CD-ROM, miniroot or netboot procedure: OpenBSDInstallPart2 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 media is bad, your diskless setup isn't correct, or you may have a hardware or configuration problem. OpenBSDInstallPart3(SMD drives are noisy and weight a ton per kilobyte and scare cats,"sd0" for SCSI drives,{:-and "xd0" or "xy0" for SMD drives-:}) OpenBSDInstallPart4 OpenBSDInstallPart5 OpenBSDInstallPart6({:-CD-ROM, -:}) OpenBSDURLInstall OpenBSDCDROMInstall OpenBSDDISKInstall({:-"xdN", "xyN" or -:},{:-only -:}) OpenBSDCommonInstall OpenBSDInstallWrapup After completing an installation: Now try a reboot. (If needed, swap your SCSI IDs first.) 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 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 a 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). As an exception to the above rule, sun4e systems make a request for `/tftpboot/IP_IN_HEX.SUN4E', i.e. the TFTP filename is in a subdirectory. You can find the boot program as `boot.net' in the OpenBSD/MACHINE distribution. Unfortunately, many, if not all, sun4e PROM have a bug and fail to load a file which size is a multiple of 512 bytes. If you are trying to netboot a sun4e system, simply append some bytes to the file, like this: dd if=/dev/zero bs=32 count=1 >> boot.net 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 the 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.tgz' 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.tgz 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 OpenBSDInstNFS OpenBSDUnattendedInstallation