tchromebook-acer.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-acer.sh (6989B)
---
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="chromeacer"
27 arch="armhf"
28 size=1730
29 #inittab=""
30
31 parted_type="gpt"
32 gpt_boot=(8192 32768)
33 gpt_root=(40960)
34 bootfs="none"
35
36 export PATH="$R/gcc/linaro-armhf-unicorns/bin:$PATH"
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.10"
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 notice "grabbing some coreboot stuff"
65 git clone "https://chromium.googlesource.com/chromiumos/third_party/coreboot" "$R/tmp/chromiumos-coreboot"
66 pushd $R/tmp/chromiumos-coreboot
67 notice "copying coreboot tegra"
68 git checkout 071167b667685c26106641e6899984c7bd91e84b
69
70 make GCC_PREFIX=${compiler} -C src/soc/nvidia/tegra124/lp0 || zerr
71 sudo mkdir -p $strapdir/lib/firmware/tegra12x
72 sudo cp -fv src/soc/nvidia/tegra124/lp0/tegra_lp0_resume.fw $strapdir/lib/firmware/tegra/12x/
73 popd
74
75 sudo dd if=$workdir/kernel.bin of=$bootpart || { die "unable to dd to $bootpart"; zerr }
76
77 postbuild-clean
78 }
79
80 build_kernel_armhf() {
81 fn build_kernel_armhf
82 req=(R arch device_name gitkernel gitbranch MAKEOPTS)
83 req+=(strapdir)
84 req+=(loopdevice)
85 ckreq || return 1
86
87 notice "building $arch kernel"
88
89 prebuild || zerr
90
91
92 get-kernel-sources
93 pushd $R/tmp/kernels/$device_name/${device_name}-linux
94 #WIFIVERSION="-3.8" make exynos_defconfig || zerr
95 copy-kernel-config
96 for i in $R/extra/patches/linux-chromeacer-patches/*.patch ; do
97 patch -p1 < $i
98 done
99 mkdir -p firmware/nvidia/tegra124/
100 cp -f $R/extra/chromebook-acer/xusb.bin firmware/nvidia/tegra124/
101 make \
102 $MAKEOPTS \
103 ARCH=arm \
104 CROSS_COMPILE=$compiler \
105 WIFIVERSION="-3.8" || zerr
106 make \
107 $MAKEOPTS \
108 ARCH=arm \
109 CROSS_COMPILE=$compiler \
110 WIFIVERSION="-3.8"\
111 dtbs || zerr
112 sudo -E PATH="$PATH" \
113 make \
114 $MAKEOPTS \
115 ARCH=arm \
116 CROSS_COMPILE=$compiler \
117 WIFIVERSION="-3.8" \
118 INSTALL_MOD_PATH=$strapdir \
119 modules_install || zerr
120 popd
121
122 #sudo rm -rf $strapdir/lib/firmware
123 #get-kernel-firmware
124 #sudo cp $CPVERBOSE -ra $R/tmp/linux-firmware $strapdir/lib/firmware
125
126 pushd $R/tmp/kernels/$device_name/${device_name}-linux/arch/arm/boot
127 ## {{{ kernel-nyan.its
128 cat << EOF | sudo tee kernel-nyan.its >/dev/null
129 /dts-v1/;
130 / {
131 description = "Chrome OS kernel image with one or more FDT blobs";
132 #address-cells = <1>;
133 images {
134 kernel@1{
135 description = "kernel";
136 data = /incbin/("zImage");
137 type = "kernel_noload";
138 arch = "arm";
139 os = "linux";
140 compression = "none";
141 load = <0>;
142 entry = <0>;
143 };
144 fdt@1{
145 description = "tegra124-nyan-big-rev0_2.dtb";
146 data = /incbin/("dts/tegra124-nyan-big-rev0_2.dtb");
147 type = "flat_dt";
148 arch = "arm";
149 compression = "none";
150 hash@1{
151 algo = "sha1";
152 };
153 };
154 fdt@2{
155 description = "tegra124-nyan-big-rev3_7.dtb";
156 data = /incbin/("dts/tegra124-nyan-big-rev3_7.dtb");
157 type = "flat_dt";
158 arch = "arm";
159 compression = "none";
160 hash@1{
161 algo = "sha1";
162 };
163 };
164 fdt@3{
165 description = "tegra124-nyan-big-rev8_9.dtb";
166 data = /incbin/("dts/tegra124-nyan-big-rev8_9.dtb");
167 type = "flat_dt";
168 arch = "arm";
169 compression = "none";
170 hash@1{
171 algo = "sha1";
172 };
173 };
174 fdt@4{
175 description = "tegra124-nyan-blaze.dtb";
176 data = /incbin/("dts/tegra124-nyan-blaze.dtb");
177 type = "flat_dt";
178 arch = "arm";
179 compression = "none";
180 hash@1{
181 algo = "sha1";
182 };
183 };
184 fdt@5{
185 description = "tegra124-nyan-rev0.dtb";
186 data = /incbin/("dts/tegra124-nyan-rev0.dtb");
187 type = "flat_dt";
188 arch = "arm";
189 compression = "none";
190 hash@1{
191 algo = "sha1";
192 };
193 };
194 fdt@6{
195 description = "tegra124-nyan-rev1.dtb";
196 data = /incbin/("dts/tegra124-nyan-rev1.dtb");
197 type = "flat_dt";
198 arch = "arm";
199 compression = "none";
200 hash@1{
201 algo = "sha1";
202 };
203 };
204 fdt@7{
205 description = "tegra124-nyan-kitty-rev0_3.dtb";
206 data = /incbin/("dts/tegra124-nyan-kitty-rev0_3.dtb");
207 type = "flat_dt";
208 arch = "arm";
209 compression = "none";
210 hash@1{
211 algo = "sha1";
212 };
213 };
214 fdt@8{
215 description = "tegra124-nyan-kitty-rev8.dtb";
216 data = /incbin/("dts/tegra124-nyan-kitty-rev8.dtb");
217 type = "flat_dt";
218 arch = "arm";
219 compression = "none";
220 hash@1{
221 algo = "sha1";
222 };
223 };
224 };
225 configurations {
226 default = "conf@1";
227 conf@1{
228 kernel = "kernel@1";
229 fdt = "fdt@1";
230 };
231 conf@2{
232 kernel = "kernel@1";
233 fdt = "fdt@2";
234 };
235 conf@3{
236 kernel = "kernel@1";
237 fdt = "fdt@3";
238 };
239 conf@4{
240 kernel = "kernel@1";
241 fdt = "fdt@4";
242 };
243 conf@5{
244 kernel = "kernel@1";
245 fdt = "fdt@5";
246 };
247 conf@6{
248 kernel = "kernel@1";
249 fdt = "fdt@6";
250 };
251 conf@7{
252 kernel = "kernel@1";
253 fdt = "fdt@7";
254 };
255 conf@8{
256 kernel = "kernel@1";
257 fdt = "fdt@8";
258 };
259 };
260 };
261 EOF
262 ## }}}
263 notice "making kernel-nyan image"
264 mkimage -f kernel-nyan.its nyan-big-kernel || zerr
265
266 ## BEHOLD THE POWER OF PARTUUID/PARTNROFF
267 print "noinitrd console=tty1 quiet root=PARTUUID=%U/PARTNROFF=1 rootwait rw lsm.module_locking=0 net.ifnames=0 rootfstype=ext4" > cmdline
268
269 sudo dd if=/dev/zero of=bootloader.bin bs=512 count=1 || { die "unable to dd bootloader"; zerr }
270
271 vbutil_kernel --arch arm --pack $workdir/kernel.bin \
272 --keyblock /usr/share/vboot/devkeys/kernel.keyblock \
273 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk \
274 --version 1 \
275 --config cmdline \
276 --bootloader bootloader.bin \
277 --vmlinuz nyan-big-kernel || zerr
278 popd
279
280 pushd $R/tmp/kernels/$device_name/${device_name}-linux
281 make mrproper
282 #WIFIVERSION="-3.8" make exynos_defconfig || zerr
283 copy-kernel-config
284 sudo -E PATH="$PATH" \
285 make \
286 $MAKEOPTS \
287 ARCH=arm \
288 CROSS_COMPILE=$compiler \
289 WIFIVERSION="-3.8" \
290 modules_prepare || zerr
291 popd
292
293 postbuild || zerr
294 }