Add additional release makefile for bsdinstall-based media, along with

support files. This does not change the default behavior of anything.

To make bsdinstall-based media, pre-build world and GENERIC, then run
the release target in Makefile.bsdinstall.
This commit is contained in:
Nathan Whitehorn 2011-03-02 16:06:57 +00:00
parent 6079fdbede
commit 8cfdf36d27
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=219181
2 changed files with 86 additions and 0 deletions

View file

@ -0,0 +1,53 @@
# $FreeBSD$
WORLDDIR?= ${.CURDIR}/..
DISTDIR?= ${DESTDIR}/usr/freebsd-dist
PORTSDIR?= /usr/ports
TARGET_ARCH?= ${MACHINE_ARCH}
.if ${TARGET_ARCH} == ${MACHINE_ARCH}
TARGET?= ${MACHINE}
.else
TARGET?= ${TARGET_ARCH}
.endif
IMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}
packagesystem:
-mkdir -p ${DISTDIR}
cd ${WORLDDIR} && ${IMAKE} distributeworld distributekernel DISTDIR=${DISTDIR}
# Set up mergemaster root database
sh ${.CURDIR}/scripts/mm-mtree.sh -F "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${DISTDIR}/base"
cd ${WORLDDIR} && ${IMAKE} packageworld packagekernel DISTDIR=${DISTDIR}
-mkdir -p ${DISTDIR}/usr
# Package up src and ports trees
ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
.if !defined(NOPORTS)
cd ${DISTDIR} && tar cLvJf ${DISTDIR}/ports.txz --exclude usr/ports/distfiles --exclude usr/ports/packages --exclude 'usr/ports/INDEX*' usr/ports
.endif
.if !defined(NOSRC)
cd ${DISTDIR} && tar cLvJf ${DISTDIR}/src.txz --exclude .svn --exclude CVS usr/src
.endif
system:
# Install system
-mkdir ${DISTDIR}/release
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${DISTDIR}/release
-rm ${DISTDIR}/release/boot/kernel/*.symbols
# Copy distfiles
mkdir ${DISTDIR}/release/usr/freebsd-dist
cp ${DISTDIR}/*.txz ${DISTDIR}/release/usr/freebsd-dist
# Set up installation environment
ln -s /tmp/bsdinstall_etc/resolv.conf ${DISTDIR}/release/etc/resolv.conf
echo sendmail_enable=\"NONE\" > ${DISTDIR}/release/etc/rc.conf
echo hostid_enable=\"NO\" >> ${DISTDIR}/release/etc/rc.conf
touch ${DISTDIR}/release/etc/fstab
cp rc.local ${DISTDIR}/release/etc
cdrom:
echo kernel_options=\"-C\" > ${DISTDIR}/release/boot/loader.conf
sh /usr/src/release/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${DISTDIR}/release.iso ${DISTDIR}/release
rm ${DISTDIR}/release/boot/loader.conf
release: packagesystem system cdrom

33
release/rc.local Executable file
View file

@ -0,0 +1,33 @@
#!/bin/sh
# $FreeBSD$
: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}
TERM=xterm; export TERM # XXX: serial consoles
dialog --backtitle "FreeBSD Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live CD" --yesno "Welcome to FreeBSD! Would you like to begin an installation or use the live CD?" 0 0
case $? in
$DIALOG_OK) # Install
BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
trap true SIGINT # Ignore cntrl-C here
bsdinstall
dialog --backtitle "FreeBSD Installer" --title "Complete" --msgbox "Installation of FreeBSD complete! The system will now reboot." 0 0
reboot
;;
$DIALOG_CANCEL) # Live CD
exit 0
;;
$DIALOG_EXTRA) # Shell
clear
echo "When finished, type 'exit' to return to the installer."
/bin/sh
. /etc/rc.local
;;
esac