Rootfs will take over the managing of unudhcpd under the service manager, stop unudhpcd to allow this and avoiding multiple instances. Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
111 lines
2.8 KiB
Bash
111 lines
2.8 KiB
Bash
#!/bin/busybox ash
|
|
# shellcheck disable=SC1091
|
|
|
|
# This is the "real" init.sh script, it's either jumped to immediately
|
|
# from init.sh, or loaded from initramfs-extra on the boot partition
|
|
# on space constrained devices with deviceinfo_create_initfs_extra="true".
|
|
|
|
# The set -a in init.sh only exports variables, not functions
|
|
. /init_functions.sh
|
|
. /init_functions_2nd.sh
|
|
|
|
# Handle halt/poweroff/reboot
|
|
# Signals from busybox/halt.c
|
|
trap 'halt -f' USR1
|
|
trap 'poweroff -f' USR2
|
|
trap 'reboot -f' TERM
|
|
|
|
# Run udev early, before splash, to make sure any relevant display drivers are
|
|
# loaded in time
|
|
setup_udev
|
|
|
|
setup_usb_network
|
|
start_unudhcpd
|
|
|
|
# Start splash
|
|
if [ "$nosplash" != "y" ] && [ "$IN_CI" = "false" ]; then
|
|
setup_framebuffer
|
|
splash_start
|
|
splash_set_message "Loading"
|
|
fi
|
|
|
|
setup_dynamic_partitions "${deviceinfo_super_partitions:=}"
|
|
|
|
run_hooks /hooks
|
|
|
|
if [ "$debug_shell" = "y" ]; then
|
|
debug_shell
|
|
fi
|
|
|
|
check_keys
|
|
|
|
# If running from initramfs-extra this will be a no-op since it was
|
|
# called before to mount the boot partition
|
|
mount_subpartitions
|
|
|
|
run_hooks /hooks-extra
|
|
|
|
wait_root_partition
|
|
delete_old_install_partition
|
|
resize_root_partition
|
|
unlock_root_partition
|
|
resize_root_filesystem
|
|
mount_root_partition
|
|
resize_filesystem_after_mount /sysroot
|
|
|
|
# Mount boot partition into sysroot if needed since some
|
|
# old installations don't have a proper /etc/fstab file. See #2800
|
|
if [ -z "$(cat /sysroot/etc/fstab | grep -v "#" | tr -d '[:space:]')" ]; then
|
|
wait_boot_partition
|
|
mount_boot_partition /sysroot/boot "rw"
|
|
fi
|
|
|
|
init="/sbin/init"
|
|
setup_bootchart2
|
|
|
|
# Switch root
|
|
run_hooks /hooks-cleanup
|
|
|
|
echo "Switching root"
|
|
|
|
# Restore stdout and stderr to their original values if they
|
|
# were stashed
|
|
if [ -e "/proc/1/fd/3" ]; then
|
|
exec 1>&3 2>&4
|
|
elif [ "$debug_shell" != "y" ]; then
|
|
echo "$LOG_PREFIX Disabling console output again (use 'pmos.debug-shell' to keep it enabled)"
|
|
exec >/dev/null 2>&1
|
|
fi
|
|
|
|
# Make it clear that we're at the end of the initramfs
|
|
splash_set_message "Starting"
|
|
|
|
# Re-enable kmsg ratelimiting (might have been disabled for logging)
|
|
echo ratelimit > /proc/sys/kernel/printk_devkmsg
|
|
|
|
# Vibrate to indicate that we are booting
|
|
if [ "$IN_CI" != "true" ]; then
|
|
beebzzr &
|
|
fi
|
|
|
|
killall udevd syslogd unudhcpd 2>/dev/null
|
|
|
|
# Kill any getty shells that might be running
|
|
for pid in $(pidof sh); do
|
|
if ! [ "$pid" = "1" ]; then
|
|
kill -9 "$pid"
|
|
fi
|
|
done
|
|
|
|
# cleanup after ourselves
|
|
# switch_root does a mount --move , keeping stale filesystems like devtmpfs
|
|
# with /dev/log in there.
|
|
rm /dev/log 2>/dev/null || true
|
|
|
|
# shellcheck disable=SC2093
|
|
exec switch_root /sysroot "$init"
|
|
|
|
echo "$LOG_PREFIX ERROR: switch_root failed!" > /dev/kmsg
|
|
echo "$LOG_PREFIX Looping forever. Install and use the debug-shell hook to debug this." > /dev/kmsg
|
|
echo "$LOG_PREFIX For more information, see <https://postmarketos.org/debug-shell>" > /dev/kmsg
|
|
fail_halt_boot
|