xref: /netbsd-src/distrib/utils/embedded/conf/arm64.conf (revision a04395531661c5e8d314125d5ae77d4cbedd5d73)
1# $NetBSD: arm64.conf,v 1.13 2021/07/01 17:32:07 jmcneill Exp $
2# ARM64 customization script used by mkimage
3#
4board=arm64
5console=fb
6resize=true
7gpt=true
8gpt_hybrid=true
9gpt_create_flags="-p 16"
10gpt_label_boot="EFI"
11gpt_label_ffs="netbsd-root"
12
13. ${DIR}/conf/evbarm.conf
14
15kernel_GENERIC64="GENERIC64"
16
17make_label() {
18	make_label_evbarm
19}
20
21make_fstab() {
22	make_fstab_evbarm
23}
24
25customize() {
26	customize_evbarm
27	cat >> "${mnt}/etc/rc.conf" << EOF
28mdnsd=YES
29devpubd=YES
30wscons=\$(dev_exists wsdisplay0)
31ec2_init=\$(dev_exists ena0)
32if checkyesno ec2_init ; then
33	dhcpcd_flags="\$dhcpcd_flags -w"
34fi
35EOF
36}
37
38populate_common() {
39	# Add EC2 init script
40	cp ${DIR}/files/ec2_init ${mnt}/etc/rc.d/ec2_init
41	echo "./etc/rc.d/ec2_init type=file uname=root gname=wheel mode=0555" \
42	    >> "$tmp/selected_sets"
43
44	# Rename kernel to netbsd.img
45	mv "${mnt}/boot/netbsd-${kernel_GENERIC64}.img" "${mnt}/boot/netbsd.img"
46
47	# Install EFI bootloader
48	mkdir -p "${mnt}/boot/EFI/BOOT"
49	cp "${release}/usr/mdec/bootaa64.efi" "${mnt}/boot/EFI/BOOT/bootaa64.efi"
50
51	# Install kernel to root of the FFS partition
52	${GZIP_CMD} -dc ${kernel}/netbsd-${kernel_GENERIC64}.gz > "${mnt}/netbsd"
53	echo "./netbsd type=file uname=root gname=wheel mode=0755" \
54	    >> "$tmp/selected_sets"
55}
56
57
58populate_rpi() {
59	firmwaredir="${src}/external/broadcom/rpi-firmware/dist"
60	firmwarefiles="LICENCE.broadcom bootcode.bin fixup4cd.dat fixup4.dat fixup_cd.dat fixup.dat start4cd.elf start4.elf start_cd.elf start.elf"
61
62	cat > "${mnt}/boot/cmdline.txt" << EOF
63root=NAME=${gpt_label_ffs} console=${console}
64EOF
65
66	cat > "${mnt}/boot/config.txt" << EOF
67#
68upstream_kernel=1
69#
70arm_64bit=1
71os_prefix=dtb/broadcom/
72cmdline=../../cmdline.txt
73kernel=/netbsd.img
74kernel_address=0x200000
75enable_uart=1
76force_turbo=0
77EOF
78
79	echo "${bar} installing firmware files ${bar}"
80	(cd "${mnt}/boot" &&
81		for f in ${firmwarefiles}; do
82			echo " $f"
83			cp "${firmwaredir}/${f}" .
84		done
85	)
86}
87
88populate() {
89	echo "${bar} looking for kernel in ${kernel} ${bar}"
90	kernels=""
91	k="$kernel_GENERIC64"
92
93	# .img kernel
94	f="${kernel}/netbsd-${k}.img.gz"
95	test -f "${f}" && kernels="${kernels} ${f}"
96
97	# install files to /boot partition
98	for k in ${kernels}; do
99		tgt="$(basename ${k} | sed 's/\.gz$//')"
100		echo "${bar} installing ${k} to /boot/${tgt} ${bar}"
101		case "${k}" in
102		*.gz)
103			${GZIP_CMD} -dc "${k}" > "${mnt}/boot/${tgt}"
104			;;
105		*)
106			cp "${k}" "${mnt}/boot/${tgt}"
107			;;
108		esac ||
109			fail "Copy of ${k} to ${mnt}/boot/${tgt} failed"
110	done
111
112	# Board specific configuration
113	populate_rpi
114
115	# common configuration
116	populate_common
117}
118