@@ -11,50 +11,50 @@ main() {
1111 local lrev=" ${3:- 0} "
1212 local outbin=" ${4:- outbin} "
1313
14- local kern_rk3568_dist=' bookworm'
15- local kern_rk3588_dist=' sid'
16-
17- # ensure all prerequisites are downloaded
18- preflight_check " $kern_rk3568_dist " " $kern_rk3588_dist "
19- [ ' _preflight' = " _$1 " ] && exit 0
14+ local dist_next=' trixie'
2015
16+ # check for media file
2117 test -e " $media " || { echo " error: unable to find media: $media " ; exit 1; }
2218 trap " on_exit $mountpt " EXIT INT QUIT ABRT TERM
2319
20+ # download file dependencies
21+ get_deps " $dist_next "
22+ [ ' _deps_only' = " _$1 " ] && exit 0
23+
2424 # nanopi-r5c
25- setup_image " $media " " $mountpt " ' nanopi-r5c ' ' rk3568-nanopi-r5c.dtb' " $kern_rk3568_dist " " $lrev " " $outbin " ' nanopi_hook'
25+ setup_image " $media " " $mountpt " ' stable ' ' rk3568-nanopi-r5c.dtb' " $outbin " ' nanopi_hook'
2626
2727 # nanopi-r5s
28- setup_image " $media " " $mountpt " ' nanopi-r5s ' ' rk3568-nanopi-r5s.dtb' " $kern_rk3568_dist " " $lrev " " $outbin " ' nanopi_hook'
28+ setup_image " $media " " $mountpt " ' stable ' ' rk3568-nanopi-r5s.dtb' " $outbin " ' nanopi_hook'
2929
3030 # odroid-m1
31- setup_image " $media " " $mountpt " ' odroid-m1 ' ' rk3568-odroid-m1.dtb' " $kern_rk3568_dist " " $lrev " " $outbin "
31+ setup_image " $media " " $mountpt " ' stable ' ' rk3568-odroid-m1.dtb' " $outbin "
3232
3333 # radxa-e25
34- setup_image " $media " " $mountpt " ' radxa-e25 ' ' rk3568-radxa-e25.dtb' " $kern_rk3568_dist " " $lrev " " $outbin "
34+ setup_image " $media " " $mountpt " ' stable ' ' rk3568-radxa-e25.dtb' " $outbin "
3535
3636 # nanopc-t6
37- setup_image " $media " " $mountpt " ' nanopc-t6 ' ' rk3588-nanopc-t6.dtb' " $kern_rk3588_dist " " $lrev " " $ outbin" ' sid_inindev_kern_hook '
37+ setup_image " $media " " $mountpt " " $dist_next " ' rk3588-nanopc-t6.dtb' " $outbin "
3838
3939 # orangepi-5
40- setup_image " $media " " $mountpt " ' orangepi-5 ' ' rk3588s-orangepi-5.dtb' " $kern_rk3588_dist " " $lrev " " $ outbin" ' sid_kern_hook '
40+ setup_image " $media " " $mountpt " " $dist_next " ' rk3588s-orangepi-5.dtb' " $outbin "
4141
4242 # orangepi-5-plus
43- setup_image " $media " " $mountpt " ' orangepi-5-plus ' ' rk3588-orangepi-5-plus.dtb' " $kern_rk3588_dist " " $lrev " " $ outbin" ' sid_kern_hook '
43+ setup_image " $media " " $mountpt " " $dist_next " ' rk3588-orangepi-5-plus.dtb' " $outbin "
4444
4545 # rock-5b
46- setup_image " $media " " $mountpt " ' rock-5b ' ' rk3588-rock-5b.dtb' " $kern_rk3588_dist " " $lrev " " $ outbin" ' sid_inindev_kern_hook '
46+ setup_image " $media " " $mountpt " " $dist_next " ' rk3588-rock-5b.dtb' " $outbin "
4747}
4848
4949setup_image () {
5050 local media=" $1 "
5151 local mountpt=" $2 "
52- local board =" $3 "
52+ local kern_dist =" $3 "
5353 local dtb=" $4 "
54- local kdeb =" ${5} .deb "
55- local lrev =" ${6 :- 0} "
56- local outbin= " ${7 :- outbin} "
57- local hook =" $8 "
54+ local outbin =" ${5:- outbin} "
55+ local hook =" $6 "
56+
57+ local board =" ${dtb #* -} " ; board= " ${board % . * } "
5858
5959 echo " ${h1} configuring debian image for board ${yel} $board ${rst}${bld} ...${rst} "
6060
@@ -68,15 +68,22 @@ setup_image() {
6868 set_hostname " $mountpt " " $board "
6969
7070 # install the kernel
71- install_kernel " $mountpt " " downloads/kernels/$kdeb "
71+ [ ' _stable' != " _$kern_dist " ] && dist_kern_hook " $mountpt " " $kern_dist "
72+ sudo chroot " $mountpt " /usr/bin/apt update
73+ sudo chroot " $mountpt " /usr/bin/apt -y upgrade
74+ sudo chroot " $mountpt " /usr/bin/apt -y install linux-image-arm64
75+ sudo chroot " $mountpt " /usr/bin/apt clean
7276
7377 # the final image name is based on distribution name
7478 local img_name=' '
75- get_img_name " $mountpt " " $board " " $lrev "
79+ get_img_name " $mountpt " " $board "
7680
7781 # post setup hook
7882 [ -n " $hook " ] && " $hook " " $media " " $mountpt " " $board "
7983
84+ # cleanup ssh keys
85+ sudo rm -fv " $mountpt /etc/ssh/ssh_host_" *
86+
8087 unmount_media " $mountpt "
8188
8289 # install u-boot
@@ -98,68 +105,41 @@ nanopi_hook() {
98105 sudo sed -i " /setup for expand fs/e cat configs/network_${board} .cfg" " $mountpt /etc/rc.local"
99106}
100107
101- sid_kern_hook () {
102- local media=" $1 "
103- local mountpt=" $2 "
104- local board=" $3 "
108+ dist_kern_hook () {
109+ local mountpt=" $1 "
110+ local dist=" $2 "
105111
106- cat << -EOF | sudo tee "$mountpt /etc/apt/preferences.d/99-sid -kernel"
112+ cat << -EOF | sudo tee "$mountpt /etc/apt/preferences.d/99-${dist} -kernel"
107113 Package: *
108114 Pin: release n=bookworm*
109115 Pin-Priority: 600
110116
111117 Package: linux-image-arm64
112- Pin: release n=sid
113- Pin-Priority: 900
118+ Pin: release n=$dist
119+ Pin-Priority: 800
114120
115121 EOF
116122
117123 cat << -EOF | sudo tee -a "$mountpt /etc/apt/sources.list"
118124 # linux-image*
119- deb http://deb.debian.org/debian sid main
120- #deb-src http://deb.debian.org/debian sid main
125+ deb http://deb.debian.org/debian $dist main
126+ #deb-src http://deb.debian.org/debian $dist main
121127
122128 EOF
123129}
124130
125- sid_inindev_kern_hook () {
126- local media=" $1 "
127- local mountpt=" $2 "
128- local board=" $3 "
129-
130- sid_kern_hook " $media " " $mountpt " " $board "
131-
132- # install the inindev kernel
133- install_kernel " $mountpt " " downloads/kernels/inindev.deb"
134- }
135-
136- install_kernel () {
137- local mountpt=" $1 "
138- local kdebpath=" $2 "
139-
140- local kfpath=" $( realpath " $kdebpath " ) "
141- local kfname=" $( basename " $kfpath " ) "
142- local kdir=" $( dirname " $kfpath " ) "
143-
144- echo " ${h1} installing kernel: $kfname ${rst} "
145- sudo mount -vo bind " $kdir " " $mountpt /mnt"
146- sudo chroot " $mountpt " " /usr/bin/dpkg" -i " /mnt/$kfname "
147- sudo umount " $mountpt /mnt"
148- echo " kernel installed successfully"
149- }
150-
151131set_dtb () {
152132 local mountpt=" $1 "
153133 local dtbname=" $2 "
154134
135+ # some kernels require an external dtb
136+ [ -e " downloads/dtbs/$dtbname " ] && sudo install -vm 644 " downloads/dtbs/$dtbname " " $mountpt /boot" || true
137+
155138 echo " ${h1} installing device tree: $dtbname ${rst} "
156139 sudo sed -i " s/<DTB_FILE>/$dtbname /g" " $mountpt /etc/kernel/postinst.d/dtb_cp"
157140 sudo sed -i " s/<DTB_FILE>/$dtbname /g" " $mountpt /etc/kernel/postinst.d/kernel_chmod"
158141 sudo sed -i " s/<DTB_FILE>/$dtbname /g" " $mountpt /etc/kernel/postrm.d/dtb_rm"
159142 sudo sed -i " s/<DTB_FILE>/$dtbname /g" " $mountpt /boot/mk_extlinux"
160-
161- # some kernels require an external dtb
162- [ -e " downloads/dtbs/$dtbname " ] && sudo install -vm 644 " downloads/dtbs/$dtbname " " $mountpt /boot" || true
163143}
164144
165145set_hostname () {
@@ -178,20 +158,14 @@ set_hostname() {
178158get_img_name () {
179159 local mountpt=" $1 "
180160 local board=" $2 "
181- local lrev=" ${3:- 0} "
182161
183162 # <board>_<dist>-<ver>_<lrev>.img
184163 # odroid-m1_bookworm-12.4-1.img
185164 local dist=$( cat " $mountpt /etc/os-release" | sed -rn ' s/VERSION_CODENAME=(.*)/\1/p' )
186165 local ver=$( cat " $mountpt /etc/debian_version" )
187166 [ ' trixie/sid' = " $ver " ] && ver=' 13'
188167
189- img_name=" ${board} _${dist} -${ver} "
190- if [ $lrev -gt 0 ]; then
191- img_name=" ${img_name} -${lrev} "
192- fi
193-
194- img_name=" ${img_name} .img"
168+ img_name=" ${board} _${dist} -${ver} .img"
195169}
196170
197171install_uboot () {
@@ -204,37 +178,20 @@ install_uboot() {
204178 echo " u-boot installed successfully"
205179}
206180
207- preflight_check () {
208- local kern_rk3568_dist=" $1 "
209- local kern_rk3588_dist=" $2 "
181+ get_deps () {
182+ local dist_next=" $1 "
210183
211- # download kernels
184+ # download kernel
212185 if ! [ -d ' downloads/kernels' ]; then
213- echo " ${h1} downloading debian kernels...${rst} "
214- sh ' scripts/get_deb_kernel.sh' " $kern_rk3568_dist "
215- sh ' scripts/get_deb_kernel.sh' " $kern_rk3588_dist "
216- fi
217-
218- # copy inindev kernel from local if available
219- if [ -d ' ../linux-rockchip/kernel-' * ]; then
220- local lkpath=$( ls ' ../linux-rockchip/kernel-' * ' /linux-image-' * ' -arm64_' * ' _arm64.deb' 2> /dev/null)
221- if [ -e " $lkpath " ]; then
222- inindev_kern=$( basename " $lkpath " )
223- echo " ${h1} copying inindev kernel from local...${rst} "
224- cp -uv " $lkpath " ' downloads/kernels'
225- ln -sfv " $( basename " $lkpath " ) " ' downloads/kernels/inindev.deb'
226- fi
186+ echo " ${h1} downloading debian kernel...${rst} "
187+ mkdir -p " downloads/kernels"
188+ sh ' scripts/get_deb_kernel.sh' " $dist_next "
227189 fi
228190
229- # if ! [ -e "downloads/kernels/$inindev_kern" ]; then
230- # echo "${h1}downloading inindev kernel...${rst}"
231- # wget -P 'downloads/kernels' "https://github.com/inindev/linux-rockchip/releases/latest/download/$inindev_kern"
232- # fi
233-
234- # extract rk3568 dtbs from the rk3588 kernel
191+ # extract rk3568 dtbs from the kernel deb
235192 if ! [ -d " downloads/dtbs" ]; then
236- echo " ${h1} extracting rk3568 dtb files from $kern_rk3588_dist kernel package...${rst} "
237- sh ' scripts/extract_dtbs.sh' " downloads/kernels/${kern_rk3588_dist } .deb" ' rk3568*.dtb'
193+ echo " ${h1} extracting rk3568 dtb files from $dist_next kernel package...${rst} "
194+ sh ' scripts/extract_dtbs.sh' " downloads/kernels/${dist_next } .deb" ' rk3568*.dtb'
238195 # use rk3568-odroid-m1.dtb from the bookworm debian kernel package
239196 rm -f ' downloads/dtbs/rk3568-odroid-m1.dtb'
240197 fi
0 commit comments