tchromebook-veyron.sh - arm-sdk - os build toolkit for various embedded devices
HTML git clone https://git.parazyd.org/arm-sdk
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
tchromebook-veyron.sh (8672B)
---
1 #!/usr/bin/env zsh
2 # Copyright (c) 2016-2021 Ivan J. <parazyd@dyne.org>
3 # This file is part of arm-sdk
4 #
5 # This source code is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This software is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this source code. If not, see <http://www.gnu.org/licenses/>.
17
18 ## kernel build script for Acer Chromebook boards
19
20 ## settings & config
21 vars+=(device_name arch size parted_type)
22 vars+=(gitkernel gitbranch)
23 arrs+=(custmodules)
24 arrs+=(gpt_root gpt_boot bootfs)
25
26 device_name="chromeveyron"
27 arch="armhf"
28 size=1730
29 #inittab=""
30
31 parted_type="gpt"
32 bootfs="vfat"
33 rootfs="ext4"
34 gpt_boot=(8192 32768)
35 gpt_root=(40960)
36 bootfs="none"
37
38 extra_packages+=(abootimg cgpt u-boot-tools)
39 extra_packages+=(vboot-utils vboot-kernel-utils)
40 extra_packages+=(laptop-mode-tools usbutils)
41 custmodules=()
42
43 gitkernel="https://chromium.googlesource.com/chromiumos/third_party/kernel"
44 gitbranch="chromeos-3.14"
45
46
47 prebuild() {
48 fn prebuild
49 req=(device_name strapdir)
50 ckreq || return 1
51
52 notice "executing $device_name prebuild"
53
54 copy-root-overlay
55
56 mkdir -p $R/tmp/kernels/$device_name
57 }
58
59 postbuild() {
60 fn postbuild
61
62 notice "executing $device_name postbuild"
63
64 sudo dd if=$workdir/kernel.bin of=$bootpart || { die "unable to dd to $bootpart"; zerr }
65
66 postbuild-clean
67 }
68
69 build_kernel_armhf() {
70 fn build_kernel_armhf
71 req=(R arch device_name gitkernel gitbranch MAKEOPTS)
72 req+=(strapdir)
73 req+=(loopdevice)
74 ckreq || return 1
75
76 notice "building $arch kernel"
77
78 prebuild || zerr
79
80 get-kernel-sources
81 pushd $R/tmp/kernels/$device_name/${device_name}-linux
82
83 notice "patching kernel"
84 for i in $R/extra/patches/linux-chromeveyron-patches/*.patch ; do
85 patch -p1 < "$i"
86 done
87
88 #WIFIVERSION="-3.8" make multi_v7_defconfig || zerr
89 copy-kernel-config
90 make \
91 $MAKEOPTS \
92 ARCH=arm \
93 CROSS_COMPILE=$compiler \
94 WIFIVERSION="-3.8"
95 make \
96 $MAKEOPTS \
97 ARCH=arm \
98 CROSS_COMPILE=$compiler \
99 WIFIVERSION="-3.8" \
100 dtbs || zerr
101 sudo -E PATH="$PATH" \
102 make \
103 ARCH=arm \
104 CROSS_COMPILE=$compiler \
105 WIFIVERSION="-3.8" \
106 INSTALL_MOD_PATH=$strapdir \
107 modules_install || zerr
108 popd
109
110 #sudo rm -rf $strapdir/lib/firmware
111 #get-kernel-firmware
112 #sudo cp -rav $R/tmp/linux-firmware $strapdir/lib/firmware
113
114 pushd $R/tmp/kernels/$device_name/${device_name}-linux/arch/arm/boot
115 # {{{ kernel-veyron.its
116 cat << EOF | sudo tee kernel-veyron.its >/dev/null
117 /dts-v1/;
118 / {
119 description = "Chrome OS kernel image with one or more FDT blobs";
120 images {
121 kernel@1{
122 description = "kernel";
123 data = /incbin/("zImage");
124 type = "kernel_noload";
125 arch = "arm";
126 os = "linux";
127 compression = "none";
128 load = <0>;
129 entry = <0>;
130 };
131 fdt@1{
132 description = "rk3288-brain-rev0.dtb";
133 data = /incbin/("dts/rk3288-brain-rev0.dtb");
134 type = "flat_dt";
135 arch = "arm";
136 compression = "none";
137 hash@1{
138 algo = "sha1";
139 };
140 };
141 fdt@2{
142 description = "rk3288-jaq-rev1.dtb";
143 data = /incbin/("dts/rk3288-jaq-rev1.dtb");
144 type = "flat_dt";
145 arch = "arm";
146 compression = "none";
147 hash@1{
148 algo = "sha1";
149 };
150 };
151 fdt@3{
152 description = "rk3288-nicky-rev0.dtb";
153 data = /incbin/("dts/rk3288-nicky-rev0.dtb");
154 type = "flat_dt";
155 arch = "arm";
156 compression = "none";
157 hash@1{
158 algo = "sha1";
159 };
160 };
161 fdt@4{
162 description = "rk3288-danger-rev0.dtb";
163 data = /incbin/("dts/rk3288-danger-rev0.dtb");
164 type = "flat_dt";
165 arch = "arm";
166 compression = "none";
167 hash@1{
168 algo = "sha1";
169 };
170 };
171 fdt@5{
172 description = "rk3288-jerry-rev2.dtb";
173 data = /incbin/("dts/rk3288-jerry-rev2.dtb");
174 type = "flat_dt";
175 arch = "arm";
176 compression = "none";
177 hash@1{
178 algo = "sha1";
179 };
180 };
181 fdt@6{
182 description = "rk3288-rialto-rev0.dtb";
183 data = /incbin/("dts/rk3288-rialto-rev0.dtb");
184 type = "flat_dt";
185 arch = "arm";
186 compression = "none";
187 hash@1{
188 algo = "sha1";
189 };
190 };
191 fdt@7{
192 description = "rk3288-danger-rev1.dtb";
193 data = /incbin/("dts/rk3288-danger-rev1.dtb");
194 type = "flat_dt";
195 arch = "arm";
196 compression = "none";
197 hash@1{
198 algo = "sha1";
199 };
200 };
201 fdt@8{
202 description = "rk3288-jerry-rev3.dtb";
203 data = /incbin/("dts/rk3288-jerry-rev3.dtb");
204 type = "flat_dt";
205 arch = "arm";
206 compression = "none";
207 hash@1{
208 algo = "sha1";
209 };
210 };
211 fdt@9{
212 description = "rk3288-speedy.dtb";
213 data = /incbin/("dts/rk3288-speedy.dtb");
214 type = "flat_dt";
215 arch = "arm";
216 compression = "none";
217 hash@1{
218 algo = "sha1";
219 };
220 };
221 fdt@10{
222 description = "rk3288-evb-act8846.dtb";
223 data = /incbin/("dts/rk3288-evb-act8846.dtb");
224 type = "flat_dt";
225 arch = "arm";
226 compression = "none";
227 hash@1{
228 algo = "sha1";
229 };
230 };
231 fdt@11{
232 description = "rk3288-mickey-rev0.dtb";
233 data = /incbin/("dts/rk3288-mickey-rev0.dtb");
234 type = "flat_dt";
235 arch = "arm";
236 compression = "none";
237 hash@1{
238 algo = "sha1";
239 };
240 };
241 fdt@12{
242 description = "rk3288-speedy-rev1.dtb";
243 data = /incbin/("dts/rk3288-speedy-rev1.dtb");
244 type = "flat_dt";
245 arch = "arm";
246 compression = "none";
247 hash@1{
248 algo = "sha1";
249 };
250 };
251 fdt@13{
252 description = "rk3288-evb-rk808.dtb";
253 data = /incbin/("dts/rk3288-evb-rk808.dtb");
254 type = "flat_dt";
255 arch = "arm";
256 compression = "none";
257 hash@1{
258 algo = "sha1";
259 };
260 };
261 fdt@14{
262 description = "rk3288-mighty-rev1.dtb";
263 data = /incbin/("dts/rk3288-mighty-rev1.dtb");
264 type = "flat_dt";
265 arch = "arm";
266 compression = "none";
267 hash@1{
268 algo = "sha1";
269 };
270 };
271 fdt@15{
272 description = "rk3288-thea-rev0.dtb";
273 data = /incbin/("dts/rk3288-thea-rev0.dtb");
274 type = "flat_dt";
275 arch = "arm";
276 compression = "none";
277 hash@1{
278 algo = "sha1";
279 };
280 };
281 fdt@16{
282 description = "rk3288-gus-rev1.dtb";
283 data = /incbin/("dts/rk3288-gus-rev1.dtb");
284 type = "flat_dt";
285 arch = "arm";
286 compression = "none";
287 hash@1{
288 algo = "sha1";
289 };
290 };
291 fdt@17{
292 description = "rk3288-minnie-rev0.dtb";
293 data = /incbin/("dts/rk3288-minnie-rev0.dtb");
294 type = "flat_dt";
295 arch = "arm";
296 compression = "none";
297 hash@1{
298 algo = "sha1";
299 };
300 };
301
302 };
303 configurations {
304 default = "conf@1";
305 conf@1{
306 kernel = "kernel@1";
307 fdt = "fdt@1";
308 };
309 conf@2{
310 kernel = "kernel@1";
311 fdt = "fdt@2";
312 };
313 conf@3{
314 kernel = "kernel@1";
315 fdt = "fdt@3";
316 };
317 conf@4{
318 kernel = "kernel@1";
319 fdt = "fdt@4";
320 };
321 conf@5{
322 kernel = "kernel@1";
323 fdt = "fdt@5";
324 };
325 conf@6{
326 kernel = "kernel@1";
327 fdt = "fdt@6";
328 };
329 conf@7{
330 kernel = "kernel@1";
331 fdt = "fdt@7";
332 };
333 conf@8{
334 kernel = "kernel@1";
335 fdt = "fdt@8";
336 };
337 conf@9{
338 kernel = "kernel@1";
339 fdt = "fdt@9";
340 };
341 conf@10{
342 kernel = "kernel@1";
343 fdt = "fdt@10";
344 };
345 conf@11{
346 kernel = "kernel@1";
347 fdt = "fdt@11";
348 };
349 conf@12{
350 kernel = "kernel@1";
351 fdt = "fdt@12";
352 };
353 conf@13{
354 kernel = "kernel@1:";
355 fdt = "fdt@13";
356 };
357 conf@14{
358 kernel = "kernel@1";
359 fdt = "fdt@14";
360 };
361 conf@15{
362 kernel = "kernel@1";
363 fdt = "fdt@15";
364 };
365 conf@16{
366 kernel = "kernel@1";
367 fdt = "fdt@16";
368 };
369 conf@17{
370 kernel = "kernel@1";
371 fdt = "fdt@17";
372 };
373 };
374 };
375 EOF
376 # }}}
377 notice "making veyron-kernel image"
378 mkimage -D "-I dts -O dtb -p 2048" -f kernel-veyron.its veyron-kernel || zerr
379
380 ## BEHOLD THE POWER OF PARTUUID/PARTNROFF
381 print "noinitrd console=tty1 quiet root=PARTUUID=%U/PARTNROFF=1 rootwait rw lsm.module_locking=0 net.ifnames=0 rootfstype=ext4" > cmdline
382
383 sudo dd if=/dev/zero of=bootloader.bin bs=512 count=1 || { die "unable to dd bootloader"; zerr }
384
385 vbutil_kernel \
386 --arch arm \
387 --pack $workdir/kernel.bin \
388 --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
389 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
390 --version 1 \
391 --config cmdline \
392 --bootloader bootloader.bin \
393 --vmlinuz veyron-kernel || zerr
394 popd
395
396 pushd $R/tmp/kernels/$device_name/${device_name}-linux
397 make mrproper
398 #WIFIVERSION="-3.8" make multi_v7_defconfig || zerr
399 copy-kernel-config
400 sudo -E PATH="$PATH" \
401 make \
402 $MAKEOPTS \
403 ARCH=arm \
404 CROSS_COMPILE=$compiler \
405 WIFIVERSION="-3.8" \
406 modules_prepare || zerr
407 popd
408
409 postbuild || zerr
410 }