Cobalt-RAQ2+NetBSD via FreeBSD5+nfs+NullModem

Authority on Cobalt+NetBSD

Abstract

Hmmm... what should I do with that RAQ 2 in the corner? I guess I'll put NetBSD on it... 24 hours later, the RAQ2 is booting! I summed up all my notes onto this page; much googling of the port-cobalt mailing list took place to make this happen. I am using NetBSD 1.6.2.

Materials

  • Raq 2
  • Clean harddisk
  • an NFS/DHCP/RARPD server (I used FreeBSD 5.2.1)
  • A null modem cable
  • Ethernet cables

    Procedure

    1. Attached a null modem from cobalt to computer
    2. Launch minicom. If you don't have it, install it:
       cd /usr/ports/comms/minicom/ && make install clean 
    3. Use minicom or 'tip'
      • tip

        Add this line to /etc/remote:
        cobalt:dv=/dev/cuad0:br#115200:pa=none:
        Then, launch this command tip cobalt. The 'remote' file holds 'shortcuts' and we just created one for cobalt that tip uses. :)
      • minicom

        Tip really is easier, but if you have trouble, try minicom (in the ports). Config minicom with these serial port parameters:
        A -    Serial Device      : /dev/cuaa0
        B - Lockfile Location     : /var/spool/lock
        C -   Callin Program      :
        D -  Callout Program      :
        E -    Bps/Par/Bits       : 115200 8N1
        F - Hardware Flow Control : No
        G - Software Flow Control : No
        
    4. Connect the null modem, ethernet cable (to Eth2 Port on Cobalt) and power up. If you don't get any output in your tip or minicom winsow, you man need to activate the console port, you must follow these steps:
      Hold the reset button ("pencil" button left of the keypad area on the front) in while powering on to toggle on/off the firmware console on the serial port. It runs at 115200 bps, 8N1. After changing that setting, the machine needs another power-cycle to actually use the new setting. - NetBSD site
    5. From minicom, press the SPACEBAR during boot (it boots fast, so tap the spacebar repeatedly). You will get a window like this:
      Cobalt Microserver Diagnostics - 'We serve it, you surf it'
      Built Wed Mar  3 21:26:25 PST 1999                         
      
       1.LCD Test................................PASS
       2.Controller Test.........................PASS
       5.Bank 0:.................................64M
       6.Bank 1:.................................64M
       7.Bank 2:.................................64M
       8.Bank 3:.................................64M
       9.Serial Test.............................PASS
      10.PCI Expansion Slot....................**EMPTY**
      12.IDE Test................................PASS
      13.Ethernet Test...........................PASS
      16.RTC Test................................PASS
      
      Cobalt:
      
    6. Install NetBSD on your NFS server. The Cobalt will read this stuff over the network. I placed the install in /data/netbsd. First, you need to download the binaries from netbsd.org.
      After that, the NetBSD sets can be extracted from NFS. You need to extract at least etc, base and kern, comp is strongly recommended, the others (text, games, man, xbase, ...) don't hurt. The sets are in the "cobalt/binary/sets" of the latest NetBSD release. - NetBSD site
      Here is how I did it:
      # download iso
      fetch -o /tmp/cobaltcd.iso \
      	ftp://iso.netbsd.org/pub/NetBSD/iso/1.6.2/cobaltcd.iso
      # create virtual node from disk image
      mdconfig -a -t vnode -f /tmp/cobaltcd.iso -u 0
      # mount virtual node
      mount_cd9660 /dev/md0 /mnt
      # go the the path where nfs is configured to share from
      cd /data/netbsd
      # unpack all the binaries from the mounted iso image
      tar xvzf /mnt/cobalt/binary/sets/comp.tgz
      tar xvzf /mnt/cobalt/binary/sets/etc.tgz
      tar xvzf /mnt/cobalt/binary/sets/base.tgz
      tar xvzf /mnt/cobalt/binary/sets/kern-GENERIC.tgz
      # copy the iso's into your NFS area for later.
      mkdir /data/netbsd/dist
      cp /mnt/cobalt/binary/sets/*tgz /data/netbsd/dist
      # we will need this later...
      fetch ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.1/cobalt/All/e2fsprogs-1.32.tgz
      # The cobalt wants a gzip'd version of the kernel
      gzip netbsd
      # for good luck with rarpd
      mkdir 192.168.0.250
      cd /data/netbsd/dev && sh MAKEDEV minimum
      
    7. Lanuch your NFS server on your host box (FreeBSD 5.x in my case). Make sure your firewall allows NFS... I'd just turn your firewall completely off for this install. Oh, check /etc/hosts.allow if you use TCPWRAPPERS...
      1. Set up /etc/exports:
        ### /etc/exports
        # localhost is good for testing... eg
        # mount localhost:/data/netbsd /mnt
        /data/netbsd -maproot=root localhost
        /data/netbsd -maproot=root -network 192.168.0.0 -mask 255.255.255.0
        
      2. Launch rpcbind/nfsd/mountd. (FreeBSD 4.x may use portmap inplace of rpcbind.)
        rpcbind
        nfsd -u -t -n 4
        mountd -rn
        
    8. When you netboot the Cobalt, it needs to be told what IP to use. Launch rarpd.
      1. Set up your /etc/ethers. The first time you just have to turn on the machine and run tcpdump to grap the ethernet address from the cobalt.
        ### /etc/ethers
        0:10:e0:0:4f:85 cobalt.monkeybrains.net
        
      2. verify your DNS setup (however you choose) and test it:
        host cobalt
        cobalt.monkeybrains.net has address 192.168.0.250
        
      3. Launch rarpd
      4. rarpd -s -a -t /data/netbsd
      5. Have a DHCP server running on your network... configure it like this:
        ### /usr/local/etc/dhcpd.conf
        subnet 192.168.0.0 netmask 255.255.255.0 {
          range 192.168.0.250 192.168.0.254;
          option domain-name-servers 206.13.28.12;
          option routers 192.168.0.1;
          option broadcast-address 192.168.0.255;
          option root-path "/data/netbsd";
        }
        
        host cobalt {
          hardware ethernet 0:10:e0:0:4f:85;
          filename "/netbsd.gz";
          server-name "192.168.0.3";
        }
        
        Launch DHCP
        dhcpd
    9. Do the netboot from the minicom window! This is the exciting part.
      bfd /netbsd.gz nfsroot=/data/netbsd
      And if all goes well, you boot the kernel! You need to tell the Cobalt to continue booting from the network. Nota Bene: the bolded responses you will need to type in:
      ....
      boot device: wd0                                             
      root on wd0a dumps on wd0b
      no file system for wd0 (dev 0x600)
      cannot mount root, error = 79     
      root device (default wd0a): ?
      use one of: tlp0 wd0[a-p] tlp1 ddb halt reboot
      root device (default wd0a): tlp1              
      dump device: none               
      file system (default generic): ?
      use one of: generic nfs ext2fs ffs ddb halt reboot
      file system (default generic): nfs
      root on tlp1                      
      nfs_boot: trying DHCP/BOOTP
      nfs_boot: DHCP next-server: 192.168.0.3
      nfs_boot: my_domain=monkeybrains.net   
      nfs_boot: my_addr=192.168.0.254     
      nfs_boot: my_mask=255.255.255.0
      nfs_boot: gateway=192.168.0.1  
      root on 192.168.0.3:/data/netbsd
      /etc/rc.conf is not configured.  Multiuser boot aborted.
      Enter pathname of shell or RETURN for sh: sh
      Apr 22 07:31:23 init: can't exec sh for single user: No such file or directory
      Terminal type is vt100.                                                 
      We recommend creating a non-root account and using su(1) for root access.
      # Tada!  You are in a shell!
      
    10. Now, you need to set up the harddrive. Partition, format, and mount! Make sure you have the jumpers set to "single drive" and not "cable select".
      run fdisk -iu wd0
      
      When you are done, you should have something like this when you check
      fdisk info with fdisk wd0:
      
      Disk: /dev/rwd0d
      NetBSD disklabel disk geometry:
      cylinders: 16383 heads: 16 sectors/track: 63 (1008 sectors/cylinder)
      
      BIOS disk geometry:
      cylinders: 16383 heads: 16 sectors/track: 63 (1008 sectors/cylinder)
      
      Partition table:
      0: sysid 131 (Linux native)
          start 63, size 131072 (64 MB), flag 0x80
              beg: cylinder    0, head   1, sector  1
              end: cylinder  130, head   1, sector 32
      1: sysid 169 (NetBSD)
          start 131135, size 104857600 (51200 MB), flag 0x0
              beg: cylinder  130, head   1, sector 33
              end: cylinder 1022, head  15, sector 63
      2: 
      3: 
      
      disklabel -i -I wd0
      partition> ?
      ?       print this menu
      C       make partitions contiguous
      E       print disk label and current partition table
      I       change label information
      N       name the label
      P       print current partition table
      Q       quit
      R       rounding (c)ylinders (s)ectors
      W       write the current partition table
      [a-p]   define named partition
      partition> P
      8 partitions:
      #        size    offset     fstype  [fsize bsize cpg/sgs]
       c: 104857600    131135     unused      0     0         # (Cyl.  130*- 104155*)
       d: 117231408         0     unused      0     0         # (Cyl.    0 - 116300)
       e:    131072        63 Linux Ext2      0     0         # (Cyl.    0*- 130*)
       f: 104857600    131135     unused   2048 16384   328   # (Cyl.  130*- 104155*)
      partition> W
      Label disk [n]? y
      Label written
      partition> Q
      
      run  disklabel -e wd0 and fixup the letters and fstype...
      
      # size offset fstype [fsize bsize cpg/sgs] a: 104857600 131135 4.2BSD 2048 16384 328 # (Cyl. 130*- 104155*) c: 104857600 131135 unused 0 0 # (Cyl. 130*- 104155*) d: 117231408 0 unused 0 0 # (Cyl. 0 - 116300) e: 131072 63 Linux Ext2 0 0 # (Cyl. 0*- 130*)
      ## format
      newfs /dev/wd0a
      ## mount
      mount /dev/wd0a /mnt 
      ## install e2fsprogs (on the NFS server, or in /mnt)
      cd / 
      tar zxvf /dist/e2fsprogs-1.32.tgz
      ## format Linux partition (the cobalt needs to boot off this little guy)
      /sbin/mke2fs -r 0 -O none /dev/wd0e
      
      
      Note, wd0e is type Linux Ext2 and is smallish. The wd0a is larger and is the NetBSD filesystem type.
    11. Unpack dist onto NetBSD partition
      cd /mnt
      tar xzvf /dist/cobalt/binary/sets/base.tgz
      tar xzvf /dist/cobalt/binary/sets/etc.tgz
      tar xzvf /dist/cobalt/binary/sets/comp.tgz
      tar xzvf /dist/cobalt/binary/sets/man.tgz
      tar xzvf /dist/cobalt/binary/sets/games.tgz
      tar xzvf /dist/cobalt/binary/sets/kern-GENERIC.tgz
      
    12. Setup the smaller Linux Partition for the Cobalt boot process.
      mount /dev/wd0e /altroot
      mkdir /altroot/boot
      cd /altroot/boot
      cp /mnt/netbsd vmlinux
      gzip -v9 vmlinux
      cp vmlinux.gz vmlinux_raq-2800.gz
      cp vmlinux.gz vmlinux_RAQ.gz
      cp vmlinux.gz /usr/games/.doug
      
    13. Set up some /etc stuff...
      • Make your (/mnt)/etc/fstab something like this:
        ### /etc/fstab
        /dev/wd0a       /       ffs     rw              1 1
        /dev/wd0b       none    swap    sw              0 0
        /dev/wd0e       /altroot  ext2fs  rw            1 2  
        
      • /mnt/etc/rc.donf
        ### /etc/rc.conf
        defaultroute="192.168.0.1"
        hostname="cobalt.monkeybrains.net"
        fsck_flags="-y"
        #dhclient="yes"
        sshd="YES"
        auto_ifconfig="YES"
        ifconfig_tlp1="192.168.243 255.255.255.0"
        
    14. reboot

    Dealing with Problems

    Trouble? check your /var/log/messages on the NFS host machine. Look for things like:

    More Partitions

    I noticed some extra disk space and updated my disklabel and fstab...
    ### disklabel
    #        size    offset     fstype  [fsize bsize cpg/sgs]
    a: 104857600    131135     4.2BSD   2048 16384   328   # (Cyl.  130*- 104155*)
    c: 104857600    131135     unused      0     0         # (Cyl.  130*- 104155*)
    d: 117231408         0     unused      0     0         # (Cyl.    0 - 116300)
    e:    131072        63 Linux Ext2      0     0         # (Cyl.    0*- 130*)
    f:    524288 104988735     4.2BSD   2048 16384   328   # (Cyl. 104155*- 104675*)
    g:   1048576 105513023     4.2BSD   2048 16384   328   # (Cyl. 104675*- 105715*)
    h:   1048576 106561599       swap                      # (Cyl. 105715*- 106756*)
    
    ### fstabo
    /dev/wd0a       /       ffs     rw              1 1
    /dev/wd0h       none         swap    sw 0 0
    /dev/wd0e       /altroot  ext2fs  rw            1 2  
    /dev/wd0f       /var ffs     rw 2 2
    /dev/wd0g       /tmp ffs     rw 2 2
    

    Adding software

    Say you want to install apache, or a newer version of BIND. There are two ways to install software on NetBSD.
    1. Find a the binary package for what you want and then run the pkg_add command. For example:
      # installing the newest bind8 package
      # browse to ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/net/bind8/README.html
      # find the FTP address for the Cobalt binary and ftp it:
      cd /tmp
      ftp ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.1/cobalt/net/bind-9.2.3nb1.tgz
      pkd_add bind-9.2.3nb1.tgz
      
    2. Or, install 'pkgsrc' and install from source. Read up on pkgsrc... basically, it is a group of Makefiles that tell the NetBSD where to download sources from, how to build, and where to install on the OS.
      # Grab the entire pkgsrc tree (or read the link above)
      setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
      cvs login  
      cvs checkout -P pkgsrc
      # install bind
      cd /usr/pkgsrc/net/bind8
      make install
      

      Links

      1. Subject: Requirements for a disk to boot
      2. http://netbsd.org/Ports/cobalt/faq.html
      3. Search mailing list:

      Created: Fri May 28 19:59:18 PDT 2004
      this page