Create a clean chroot for the installer.

The installer stage has a clean chroot for its own usage. The chroot
from the chroot stage is available in chroot/chroot (implemented similar
to the binary stage).
This commit is contained in:
Roland Clobus 2022-05-16 11:25:35 +02:00
parent ac0cde14e6
commit 26845abebc
No known key found for this signature in database
GPG Key ID: 62C57C6AA61495BD
3 changed files with 73 additions and 2 deletions

View File

@ -28,6 +28,9 @@ Init_config_data "${@}"
Setup_clean_exit Setup_clean_exit
if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]; then if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]; then
# Use a fresh chroot environment, to not pollute the 'normal' chroot
lb installer_chroot "${@}"
# Configuring chroot # Configuring chroot
lb chroot_prep install all mode-archives-chroot "${@}" lb chroot_prep install all mode-archives-chroot "${@}"
fi fi
@ -39,6 +42,12 @@ lb installer_preseed "${@}"
if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]; then if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]; then
# Deconfiguring chroot # Deconfiguring chroot
lb chroot_prep remove all mode-archives-chroot "${@}" lb chroot_prep remove all mode-archives-chroot "${@}"
# Revert lb installer_chroot
mv chroot/chroot chroot.tmp
rm -rf chroot
mv chroot.tmp chroot
Remove_stagefile installer_chroot
fi fi
Echo_message "Installer stage completed" Echo_message "Installer stage completed"

62
scripts/build/installer_chroot Executable file
View File

@ -0,0 +1,62 @@
#!/bin/sh
## live-build(7) - System Build Scripts
## Copyright (C) 2016-2020 The Debian Live team
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.
set -e
# Including common functions
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
# Setting static variables
DESCRIPTION="Copy chroot into chroot"
USAGE="${PROGRAM} [--force]"
# Processing arguments and configuration files
Init_config_data "${@}"
Echo_message "Begin copying chroot for the installer..."
# Requiring stage file
Require_stagefiles config bootstrap
# Checking stage file
Check_stagefile
# Acquire lock file
Acquire_lockfile
# Normally, virtual filesystems are not mounted here, but people tend to be lazy
if [ -f chroot/proc/version ]
then
umount chroot/proc
fi
if [ -d chroot/sys/kernel ]
then
umount chroot/sys
fi
if [ "${LB_BUILD_WITH_CHROOT}" = "false" ]
then
exit 0
fi
# Removing old chroot
rm -rf chroot/chroot
rm -rf chroot.tmp
# Copying new chroot
mv chroot chroot.tmp
cp -a cache/bootstrap chroot
touch chroot/chroot_for_installer.cache
mv chroot.tmp chroot/chroot
# Creating stage file
Create_stagefile

View File

@ -38,13 +38,13 @@ Acquire_lockfile
if ls config/preseed/*.cfg > /dev/null 2>&1 || \ if ls config/preseed/*.cfg > /dev/null 2>&1 || \
ls config/preseed/*.cfg.installer > /dev/null 2>&1 || \ ls config/preseed/*.cfg.installer > /dev/null 2>&1 || \
ls chroot/root/packages.installer > /dev/null 2>&1 ls chroot/chroot/root/packages.installer > /dev/null 2>&1
then then
_DIRECTORY="binary/install" _DIRECTORY="binary/install"
rm -f "${_DIRECTORY}/preseed.cfg" rm -f "${_DIRECTORY}/preseed.cfg"
for _FILE in config/preseed/*.cfg config/preseed/*.cfg.installer chroot/root/packages.installer for _FILE in config/preseed/*.cfg config/preseed/*.cfg.installer chroot/chroot/root/packages.installer
do do
if [ -e "${_FILE}" ] if [ -e "${_FILE}" ]
then then