#!/bin/sh # This script populates the root file system for a diskless OpenBSD system # Transform named parameters to environment variables for x ; do export ${x%=*}="${x#*=}"; done # First, create the basic directory structure mkdir $DST/bin ln -s bin $DST/sbin mkdir $DST/cdrom mkdir $DST/dev mkdir $DST/etc mkdir $DST/etc/firmware mkdir $DST/floppy mkdir $DST/tmp mkdir -p $DST/usr/lib ln -s /bin $DST/usr/bin mkdir -p $DST/usr/libexec ln -s /bin $DST/usr/sbin mkdir -p $DST/var/db mkdir -p $DST/var/run # Copy files to bin install -csm 0555 /bin/[ $DST/bin install -csm 0555 crunchbin $DST/bin/-sh install -csm 0555 /usr/sbin/arp $DST/bin install -csm 0555 /usr/bin/awk $DST/bin ln $DST/bin/-sh $DST/bin/cat ln $DST/bin/-sh $DST/bin/chgrp ln $DST/bin/-sh $DST/bin/chmod ln $DST/bin/-sh $DST/bin/chown install -csm 0555 /bin/cksum $DST/bin ln $DST/bin/-sh $DST/bin/cp ln $DST/bin/-sh $DST/bin/cpio install -csm 0555 /bin/date $DST/bin ln $DST/bin/-sh $DST/bin/dd install -csm 0555 /usr/sbin/dev_mkdb $DST/bin ln $DST/bin/-sh $DST/bin/df install -cm 0555 dhclient-script $DST/bin install -csm 0555 /usr/bin/diff $DST/bin ln $DST/bin/-sh $DST/bin/disklabel ln $DST/bin/-sh $DST/bin/dmesg install -csm 0555 /usr/bin/du $DST/bin install -csm 0555 /sbin/dump $DST/bin install -csm 0555 /bin/echo $DST/bin ln $DST/bin/-sh $DST/bin/ed ln $DST/bin/-sh $DST/bin/egrep ln $DST/bin/-sh $DST/bin/eject install -csm 0555 /usr/bin/env $DST/bin install -csm 0555 /bin/expr $DST/bin install -cm 0555 /usr/bin/false $DST/bin ln $DST/bin/-sh $DST/bin/fdisk ln $DST/bin/-sh $DST/bin/fsck ln $DST/bin/-sh $DST/bin/fsck_ffs ln $DST/bin/-sh $DST/bin/ftp ln $DST/bin/-sh $DST/bin/grep ln $DST/bin/-sh $DST/bin/gunzip ln $DST/bin/-sh $DST/bin/gzcat ln $DST/bin/-sh $DST/bin/gzip ln $DST/bin/-sh $DST/bin/halt install -csm 0555 /usr/bin/hexdump $DST/bin ln $DST/bin/-sh $DST/bin/hostname ln $DST/bin/-sh $DST/bin/ifconfig install -csm 0555 /bin/kill $DST/bin install -csm 0555 /sbin/ldconfig $DST/bin install -csm 0555 /usr/bin/ldd $DST/bin ln $DST/bin/-sh $DST/bin/less ln $DST/bin/-sh $DST/bin/ln ln $DST/bin/-sh $DST/bin/ls install -csm 0555 /usr/local/bin/gmd5sum $DST/bin/md5sum ln $DST/bin/-sh $DST/bin/mkdir ln $DST/bin/-sh $DST/bin/mknod ln $DST/bin/-sh $DST/bin/more ln $DST/bin/-sh $DST/bin/mount ln $DST/bin/-sh $DST/bin/mount_cd9660 ln $DST/bin/-sh $DST/bin/mount_ext2fs ln $DST/bin/-sh $DST/bin/mount_ffs ln $DST/bin/-sh $DST/bin/mount_msdos install -csm 0555 /sbin/mount_nfs $DST/bin ln $DST/bin/-sh $DST/bin/mount_udf ln $DST/bin/-sh $DST/bin/mv install -csm 0555 /usr/bin/netstat $DST/bin ln $DST/bin/-sh $DST/bin/newfs install -csm 0555 /sbin/newfs_msdos $DST/bin ln $DST/bin/-sh $DST/bin/pax ln $DST/bin/-sh $DST/bin/ping install -csm 0555 /bin/ps $DST/bin install -csm 0555 /bin/pwd $DST/bin ln $DST/bin/-sh $DST/bin/reboot ln $DST/bin/-sh $DST/bin/restore ln $DST/bin/-sh $DST/bin/rm install -csm 0555 /bin/rmdir $DST/bin ln $DST/bin/-sh $DST/bin/route install -csm 0555 /usr/bin/rpcinfo $DST/bin ln $DST/bin/-sh $DST/bin/sed ln $DST/bin/-sh $DST/bin/sh install -csm 0555 /usr/bin/showmount $DST/bin install -csm 0555 /sbin/shutdown $DST/bin install -csm 0555 /bin/sleep $DST/bin install -csm 0555 /usr/bin/sort $DST/bin ln $DST/bin/-sh $DST/bin/stty install -csm 0555 /bin/sync $DST/bin install -csm 0555 /sbin/sysctl $DST/bin install -csm 0555 /usr/bin/tail $DST/bin ln $DST/bin/-sh $DST/bin/tar ln $DST/bin/[ $DST/bin/test install -csm 0555 /usr/bin/tftp $DST/bin install -csm 0555 /usr/bin/touch $DST/bin install -cm 0555 /usr/bin/true $DST/bin install -csm 0555 /sbin/tunefs $DST/bin ln $DST/bin/-sh $DST/bin/umount install -cm 0555 /usr/bin/uname $DST/bin install -csm 0555 /usr/bin/uniq $DST/bin install -csm 0555 /usr/bin/which $DST/bin # Copy files to dev install -cm 0555 /dev/MAKE* $DST/dev # Make devices in dev cd $DST/dev ./MAKEDEV std ./MAKEDEV cd0 ./MAKEDEV fd0 ./MAKEDEV rd0 ./MAKEDEV wd0 ./MAKEDEV bpf0 ./MAKEDEV bpf1 ./MAKEDEV bpf2 ./MAKEDEV bpf3 cd ../.. # Copy files to etc install -cm 0444 /etc/firmware/fxp* $DST/etc/firmware install -cm 0444 fstab $DST/etc install -cm 0444 motd $DST/etc install -cm 0444 profile $DST/etc install -cm 0444 /etc/protocols $DST/etc install -cm 0555 rc $DST/etc install -cm 0444 /etc/services $DST/etc # Copy files to usr/lib install -csm 0444 /usr/lib/libc.so.43.0 $DST/usr/lib install -csm 0444 /usr/lib/libkvm.so.9.0 $DST/usr/lib install -csm 0444 /usr/lib/libm.so.2.3 $DST/usr/lib install -csm 0444 /usr/lib/libutil.so.11.0 $DST/usr/lib # Copy files to usr/libexec install -cm 0444 /usr/libexec/ld.so $DST/usr/libexec # Compile custom /sbin/init gcc -Wall -o $DST/sbin/init init.c -lutil -static strip $DST/sbin/init # Install these last because they are so big install -cm 0555 $DHCLIENT $DST/bin install -cm 0555 $NSLOOKUP $DST/bin # Create dummy dhclient.leases touch $DST/var/db/dhclient.leases # Fixup ownership chown -P -R root.wheel $DST # Now touch everything to set the timestamp touch $DST/* $DST/*/* $DST/*/*/*