srcdirs /usr/src/bin
srcdirs /usr/src/sbin/i386
srcdirs /usr/src/sbin
srcdirs /usr/src/usr.bin
srcdirs /usr/src/usr.sbin
srcdirs /usr/src/gnu/usr.bin
srcdirs /usr/src/gnu/usr.sbin
srcdirs /usr/src/libexec
# sources for ns & vm
srcdirs /usr/src/release/picobsd/tinyware
以下為你所需要在crunch包含的程序列表,以空格分隔。
progs dmesg ping ifconfig route hostname
progs cp rm ls cat test mkdir less
progs uname sysctl
progs init sh reboot
ln是表示建立一個(gè)別名,如ln less more,表示當(dāng)執(zhí)行more的時(shí)候?qū)嶋H上是執(zhí)行l(wèi)ess,ln less more。以下是指定編譯時(shí)需要的庫(kù):
libs -lncurses -lmytinfo -lipx
libs -lz -lpcap -lalias
libs -ledit -lutil -lmd -lcrypt -lmp -lgmp -lm -lkvm
libs -lgnuregex -ltelnet
當(dāng)編輯好crunch.conf之后,你就可以開(kāi)始編譯crunch了:
bsd# make
這時(shí)會(huì)生成一個(gè)名為crunch1的程序,我們要的就是它了。
5、建立內(nèi)存磁盤(pán)
大家可以看到crunch1加上我們剛才編譯的內(nèi)核和loader程序,已經(jīng)超出了軟盤(pán)的容量,同時(shí)為了加速程序的運(yùn)行我們需要使用MD(內(nèi)存磁盤(pán))來(lái)解決這個(gè)問(wèn)題,MD將作為系統(tǒng)的根文件系統(tǒng)和用來(lái)存放系統(tǒng)程序。對(duì)于內(nèi)存磁盤(pán)的大小一般不易太大,因?yàn)檫@樣會(huì)占用過(guò)多的內(nèi)存,下面我們就以建立一個(gè)3M的內(nèi)存磁盤(pán)為例說(shuō)明如何建立內(nèi)存磁盤(pán):
bsd# cd /root
bsd# dd if=/dev/zero of=bsd bs=1k count=3072 # 生成一個(gè)3M的文件,用來(lái)做MD
bsd# vnconfig -c -s labels vn0c bsd
# 使用bsd來(lái)創(chuàng)建一個(gè)vn設(shè)置,以便在其中存放程序
bsd# disklabel -w -r vn0c auto # 建立disklabel
bsd# disklabel -B vn0c # 安裝啟動(dòng)代碼
bsd# newfs vn0c # 創(chuàng)建UFS文件系統(tǒng)
bsd# mount /dev/vn0c /mnt # 將vn0c即bsd mount到/mnt
接下來(lái)要做的就是建立目錄結(jié)構(gòu),具體建立哪些目錄這要視需要決定,本例中需要建立如下目錄:
bsd# mkdir /mnt/etc
bsd# mkdir /mnt/sbin
bsd# mkdir /mnt/bin
bsd# mkdir /mnt/dev
然后將crunch1復(fù)制到/mnt/sbin中,再將剛才編譯進(jìn)crunch1中的那些命令分別做上symbol link:
bsd# cp /usr/src/release/picobsd/custom/crunch1/crunch1 /mnt/sbin
bsd# cd /mnt/sbin
bsd# ln -s ./crunch1 init # init必須在/mnt/sbin目錄中
bsd# ln -s ./crunch1 reboot
bsd# ln -s ./crunch1 sysctl
bsd# ln -s ./crunch1 ifconfig
bsd# ln -s ./crunch1 route
bsd# ln -s ./crunch1 ping
bsd# ln -s ./crunch1 dmesg
bsd# cd /mnt/bin
bsd# ln -s ../sbin/crunch1 sh # sh必須在/mnt/bin目錄中
bsd# ln -s ../sbin/crunch1 hostname
bsd# ln -s ../sbin/crunch1 cp
bsd# ln -s ../sbin/crunch1 rm
bsd# ln -s ../sbin/crunch1 ls
bsd# ln -s ../sbin/crunch1 cat
bsd# ln -s ../sbin/crunch1 test
bsd# ln -s ../sbin/crunch1 mkdir
bsd# ln -s ../sbin/crunch1 less
bsd# ln -s ../sbin/crunch1 uname
bsd# ln -s ../sbin/crunch1 more
6、編寫(xiě)啟動(dòng)腳本
因?yàn)槲覀兊南到y(tǒng)只是為了測(cè)試在軟盤(pán)上運(yùn)行FreeBSD,因而這里的啟動(dòng)腳本非常簡(jiǎn)單只是讓系統(tǒng)可以工作,沒(méi)有做其它的工作,其內(nèi)容如下:
#!/bin/sh
# Floppy BSD init script
PATH=/sbin:/bin
HOME=/
export PATH HOME
echo
echo "Hello, it's my Floppy BSD"
echo
因?yàn)闆](méi)有使用登錄驗(yàn)證,所以這里只是簡(jiǎn)單的一直運(yùn)行shell
while : ; do
/bin/sh
done