diff options
author | jdp <jdp@FreeBSD.org> | 1999-12-11 15:12:31 +0000 |
---|---|---|
committer | jdp <jdp@FreeBSD.org> | 1999-12-11 15:12:31 +0000 |
commit | 5938dee1c9b8903a984d5f46202f99ca7b806263 (patch) | |
tree | 83ba48be3c440f3c477f0e5f7940adaf70e5a1ce /release/picobsd | |
parent | f76c207acbf1b3fc149557abc5cf255eb9757ed7 (diff) | |
download | FreeBSD-src-5938dee1c9b8903a984d5f46202f99ca7b806263.zip FreeBSD-src-5938dee1c9b8903a984d5f46202f99ca7b806263.tar.gz |
Something went wrong with an earlier commit and these files ended up
empty. Fix that with help from grog.
Diffstat (limited to 'release/picobsd')
-rw-r--r-- | release/picobsd/custom/Makefile | 254 | ||||
-rw-r--r-- | release/picobsd/custom/Makefile.conf | 21 |
2 files changed, 275 insertions, 0 deletions
diff --git a/release/picobsd/custom/Makefile b/release/picobsd/custom/Makefile index e69de29..33068da 100644 --- a/release/picobsd/custom/Makefile +++ b/release/picobsd/custom/Makefile @@ -0,0 +1,254 @@ +# PicoBSD Makefile +# +# $Id: Makefile,v 1.1 1999/12/10 17:38:06 grog Exp $ +# +# Taken from: +# +# $FreeBSD$ +# + +# Building a PicoBSD kernel involves four basic operations: +# +# 1. Build a kernel. This is done by the 'kernel' target. +# 2. Build a PicoBSD file system. This file system is loaded into an +# MFS at boot time. This is done by the 'fs' target. +# 3. Build a single executable file for all the programs, and install it in +# the mfs image. This is done by the 'crunch' target. +# 4. Build a floppy image containing the MFS image and some helper code +# to boot it. This is done by the 'image' target. +# 5. Copy the image to the floppy. Done by the 'copy' target. + +# 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 +EDITOR = vi + +# LANGUAGE language to be used (en or pl) +LANGUAGE = en + +# FLOPPY_SIZE floppy size in KB (default to 1440) +FLOPPY_SIZE = 1440 + +# BUILDDIR is this directory +BUILDDIR = ${.CURDIR} + +# These programs are built with non-standard parameters. To be sure of +# getting them right, we need to rebuild every time; otherwise we might +# trip over the 'make world' objects. +# To do this right, we need to build the objects in a different directory. +# FIXME. +SPECIAL_PROGS = ../../../usr.bin/login ../../../usr.bin/passwd + +# Get default parameters for MFS +.include "mfsinfo" + +# MFS information +MFS_NAME = fs.PICOBSD +MFS_MOUNTPOINT = mmnt +MFS_VNODE = /dev/vn0 +# /etc/rc for the mfs image. This reads the real stuff off the floppy +MFS_RC = floppy.tree/etc/mfs.rc + +FLOPPY_NAME = picobsd.bin +FLOPPY_VNODE = /dev/vn1 +FLOPPY_MOUNTPOINT = fmnt + +# Variables for building kernel +CONF ?= $(SRC)/sys/i386/conf +CONFFILE = PICOBSD${suffix} +COMPILE = $(SRC)/sys/compile/$(CONFFILE) +KERNFILE = $(COMPILE)/kernel + +FDEV ?= /dev/fd0 + +# DEVFS is currently broken. Always set this. +# +NO_DEVFS = yes + +# Should we keep this? +VER = 0.445 + +all: kernel.gz ${MFS_NAME} crunch ${FLOPPY_NAME} copy crunch-2 + +kernel.gz: ${COMPILE}/kernel + @echo "--> Compressing kernel" + cp -p ${COMPILE}/kernel kernel + strip kernel + strip --remove-section=.note --remove-section=.comment kernel + gzip -f -9 -v -n kernel + @ls -l kernel.gz + +# Create the MFS image file +${MFS_NAME}: ${MFS_VNODE} ${MFS_MOUNTPOINT} + @echo "--> Building and mounting MFS image vnode" + -umount -f ${MFS_MOUNTPOINT} + -umount -f ${MFS_VNODE} + -vnconfig -u ${MFS_VNODE} + rm -f ${MFS_NAME} + dd of=${MFS_NAME} if=/dev/zero count=${MFS_SIZE} bs=1k + awk 'BEGIN {printf "%c%c", 85, 170}' | \ + dd of=${MFS_NAME} obs=1 seek=510 conv=notrunc 2> /dev/null + vnconfig -s labels -c ${MFS_VNODE} ${MFS_NAME} + dd if=/boot/boot1 of=${MFS_NAME} conv=notrunc + disklabel -rw vn0 auto + newfs -i ${MFS_INODES} -m 0 -p 0 -o space ${MFS_VNODE}c + mount ${MFS_VNODE} ${MFS_MOUNTPOINT} + make -f Makefile.mfs DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE} + make -f Makefile.mfs devnodes DESTDIR=${MFS_MOUNTPOINT} LANGUAGE=${LANGUAGE} + MFS_MOUNTPOINT=${MFS_MOUNTPOINT} INIT=${INIT} VER=${VER} BUILDDIR=${BUILDDIR} LANGUAGE=${LANGUAGE} + +# Populate the MFS image. +crunch: ${MFS_MOUNTPOINT} + @echo "--> Populating MFS image" + -mount ${MFS_VNODE} ${MFS_MOUNTPOINT} + # We need to make login with other options + for i in ${SPECIAL_PROGS}; do (cd $$i; make clean); done + cd crunch1; make SRC=${SRC} INIT=${INIT}; make install MFS_MOUNTPOINT=../${MFS_MOUNTPOINT} + # who can tell me how these damned help files get in here? + rm -rf ${MFS_MOUNTPOINT}/sbin/help + # Other files for the mfs file system + (cd mfs; tar cf - . | (cd ../${MFS_MOUNTPOINT}; tar xf -)) + cd ${MFS_MOUNTPOINT}; chown -R root * + df -ik ${MFS_MOUNTPOINT} + umount ${MFS_MOUNTPOINT} + fsck -p ${MFS_VNODE} + +# Create and mount the floppy image +${FLOPPY_NAME}: ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} ${MFS_NAME} + @echo "--> Preparing ${FLOPPY_SIZE}kB floppy filesystem" + -umount ${FLOPPY_VNODE} + -vnconfig -u ${FLOPPY_VNODE} + dd of=${FLOPPY_NAME} if=/dev/zero count=${FLOPPY_SIZE} bs=1k + awk 'BEGIN {printf "%c%c", 85, 170}' | \ + dd of=${FLOPPY_NAME} obs=1 seek=510 conv=notrunc + -vnconfig -s labels -c ${FLOPPY_VNODE} ${FLOPPY_NAME} + dd if=/boot/boot1 of=${FLOPPY_NAME} conv=notrunc + disklabel -Brw -b /boot/boot1 -s /boot/boot2 ${FLOPPY_VNODE}c fd${FLOPPY_SIZE} + newfs -i ${FLOPPY_INODES} -m 0 -p 0 -o space ${FLOPPY_VNODE}c + mount ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} + +copy: ${FLOPPY_MOUNTPOINT}/boot/defaults ../floppy.tree/boot + @echo "--> Populating floppy filesystem from ../floppy.tree" + @echo -- Make a loader + cp /boot/loader floppy.tree/boot + kzip floppy.tree/boot/loader + mv floppy.tree/boot/loader.kz floppy.tree/boot/loader +.if foo + rm ../floppy.tree/boot/loader + mv ../floppy.tree/boot/loader.kz ../floppy.tree/boot/loader +.endif + @echo -- copy base floppy tree + @echo -- Base files + (wd=`pwd`; cd ../floppy.tree ; tar cXhf $${wd}/floppy.tree.exclude - . ) | \ + (cd ${FLOPPY_MOUNTPOINT} ; tar xvf - ) + @echo -- Now update from our private floppy tree if it exists + @echo -- Local files in `pwd`/floppy.tree + if [ -d floppy.tree ] ; then \ + (cd floppy.tree; tar cXhf ../floppy.tree.exclude - .) | (cd ${FLOPPY_MOUNTPOINT} ; tar xvf - ); \ + fi + # We get stuff here that we can't use. When the transition + # to Makefile-based build is complete, we can delete this. + # XXX + rm -rf ${FLOPPY_MOUNTPOINT}/etc + (cd floppy.etc; tar czvXf ../floppy.tree.exclude ../${FLOPPY_MOUNTPOINT}/etc.tar.gz .) + df -ik ${FLOPPY_MOUNTPOINT} + @echo -- Generate password file if we don't have one on the floppy. + @echo -- The variable PASSWD is defined in mfsinfo + if [ ${PASSWD} = NO ] ; then \ + cp -p ${FLOPPY_MOUNTPOINT}/etc/master.passwd .; \ + pwd_mkdb -d . master.passwd; \ + mv spwd.db ${FLOPPY_MOUNTPOINT}/etc/; \ + rm pwd.db master.passwd; \ + fi + cp kernel.gz ${FLOPPY_MOUNTPOINT}/kernel.gz + @echo -- Insert the MFS image + gzip -9cv ${MFS_NAME} > ${FLOPPY_MOUNTPOINT}/${MFS_NAME}.gz +.if loaderconf + XXX finish this. + cp ${SRC}/sys/boot/forth/loader.conf ${FLOPPY_MOUNTPOINT}/boot/defaults + echo "userconfig_script_load=\"YES\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf + echo "rootfs_load=\"YES\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf + echo "rootfs_name=\"${MFS_NAME}\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf + echo "rootfs_type=\"mfs_root\"" >>${FLOPPY_MOUNTPOINT}/boot/defaults/loader.conf +# for i in frames screen ; do \ +# cp ${SRC}/share/examples/bootforth/$${i}.4th ${FLOPPY_MOUNTPOINT}/boot/; \ +# done +.endif + (echo "-> Fixing permissions"; cd ${FLOPPY_MOUNTPOINT}; chown -R root *) + df -ik ${FLOPPY_MOUNTPOINT} + umount ${FLOPPY_MOUNTPOINT} + +floppy: ${FLOPPY_NAME} + @echo copying ${FLOPPY_NAME} to ${FDEV}c. This will take about 50 seconds. + @echo "wait for the message 'safe to remove' before removing the floppy..." + @dd if=${FLOPPY_NAME} of=${FDEV}c bs=36b >/dev/null + @echo Safe to remove disk from ${FDEV} + +floppy2: + @if [ -d crunch2 ]; then \ + if [ ! -d crunch2/floppy2 ]; then \ + (cd crunch2; make); \ + fi; \ + echo copying crunch2/floppy to ${FDEV}c. This will take about 50 seconds.; \ + cd crunch2/floppy2; tar czvf - . | dd of=/dev/rfd0 conv=sync; \ + echo Safe to remove disk from ${FDEV}; \ + else \ + echo No second floppy; \ + fi + +# crunch-2: Build second floppy +crunch-2: + if [ -d crunch2 ]; then cd crunch2; make; fi + +# Secondary targets + +${COMPILE}/kernel: ${CONFFILE} + @echo "--> Building kernel" + grep -q MD_ROOT ${CONFFILE}; if [ $$? -ne 0 ]; then \ + echo -- '***** Config file must include MD_ROOT'; \ + exit 1; \ + fi + cp ${CONFFILE} ${CONF}; \ + cd ${CONF}; \ + config ${CONFFILE}; \ + cd ${COMPILE}; \ + make depend all + +# Device nodes for the vnode devices +${FLOPPY_VNODE} ${MFS_VNODE}: + (cd /dev; ./MAKEDEV `basename $@`) + +# Directories to make +${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} ${FLOPPY_MOUNTPOINT}/boot/defaults ../floppy.tree/boot: + mkdir -p $@ + +tidy: + -umount ${FLOPPY_VNODE} ${MFS_VNODE} + -vnconfig -u ${FLOPPY_VNODE} + -vnconfig -u ${MFS_VNODE} + rm -f ${MFS_NAME} ${MFS_NAME}.gz ${FLOPPY_NAME} *~ Make.log kernel.gz + +clean: tidy + if [ -d floppy.tree ]; then \ + cd floppy.tree; rm -f boot/loader; \ + fi + rm -rf ${MFS_MOUNTPOINT} ${FLOPPY_MOUNTPOINT} crunch1.conf + cd crunch1; make clean + if [ -d crunch2 ]; then cd crunch2; make clean; fi + if [ -d ${COMPILE} ] ; then cd ${COMPILE}; make clean; fi + +# XXX Just for testing +vnconfig: vnunconfig + vnconfig -c ${MFS_VNODE} ${MFS_NAME} + vnconfig -c ${FLOPPY_VNODE} ${FLOPPY_NAME} + +vnunconfig: + -vnconfig -u ${MFS_VNODE} + -vnconfig -u ${FLOPPY_VNODE} + +mount: + mount ${MFS_VNODE} ${MFS_MOUNTPOINT} + mount ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} + +umount: + -umount ${MFS_VNODE} ${MFS_MOUNTPOINT} ${FLOPPY_VNODE} ${FLOPPY_MOUNTPOINT} diff --git a/release/picobsd/custom/Makefile.conf b/release/picobsd/custom/Makefile.conf index e69de29..29908c5 100644 --- a/release/picobsd/custom/Makefile.conf +++ b/release/picobsd/custom/Makefile.conf @@ -0,0 +1,21 @@ +# $FreeBSD$ +# +# Makefile for building PICOBSD kernels + +SRC?=/usr/src +CONF?=$(SRC)/sys/i386/conf + +CONFFILE=PICOBSD${suffix} +COMPILE=$(SRC)/sys/compile/$(CONFFILE) +KERNFILE=$(COMPILE)/kernel + +all: $(KERNFILE) + +$(KERNFILE): PICOBSD + cat PICOBSD | grep -v "MD_ROOT" > ${CONF}/${CONFFILE} + echo "options MD_ROOT" >> ${CONF}/${CONFFILE} + (cd ${CONF}; \ + config ${CONFFILE}; \ + cd ${COMPILE}; \ + make depend all) + |