Live FreeBSD CD
From: Andrew Turner (andrew_at_fubar.geek.nz)
Date: 11/30/04
- Previous message: Michiel Boland: "bash/readline coredumps"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Tue, 30 Nov 2004 21:37:49 +1300 To: FreeBSD Current <freebsd-current@freebsd.org>
Using nanobsd as a starting point I have created a live CD system I've
named liveFreeBSD. It requires syutils/cdrtools to create
liveFreeBSD.iso. Unlike FreeBSIE it only uses files from the tree with 3
exceptions.
To use run the shell archive and set WORLDDIR to an appropriate value
ie. /usr/src.
It works in a similar way to nanobsd with the exception of the way it is
customised. To customise liveFreeBSD create a new directory then have
CUSTOMIZE point to it. If there is a make.conf file in it liveFreeBSD
will pick it up and use it in the came way as an /etc/make.conf. Any
directories will have their contents copied.
eg.
$ find /home/andrew/FreeBSD -type f
/home/andrew/FreeBSD/etc/test1.txt
/home/andrew/FreeBSD/make.conf
$ make obj
$ make CUSTOMIZE=/home/andrew/FreeBSD
Will build the bootable CD with the file /etc/test1.txt. It will bring
in any Makefile options from /home/andrew/FreeBSD/make.conf
I have tested this on HEAD and RELENG_5.
KNOWN BUGS:
* Customize will only copy files 1 level deep, ie.
${CUSTOMIZE}/etc/<file> but not
${CUSTOMIZE}/usr/share/<file>
Andrew
-- 437742420
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# Makefile
# etc
# make.conf
#
echo x - Makefile
sed 's/^X//' >Makefile << 'END-of-Makefile'
X# Copyright (c) 2003-2004 Poul-Henning Kamp.
X# Copyright (c) 2004 Thomas Quinot.
X# Copyright (c) 2004 Andrew Turner.
X#
X# See /usr/share/examples/etc/bsd-style-copyright for license terms.
X#
X# $FreeBSD: src/tools/tools/nanobsd/Makefile,v 1.8 2004/08/16 22:41:58 thomas Exp $
X
X#.include "${.CURDIR}/make.conf"
X
X# parallism flag for make.
XMAKEJ?=
X
X# You probably do not need to change these.
XWORLDDIR?= ${.CURDIR}/../../..
XWD?= ${.OBJDIR}/_.w
X
X# Keep overides for custom builds in the ${.CURDIR}/${CUSTOMIZE} directory
X#CUSTOMIZE?=test
X
X.if defined(CUSTOMIZE) && !empty(CUSTOMIZE)
X.if ${CUSTOMIZE:C/^\/.*$/\//} == "/"
XCUSTOMIZE_PATH=${CUSTOMIZE}
X.elif exists(${.CURDIR}/${CUSTOMIZE})
XCUSTOMIZE_PATH=${.CURDIR}/${CUSTOMIZE}
X.endif
X.endif
X
X.if exists(${CUSTOMIZE_PATH}/make.conf)
XMAKE_CONF_INCLUDE=${CUSTOMIZE_PATH}/make.conf
X.include "${MAKE_CONF_INCLUDE}"
X.endif
X
X#
X# The final resulting image is in ${.OBJDIR}/_.i and the single slice
X# image in ${.OBJDIR}/_.i.s1
X#
X
X# Main target
Xall: buildworld installworld buildimage
X
X#
X# This is where you customizations to the image can be performed
X# Please make sure to do everything relative to ${WD} here.
X#
X.if defined(CUSTOMIZE_PATH)
XPATHS!= find ${CUSTOMIZE_PATH} -type d -depth 1
X.endif
X
XCustomize: _.cs
X_.cs: _.iw _.di _.ik _.di
X.if defined(CUSTOMIZE_PATH)
X.for __DIR in ${PATHS}
X @echo ${WD}${__DIR:S/${CUSTOMIZE_PATH}//}
X mkdir -p ${WD}${__DIR:S/${CUSTOMIZE_PATH}//}
X -cp ${__DIR}/* ${WD}/${__DIR:S/${CUSTOMIZE_PATH}//}
X.endfor
X.endif
X touch _.cs
X
X###########################################################################
X#
X# The rest is pretty (or ugly if you prefer) magic, and should generally
X# not need to be fiddled with. Good luck if you need to venture past this
X# point.
X#
X
X# Run a buildworld with our private make.conf
Xbuildworld: _.bw
X_.bw:
X (cd ${WORLDDIR} && \
X make ${MAKEJ} -s buildworld __MAKE_CONF=${.CURDIR}/make.conf \
X MAKE_CONF_INCLUDE=${MAKE_CONF_INCLUDE} ) > _.bw.tmp 2>&1
X mv _.bw.tmp _.bw
X
X# Run installworld and install into our object directory
Xinstallworld: _.iw
X_.iw: _.bw
X -rm -rf ${WD} > /dev/null 2>&1
X -chflags -R noschg ${WD} > /dev/null 2>&1
X rm -rf ${WD}
X mkdir -p ${WD}
X (cd ${WORLDDIR} && \
X make ${MAKEJ} -s installworld \
X DESTDIR=${WD} \
X __MAKE_CONF=${.CURDIR}/make.conf \
X MAKE_CONF_INCLUDE=${MAKE_CONF_INCLUDE} \
X ) > _.iw.tmp 2>&1
X mv _.iw.tmp _.iw
X
X# Run distribution target in /etc.
X_.di: _.iw
X mkdir -p ${WD}
X (cd ${WORLDDIR}/etc && \
X make ${MAKEJ} -s distribution \
X DESTDIR=${WD} \
X __MAKE_CONF=${.CURDIR}/make.conf \
X MAKE_CONF_INCLUDE=${MAKE_CONF_INCLUDE} \
X ) > _.di.tmp 2>&1
X mv _.di.tmp _.di
X
X# Build kernel
X_.bk:
X (cd ${WORLDDIR} && \
X make ${MAKEJ} -s buildkernel \
X __MAKE_CONF=${.CURDIR}/make.conf \
X MAKE_CONF_INCLUDE=${MAKE_CONF_INCLUDE} \
X ) > _.bk.tmp 2>&1
X mv _.bk.tmp _.bk
X
X# Install kernel and hints file
X_.ik: _.bk _.di
X cp ${WORLDDIR}/sys/i386/conf/GENERIC.hints ${WD}/boot/device.hints
X (cd ${WORLDDIR} && \
X make ${MAKEJ} installkernel \
X DESTDIR=${WD} \
X __MAKE_CONF=${.CURDIR}/make.conf \
X MAKE_CONF_INCLUDE=${MAKE_CONF_INCLUDE} \
X ) > _.ik.tmp 2>&1
X mv _.ik.tmp _.ik
X
X
X# Create a disk image from the installed image
Xbuildimage: _.md
X_.md: _.cs
X -umount ${WD}/dev > /dev/null 2>&1
X chflags -R noschg ${WD} > /dev/null 2>&1
X rm -rf ${WD}/var/* ${WD}/dev/* ${WD}/tmp
X ln -s var/tmp ${WD}/tmp
X cp ${.CURDIR}/etc/* ${WD}/etc
X mkisofs -R -U -b boot/cdboot -no-emul-boot \
X -o liveFreeBSD.iso ${WD}
X touch _.md
X
Xclean:
X -rm -rf _.* > /dev/null 2>&1
X -chflags -R noschg _.* > /dev/null 2>&1
X rm -rf _.* liveFreeBSD.iso
X
X.include <bsd.obj.mk>
END-of-Makefile
echo c - etc
mkdir -p etc > /dev/null 2>&1
echo x - make.conf
sed 's/^X//' >make.conf << 'END-of-make.conf'
X#
X# Copyright (c) 2003-2004 Poul-Henning Kamp.
X# Copyright (c) 2004 Thomas Quinot.
X# Copyright (c) 2004 Andrew Turner.
X#
X# See /usr/share/examples/etc/bsd-style-copyright for license terms.
X#
X# $FreeBSD: src/tools/tools/nanobsd/make.conf,v 1.3 2004/08/16 22:52:40 thomas Exp $
X#
XKERNCONF?=GENERIC
X
X.if defined (MAKE_CONF_INCLUDE) && !empty(MAKE_CONF_INCLUDE) && exists(${MAKE_CONF_INCLUDE})
X.include "${MAKE_CONF_INCLUDE}"
X.endif
X
END-of-make.conf
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# etc/fstab
# etc/host.conf
# etc/nsswitch.conf
#
echo x - etc/fstab
sed 's/^X//' >etc/fstab << 'END-of-etc/fstab'
X/dev/acd0 / cd9660 ro 0 0
X
END-of-etc/fstab
echo x - etc/host.conf
sed 's/^X//' >etc/host.conf << 'END-of-etc/host.conf'
X# Auto-generated from nsswitch.conf, do not edit
Xhosts
Xbind
END-of-etc/host.conf
echo x - etc/nsswitch.conf
sed 's/^X//' >etc/nsswitch.conf << 'END-of-etc/nsswitch.conf'
Xgroup: compat
Xgroup_compat: nis
Xhosts: files dns
Xnetworks: files
Xpasswd: compat
Xpasswd_compat: nis
Xshells: files
END-of-etc/nsswitch.conf
exit
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
- Previous message: Michiel Boland: "bash/readline coredumps"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
- Re: [PHP] Database abstraction?
... echo <<<ROW ... Etc. I'm trying to avoid hardcoding things like field
names so that I can use this software for multiple customers without having to completely customize
it for everyone since so many parts will be the same. ... 3251 132nd ave ... Holland,
MI, 49424-9337 ... (php.general) - Re: Office 07 Where is the Print Button
... Right-click, choose Customize, and then add Print from the list of commands.
... Echo [MS PPT MVP] http://www.echosvoice.com ... (microsoft.public.office.misc) - Re: [PHP] Database abstraction?
... echo <<<HTML ... <?PHP ... Etc. I'm trying to avoid
hardcoding things like field names so that I can use this software for multiple customers without having
to completely customize it for everyone since so many parts will be the same. ... Thanks
Jim! ... (php.general) - Re: [PHP] Database abstraction?
... Jim Lucas wrote: ... echo <<<HTML ... Etc. I'm trying
to avoid hardcoding things like field names so that I can use this software for multiple customers without
having to completely customize it for everyone since so many parts will be the same. ...
"Some men are born to greatness, some achieve greatness, ... (php.general) - Re: [PHP] Database abstraction?
... Jason Pruim wrote: ... echo <<<HTML ... Etc. I'm trying
to avoid hardcoding things like field names so that I can use this software for multiple customers without
having to completely customize it for everyone since so many parts will be the same. ...
"Some men are born to greatness, some achieve greatness, ... (php.general)