dnl $OpenBSD: prep,v 1.8 2007/06/11 18:58:16 ian Exp $ To be able to boot the OpenBSD/MACHINE installation program, you will need to acquire some limited knowledge of RedBoot, the low-level process that controls the microprocessor after hardware initialization. dnl dnl XXX bootable partitions The enabled features between IOData HDL-G and Thecus N2100 vary so different methods will be needed on both machines. The Thecus N2100 needs a serial cable. There is either a 10-pin header (with one pin removed) on the back of the disk circuit board, or 9 holes for you to solder in your own header. The ribbon cable that connects from there to your serial cable or the serial port on your computer is of the same type as used on older i386 PCs, but be aware that there are two different types of 10-pin IDC to DB-9M ribbon cable in use, which look identical (the differences are hidden inside the DB-9 connector). The cable you need is wired using the "AT-Everex" or "Asus" pinout, as described here: http://www.pccables.com/07120.htm and not the more straightforward to solder "crossed" type: http://www.pccables.com/07121.htm. If you wish to check a cable, or make your own, the pinouts are: DB9 IDC10 === ===== 1 2 3 4 5 1 3 5 7 9 6 7 8 9 2 4 6 8 10 Wire pin 1 to 1, 2 to 2 etc, with 10 not connected. On the Thecus N2100, it is necessary to move jumper J3 to J4 to properly route the serial port interrupt to allow serial to work under OpenBSD. This jumper is under the disk drives, so you may wish to ensure its correct setting while you are installing the disk(s). For instructions on assembling/disassembling your N2100, see the N2100 Manual at http://www.thecus.com/download/manual/N2100%20UM%20EN.pdf Thecus cannot load a file from disk, but can load an image from flash or network. IOData can load an image from disk (ext2fs), however the commands to load from flash are not available and network booting does not appear to work. Booting Thecus N2100 Thecus RedBoot provides the 'fconfig' command to change the boot configuration of the device also 'fis' is provided to perform flash operations. To enter interactive RedBoot, it is necessary to press ^C within one second of the prompt, it will typically accept it if typed early. The recommended way to install Thecus is configure networking and load bsd.rd from a tftp server or http server. First networking must be configured using the fconfig or ip_address commands. Update the IP address, netmask and server address with the commands listed below to allow booting from the network. TFTP and HTTP are supported. (BOOTP configuration _may_ not work) Using ip_address only allows you to set the local IP address and the IP address of the server where bsd.rd is located. This command also ensures that the new values are going to be used instantly. eg: --- RedBoot> ip_address -l 10.0.0.21 -h 10.0.0.7 IP: 10.0.0.21/255.255.255.0, Gateway: 0.0.0.0 Default server: 10.0.0.7, DNS server IP: 0.0.0.0 --- If you want to make permanent changes or you have to use a more complicated network setup where you have to use a gateway or a nameserver, you have to use fconfig. eg: --- RedBoot> fconfig Run script at boot: true Boot script: .. fis load ramdisk .. fis load kernel .. exec Enter script, terminate with empty line >> Boot script timeout (1000ms resolution): 1 Use BOOTP for network configuration: false Gateway IP address: 10.0.0.1 Local IP address: 10.0.0.21 Local IP address mask: 255.255.255.0 Default server IP address: 10.0.0.7 Console baud rate: 115200 DNS server IP address: 10.0.0.1 GDB connection port: 9000 HW Status: 0 Force console for special debug messages: false MAC address: [DO_NOT_MODIFY_MAC] MAC address 2: [DO_NOT_MODIFY_MAC] Network debug at boot time: false Reset default: Normal Serial number: N2100 V1.0.3 Update RedBoot non-volatile configuration - continue (y/n)? y ... Unlock from 0xf0fc0000-0xf0fc1000: . ... Erase from 0xf0fc0000-0xf0fc1000: . ... Program from 0x0ffd2000-0x0ffd3000 at 0xf0fc0000: . ... Lock from 0xf0fc0000-0xf0fc1000: . --- Now that you have modified the configuration in the FLASH memory, you have to reset the box so the new configuration is going to be used upon boot. We have also removed the boot script by not re-entering it so you will be dropped to the RedBoot shell by default. Recheck the new values and use the 'reset' command. --- Now that you have your network configured it is possible to boot either from http RedBoot> load -m http /bsd.rd or tftp (to a configured tftp server, and Default server configured) RedBoot> load bsd.rd after the ramdisk image is loaded, the 'go' command will start the kernel eg: --- RedBoot> load bsd.rd Using default protocol (TFTP) Entry point: 0x00200000, address range: 0x00200000-0x00652180 RedBoot> go OpenBSD/armish booting ... initarm: Configuring system ... physmemory: 32768 pages at 0xa0000000 -> 0xa7ffffff kernelsize text 1c7910 total 488728 end c0688728esym c0688728 physical_freestart a0689000 end a8000000 [ no symbol table formats found ] Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2006 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 4.0 (RAMDISK) #34: Thu Aug 31 00:30:56 GMT 2006 deraadt@armish.openbsd.org:/usr/src/sys/arch/armish/compile/RAMDISK ... --- It is then possible to use bsd.rd to format and install the HD on the Thecus. In addition to installation, it is useful to configure the Thecus to autoboot. This can be done either by overwriting part of the thecus distribution rom or by loading the bootloader from the network. To overwrite the thecus rom and boot from the load device, it is necessary to delete a 'rom file' and load the openbsd bootloader image there. With networking configured (as above) remove a region and load the 'boot' program. Initially the machine will contain much like the following --- RedBoot> fis list Name FLASH addr Mem addr Length Entry point RedBoot 0xF0000000 0xF0000000 0x00040000 0x00000000 RedBoot config 0xF0FC0000 0xF0FC0000 0x00001000 0x00000000 FIS directory 0xF0FE0000 0xF0FE0000 0x00020000 0x00000000 ramdisk 0xF0040000 0x00800000 0x00D00000 0x00800000 kernel 0xF0D40000 0x00200000 0x00160000 0x00200000 user 0xF0EA0000 0xF0EA0000 0x00120000 0x00200000 --- There is no free space in the rom for the 'boot' program, so something must be removed. WARNING, this will likely make the machine unbootable into the original thecus server mode and it may not be recoverable. EXTREME WARNING, do not touch the RedBoot, RedBoot config, or FIS directory regions, doing so may brick the device. Remove (with confirmation) a region to make space, eg user --- RedBoot> fis delete user Delete image 'user' - continue (y/n)? y ... Erase from 0xf0ea0000-0xf0fc0000: ......... ... Unlock from 0xf0fe0000-0xf1000000: . ... Erase from 0xf0fe0000-0xf1000000: . ... Program from 0x07fdf000-0x07fff000 at 0xf0fe0000: . ... Lock from 0xf0fe0000-0xf1000000: . --- Load the armish openbsd bootloader 'boot' via tftp or http --- RedBoot> load -m http /boot Entry point: 0x00100000, address range: 0x00100000-0x001067e0 --- save that loaded file to flash --- RedBoot> fis create boot ... Erase from 0xf0ea0000-0xf0ec0000: . ... Program from 0x00100000-0x001067e0 at 0xf0ea0000: . ... Unlock from 0xf0fe0000-0xf1000000: . ... Erase from 0xf0fe0000-0xf1000000: . ... Program from 0x07fdf000-0x07fff000 at 0xf0fe0000: . ... Lock from 0xf0fe0000-0xf1000000: . --- confirm its addition --- RedBoot> fis list Name FLASH addr Mem addr Length Entry point RedBoot 0xF0000000 0xF0000000 0x00040000 0x00000000 RedBoot config 0xF0FC0000 0xF0FC0000 0x00001000 0x00000000 FIS directory 0xF0FE0000 0xF0FE0000 0x00020000 0x00000000 ramdisk 0xF0040000 0x00800000 0x00D00000 0x00800000 kernel 0xF0D40000 0x00200000 0x00160000 0x00200000 boot 0xF0EA0000 0x00100000 0x00020000 0x00100000 --- Now that the bootloader is in place, update fconfig to autoboot OpenBSD ---- RedBoot> fconfig Run script at boot: true Boot script: .. fis load ramdisk .. fis load kernel .. exec Enter script, terminate with empty line >> fis load boot >> go >> Boot script timeout (1000ms resolution): 1 ... Update RedBoot non-volatile configuration - continue (y/n)? y ... Unlock from 0xf0fc0000-0xf0fc1000: . ... Erase from 0xf0fc0000-0xf0fc1000: . ... Program from 0x0ffd2000-0x0ffd3000 at 0xf0fc0000: . ... Lock from 0xf0fc0000-0xf0fc1000: . ---- The important part is that 'Run script' is true and that the commands are "fis load boot' and 'go' (note that 'boot' is the same as the 'fis create boot' confirm the update and 'reset' to auto boot. The bootloader is command driven with timeout like many other OpenBSD architectures. How to boot/install IOData HDL-G: The hda1 partition is the boot partition for linux, it contains zImage and initrd. Since RedBoot only can boot from the ext2fs partition it is very important that this partition be present and not be reformatted. If this partition is destroyed, it will be necessary to remove the HD and recreate the partition on another machine. Note: RedBoot should be able to boot from the network, however that has been unsuccessful on IODATA HDL-G so far. To install OpenBSD, boot linux, and copy 'boot' and 'bsd.rd' into the partition mounted on /dev/hda1, after that has been done, it is possible to reboot into OpenBSD and install the device. Installation can proceede as on other machines, however care must be take to not remove wd0i/hda1 partition (fdisk partition 0). DO NOT chose the 'full disk installation' option. Unfortunately, since IODATA did not provide the 'fconfig' command it is not possible to change the boot commands run when redboot launches, So it not possible to autoboot. Eventually 'boot' may be built such that it can be loaded as 'zImage', but not now. To disable autobooting into linux, zImage and initrd can be renamed or removed. The presence of bsd.rd will allow manipulation of that parition. To load the ramdisk kernel to install use the commands --- RedBoot> load -m disk hda1:/bsd.rd RedBoot> go --- to boot normally, load the bootloader which will give options to boot other kernels. --- RedBoot> load -m disk hda1:/boot RedBoot> go ---