#!/bin/sh # This script populates the root file system for a diskless FreeBSD system # Transform named parameters to environment variables for x ; do export ${x%=*}="${x#*=}"; done # First, create the basic directory structure mkdir $DST/bin mkdir $DST/cdrom mkdir $DST/dev mkdir $DST/etc mkdir $DST/floppy mkdir $DST/lib mkdir $DST/libexec mkdir $DST/sbin mkdir $DST/tmp mkdir $DST/var mkdir $DST/var/db mkdir $DST/var/run # Copy files to bin install -csm 0555 /bin/[ $DST/bin install -csm 0555 /bin/cat $DST/bin install -csm 0555 /bin/chmod $DST/bin install -csm 0555 /bin/cp $DST/bin install -csm 0555 /bin/date $DST/bin install -csm 0555 /bin/dd $DST/bin install -csm 0555 /bin/df $DST/bin install -csm 0555 /bin/echo $DST/bin install -csm 0555 /bin/ed $DST/bin install -csm 0555 /bin/expr $DST/bin install -csm 0555 /bin/hostname $DST/bin install -csm 0555 /bin/kill $DST/bin install -csm 0555 /bin/ln $DST/bin install -csm 0555 /bin/ls $DST/bin install -csm 0555 /bin/mkdir $DST/bin install -csm 0555 /bin/mv $DST/bin install -csm 0555 /bin/ps $DST/bin install -csm 0555 /bin/pwd $DST/bin install -csm 0555 /bin/rm $DST/bin install -csm 0555 /bin/rmdir $DST/bin install -csm 0555 /bin/sh $DST/bin install -csm 0555 /bin/sleep $DST/bin install -csm 0555 /bin/stty $DST/bin install -csm 0555 /bin/sync $DST/bin install -csm 0555 /bin/test $DST/bin install -csm 0555 /usr/bin/awk $DST/bin install -csm 0555 /usr/bin/cksum $DST/bin install -csm 0555 /usr/bin/diff $DST/bin install -csm 0555 /usr/bin/du $DST/bin install -csm 0555 /usr/bin/env $DST/bin install -csm 0555 /usr/bin/false $DST/bin install -csm 0555 /usr/bin/ftp $DST/bin install -csm 0555 /usr/bin/grep $DST/bin install -csm 0555 /usr/bin/gzip $DST/bin ln -s gzip $DST/bin/gunzip install -csm 0555 /usr/bin/hexdump $DST/bin install -csm 0555 /usr/bin/ldd $DST/bin install -csm 0555 /usr/bin/more $DST/bin install -csm 0555 /usr/bin/netstat $DST/bin install -csm 0555 /usr/bin/nslookup $DST/bin install -csm 0555 /usr/bin/rpcinfo $DST/bin install -csm 0555 /usr/bin/sed $DST/bin install -csm 0555 /usr/bin/showmount $DST/bin install -csm 0555 /usr/bin/sort $DST/bin install -csm 0555 /usr/bin/tail $DST/bin install -csm 0555 /usr/bin/tar $DST/bin install -csm 0555 /usr/bin/tftp $DST/bin install -csm 0555 /usr/bin/touch $DST/bin install -csm 0555 /usr/bin/true $DST/bin install -csm 0555 /usr/bin/uname $DST/bin install -csm 0555 /usr/bin/uniq $DST/bin install -csm 0555 /usr/bin/which $DST/bin install -csm 0555 /usr/local/bin/gmd5sum $DST/bin/md5sum ln -s sh $DST/bin/-sh # Make devices in dev # Copy files to etc install -cm 0444 fstab $DST/etc install -cm 0444 motd $DST/etc install -cm 0444 /etc/netconfig $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 lib ldd $DST/bin/* $DST/sbin/* 2>&1 | awk '/=>/ && $3 !~ /\(.*\)/ { printf("install -csm 0555 %s $DST/lib\n", $3); }' | sort | uniq | sh install -csm 0555 /lib/libipsec.so.3 $DST/lib # Copy files to libexec install -csm 0555 /libexec/ld-elf.so.1 $DST/libexec # Copy files to sbin install -csm 0555 $DHCLIENT $DST/sbin install -cm 0555 dhclient-script $DST/sbin install -csm 0555 /sbin/disklabel $DST/sbin install -csm 0555 /sbin/dmesg $DST/sbin install -csm 0555 /sbin/dump $DST/sbin install -csm 0555 /sbin/fdisk $DST/sbin install -csm 0555 /sbin/fsck $DST/sbin install -csm 0555 /sbin/fsck_ffs $DST/sbin install -csm 0555 /sbin/fsck_msdosfs $DST/sbin install -csm 0555 /sbin/halt $DST/sbin install -csm 0555 /sbin/ifconfig $DST/sbin install -csm 0555 /sbin/ldconfig $DST/sbin install -csm 0555 /sbin/mknod $DST/sbin install -csm 0555 /sbin/mount $DST/sbin install -csm 0555 /sbin/mount_cd9660 $DST/sbin install -csm 0555 /sbin/mount_msdosfs $DST/sbin install -csm 0555 /sbin/mount_nfs $DST/sbin install -csm 0555 /sbin/newfs $DST/sbin install -csm 0555 /sbin/newfs_msdos $DST/sbin install -csm 0555 /sbin/ping $DST/sbin install -csm 0555 /sbin/reboot $DST/sbin install -csm 0555 /sbin/restore $DST/sbin install -csm 0555 /sbin/route $DST/sbin install -csm 0555 /sbin/swapon $DST/sbin install -csm 0555 /sbin/sysctl $DST/sbin install -csm 0555 /sbin/tunefs $DST/sbin install -csm 0555 /sbin/umount $DST/sbin install -csm 0555 /usr/sbin/arp $DST/sbin install -csm 0555 /usr/local/sbin/eject $DST/sbin # Compile custom /sbin/init gcc -Wall -o$DST/sbin/init init.c -lutil -static strip $DST/sbin/init chmod 0555 $DST/sbin/init # Create dummy dhclient.leases touch $DST/var/db/dhclient.leases # Fixup ownership and permissions chown -P -R root:wheel $DST # Now touch everything to set the timestamp touch $DST/* $DST/*/* $DST/*/*/*