aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2011-03-02 16:06:57 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2011-03-02 16:06:57 +0000
commit8cfdf36d2763a9d256c215dffc414743d8a90c2d (patch)
tree4dcb8b748798d8d0d6cc4311f2fabd54037282e3
parent6079fdbede393f91e16ff7c2798a3029af770474 (diff)
downloadsrc-8cfdf36d2763a9d256c215dffc414743d8a90c2d.tar.gz
src-8cfdf36d2763a9d256c215dffc414743d8a90c2d.zip
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.
Notes
Notes: svn path=/head/; revision=219181
-rw-r--r--release/Makefile.bsdinstall53
-rwxr-xr-xrelease/rc.local33
2 files changed, 86 insertions, 0 deletions
diff --git a/release/Makefile.bsdinstall b/release/Makefile.bsdinstall
new file mode 100644
index 000000000000..aa422cdfc4dd
--- /dev/null
+++ b/release/Makefile.bsdinstall
@@ -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
+
diff --git a/release/rc.local b/release/rc.local
new file mode 100755
index 000000000000..24285e0fd198
--- /dev/null
+++ b/release/rc.local
@@ -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
+