git: 6f4c1456b51d - main - bsdinstall: Allow automation in jails

Warner Losh imp at FreeBSD.org
Fri Jun 11 19:54:22 UTC 2021


The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=6f4c1456b51dc35c03b2c02cc06e8b4308779855

commit 6f4c1456b51dc35c03b2c02cc06e8b4308779855
Author:     eoli3n <jonathan.kirszling at runbox.com>
AuthorDate: 2021-06-07 20:49:02 +0000
Commit:     Warner Losh <imp at FreeBSD.org>
CommitDate: 2021-06-11 19:53:17 +0000

    bsdinstall: Allow automation in jails
    
    Set SCRIPT=/path/to/script env var to be able to automate bsdinstall to
    a jail.
    
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/473
    Reviewed by:    allanjude
---
 usr.sbin/bsdinstall/scripts/jail | 58 +++++++++++++++++++++++++++++-----------
 1 file changed, 42 insertions(+), 16 deletions(-)

diff --git a/usr.sbin/bsdinstall/scripts/jail b/usr.sbin/bsdinstall/scripts/jail
index ecfbb78357d9..d9b5c8eb3cb4 100755
--- a/usr.sbin/bsdinstall/scripts/jail
+++ b/usr.sbin/bsdinstall/scripts/jail
@@ -52,11 +52,16 @@ error() {
 	fi
 }
 
-
 rm -rf $BSDINSTALL_TMPETC
 mkdir $BSDINSTALL_TMPETC
 mkdir -p $1 || error "mkdir failed for $1"
 
+if [ -n "$SCRIPT" ]
+then
+        split -a 2 -p '^#!.*' "$SCRIPT" $TMPDIR/bsdinstall-installscript-
+        . $TMPDIR/bsdinstall-installscript-aa
+fi
+
 test ! -d $BSDINSTALL_DISTDIR && mkdir -p $BSDINSTALL_DISTDIR
 
 if [ ! -f $BSDINSTALL_DISTDIR/MANIFEST -a -z "$BSDINSTALL_DISTSITE" ]; then
@@ -69,20 +74,23 @@ if [ ! -f $BSDINSTALL_DISTDIR/MANIFEST -a -z "$BSDINSTALL_DISTSITE" ]; then
 	fetch -o $BSDINSTALL_DISTDIR/MANIFEST $BSDINSTALL_DISTSITE/MANIFEST || error "Could not download $BSDINSTALL_DISTSITE/MANIFEST"
 fi
 
-export DISTRIBUTIONS="base.txz"
+: ${DISTRIBUTIONS="base.txz"}; export DISTRIBUTIONS
 if [ -f $BSDINSTALL_DISTDIR/MANIFEST ]; then
 	DISTMENU=`cut -f 4,5,6 $BSDINSTALL_DISTDIR/MANIFEST | grep -v -e ^kernel -e ^base`
 
-	exec 3>&1
-	EXTRA_DISTS=$(echo $DISTMENU | xargs dialog \
-	    --backtitle "FreeBSD Installer" \
-	    --title "Distribution Select" --nocancel --separate-output \
-	    --checklist "Choose optional system components to install:" \
-	    0 0 0 \
-	2>&1 1>&3)
-	for dist in $EXTRA_DISTS; do
-		export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz"
-	done
+    if [ ! "$nonInteractive" == "YES" ]
+    then
+	    exec 3>&1
+	    EXTRA_DISTS=$(echo $DISTMENU | xargs dialog \
+	        --backtitle "FreeBSD Installer" \
+	        --title "Distribution Select" --nocancel --separate-output \
+	        --checklist "Choose optional system components to install:" \
+	        0 0 0 \
+	    2>&1 1>&3)
+	    for dist in $EXTRA_DISTS; do
+	    	export DISTRIBUTIONS="$DISTRIBUTIONS $dist.txz"
+	    done
+    fi
 fi
 
 FETCH_DISTRIBUTIONS=""
@@ -108,20 +116,38 @@ fi
 
 bsdinstall checksum || error "Distribution checksum failed"
 bsdinstall distextract || error "Distribution extract failed"
-bsdinstall rootpass || error "Could not set root password"
+
+if [ ! "$nonInteractive" == "YES" ]
+then
+    bsdinstall rootpass || error "Could not set root password"
+fi
 
 trap true SIGINT	# This section is optional
+
+if [ ! "$nonInteractive" == "YES" ]
+then
 bsdinstall services
 
-dialog --backtitle "FreeBSD Installer" --title "Add User Accounts" --yesno \
-    "Would you like to add users to the installed system now?" 0 0 && \
-    bsdinstall adduser
+    dialog --backtitle "FreeBSD Installer" --title "Add User Accounts" --yesno \
+        "Would you like to add users to the installed system now?" 0 0 && \
+        bsdinstall adduser
+fi
 
 trap error SIGINT	# SIGINT is bad again
 bsdinstall config  || error "Failed to save config"
 cp /etc/resolv.conf $1/etc
 cp /etc/localtime $1/etc
 
+# Run post-install script
+if [ -f $TMPDIR/bsdinstall-installscript-ab ]; then
+	cp $TMPDIR/bsdinstall-installscript-ab $BSDINSTALL_CHROOT/tmp/installscript
+	chmod a+x $BSDINSTALL_CHROOT/tmp/installscript
+	mount -t devfs devfs "$BSDINSTALL_CHROOT/dev"
+	chroot $BSDINSTALL_CHROOT /tmp/installscript $@ 2>&1
+	umount "$BSDINSTALL_CHROOT/dev"
+	rm $BSDINSTALL_CHROOT/tmp/installscript
+fi
+
 bsdinstall entropy
 
 f_dprintf "Installation Completed at %s" "$(date)"


More information about the dev-commits-src-all mailing list