$NETside$

Install 4.4BSD sparc binary (to real-hardware)

use NetBSD-1.3.3/sparc's newfs, installboot, mdec/boot, mdec/bootxx from miniroot-133.fs

  1. boot using miniroot-133.fs. dd it into 'b' partition, and boot from it
  2. disklabel, newfs
  3. mount /dev/sd0a /mnt; cp -p /usr/mdec/boot /mnt/boot-nb133
  4. cd /usr/mdec; ./installboot -v /mnt/boot-nb133 bootxx /dev/rsd0c
  5. extract 4.4BSD/sparc binary tree
  6. MAKEDEV all in /mnt/dev
  7. write /mnt/etc/fstab
  8. reboot

Boot 4.4BSD sparc binary using TME sun4c emulator

I can't use it on TME. Single-user works, but lock up before multi-user login prompt.


Boot 4.4BSD pmax binary using GXemul DECstation emulator

GXemul http://gavare.se/gxemul/

1st time, boot single-user to set time. add option "-o '-s'".

    % gxemul -e 3max -j vmunix -o '-s' -d bsd44f-pmax-self-xxxxxxxx.dkimg

set date, yymmddHHMM (%y%m%d%H%M)

    # TZ=Japan date 2106011210
    # fsck -p
    # ^D

GXemul supports NAPT like network, by default.

    # ifconfig le0 10.0.0.2
    # route add default 10.0.0.254

GXemul 0.7 or later supports tap device, add "-L /dev/tap0". example:

    % sudo ifconfig tap0 create up
    % sudo brcofnig bridge0 add tap0

add read+write permission /dev/tap0 for your account.

    % gxemul -e 3max -j vmunix -L /dev/tap0 -d bsd44f-pmax-self-xxxxxxxx.dkimg

Install 4.4BSD pmax binary to disk image file

    % dd if=/dev/zero of=b44-pmax.img bs=1m seek=511 count=1
    % gxemul -e 3max -j netbsd \
        -d r:nb133-pmax-inst-diskimage \
        -d b44-pmax.img \
        -d r:nb11-pmax-miniroot \
        -d r:bsd44f-installed-self-pmax-xxxxxxxx.tar.gz
    # date 21mmddHHMM            # GMT
    # disklabel -i rz1
        root  a 4.2BSD start   0c size 400c
        swap  b swap   start 400c size 128c
        /var  g 4.2BSD start 528c size 128c
        /vol1 h 4.2BSD start 656c size 385c
    # mount_mfs -s 256 /dev/rz0b /tmp
    # disklabel rz1 > /tmp/l
    # disklabel -r -R rz1 /tmp/l
    # mount -o ro /dev/rz2a /mnt
    # cd /mnt/usr/mdec
    # disklabel -B -b rzboot -s bootrz rz1
    # /mnt/sbin/newfs /dev/rrz1a
    # /mnt/sbin/newfs /dev/rrz1g
    # /mnt/sbin/newfs /dev/rrz1h
    # mount /dev/rz1a /mnt2
    # mkdir /mnt2/var
    # mount /dev/rz1g /mnt2/var
    # dd if=/dev/rrz3c | gunzip | (cd /mnt2 && tar xpvf -)
    # (cd /mnt2/dev && sh ./MAKEDEV rz0 rz1)    # no awk, so pty0 later.
    # cat /mnt2/etc/fstab.rz | sed 's/usr/var/' > /mnt2/etc/fstab
    # echo "/dev/rz0b none swap sw 0 0" >> /mnt2/etc/fstab
    # echo "/dev/rz0b /tmp mfs rw,-s=12000,-T=rz58 0 0" >> /mnt2/etc/fstab
    # umount /mnt2/var
    # umount /mnt2
    # shutdown -h now
    ^C
    GXemul> quit
    % gxemul -e 3max -j vmunix -o '-s' -d b44-pmax.img

set date, go multi-user, sh MAKEDEV pty0 in /dev.


Boot 4.4BSD luna68k binary using nono OMRON LUNA emulator

Install nono on host OS. use 0.2.6 or later.

    % ./configure --prefix=/usr/local/nono-0.2.6
    % make -DNOTEST depend
    % make -DNOTEST
    % sudo make install

prepare 4 files, nono.cfg (assign disk image to spc0-id6-image), NVRAM.DAT-aboot as NVRAM.DAT, nono-ifup, nono-ifdown.

    % ln -sf NVRAM.DAT-aboot NVRAM.DAT
    % /usr/local/nono-0.2.6/bin/nono-cli
        :
    Phase-31> boot
    % shutdown -h now

kill nono.


Install 4.4BSD luna68k binary to disk image file

    % dd if=/dev/zero of=b44-luna68k.img bs=1m seek=511 count=1

4.4BSD binary tree (tar.gz) as disk image.

    % dd if=bsd44f-installed-self-luna68k-xxxxxxxx.tar.gz of=tree.img conv=sync
          spc0-id6 sd3  liveimage-luna68k-raw-20200518.img  boot dev, NetBSD 9
          spc0-id5 sd2  b44-luna68k.img                     install target
          spc0-id4 sd1  miniroot-nb11-sun3                  NetBSD 1.1 miniroot
          spc0-id3 sd0  tree.img                            4.4BSD binary tree
    % ln -sf NVRAM.DAT-dboot NVRAM.DAT
    % /usr/local/nono-0.2.6/bin/nono-cli -f nono-nb.cfg
        :
    boot> boot -s
    # disklabel -i -I sd2
        root  a 4.2bsd  start   0c  size 200c
        swap  b swap    start 200c  size  64c
        /var  g 4.2bsd  start 264c  size  64c
        /vol1 h 4.2bsd  start 328c  size  $(remain)

    # mount -o ro /dev/sd1c /mnt
    # /mnt/sbin/newfs /dev/rsd2a
    # /mnt/sbin/newfs /dev/rsd2g
    # mount /dev/sd2a /altroot
    # mkdir /altroot/var
    # mount /dev/sd2g /altroot/var
    # dd if=/dev/rsd0c | gunzip | (cd /altroot && pax -rvp e)
    # (cd /altroot/dev && sh ./MAKEDEV sd0 sd1 pty0)
    # (cd /altroot/etc && cat fstab.sd | sed '/sd0f/d;s/sd0e/sd0g/' > fstab)
    # echo '/dev/sd0b none swap sw 0 0' >> /altroot/etc/fstab
    # halt -p

Boot 4.4BSD-Alpha i386 binary using emulators

These pages are very helpful for me about using x86 emulator.

disk image settings:

use as Xen guest DomU HVM

    % sudo xl create chest.xencf -c		## to detach xen console, type 'Ctrl-]'.

    % sudo xl console b44a-chest		## attach console again

    % sudo xl destroy b44a-chest		## stop DomU

use emulator "bochs"

    % bochs -q -f chest.bochscf
    % cu -s 9600 -P none -l ttypa

use emulator "qemu"

    % qemu-system-i386 -m 16m -rtc base=localtime -nographic \
      -net none \
      -device ne2k_isa,netdev=nic0,iobase=0x300,irq=9 \
      -netdev tap,id=nic0,ifname=tap0,script=no,downscript=no \
      -device ide-hd,drive=hd0,bus=ide.0,cyls=400,heads=16,secs=63 \
      -drive id=hd0,if=none,format=raw,file=bsd44alpha-i386-self-202xxxxx.dkimg

Type "C-a x" to exit qemu.


Install 4.4BSD-Alpha i386 binary to disk image file

    % dd if=/dev/zero of=b44alpha-i386.img bs=4032b count=100 progress=1

    % sudo vndconfig -cv vnd3 b44alpha-i386.img
    % sudo disklabel -i -I vnd3

        ## CHS 400/16/63  a:160c b:64c d:400c g:64c h:111c (total 399c)

    % sudo /emul/aout/usr/sbin/bad144 vnd3 -f		# ignore errors..

        ## % dd if=/dev/rvnd3d bs=1008b skip=399 | hexdump -C
    % sudo /emul/aout/sbin/newfs /dev/rvnd3a
    % sudo /emul/aout/sbin/newfs /dev/rvnd3g
    % sudo /emul/aout/sbin/newfs /dev/rvnd3h

    % sudo mount /dev/vnd3a /mnt
    % sudo mkdir /mnt/var /mnt/vol1
    % sudo mount /dev/vnd3g /mnt/var

        ## % df -t ffs

    % gunzip < bsd44alpha-installed-self-i386-202xxxxx.tar.gz | \
        (cd /mnt && sudo pax -rvp e)
    % (cd /mnt/dev && sudo sh ./MAKEDEV wd0 pty0)

    % sudo cp /mnt/etc/fstab{.wd,}
    % sudo chmod +w /mnt/etc/fstab        # and edit fstab
    % (cd /mnt/usr/local/tools/mdec && \
        sudo /emul/aout/sbin/disklabel -B -b biosboot-nb08 -s bootbios-nb08 vnd3)
    % sudo umount /mnt/var
    % sudo umount /mnt

    % vndconfig -uv vnd3

self compile

self compile 4.4BSD (sparc, pmax, luna68k), 4.4BSD-Alpha (i386)

  1. prepare source tree, destdir. define at top of build.mk
        BSDSRCDIR =    /source/dir/of/4.4bsd-src
        MODSRCDIR =    /path/to/bsd4.4-extra-tree
        INSTALLDIR =   /dest/dir
    
  2. make sure that use /usr/local/tools/bin/make as "make" command, modified version of 4.4BSD make.
  3. install sudo, zsh.
    % echo "ln -sf /usr/local/tools/bin/make /usr/local/bin" | su root

    % make -f build.mk install-sudo
    % (cd 40ex/zsh-2.5.03 && make depened && make && sudo -E make install &&
        sudo -E ln -sf /usr/local/zsh-2.5.03/bin/zsh /usr/local/bin/)
    % make -f build.mk install-bin
    % make -f build.mk install-kern

cross compile

(semi-)cross compile 4.4BSD on NetBSD 1.0/sparc, on NetBSD 1.1/pmax, and NetBSD 1.1/sun3 for luna68k.

  1. setup NetBSD 1.0/sparc (tme or qemu), netbsd 1.1/pmax (GXemul), or NetBSD 1.1/sun3 (tme) for luna68k.
  2. prepare source tree, and destdir. define at top of build.mk
        BSDSRCDIR =    /source/dir/of/csrg-cd4
        MODSRCDIR =    /path/to/bsd4.4-extra-tree
        INSTALLDIR =   /dest/dir
    
    for luna68k, add one more line below.
        MACHINE = luna68k
    
  3. install sudo, make, zsh.
    % make -f build.mk install-sudo
    % make -f build.mk install-make
    % (cd 40ex/zsh-2.5.03 && make depened && make && sudo -E make install &&
        sudo -E ln -sf /usr/local/zsh-2.5.03/bin/zsh /usr/local/bin/)
    % make -f build.mk install-hostbin
    % make -f build.mk install-bin
    % make -f build.mk install-kern

prepare source tree


cross compile (4.4BSD-Alpha)

(semi-)cross compile 4.4BSD-Alpha on NetBSD-9/i386 and NetBSD 1.0 build tools

  1. setup NetBSD-9/i386 (9 or later)
  2. prepare old a.out commands under /emul/aout
  3. prepare old a.out compiler and tools
  4. prepare source tree, and destdir. define at top of build.mk
        BSDSRCDIR =    /source/dir/of/bsd44alpha-src
        MODSRCDIR =    /path/to/bsd4.4alpha-extra-tree
        INSTALLDIR =   /dest/dir
    
  5. install sudo, make, zsh.
    % make -f build.mk install-sudo
    % make -f build.mk install-make
    % (cd 40ex/zsh-2.5.03 && make depened && make && sudo -E make install &&
        sudo -E ln -sf /usr/local/zsh-2.5.03/bin/zsh /usr/local/bin/)
    % make -f build.mk install-hostbin
    % make -f build.mk install-bin
    % make -f build.mk install-kern

prepare source tree


prepare old a.out commands

  1. setup NetBSD 9/i386 (on bare-metal or vertual machine).
  2. confirm kernel configured with compat netbsd1.0 or former.
  3. put old a.out tools under /emul/aout
    get NetBSD 1.0/i386 http://archive.netbsd.org/pub/NetBSD-archive/NetBSD-1.0/i386/binary/
    % obind=/_somewhere1_/bintree-nb1.0-i386
    % cat base10.?? | gunzip | (cd $obind && sudo pax -rvp e)
    % cat comp10.?? | gunzip | (cd $obind && sudo pax -rvp e)
    % sudo ln -s $obind /emul/aout

prepare old a.out compiler and tools

  1. prepare old a.out commands (above)
    % upperd=/_somewhere2_/upperd-oldaout-usr

    % [ -d $upperd ] || sudo mkdir $upperd

    % sudo ln -s /emul/aout/usr/include $upperd/
    % (cd $upperd && sudo mkdir bin lib libexec sbin)

    % dlist="ar as c++ cc cpp g++ gcc ld lex mkdep nm ranlib size strip yacc"
    % for d in $dlist; do sudo ln -s /emul/aout/usr/bin/$d $upperd/usr/bin/; done

    % dlist=`(cd /emul/aout/usr/lib/ && ls *.[oa]) | egrep -v '_p.*\.a$'`
    % for d in $dlist; do sudo ln -s /emul/aout/usr/lib/$d $upperd/usr/lib/; done

    % dlist="cc1 cc1obj cc1plus cpp"
    % for d in $dlist; do sudo ln -s /emul/aout/usr/libexec/$d $upperd/usr/libexec/; done

    % dlist="mtree"
    % for d in $dlist; do sudo ln -s /emul/aout/usr/sbin/$d $upperd/usr/sbin/; done
    % sudo mount -t union $upperd /usr

    % sudo du /usr > /dev/null      ## mumbo jumbo

    % gcc -v
    gcc version 2.4.5

you might be able to exec old 4.4BSD binay. confirm your NetBSD kernel configured with options:

then, let loose security setting.

    % sudo sysctl -w vm.user_va0_disable=0

bridge network using tap(4)

    % sudo ifconfig tap0 create up
    % sudo ifconfig bridge0 create up
    % sudo brconfig bridge0 add re0          ## re0 -- your physical NIC
    % sudo brconfig bridge0 add tap0