armbian_rootenc_setup: add -I option (force use of ifupdown)

This commit is contained in:
The MMGen Project 2025-01-19 11:17:56 +00:00
commit 66ab5cb3fe
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2

View file

@ -18,6 +18,7 @@ CONFIG_VARS='
USE_LOCAL_AUTHORIZED_KEYS
USB_GADGET
ETH_DEV
NETCFG_IFUPDOWN
'
STATES='
card_partitioned
@ -44,6 +45,7 @@ USER_OPTS_INFO="
USB_GADGET - enable disk unlocking via SSH over USB (g_ether)
ETH_DEV - select the network device manually (default: auto)
VERBOSE - produce verbose output
NETCFG_IFUPDOWN - force configuration of network interface using ifupdown
"
RSYNC_VERBOSITY='--info=progress2'
@ -55,6 +57,8 @@ print_help() {
'-d' Produce tons of debugging output
'-f' Force reconfiguration of target system
'-F' Force a complete rebuild of target system
'-I' Force configuration of target system network interface using
ifupdown (/etc/network/interfaces)
'-m' Add all currently loaded modules to the initramfs (may help
fix blank screen on bootup issues)
'-o' Add specified modules to the initramfs (comma-separated list)
@ -473,6 +477,7 @@ _print_pkgs_to_install() {
pkgs='cryptsetup-initramfs' pkgs_ssh='dropbear-initramfs'
warn "Warning: unrecognized target distribution '$target_distro'" ;;
esac
[ "$NETCFG_IFUPDOWN" == 'y' ] && pkgs+=" ifupdown"
[ "$IP_ADDRESS" != 'none' ] && pkgs+=" $pkgs_ssh" ;;
esac
for i in $pkgs; do
@ -675,6 +680,7 @@ _update_state_from_config_vars() {
[ "$cADD_MODS" != "$ADD_MODS" ] && cfgvar_changed+=' ADD_MODS' target_configured='n'
[ "$cUSB_GADGET" != "$USB_GADGET" ] && cfgvar_changed+=' USB_GADGET' target_configured='n'
[ "$cETH_DEV" != "$ETH_DEV" ] && cfgvar_changed+=' ETH_DEV' target_configured='n'
[ "$cNETCFG_IFUPDOWN" != "$NETCFG_IFUPDOWN" ] && cfgvar_changed+=' NETCFG_IFUPDOWN' target_configured='n'
[ "$IP_ADDRESS" -a "$cUSE_LOCAL_AUTHORIZED_KEYS" != "$USE_LOCAL_AUTHORIZED_KEYS" ] && {
cfgvar_changed+=' USE_LOCAL_AUTHORIZED_KEYS' target_configured='n'
}
@ -1312,6 +1318,29 @@ apt_install_target_pkgs() {
true
}
ifupdown_config_eth0() {
local dir file text
dir="/etc/network/interfaces.d"
mkdir -p $dir
file="$dir/$eth_dev"
rm -rf $file
if [ "$NETCFG_IFUPDOWN" == 'y' ]; then
if [ "$IP_ADDRESS" == 'dhcp' ]; then
text="auto $eth_dev\niface $eth_dev inet dhcp"
else
text="auto $eth_dev\niface $eth_dev inet static\n\taddress $IP_ADDRESS\n\tnetmask $NETMASK"
fi
systemctl -q is-enabled 'networking' || { systemctl unmask 'networking'; systemctl enable 'networking'; }
systemctl -q is-enabled 'networking' || die "fatal error: unable to enable networking service (ifupdown)"
echo -e "$text" > $file
_display_file $file
else
systemctl -q is-enabled 'networking' && systemctl mask 'networking'
systemctl -q is-enabled 'networking' && die "fatal error: unable to mask networking service"
true
fi
}
update_initramfs() {
[ "$ROOTENC_TESTING" ] && return 0
_show_output
@ -1376,7 +1405,7 @@ configure_target() {
_show_output # this must be done before entering chroot
/bin/cp $0 $TARGET_ROOT
export 'ROOTFS_NAME' 'IP_ADDRESS' 'target_distro' 'ROOTENC_TESTING' 'ROOTENC_PAUSE' 'ROOTENC_IGNORE_APT_ERRORS' 'APT_UPGRADE'
export 'ROOTFS_NAME' 'IP_ADDRESS' 'target_distro' 'ROOTENC_TESTING' 'ROOTENC_PAUSE' 'ROOTENC_IGNORE_APT_ERRORS' 'APT_UPGRADE' 'eth_dev'
chroot $TARGET_ROOT "./$PROGNAME" $ORIG_OPTS 'in_target'
@ -1410,13 +1439,14 @@ _mount_target_and_exit() {
set -e
while getopts hCfFmo:MUpRsudvz OPT
while getopts hCfFImo:MUpRsudvz OPT
do
case "$OPT" in
h) print_help; exit ;;
C) NO_CLEANUP='y' ;;
f) FORCE_RECONFIGURE='y' ;;
F) FORCE_REBUILD='y' ;;
I) NETCFG_IFUPDOWN='y' ;;
m) ADD_ALL_MODS='y' ;;
o) ADD_MODS=$OPTARG ;;
M) MOUNT_TARGET_ONLY='y' ;;
@ -1466,6 +1496,7 @@ if [ "$ARG1" == 'in_target' ]; then
}
apt_remove_target_pkgs
apt_install_target_pkgs
ifupdown_config_eth0
[ "$initramfs_updated" ] || update_initramfs
gen_target_ssh_host_keys
check_initramfs