Index: stable/4/release/picobsd/build/Makefile.crunch =================================================================== --- stable/4/release/picobsd/build/Makefile.crunch (revision 68471) +++ stable/4/release/picobsd/build/Makefile.crunch (revision 68472) @@ -1,44 +1,44 @@ # # $FreeBSD$ # SRC?=/usr/src CRUNCHFLAGS+= -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT all: crunch crunch: @cat crunch.conf|sed -e "s@/usr/src@${SRC}@" >crunch1.conf @( if [ -f crunch.inc ] ; then \ crunchgen -h ./crunch.inc ./crunch1.conf ; \ else \ crunchgen -h ../../build/crunch.inc ./crunch1.conf ; \ fi ) @${MAKE} -f crunch1.mk $(CRUNCHFLAGS) all \ "CFLAGS=${CFLAGS} ${CRUNCHFLAGS}" #2>&1 >/dev/null strip --remove-section=.note --remove-section=.comment crunch1 clean: rm -f *.o *.stub *.lo *_stub.c *.mk \ crunch.cache \ crunch.mk \ crunch.c \ crunch1* \ crunch \ .tmp_* \ *.gz install: - cp crunch1 /mnt/stand/crunch - chmod 555 /mnt/stand/crunch + cp crunch1 ${MFS_MOUNTPOINT}/stand/crunch + chmod 555 ${MFS_MOUNTPOINT}/stand/crunch for i in `crunchgen -l crunch1.conf` ; \ do \ - ln /mnt/stand/crunch /mnt/stand/$${i}; \ + ln ${MFS_MOUNTPOINT}/stand/crunch ${MFS_MOUNTPOINT}/stand/$${i}; \ done - rm /mnt/stand/crunch + rm ${MFS_MOUNTPOINT}/stand/crunch # Install the MIB files - #mkdir -p /mnt/usr/local/share/snmp/mibs - #cp ../../net/crunch1/mibs/*.txt /mnt/usr/local/share/snmp/mibs/ + #mkdir -p ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs + #cp ../../net/crunch1/mibs/*.txt ${MFS_MOUNTPOINT}/usr/local/share/snmp/mibs/ .include Index: stable/4/release/picobsd/build/build =================================================================== --- stable/4/release/picobsd/build/build (revision 68471) +++ stable/4/release/picobsd/build/build (revision 68472) @@ -1,386 +1,387 @@ #!/bin/sh - # # $FreeBSD$ # # You can set the SRC variable which points to your source tree. It's # /usr/src by default (most people shouldn't change it). SRC=/usr/src OBJ=/usr/obj # --------- YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW ----------- # The "build" script will ask you for parameters. Just run it... :-) # --------- YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW ----------- # EDITOR is the editor you use EDITOR=${EDITOR:-vi} # LANGUAGE language to be used (en or pl) LANGUAGE=en # SITE site-specific files SITE= # FLOPPY_SIZE floppy size in KB (default to 1440) FLOPPY_SIZE=1440 # DEVFS is currently broken. Always set this. # NO_DEVFS=yes # RISU is where dialog replies go. RISU=.build.reply # abort in case of error... set -e . ../Version # support symbolically linked custom directory BUILDDIR=`pwd` export BUILDDIR # assign default values to variables. set_defaults() { TYPE=${TYPE:-dial} # PicoBSD type (isp, router, net, custom, ... # build image list cat /dev/null > .image.list for i in ../* ; do if [ -d $i -a -f $i/PICOBSD ] ; then a=`awk '/^#PicoBSD/ {print $2, $3, $4, $5, $6}' < $i/PICOBSD` if [ "$a" != "" ]; then echo "`basename $i` $a" >>.image.list fi fi done while read name sz init mfs_in floppy_in ; do if [ "$name" != "#" -a $name != "" ] ; then eval ${name}_DFLT_SIZE=$sz eval ${name}_INIT=$init eval ${name}_MFS_INODES=$mfs_in eval ${name}_FLOPPY_INODES=$floppy_in fi done < .image.list } set_msgs() { MSG1="Type: ${TYPE}" if [ "X${TYPE}" = "Xcustom" ] ; then MSG1="${MSG1} (from ${CUST_DIR})" fi MSG="PicoBSD build -- Current parameters:\n\n\t1. ${MSG1}\n\ \t2. MFS size: ${MFS_SIZE} kB\n\t3. Language: ${LANGUAGE}\n\ \t4. Site-info: ${SITE}\n" } # Main build procedure. It calls another script (stage1) main() { if [ "X${TYPE}" = "X" ] ; then echo "^G^G^G-> wrong floppy type" exit 10 fi export suffix clear set_msgs printf "${MSG}" echo "-> We'll use the sources living in ${SRC}" echo "" echo "-> I hope you have checked the ../${TYPE}/PICOBSD config file..." echo "" echo "" sleep 2 export MFS_SIZE LANGUAGE TYPE SRC OBJ NO_DEVFS INIT export SITE MFS_INODES FLOPPY_INODES FLOPPY_SIZE ./stage1 if [ "X$?" != "X0" ] ; then echo "" echo "-> ERROR in \"${i}\" script. Aborting the build process." echo -n "-> Cleaning temporary files... " - umount -f /mnt - vnconfig -u /dev/rvn0 + umount -f ${MFS_MOUNTPOINT} + rm -rf ${MFS_MOUNTPOINT} + vnconfig -u /dev/rvn${VNUM} ./clean ${TYPE} echo "Done." exit 10 fi echo "==================== ${i} completed =====================" } # check for existing custom config directory and ask user if they want to use it # # Note that specifying an alternate directory is broken due to relative # path assumptions during the kernel compilation phase of the build. # For now just dialog-ify. check_for_old_custom() { KEEP_CUSTOM=no if [ ! -d ../custom ] ; then return fi CUSTOMLINK=`ls -l ../custom | awk -F\> '{ print $2 }' | awk '{ print $1 }'` if dialog --title "Custom directory setup" --yesno "A custom configuration\n ${CUSTOMLINK}\nalready exists. Would you like to use it?" 7 50 ; then KEEP_CUSTOM=yes CUST_DIR=${CUSTOMLINK} else KEEP_CUSTOM=no fi # If custom is just a simple directory, assume the user wants it } # Ask for, and set the custom config directory set_custom() { dialog --title "Custom directory setup" --inputbox \ "Please enter the full path to the directory containing your \ custom setup. \ This directory tree must be laid out exactly like the standard \ ones. (E.g. you can type in /home/abial/work/custom, which \ should contain crunch1/, floppy.tree/, lang/ )." \ 10 70 2> ${RISU} CUST_DIR=`cat ${RISU}` } # Set type of floppy interactively. Also set the various defaults # associated to each type. We can override them manually afterwards. set_type() { eval MFS_SIZE=$"${TYPE}_DFLT_SIZE" eval INIT=$"${TYPE}_INIT" eval MFS_INODES=$"${TYPE}_MFS_INODES" eval FLOPPY_INODES=$"${TYPE}_FLOPPY_INODES" suffix="-${TYPE}" if [ "${MFS_SIZE}" = "" ] ; then echo "TYPE $TYPE not found!" sleep 2 TYPE="" fi case ${TYPE} in custom) check_for_old_custom if [ "X${KEEP_CUSTOM}" != "Xyes" ] ; then [ -r ../custom ] && rm -f ../custom set_custom (cd ..; ln -sf ${CUST_DIR} custom) fi ;; esac } build_package() { touch build.status echo "##############################################" >>build.status echo "## `date` ">>build.status echo "##############################################" >>build.status ./clean dial for y in en pl ; do for z in dial router net isp ; do TYPE=${z} LANGUAGE=${y} set_type echo "---------------------------------------------">>build.status echo "Building TYPE=${z}, LANGUAGE=${y}, SIZE=${MFS_SIZE}" >>build.status main if [ "X$?" != "X0" ] ; then echo " ** FAILED! **">>build.status else echo " (ok)">>build.status fi mv picobsd.bin pb_${y}${suffix}.bin echo "Calling ./clean for ${TYPE}, ${LANGUAGE}, ${MFS_SIZE}">>build.status ./clean ${TYPE} done done exit 0 } # Set build parameters interactively main_dialog() { while [ true ] ; do set_msgs dialog --menu "PicoBSD build menu -- ver ${VER} (22aug1999)" 19 70 12 \ N "No change, build it" \ T "${MSG1}" \ K "edit Kernel config file for ${TYPE}" \ E "Edit crunch.conf file for ${TYPE}" \ S "MFS Size: ${MFS_SIZE}kB" \ L "Language: ${LANGUAGE}" \ I "Init type: ${INIT}" \ F "Floppy size: ${FLOPPY_SIZE}kB" \ M "MFS bytes per inode: ${MFS_INODES}" \ U "UFS bytes per inode: ${FLOPPY_INODES}" \ $ "Site-info: ${SITE}" \ Q "Quit" \ 2> ${RISU} ans=`cat ${RISU}` rm ${RISU} case ${ans} in T) dialog --menu "Setup the type of configuration" 12 70 5 \ `awk '{ print $1, $1 }' < .image.list` \ 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then TYPE=`cat ${RISU}` set_type fi ;; I) dialog --menu "Choose your init(8) program" \ 10 70 2 init "Standard init (requires getty)" \ oinit "small init from TinyWare" 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then INIT=`cat ${RISU}` fi ;; K) ${EDITOR} ../${TYPE}/PICOBSD ;; E) ${EDITOR} ../${TYPE}/crunch1/crunch.conf ;; S) dialog --title "MFS Size setup" --inputbox \ "MFS size depends on what you need to put on the MFS image. Typically \ ranges between 820kB (for very small bridge/router images) to \ as much as 2500kB kB for a densely packed image. \ Keep in mind that this memory is \ totally lost to other programs. Usually you want to keep \ this as small as possible. " 10 70 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then MFS_SIZE=`cat ${RISU}` if [ "${MFS_SIZE}" = "" ] ; then eval MFS_SIZE=$"${TYPE}_DFLT_SIZE" fi fi ;; L) dialog --menu "Please choose language" \ 10 40 2 en English pl Polish 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then LANGUAGE=`cat ${RISU}` fi ;; \$) dialog --title "Site info setup" --inputbox \ "Please enter the full path to the directory \ containing site-specific setup. \ This directory tree must contain files that replace \ standard ones in floppy.tree/ and mfs.tree/ . " \ 10 70 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then SITE=`cat ${RISU}` fi ;; F) dialog --menu "Set floppy size" 15 70 4 \ 1440 "1.44MB" 1720 "1.72MB" \ 2880 "2.88MB" 4096 "4MB" 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then FLOPPY_SIZE=`cat ${RISU}` fi ;; M) dialog --title "MFS bytes per inode:" --inputbox \ "Enter MFS bytes per inode (typically 4096..65536). \ A larger value means fewer inodes but more space on MFS" \ 10 70 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then MFS_INODES=`cat ${RISU}` if [ "${MFS_INODES}" = "" ] ; then eval MFS_INODES=$"${TYPE}_DFLT_MFS_INODES" fi fi ;; U) dialog --title "Floppy bytes per inode:" --inputbox \ "Enter floppy bytes per inode (typically 3072..65536). \ A larger value means fewer inodes but more space on the floppy." \ 10 70 2> ${RISU} || rm ${RISU} if [ -f ${RISU} ] ; then FLOPPY_INODES=`cat ${RISU}` if [ "${FLOPPY_INODES}" = "" ] ; then eval FLOPPY_INODES=$"${TYPE}_DFLT_FLOPPY_INODES" fi fi ;; N) break 2 ;; Q) exit 0 ;; *) echo "Unknown option \"${ans}\". Try again." sleep 2 clear ;; esac done } # Call the build procedure # Install image do_install() { dialog --title "Build ${TYPE} completed" --inputbox \ "\nThe build process was completed successfuly.\n\ `cat .build.reply` \ Now we are going to install the image on the floppy.\n\ Please insert a blank floppy in /dev/fd0.\\n WARNING: the contents of the floppy will be permanently erased!\n\ \n\ Your options:\n\ * ^C or [Cancel] to abort,\n\ * Enter to install \"picobsd.bin\",\n\ * name of other file to install.\n\ " 20 80 2> ${RISU} if [ "$?" = "0" ]; then FILENAME=`cat ${RISU}` if [ "${FILENAME}" = "" ] ; then FILENAME=picobsd.bin fi echo "Writing ${FILENAME}..." dd if=${FILENAME} of=/dev/rfd0 else echo "Ok, the image is in picobsd.bin" fi echo "Done." } #------------------------------------------------------------------- # Main entry of the script interactive="YES" if [ "$1" = "-n" ] ; then interactive="NO" shift fi TYPE=$1 SITE=$2 set_defaults set_type # If $1="package", it creates a neat set of floppies if [ "$1" = "package" ] ; then build_package fi if [ "$interactive" = "YES" ] ; then main_dialog fi main # build ${TYPE} do_install exit 0 Index: stable/4/release/picobsd/build/stage1 =================================================================== --- stable/4/release/picobsd/build/stage1 (revision 68471) +++ stable/4/release/picobsd/build/stage1 (revision 68472) @@ -1,273 +1,284 @@ #! /bin/sh - # $FreeBSD$ # # stage1 -- this script fills the mfs for the picobsd kernel . ../Version set -e # abort in case of untested errors +# By default, /tmp should exist. +# MFS_NAME=fs.PICOBSD -MFS_MOUNTPOINT=/mnt +MFS_MOUNTPOINT=`mktemp -d "/tmp/picobsd.XXXXXXXXXX"` +export MFS_MOUNTPOINT + # fail errno errcode # This function is used to trap errors and print msgs # fail() { errno=$1 errcode=$2 echo "--> Error $errno code $errcode" case $errcode in no_vnconfig) - echo "Error while doing vnconfig of ${MFS_NAME} on /dev/rvn0..." + echo "Error while doing vnconfig of ${MFS_NAME} on /dev/rvn${VNUM}..." echo " Most probably your running kernel doesn't have the vn(4) device." ;; disklabel) echo "Error while labeling ${MFS_NAME} size ${MFS_SIZE}" ;; no_mount) - echo "Error while mounting ${MFS_NAME} (/dev/vn0c) on ${MFS_MOUNTPOINT}" + echo "Error while mounting ${MFS_NAME} (/dev/vn${VNUM}c) on ${MFS_MOUNTPOINT}" ;; mtree) echo "Error while making hierarchy in ${MFS_MOUNTPOINT}" ;; makedevs) echo "Error while making devices in ${MFS_MOUNTPOINT}" ;; crunch) echo "Error while building ../${TYPE}/crunch1..." ;; vnconfig2) - echo "Error while doing vnconfig of floppy.img on /dev/rvn0..." + echo "Error while doing vnconfig of floppy.img on /dev/rvn${VNUM}..." ;; disklabel) echo "Error while doing disklabel on of floppy.img size $FLOPPY_SIZE" ;; kernel_compress) echo "Error while copying compressed kernel to disk" ;; mfs_compress) echo "Error while copying compressed mfs image to disk" ;; missing_kernel) echo "-> ERROR: you must build PICOBSD${suffix} kernel first" ;; esac echo "-> Aborting $0" + umount ${MFS_MOUNTPOINT} 2> /dev/null || true + rm -rf ${MFS_MOUNTPOINT} 2> /dev/null || true exit 10 } rm -f kernel.gz ${MFS_NAME} # cleanup... create_mfs() { echo "-> Preparing MFS filesystem..." - umount /dev/vn0 2> /dev/null || true + VNUM=`mount | awk "/vn/ { num++ } END { printf \"%d\", num }"` + export VNUM + echo "-> Using vn${VNUM}..." + + umount /dev/vn${VNUM} 2> /dev/null || true umount ${MFS_MOUNTPOINT} 2> /dev/null || true - vnconfig -u /dev/rvn0 2> /dev/null || true + vnconfig -u /dev/rvn${VNUM} 2> /dev/null || true dd of=${MFS_NAME} if=/dev/zero count=${MFS_SIZE} bs=1k 2> /dev/null awk 'BEGIN {printf "%c%c", 85, 170}' | \ dd of=${MFS_NAME} obs=1 seek=510 conv=notrunc 2> /dev/null - vnconfig -s labels -c /dev/rvn0 ${MFS_NAME} 2>/dev/null || \ + vnconfig -s labels -c /dev/rvn${VNUM} ${MFS_NAME} 2>/dev/null || \ fail $? no_vnconfig dd if=/boot/boot1 of=${MFS_NAME} conv=notrunc 2> /dev/null # This command does weird things on 2.2.x systems. # For small image sizes, use std disktypes if [ ${MFS_SIZE} -lt 1024 ] ; then - disklabel -rw /dev/rvn0 fd${MFS_SIZE} || fail $? disklabel + disklabel -rw /dev/rvn${VNUM} fd${MFS_SIZE} || fail $? disklabel else - disklabel -rw vn0 auto || fail $? disklabel + disklabel -rw vn${VNUM} auto || fail $? disklabel fi - newfs -i ${MFS_INODES} -m 0 -p 0 -o space /dev/rvn0c - mount /dev/vn0c ${MFS_MOUNTPOINT} || fail $? no_mount + newfs -i ${MFS_INODES} -m 0 -p 0 -o space /dev/rvn${VNUM}c + mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT} || fail $? no_mount pwd=`pwd` } populate_mfs() { echo "-> Populating MFS tree..." cd ../${TYPE} make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} > /dev/null || \ fail $? mtree if [ X"${NO_DEVFS}" != X"" ] ; then make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} devnodes \ > /dev/null || fail $? makedevs fi MFS_RC=floppy.tree/etc/mfs.rc if [ ! -f ${MFS_RC} ] ; then # no private version. use generic mfs.rc MFS_RC=${BUILDDIR}/../${MFS_RC} fi if [ "${INIT}" = "oinit" ] ; then cat ${MFS_RC} | sed -e "s/@VER@/${VER}/g" > ${MFS_MOUNTPOINT}/etc/oinit.rc else cat ${MFS_RC} | sed -e "s/@VER@/${VER}/g" > ${MFS_MOUNTPOINT}/etc/rc if [ -f floppy.tree/etc/mfs.login.conf ] ; then cp floppy.tree/etc/mfs.login.conf ${MFS_MOUNTPOINT}/etc/login.conf else cp ${BUILDDIR}/../floppy.tree/etc/mfs.login.conf \ ${MFS_MOUNTPOINT}/etc/login.conf fi fi if [ "${TYPE}" = "dial" ] ; then for i in login dialup; do cp lang/${i}.${LANGUAGE} ${MFS_MOUNTPOINT}/stand/${i} done ln -s /stand/reboot ${MFS_MOUNTPOINT}/stand/shutdown (cd ../help;\ rm -rf tmp_hlp;\ mkdir tmp_hlp;\ for i in `ls *.hlp.${LANGUAGE}`; do \ cp $i tmp_hlp/`basename $i .hlp.${LANGUAGE}`;\ done;\ cd tmp_hlp;\ ar -cru help.a *;\ cp help.a ${MFS_MOUNTPOINT}/help.a) fi echo "-> Making and installing crunch1..." cd crunch1 make -f ../../build/Makefile.crunch "SRC=${SRC}" && \ make -f ../../build/Makefile.crunch install 2>&1 >/dev/null || \ fail $? crunch cd ${pwd} if [ -f ${MFS_MOUNTPOINT}/stand/sshd ] ; then echo "creating host key for sshd" ssh-keygen1 -f ${MFS_MOUNTPOINT}/etc/ssh_host_key -N "" -C "root@picobsd" fi (echo "-> Fixing permissions"; cd ${MFS_MOUNTPOINT}; chown -R root *) df -ik ${MFS_MOUNTPOINT} umount ${MFS_MOUNTPOINT} - fsck -p /dev/rvn0c - vnconfig -u /dev/rvn0 + fsck -p /dev/rvn${VNUM}c + vnconfig -u /dev/rvn${VNUM} } # stage2 do_kernel() { echo "-> Preparing kernel..." (cd ../${TYPE}; make -v -f ${BUILDDIR}/Makefile.conf ) cp -p ${OBJ}/${SRC}/sys/PICOBSD${suffix}/kernel kernel || \ fail $? missing_kernel strip kernel strip --remove-section=.note --remove-section=.comment kernel gzip -9 -v -n kernel } do_floppy() { # On entry we are in /usr/src/release/build. echo "==> Preparing ${FLOPPY_SIZE}kB floppy filesystem..." dd of=picobsd.bin if=/dev/zero count=${FLOPPY_SIZE} bs=1k awk 'BEGIN {printf "%c%c", 85, 170}' | \ dd of=picobsd.bin obs=1 seek=510 conv=notrunc 2> /dev/null - vnconfig -c /dev/rvn0 picobsd.bin || fail $? vnconfig2 + vnconfig -c /dev/rvn${VNUM} picobsd.bin || fail $? vnconfig2 dd if=/boot/boot1 of=picobsd.bin conv=notrunc 2> /dev/null # XXX todo: use a type matching floppy size. - disklabel -Brw -b /boot/boot1 -s /boot/boot2 /dev/rvn0 fd1440 || \ + disklabel -Brw -b /boot/boot1 -s /boot/boot2 /dev/vn${VNUM}c fd1440 || \ fail $? disklabel - newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space /dev/rvn0c + newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space /dev/rvn${VNUM}c - mount /dev/vn0c ${MFS_MOUNTPOINT} + mount /dev/vn${VNUM}c ${MFS_MOUNTPOINT} echo "==> Populating floppy filesystem..." # Configuration files are first copied to a local tree, then # compressed, then transferred back to the floppy. rm -rf floppy.tree || true mkdir floppy.tree excl=${BUILDDIR}/../${TYPE}/floppy.tree.exclude if [ -f ${excl} ] ; then excl="--exclude-from ${excl}" echo "Exclude following files from ${excl}:\n===" cat ${excl} echo "===" else excl="" fi (cd ${BUILDDIR}/../floppy.tree ; tar -cf - ${excl} . ) | \ (cd floppy.tree ; tar xvf - ) if [ -d ${BUILDDIR}/../${TYPE}/floppy.tree ] ; then echo "-> update with private files:" (cd ${BUILDDIR}/../${TYPE}/floppy.tree ; tar cf - . ) | \ (cd floppy.tree ; tar xvf - ) fi if [ -d ${BUILDDIR}/../${TYPE}/floppy.tree.${SITE} ] ; then echo "-> update with site-specific (${SITE}) files:" (cd ${BUILDDIR}/../${TYPE}/floppy.tree.${SITE} ; tar cf - . ) | \ (cd floppy.tree ; tar xvf - ) fi rm -f floppy.tree/etc/mfs\.* # mfs.rc, mfs.login.conf files="motd" - echo "-> Copying language dependent files: ${files} -> /mnt/etc ..." + echo "-> Copying language dependent files: ${files} -> ${MFS_MOUNTPOINT}/etc ..." for i in ${files} ; do cat ${BUILDDIR}/../${TYPE}/lang/${i}.${LANGUAGE} | \ sed -e "s/@VER@/${VER}/g" > floppy.tree/etc/${i} done # XXX check this! i am unsure how it is necessary. if [ "${TYPE}" = "dial" ] ; then cp -p floppy.tree/etc/master.passwd . pwd_mkdb -d . master.passwd mv spwd.db floppy.tree/etc/ rm pwd.db master.passwd fi # gzip returns an error if it fails to compress some file gzip -9 floppy.tree/etc/* || true # Now, first copy large files, then small ones. cp -p kernel.gz ${MFS_MOUNTPOINT}/kernel.gz || fail $? kernel_compress gzip -9cv ${MFS_NAME} > ${MFS_MOUNTPOINT}/${MFS_NAME}.gz || \ fail $? mfs_compress if [ ! -d ${MFS_MOUNTPOINT}/boot ] ; then mkdir -p ${MFS_MOUNTPOINT}/boot fi # # make small loader #(cd /usr/src/sys/boot/i386/loader ; make clean ; # cd /usr/src/sys/boot/i386 ; make -DNOFORTH ) if [ -f /usr/src/sys/boot/i386/loader/loader ]; then theloader=/usr/src/sys/boot/i386/loader/loader else theloader=/boot/loader fi kgzip -o loader $theloader cp -p loader ${MFS_MOUNTPOINT}/boot/loader # # now transfer the floppy tree cp -Rp floppy.tree/* ${MFS_MOUNTPOINT} cat <<__EOF > ${MFS_MOUNTPOINT}/boot/loader.rc load kernel load -t mfs_root ${MFS_NAME} __EOF (echo "-> Fixing permissions"; cd ${MFS_MOUNTPOINT} ; chown -R root *) df -ik ${MFS_MOUNTPOINT} > .build.reply umount ${MFS_MOUNTPOINT} - vnconfig -u /dev/rvn0 + rm -rf ${MFS_MOUNTPOINT} + vnconfig -u /dev/rvn${VNUM} # rm kernel.gz ${MFS_NAME} } do_kernel create_mfs populate_mfs do_floppy