#!/bin/sh
#
# devel?
#
if [ "X$1" = "Xd" ]; then
	echo Build Development Filesystem.
fi
#
# make directories
#
echo Directories...
mkdir --parents --mode=755 fs/bin fs/boot fs/dev fs/etc fs/lib fs/proc /fs/tmp fs/var #fs/dev/pts
if [ "X$1" = "Xd" ]; then
	mkdir --parents --mode=755 fs/devel
fi
#
# make devices
#
echo Devices...
cd fs/dev
/dev/MAKEDEV std
/dev/MAKEDEV fd
/dev/MAKEDEV console
/dev/MAKEDEV ttyS0 ttyS1
/dev/MAKEDEV ptyp
/dev/MAKEDEV lp
# ramdisk
#mknod ram b 1 1
mknod ram0 b 1 0
#mknod ram1 b 1 1
ln -s ram0 ramdisk
# initrd
#mknod initrd b 1 250
# random
mknod random c 1 8
mknod urandom c 1 9
# DoC
mknod fla b 62 0
mknod fla1 b 62 1
mknod fla2 b 62 2
#mknod fla3 b 62 3
#mknod fla4 b 62 4
# watchdog
mknod watchdog c 10 130
# apm_bios
mknod apm_bios c 10 134
# rtc
mknod rtc c 10 135
cd ../..
#
# programs
#
echo Programs...
#cp /usr/sbin/chat fs/bin
#cp /usr/sbin/chroot fs/bin
cp /bin/date fs/bin
cp /sbin/fsck.minix fs/bin
cp /sbin/hwclock fs/bin
cp /sbin/ifconfig fs/bin
#cp /sbin/insmod fs/bin
cp /sbin/mkfs.minix fs/bin
cp /usr/sbin/pppd fs/bin
cp /sbin/route fs/bin
if [ "X$1" = "X" ]; then
	cp cryptd/cryptd fs/bin
fi
if [ "X$1" = "Xd" ]; then
	cp /bin/ash fs/devel
	cp /bin/cat fs/devel
	cp /usr/bin/du fs/devel
	cp /bin/df fs/devel
	cp /bin/ed fs/devel
	cp /usr/bin/free fs/devel
	cp /bin/ls fs/devel
	cp /bin/netstat fs/devel
	cp /bin/ps fs/devel
	cp /bin/rm fs/devel
	#cp /sbin/route fs/devel
fi
#
# libs
#
echo Libraries...
#cp kernel/bsd_comp.o fs/lib
#cp kernel/ppp_deflate.o fs/lib
cp /lib/ld-2.*.so tmp/
objcopy --strip-debug tmp/ld-2.*.so
mv tmp/ld-2.*.so fs/lib/
ln -s /lib/ld-2.*.so fs/lib/ld-linux.so.2
cp /lib/libc.so.6 tmp/
objcopy --strip-debug tmp/libc.so.6
mv tmp/libc.so.6 fs/lib/
# for pppd
cp /lib/libpam.so.0 tmp/
objcopy --strip-debug tmp/libpam.so.0
mv tmp/libpam.so.0 fs/lib/
cp /lib/libdl.so.2 tmp/
objcopy --strip-debug tmp/libdl.so.2
mv tmp/libdl.so.2 fs/lib/
cp /lib/libutil.so.1 tmp/
objcopy --strip-debug tmp/libutil.so.1
mv tmp/libutil.so.1 fs/lib/
cp /lib/libcrypt.so.1 tmp/
objcopy --strip-debug tmp/libcrypt.so.1
mv tmp/libcrypt.so.1 fs/lib/
# for ps
if [ "X$1" = "Xd" ]; then
	cp /lib/libproc.so.2.0.0 tmp/
	objcopy --strip-debug tmp/libproc.so.2.0.0
	mv tmp/libproc.so.2.0.0 fs/lib/
fi
# ldconfig
cp /sbin/ldconfig fs
chroot fs/ ./ldconfig
rm fs/ldconfig
#
# config files
#
echo Config Files...
cat >fs/etc/fstab<<END
END
#cat >fs/etc/ld.so.conf <<END
#/lib
#END
cat >fs/etc/passwd <<END
root:*:0:0:root:/:
admin:*:100:100:admin:/var/conf:/bin/conf
user:*:200:200:user:/var/crypt:/bin/cryptd
END
touch fs/etc/ld.so.cache
#
# other files
#
echo Other Files...
cd src
make clean
if [ "X$1" = "Xd" ]; then
	DEVEL=1 make
else
	make
fi
strip clinit
cd ..
cp src/clinit fs/etc/init
#
# zero unused space
#
echo Zeroing unused space
cat /dev/zero >fs/z 2>/dev/null
rm fs/z
#
df
