@@ -396,6 +396,7 @@ _EOF_
396396 ' 65.2' ' : NanoPi NEO2 Black'
397397 ' 56' ' : NanoPi NEO3'
398398 ' 57' ' : NanoPi NEO Plus2'
399+ ' 104' ' : NanoPi Zero2'
399400 ' 68.1' ' : NanoPi M4'
400401 ' 68.2' ' : NanoPC T4'
401402 ' 68.3' ' : NanoPi NEO4'
@@ -629,12 +630,10 @@ _EOF_
629630 local armbian_packages=0
630631 if (( $G_HW_MODEL < 10 ))
631632 then
632- G_EXEC ln -sf firmware/cmdline.txt /boot/cmdline.txt
633- G_EXEC ln -sf firmware/config.txt /boot/config.txt
634633 G_EXEC mv " $dir /.build/images/RPi/config.txt" /boot/firmware/
635- G_EXEC eval " echo 'root=PARTUUID=$( findmnt -Ufnro PARTUUID -M /) rootfstype=$( findmnt -Ufnro FSTYPE -M /) rootwait fsck.repair=yes net.ifnames=0 logo.nologo console=serial0,115200 console=tty1' > /boot/cmdline.txt"
634+ G_EXEC eval " echo 'root=PARTUUID=$( findmnt -Ufnro PARTUUID -M /) rootfstype=$( findmnt -Ufnro FSTYPE -M /) rootwait fsck.repair=yes net.ifnames=0 logo.nologo console=serial0,115200 console=tty1' > /boot/firmware/ cmdline.txt"
636635 # Boot in 64-bit mode if this is a 64-bit image
637- [[ $userland_arch == ' arm64' ]] && G_CONFIG_INJECT ' arm_64bit=' ' arm_64bit=1' /boot/config.txt
636+ [[ $userland_arch == ' arm64' ]] && G_CONFIG_INJECT ' arm_64bit=' ' arm_64bit=1' /boot/firmware/ config.txt
638637
639638 # Odroid C1/XU4 (32-bit)
640639 elif [[ $G_HW_MODEL =~ ^(10| 11)$ ]]
@@ -655,7 +654,7 @@ _EOF_
655654 G_EXEC ln -sf /etc/kernel/post{inst,rm}.d/dietpi-initramfs_cleanup
656655
657656 # SBCs using Armbian build system for kernel/bootloader packages and boot.scr
658- elif [[ $G_HW_MODEL =~ ^(12| 15| 16| 17| 40| 42| 43| 44| 45| 46| 47| 48| 52| 54| 55| 56| 57| 58| 59| 60| 63| 64| 65| 66| 67| 68| 72| 73| 74| 76| 77| 78| 79| 80| 82| 83| 85| 86| 87| 88| 89| 90| 91| 92| 93| 94| 95| 96| 99| 100| 101| 102| 103)$ ]]
657+ elif [[ $G_HW_MODEL =~ ^(12| 15| 16| 17| 40| 42| 43| 44| 45| 46| 47| 48| 52| 54| 55| 56| 57| 58| 59| 60| 63| 64| 65| 66| 67| 68| 72| 73| 74| 76| 77| 78| 79| 80| 82| 83| 85| 86| 87| 88| 89| 90| 91| 92| 93| 94| 95| 96| 99| 100| 101| 102| 103| 104 )$ ]]
659658 then
660659 # Amlogic 64-bit
661660 armbian_packages=1
@@ -697,7 +696,7 @@ setenv rootuuid "true"' /boot/boot.cmd
697696 (( $G_HW_MODEL == 15 )) && G_EXEC eval ' echo ' \' ' meson_rng' \' ' > /etc/modules-load.d/dietpi-hwrng.conf'
698697
699698 # Rockchip 64-bit
700- elif [[ $G_HW_MODEL =~ ^(42| 43| 46| 47| 55| 56| 58| 68| 72| 73| 76| 77| 78| 79| 80| 82| 85| 86| 87| 90| 91| 92| 93| 94| 95| 100| 101| 102| 103)$ ]]
699+ elif [[ $G_HW_MODEL =~ ^(42| 43| 46| 47| 55| 56| 58| 68| 72| 73| 76| 77| 78| 79| 80| 82| 85| 86| 87| 90| 91| 92| 93| 94| 95| 100| 101| 102| 103| 104 )$ ]]
701700 then
702701 # Load addresses
703702 G_EXEC sed --follow-symlinks -Ei ' /^setenv (kernel|fdt)_addr_r/d' /boot/boot.cmd
@@ -729,6 +728,7 @@ setenv rootuuid "true"' /boot/boot.cmd
729728 esac
730729 ;;
731730 85) G_CONFIG_INJECT ' fdtfile=' ' fdtfile=rockchip/rk3588s-rock-5a.dtb' /boot/dietpiEnv.txt;;
731+ 104) G_CONFIG_INJECT ' fdtfile=' ' fdtfile=rockchip/rk3528-nanopi-rev01.dtb' /boot/dietpiEnv.txt;;
732732 * ) : ;;
733733 esac
734734 # Overlay prefix
@@ -748,6 +748,7 @@ setenv rootuuid "true"' /boot/boot.cmd
748748 87|100|101) G_CONFIG_INJECT ' overlay_prefix=' ' overlay_prefix=rockchip-rk3566 rockchip-rk3568 rockchip' /boot/dietpiEnv.txt;; # RK3566 mainline
749749 76|77) G_CONFIG_INJECT ' overlay_prefix=' ' overlay_prefix=rockchip-rk3568 rockchip' /boot/dietpiEnv.txt;; # RK3568 mainline
750750 102|103) G_CONFIG_INJECT ' overlay_prefix=' ' overlay_prefix=rk3576 rockchip' /boot/dietpiEnv.txt;; # RK3576 vendor + mainline
751+ 104) G_CONFIG_INJECT ' overlay_prefix=' ' overlay_prefix=rk3528 rockchip-rk3528' /boot/dietpiEnv.txt;; # RK3528 vendor + mainline
751752 * ) G_CONFIG_INJECT ' overlay_prefix=' ' overlay_prefix=rockchip' /boot/dietpiEnv.txt;;
752753 esac
753754 # Overlays
@@ -760,8 +761,9 @@ setenv rootuuid "true"' /boot/boot.cmd
760761 # shellcheck disable=SC2015
761762 case $G_HW_MODEL in
762763 73) G_CONFIG_INJECT ' consoleargs=' ' consoleargs=console=ttyS0,1500000' /boot/dietpiEnv.txt;; # headless
763- 47|55|56|100) G_CONFIG_INJECT ' consoleargs=' ' consoleargs=console=ttyS2,1500000' /boot/dietpiEnv.txt;; # headless
764+ 47|55|56|100) G_CONFIG_INJECT ' consoleargs=' ' consoleargs=console=ttyS2,1500000' /boot/dietpiEnv.txt;; # headless mainline
764765 78|79|80|82|85|90|91|92|93|94|95|102|103) [[ $RK35XX_MAINLINE == 1 ]] && G_EXEC sed --follow-symlinks -i ' s/ttyAML0,115200/ttyS2,1500000/' /boot/dietpiEnv.txt || G_EXEC sed --follow-symlinks -i ' s/ttyAML0,115200/ttyFIQ0,1500000/' /boot/dietpiEnv.txt;; # mainline or vendor
766+ 104) [[ $RK35XX_MAINLINE == 1 ]] && G_CONFIG_INJECT ' consoleargs=' ' consoleargs=console=ttyS2,1500000' /boot/dietpiEnv.txt || G_CONFIG_INJECT ' consoleargs=' ' consoleargs=console=ttyFIQ0,1500000' /boot/dietpiEnv.txt;; # headless mainline or vendor
765767 * ) G_EXEC sed --follow-symlinks -i ' s/ttyAML0,115200/ttyS2,1500000/' /boot/dietpiEnv.txt;; # mainline
766768 esac
767769
@@ -1026,12 +1028,13 @@ _EOF_'
10261028 ' ethtool' # Force Ethernet link speed
10271029 ' fake-hwclock' # Hardware clock emulation, to allow correct timestamps during boot before network time sync
10281030 ' ifupdown' # Network interface configuration
1029- ' isc-dhcp-client' # DHCP client
10301031 ' kmod' # "modprobe", "lsmod", used by several DietPi scripts
10311032 ' rfkill' # Block/unblock WiFi and Bluetooth adapters, only installed once to unblock everything, purged afterwards!
10321033 ' systemd-timesyncd' # Network time sync daemon
10331034 ' usbutils' # "lsusb", used by DietPi-Software + DietPi-BugReport
10341035 )
1036+ # DHCP client: isc-dhcp-client has been removed from Forky, and we move to BusyBox's udhcpc.
1037+ (( $G_DISTRO < 9 )) && aPACKAGES_REQUIRED_INSTALL+=(' isc-dhcp-client' ) || aPACKAGES_REQUIRED_INSTALL+=(' udhcpc' )
10351038
10361039 # All but VMs: Drive power management control
10371040 (( $G_HW_MODEL == 20 )) || aPACKAGES_REQUIRED_INSTALL+=(' hdparm' )
@@ -1181,6 +1184,7 @@ _EOF_
11811184 101) model=' nanopi-r3s-lts' kernel=' rockchip64' ;;
11821185 102) model=' nanopi-r76s' kernel=' rk35xx' branch=' vendor' ;;
11831186 103) model=' nanopi-m5' kernel=' rk35xx' branch=' vendor' ;;
1187+ 104) model=' nanopi-zero2' kernel=' rk35xx' branch=' vendor' ;;
11841188 * ) : ;;
11851189 esac
11861190
@@ -1229,8 +1233,11 @@ fi' /boot/boot.cmd
12291233 # Install testing kernel build if requested
12301234 if (( $TEST_KERNEL ))
12311235 then
1232- G_EXEC_OUTPUT=1 G_EXEC curl -fo package1.deb " https://dietpi.com/downloads/binaries/testing/linux-image-$branch -$kernel .deb"
1233- G_EXEC_OUTPUT=1 G_EXEC curl -fo package2.deb " https://dietpi.com/downloads/binaries/testing/linux-dtb-$branch -$kernel .deb"
1236+ local suffix=
1237+ # Orange Pi 5 Max/Ultra: Install kernel build with bcmdhd WiFi module configured for SDIO rather than USB
1238+ (( $G_HW_MODEL == 91 || $G_HW_MODEL == 94 )) && suffix=' _bcmdhd-sdio'
1239+ G_EXEC_OUTPUT=1 G_EXEC curl -fo package1.deb " https://dietpi.com/downloads/binaries/testing/linux-image-$branch -$kernel$suffix .deb"
1240+ G_EXEC_OUTPUT=1 G_EXEC curl -fo package2.deb " https://dietpi.com/downloads/binaries/testing/linux-dtb-$branch -$kernel$suffix .deb"
12341241 G_EXEC_OUTPUT=1 G_EXEC dpkg -i package[12].deb
12351242 G_EXEC rm package[12].deb
12361243 fi
@@ -1530,7 +1537,6 @@ _EOF_
15301537 if (( $WIFI_REQUIRED ))
15311538 then
15321539 aPACKAGES_REQUIRED_INSTALL+=(' iw' ) # Tools to configure WiFi adapters
1533- aPACKAGES_REQUIRED_INSTALL+=(' wireless-tools' ) # Same as "iw", deprecated but still required for non-nl80211 adapters
15341540 aPACKAGES_REQUIRED_INSTALL+=(' wpasupplicant' ) # Support for WPA-protected WiFi network connections
15351541 aPACKAGES_REQUIRED_INSTALL+=(' wireless-regdb' ) # Database with allowed WiFi channels based on country
15361542 fi
@@ -1997,7 +2003,7 @@ _EOF_'
19972003 # On RPi the primary serial console depends on model, use "serial0" which links to the primary console, converts to correct device on first boot
19982004 if (( $G_HW_MODEL < 10 ))
19992005 then
2000- G_CONFIG_INJECT ' enable_uart=' ' enable_uart=1' /boot/config.txt
2006+ G_CONFIG_INJECT ' enable_uart=' ' enable_uart=1' /boot/firmware/ config.txt
20012007 /boot/dietpi/func/dietpi-set_hardware serialconsole enable serial0
20022008 # Disable and mask the others explicitly to be independent of currently available serial devices
20032009 /boot/dietpi/func/dietpi-set_hardware serialconsole disable ttyAMA0
@@ -2134,6 +2140,12 @@ _EOF_
21342140SUBSYSTEM=="leds", KERNEL=="green:lan", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s eth0 up", RUN+="/bin/ip l s eth0 down"
21352141SUBSYSTEM=="leds", KERNEL=="green:wan", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="eth1", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s eth1 up", RUN+="/bin/ip l s eth1 down"
21362142SUBSYSTEM=="leds", KERNEL=="green:wlan", ACTION=="add", ATTR{trigger}="netdev", ATTR{device_name}="wlan0", ATTR{link}="1", ATTR{rx}="1", ATTR{tx}="1", RUN+="/bin/ip l s wlan0 up", RUN+="/bin/ip l s wlan0 down"
2143+ _EOF_
2144+ G_DIETPI-NOTIFY 2 ' Assuring persistent classic Ethernet interface names: /etc/udev/rules.d/99-dietpi-nanopir5c.rules'
2145+ cat << '_EOF_ ' > /etc/udev/rules.d/99-dietpi-nanopir5c.rules
2146+ SUBSYSTEM=="net", KERNEL=="eth0", KERNELS=="0002:21:00.0", RUN:="/bin/true"
2147+ SUBSYSTEM=="net", KERNEL=="eth1", KERNELS=="0001:11:00.0", NAME="to_eth0", RUN:="/bin/true"
2148+ SUBSYSTEM=="net", KERNEL=="to_eth0", RUN="/bin/ip l s dev eth0 name eth1", RUN+="/bin/ip l s dev to_eth0 name eth0", RUN+="/bin/udevadm trigger -c add /sys/class/net/eth0 /sys/class/net/eth1"
21372149_EOF_
21382150 # NanoPi R6S
21392151 elif [[ $G_HW_MODEL == 79 && $HW_VARIANT == 1 ]]
0 commit comments