Minimalist FreeBSD 4.8

M. Warner Losh imp at bsdimp.com
Tue Aug 26 18:18:39 PDT 2003


Actually, I have a small script that does something like this.  Here's
a breif sketch.

# prepare /cf
make buildworld

    ${chroot} /bin/sh -${e}c "(cd $srcdir
        env MAKEOBJDIRPREFIX=$objdir make -m ${srcdir}/share/mk -f \
            Makefile.inc1 hierarchy DESTDIR=$dstdir NOMAN=yes
        (cd etc ; env MAKEOBJDIRPREFIX=$objdir make -m ${srcdir}/share/mk \
            distribution DESTDIR=$dstdir NOMAN=yes)
        for i in ${FreeBSDProgramDirs}; do
            echo \"==> \$i\"
            test -d \$i &&
            (cd \$i ; env MAKEOBJDIRPREFIX=$objdir make -m ${srcdir}/share/mk \
                install -DNOINFO -DNOMAN DESTDIR=$dstdir -DNOPROFILE)
            done)"

Here's my current minimal list for a bootable system, although you
might be able to trim it a little.  Also, it is optimized for 4.5.
There will some tweaks needed for 4.8.  Also, I've done the buildworld
with NOSHARED=no since we put both / and /usr on the same partition in
our systems.

My scripts are more complete, but also very specific to Timing
Solutions' needs.  I've used these scripts to build flashes that take
up about 12M or so.  There's about 2M that can be trimmed.

Warner

P.S.  Maybe I should find some time to pull together these scripts in
a releaseable format...

P.P.S.,  Here's what I use to set FreeBSDProgramDirs to in an
over-arching makefile.

FREEBSDMIN+= \
	bin/cat \
	bin/chmod \
	bin/cp \
	bin/csh \
	bin/date \
	bin/dd \
	bin/df \
	bin/echo \
	bin/expr \
	bin/hostname \
	bin/kill \
	bin/ln \
	bin/ls \
	bin/mkdir \
	bin/mv \
	bin/pwd \
	bin/ps \
	bin/rcp \
	bin/rm \
	bin/rmdir \
	bin/sh \
	bin/sleep \
	bin/stty \
	bin/sync \
	bin/test \
	gnu/lib/libregex \
	gnu/usr.bin/awk \
	gnu/usr.bin/cpio \
	gnu/usr.bin/diff \
	gnu/usr.bin/diff3 \
	gnu/usr.bin/grep \
	gnu/usr.bin/gzip \
	gnu/usr.bin/tar \
	lib/libc \
	lib/libstdc++ \
	lib/libcrypt \
	lib/libdevstat \
	lib/libedit \
	lib/libipsec \
	lib/libipx \
	lib/libkvm \
	lib/libmd \
	lib/libnetgraph \
	lib/libncurses \
	lib/libpam \
	lib/libskey \
	lib/libutil \
	lib/libwrap \
	lib/libz \
	lib/msun \
	libexec/ftpd \
	libexec/getty \
	libexec/rlogind \
	libexec/rshd \
	libexec/rtld-elf \
	libexec/telnetd \
	sbin/adjkerntz \
	sbin/dhclient \
	sbin/disklabel \
	sbin/dmesg \
	sbin/fsck \
	sbin/i386/fdisk \
	sbin/ifconfig \
	sbin/init \
	sbin/ipfw \
	sbin/kldload \
	sbin/kldstat \
	sbin/kldunload \
	sbin/ldconfig \
	sbin/md5 \
	sbin/mknod \
	sbin/mount \
	sbin/mount_null \
	sbin/mount_nfs \
	sbin/newfs \
	sbin/ping \
	sbin/reboot \
	sbin/route \
	sbin/swapon \
	sbin/sysctl \
	sbin/umount \
	share/termcap \
	sys/boot \
	usr.bin/chflags \
	usr.bin/du \
	usr.bin/ee \
	usr.bin/env \
	usr.bin/ftp \
	usr.bin/find \
	usr.bin/head \
	usr.bin/hexdump \
	usr.bin/id \
	usr.bin/killall \
	usr.bin/ldd \
	usr.bin/less \
	usr.bin/login \
	usr.bin/netstat \
	usr.bin/objformat \
	usr.bin/rsh \
	usr.bin/rlogin \
	usr.bin/sed \
	usr.bin/su \
	usr.bin/tail \
	usr.bin/telnet \
	usr.bin/tip \
	usr.bin/top \
	usr.bin/touch \
	usr.bin/tr \
	usr.bin/tty \
	usr.bin/uname \
	usr.bin/vi \
	usr.sbin/arp \
	usr.sbin/chown \
	usr.sbin/cron \
	usr.sbin/dev_mkdb \
	usr.sbin/inetd \
	usr.sbin/mtree \
	usr.sbin/ntp/ntpd \
	usr.sbin/ntp/ntpdate \
	usr.sbin/ntp/ntpq \
	usr.sbin/kbdcontrol \
	usr.sbin/pwd_mkdb \
	usr.sbin/syslogd \
	usr.sbin/traceroute \
	usr.sbin/vidcontrol \
	usr.sbin/vipw

# "kitchen sink" FreeBSD on flash
FREEBSDMAX+=${FREEBSDMIN} \
	gnu/lib/libreadline \
	lib/libftpio \
	lib/librpcsvc \
	usr.bin/vmstat \
	usr.bin/w \
	usr.sbin/ntp/ntpdc \
	usr.sbin/ntp/ntptime \
	usr.sbin/ntp/ntptimeset \
	usr.sbin/ntp/ntptrace



More information about the freebsd-hackers mailing list