Enhance network boot troubleshooting documentation and scripts
Update NETWORK-BOOT-TROUBLESHOOTING.md to clarify the boot process after start4.elf, emphasizing the importance of config.txt settings for kernel and initramfs. Introduce checks for GPU logging and ensure proper configuration for UART. Modify initramfs scripts to improve DHCP lease acquisition and ensure shell output is directed to the serial console. Update ensure-tftpboot-config-kernel-initrd.sh to enforce necessary config settings and link DTB files in serial-prefix directories for better device compatibility.
This commit is contained in:
@@ -144,13 +144,18 @@ if [ ! -f "$BUILD_DIR/bin/busybox" ] || [ ! -s "$BUILD_DIR/bin/busybox" ]; then
|
||||
fi
|
||||
chmod +x "$BUILD_DIR/bin/busybox" 2>/dev/null || true
|
||||
|
||||
# Busybox applets we need (sh, mount, udhcpc, etc.)
|
||||
# Busybox applet symlinks (mount, mkdir, etc.). When building arm64 on x86, busybox cannot be run so --list fails; create symlinks manually.
|
||||
APPLETS="sh ash mount umount mkdir cat ip udhcpc sleep echo grep cut awk hostname dd reboot chroot ls rm"
|
||||
cd "$BUILD_DIR/bin"
|
||||
./busybox --list 2>/dev/null | while read applet; do
|
||||
case "$applet" in
|
||||
sh|ash|mount|umount|mkdir|cat|ip|udhcpc|sleep|echo|grep|cut|awk|hostname|dd|reboot) ln -sf busybox "$applet"; ;;
|
||||
esac
|
||||
done
|
||||
if ./busybox --list >/dev/null 2>&1; then
|
||||
./busybox --list | while read applet; do
|
||||
case " $APPLETS " in *" $applet "*) ln -sf busybox "$applet"; ;; esac
|
||||
done
|
||||
else
|
||||
for applet in $APPLETS; do
|
||||
[ -e "$applet" ] || ln -sf busybox "$applet"
|
||||
done
|
||||
fi
|
||||
[ -e sh ] || ln -sf busybox sh
|
||||
|
||||
# Build cpio (gzip)
|
||||
|
||||
@@ -15,10 +15,11 @@ mount -t devtmpfs none /dev
|
||||
mkdir -p /dev/pts
|
||||
mount -t devpts none /dev/pts
|
||||
|
||||
# Kernel might have brought up eth0 via ip=dhcp; ensure we have an IP
|
||||
# Kernel might have brought up eth0 via ip=dhcp; ensure we have an IP (run in background with timeout so we don't block rescue shell)
|
||||
if ! ip addr show | grep -q 'inet .* scope global'; then
|
||||
echo "Getting DHCP lease..."
|
||||
udhcpc -f -q -i eth0 -n 2>/dev/null || true
|
||||
( udhcpc -f -q -i eth0 -n -T 5 2>/dev/null || true ) &
|
||||
sleep 6
|
||||
fi
|
||||
|
||||
# Allow kernel cmdline to override: provisioning_server=... and rescue mode
|
||||
@@ -35,7 +36,8 @@ export PROVISIONING_SERVER
|
||||
if [ "$RESCUE" -eq 1 ]; then
|
||||
echo "=== RESCUE MODE (provisioning_rescue=1) ==="
|
||||
echo "Run /rescue-eeprom.sh to mount eMMC and change boot order (rpi-eeprom-config), then reboot."
|
||||
echo "Or run /bin/sh for a shell."
|
||||
# Ensure shell I/O goes to serial console (some setups drop output otherwise)
|
||||
[ -c /dev/console ] && exec </dev/console >/dev/console 2>&1
|
||||
exec /bin/sh -i
|
||||
fi
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user