Page MenuHomeFreeBSD

D38838.id153757.diff
No OneTemporary

D38838.id153757.diff

diff --git a/release/Makefile b/release/Makefile
--- a/release/Makefile
+++ b/release/Makefile
@@ -205,12 +205,16 @@
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
+ cp ${.CURDIR}/../share/bsdinstall/bsdinstall.example ${.TARGET}/usr/share
+ mkdir ${.TARGET}/bsdinstall_config
.if defined(NO_ROOT)
echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./usr/share/bsdinstall.example type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./bsdinstall_config type=dir uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
.endif
touch ${.TARGET}
@@ -240,11 +244,15 @@
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
+ cp ${.CURDIR}/../share/bsdinstall/bsdinstall.example ${.TARGET}/usr/share
+ mkdir ${.TARGET}/bsdinstall_config
echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./usr/share/bsdinstall.example type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./bsdinstall_config type=dir uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
dvd: packagesystem
# Install system
@@ -278,12 +286,16 @@
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
+ cp ${.CURDIR}/../share/bsdinstall/bsdinstall.example ${.TARGET}/usr/share
+ mkdir ${.TARGET}/bsdinstall_config
.if defined(NO_ROOT)
echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./usr/share/bsdinstall.example type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
+ echo "./bsdinstall_config type=dir uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
.endif
touch ${.TARGET}
diff --git a/release/amd64/make-memstick.sh b/release/amd64/make-memstick.sh
--- a/release/amd64/make-memstick.sh
+++ b/release/amd64/make-memstick.sh
@@ -43,6 +43,7 @@
fi
echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${BASEBITSDIR}/etc/fstab
+echo '/dev/msdosfs/INSTALLCFG /bsdinstall_config msdosfs ro,noatime 0 0' >> ${BASEBITSDIR}/etc/fstab
echo 'root_rw_mount="NO"' > ${BASEBITSDIR}/etc/rc.conf.local
if [ -n "${METALOG}" ]; then
metalogfilename=$(mktemp /tmp/metalog.XXXXXX)
@@ -67,12 +68,20 @@
make_esp_file ${espfilename} ${fat32min} ${BASEBITSDIR}/boot/loader.efi
fi
+# Make configuration directory
+cfgdirname=$(mktemp -d /tmp/config.XXXXX)
+cp ${BASEBITSDIR}/usr/share/bsdinstall.example ${cfgdirname}
+makefs $([ -n "${METALOG}" ] && echo -n "" || echo -n "-D") -t msdos -o volume_label=installcfg -o create_size=32m ${2}.config ${cfgdirname}
+rm -r ${cfgdirname}
+
mkimg -s mbr \
-b ${BASEBITSDIR}/boot/mbr \
-p efi:=${espfilename} \
-p freebsd:-"mkimg -s bsd -b ${BASEBITSDIR}/boot/boot -p freebsd-ufs:=${2}.part" \
+ -p fat16b:=${2}.config \
-a 2 \
-o ${2}
rm ${espfilename}
rm ${2}.part
+rm ${2}.config
diff --git a/release/release.conf b/release/release.conf
new file mode 100644
--- /dev/null
+++ b/release/release.conf
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+
+## Redefine environment variables here to override prototypes
+## defined in release.sh.
+#load_chroot_env() { }
+#load_target_env() { }
+#buildenv_setup() { }
+
+## Set the directory within which the release will be built.
+CHROOTDIR="/usr/obj/release/"
+
+## Do not explicitly require the devel/git port to be installed.
+NOGIT=1
+## Set the version control system host.
+GITROOT="https://git.freebsd.org/"
+GITSRC="src.git"
+GITPORTS="ports.git"
+
+## Set the src/, ports/, and doc/ branches or tags.
+SRCBRANCH="main"
+PORTBRANCH="main"
+
+## Sample configuration for using git from ports.
+#GITCMD="/usr/local/bin/git clone -q --branch main"
+
+## Set to override the default target architecture.
+#TARGET="amd64"
+#TARGET_ARCH="amd64"
+KERNEL="GENERIC-BBR"
+## Multiple kernels may be set.
+#KERNEL="GENERIC XENHVM"
+
+## Set to specify a custom make.conf and/or src.conf
+#MAKE_CONF="/etc/local/make.conf"
+#SRC_CONF="/etc/local/src.conf"
+
+## Set to use make(1) flags.
+#MAKE_FLAGS="-s"
+
+## Set to use world- and kernel-specific make(1) flags.
+#WORLD_FLAGS="-j $(sysctl -n hw.ncpu)"
+#KERNEL_FLAGS="-j $(( $(( $(sysctl -n hw.ncpu) + 1 )) / 2 ))"
+
+## Set miscellaneous 'make release' settings.
+NOPORTS=yes
+NOSRC=yes
+#WITH_DVD=
+#WITH_COMPRESSED_IMAGES=
+
+## Set to '1' to disable multi-threaded xz(1) compression.
+#XZ_THREADS=0
+
+## Set when building embedded images.
+#EMBEDDEDBUILD=
+
+## Set to a list of ports required to build embedded system-on-chip
+## images, such as sysutils/u-boot-rpi.
+#EMBEDDEDPORTS=
+
+## Set to the hardware platform of the target userland. This value
+## is passed to make(1) to set the TARGET (value of uname -m) to cross
+## build.
+#EMBEDDED_TARGET=
+
+## Set to the machine processor architecture of the target userland.
+## This value is passed to make(1) to set the TARGET_ARCH (value of uname -p)
+## to cross build.
+#EMBEDDED_TARGET_ARCH=
+
+## Set to skip the chroot environment buildworld/installworld/distribution
+## step if it is expected the build environment will exist via alternate
+## means.
+#CHROOTBUILD_SKIP=
+
+## Set to a non-empty value skip checkout or update of /usr/src in
+## the chroot. This is intended for use when /usr/src already exists.
+#SRC_UPDATE_SKIP=
+
+## Set to a non-empty value skip checkout or update of /usr/ports in
+## the chroot. This is intended for use when /usr/ports already exists.
+#PORTS_UPDATE_SKIP=
+
+## Set to pass additional flags to make(1) for the build chroot setup, such
+## as TARGET/TARGET_ARCH.
+#CHROOT_MAKEENV=
+
+## Set to a non-empty value to build virtual machine images as part of the
+## release build.
+WITH_VMIMAGES=yes
+
+## Set to a non-empty value to compress virtual machine images with xz(1)
+## as part of the release build.
+#WITH_COMPRESSED_VMIMAGES=
+
+## If WITH_VMIMAGES is set to a non-empty value, this is the name of the
+## file to use for the installed userland/kernel.
+#VMBASE="vm"
+
+## If WITH_VMIMAGES is set to a non-empty value, this is the size of the
+## virtual machine disk filesystem. Valid size values are described in
+## the makefs(8) manual page.
+VMSIZE="20g"
+
+## If WITH_VMIMAGES is set to a non-empty value, this is a list of disk
+## image formats to create. Valid values are listed in the mkimg(1)
+## manual page, as well as 'mkimg --formats' output.
+VMFORMATS="qcow2"
+
+## Set to a non-empty value to build virtual machine images for various
+## cloud providers as part of the release build.
+#WITH_CLOUDWARE=
+
+## If WITH_CLOUDWARE is set to a non-empty value, this is a list of providers
+## to create disk images.
+#CLOUDWARE="EC2 GCE OCI VAGRANT-VIRTUALBOX VAGRANT-VMWARE"
diff --git a/share/bsdinstall/bsdinstall.example b/share/bsdinstall/bsdinstall.example
new file mode 100644
--- /dev/null
+++ b/share/bsdinstall/bsdinstall.example
@@ -0,0 +1,7 @@
+PARTITIONS=DEFAULT
+DISTRIBUTIONS="kernel.txz base.txz"
+
+#!/bin/sh
+sysrc ifconfig_DEFAULT=DHCP
+sysrc sshd_enable=YES
+pkg install puppet
diff --git a/usr.sbin/bsdinstall/startbsdinstall b/usr.sbin/bsdinstall/startbsdinstall
--- a/usr.sbin/bsdinstall/startbsdinstall
+++ b/usr.sbin/bsdinstall/startbsdinstall
@@ -47,18 +47,22 @@
# Query terminal size; useful for serial lines.
resizewin -z
-if [ -f /etc/installerconfig ]; then
+for config_file in "/etc/installerconfig" "/bsdinstall_config/installerconfig";
+do
+ if [ ! -f ${config_file} ]; then
+ continue
+ fi
if [ "$1" != "primary" ]; then
bsddialog --backtitle "${OSNAME} Installer" --title "Installing" --msgbox "${OSNAME} is being installed from a script; please use the primary console." 0 0
. "$0"
- elif bsdinstall script /etc/installerconfig; then
+ elif bsdinstall script ${config_file}; then
bsddialog --backtitle "${OSNAME} Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of ${OSNAME} complete! Rebooting in 10 seconds" 10 30 10
reboot
else
bsddialog --backtitle "${OSNAME} Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
fi
exit
-fi
+done
bsddialog --backtitle "${OSNAME} Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live System" --yesno "Welcome to ${OSNAME}! Would you like to begin an installation or use the live system?" 0 0

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 25, 10:34 PM (18 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35502677
Default Alt Text
D38838.id153757.diff (9 KB)

Event Timeline