98-bootstrap-boot-by-firmware 2.19 KB
Newer Older
1
#!/bin/sh -eu
2

3 4 5 6 7
kflavour=
kflavour="${GLOBAL_KFLAVOURS%% *}"

mkdir -p /boot/efi

8 9 10 11 12 13 14 15 16 17 18 19 20 21
cp /usr/share/raspberrypi-firmware/*.{bin,dat,elf} /boot/efi/

[ -f /usr/share/u-boot/rpi_3/kernel8.img ] &&
	cp /usr/share/u-boot/rpi_3/kernel8.img \
	   /boot/efi/uboot-rpi_3.bin
[ -f /usr/share/u-boot/rpi_3_32b/kernel7.img ] &&
	cp /usr/share/u-boot/rpi_3_32b/kernel7.img \
	   /boot/efi/uboot-rpi_3_32b.bin
[ -f /usr/share/u-boot/rpi_4/kernel8.img ] &&
	cp /usr/share/u-boot/rpi_4/kernel8.img \
	   /boot/efi/uboot-rpi_4.bin
[ -f /usr/share/u-boot/rpi_4_32b/kernel7.img ] &&
	cp /usr/share/u-boot/rpi_4_32b/kernel7.img \
	   /boot/efi/uboot-rpi_4_32b.bin
22

23
# copy actualy dtb's for default kernel
24 25 26 27 28 29 30 31 32 33 34
if [ -d /boot/dtb/broadcom ]; then
	DTB_DIR=/boot/dtb/broadcom
elif [ -d /boot/dtb ]; then
	DTB_DIR=/boot/dtb
else
	echo "Error: /boot/dtb/broadcom or /boot/dtb is not exists!!!" >&2
	exit 1
fi

cp "$DTB_DIR"/bcm27*-rpi-*.dtb /boot/efi/ || :

35
[ -f /boot/efi/bcm2710-rpi-3-b.dtb ] ||
36
	cp "$DTB_DIR"/bcm2837-rpi-3-b.dtb \
37 38
	   /boot/efi/bcm2710-rpi-3-b.dtb || :
[ -f /boot/efi/bcm2710-rpi-3-b-plus.dtb ] ||
39
	cp "$DTB_DIR"/bcm2837-rpi-3-b-plus.dtb \
40 41
	   /boot/efi/bcm2710-rpi-3-b-plus.dtb || :
[ -f /boot/efi/bcm2710-rpi-cm3.dtb ] ||
42
	cp "$DTB_DIR"/bcm2837-rpi-cm3-io3.dtb \
43 44
	   /boot/efi/bcm2710-rpi-cm3.dtb || :
[ -f /boot/efi/bcm2711-rpi-cm4.dtb ] ||
45
	cp "$DTB_DIR"/bcm2711-rpi-cm4-io.dtb \
46 47 48
	   /boot/efi/bcm2711-rpi-cm4.dtb || :
[ -d /boot/dtb/overlays ] &&
	cp -r /boot/dtb/overlays /boot/efi/ || :
49

50 51 52 53 54
# copy missing dtb's from raspberrypi-firmware
for dtb in /usr/share/raspberrypi-firmware/*.dtb; do
	[ -f "/boot/efi/$(basename $dtb)" ] ||
		cp "$dtb" /boot/efi/
done
55 56 57 58 59 60 61 62

[ "$GLOBAL_ARCH" = aarch64 ] && \
	echo "arm_64bit=1" > /boot/efi/config.txt

cat >> /boot/efi/config.txt <<EOF
enable_uart=1
disable_overscan=1
dtparam=audio=on
63
hdmi_ignore_edid_audio=1
64 65 66

[pi3]
kernel=uboot-rpi_3.bin
67
#dtoverlay=vc4-fkms-v3d
68 69 70

[pi4]
kernel=uboot-rpi_4.bin
71
#dtoverlay=vc4-fkms-v3d
72
#max_framebuffers=2
73 74 75 76 77

[all]
EOF

[ "$GLOBAL_ARCH" = armh ] && \
78
	sed -i 's/.bin/_32b.bin/g' /boot/efi/config.txt
79 80

# Enable bootloading without u-boot
81 82 83 84
if [ -n "${GLOBAL_RPI_NOUBOOT-}" ]; then
	rpi4-boot-nouboot $kflavour
	sed -i '/#dtoverlay=vc4-fkms-v3d/s/#//' /boot/efi/config.txt
fi
85 86

exit 0