@@ -19,11 +19,11 @@ kernsha256="f8d2a4fe938ff7faa565765a52e347e518a0712ca6ddd41b198bd9cc1626a724 li
19
19
# Free space on rootfs in MiB
20
20
free_space=" 500"
21
21
22
- rootdir=` pwd`
23
- basedir=` pwd` /pinebook-pro
22
+ rootdir=$( pwd)
23
+ basedir=$( pwd) /pinebook-pro
24
24
25
- mkdir -p ${basedir}
26
- cd ${basedir}
25
+ mkdir -p " ${basedir} "
26
+ cd " ${basedir} "
27
27
28
28
export DEBIAN_FRONTEND=" noninteractive"
29
29
@@ -56,7 +56,7 @@ cd ../u-boot-${ubootver}
56
56
patch -Np1 -i " ${rootdir} /pinebookpro/patches/uboot/0001-Add-regulator-needed-for-usage-of-USB.patch"
57
57
patch -Np1 -i " ${rootdir} /pinebookpro/patches/uboot/0002-Correct-boot-order-to-be-USB-SD-eMMC.patch"
58
58
patch -Np1 -i " ${rootdir} /pinebookpro/patches/uboot/0003-rk3399-light-pinebook-power-and-standby-leds-during-early-boot.patch"
59
- sed -i s/ " CONFIG_BOOTDELAY=3" / " CONFIG_BOOTDELAY=0" /g configs/pinebook-pro-rk3399_defconfig
59
+ sed -i ' s/ CONFIG_BOOTDELAY=3/ CONFIG_BOOTDELAY=0/g ' configs/pinebook-pro-rk3399_defconfig
60
60
61
61
unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
62
62
CROSS_COMPILE=aarch64-linux-gnu- make pinebook-pro-rk3399_defconfig
@@ -75,29 +75,29 @@ work_dir="${basedir}/elementary-${architecture}"
75
75
debootstrap --foreign --arch $architecture $codename elementary-$architecture http://ports.ubuntu.com/ubuntu-ports
76
76
77
77
# Add the QEMU emulator for running ARM executables
78
- cp /usr/bin/qemu-arm-static ${work_dir} /usr/bin/
78
+ cp /usr/bin/qemu-arm-static " ${work_dir} /usr/bin/"
79
79
80
80
# Run the second stage of the bootstrap in QEMU
81
- LANG=C chroot ${work_dir} /debootstrap/debootstrap --second-stage
81
+ LANG=C chroot " ${work_dir} " /debootstrap/debootstrap --second-stage
82
82
83
83
# Add the rest of the ubuntu repos
84
- cat << EOF > ${work_dir} /etc/apt/sources.list
84
+ cat << EOF > " ${work_dir} /etc/apt/sources.list"
85
85
deb http://ports.ubuntu.com/ubuntu-ports $codename main restricted universe multiverse
86
86
deb http://ports.ubuntu.com/ubuntu-ports $codename -updates main restricted universe multiverse
87
87
EOF
88
88
89
89
# Copy in the elementary PPAs/keys/apt config
90
- for f in ${rootdir} /etc/config/archives/* .list; do cp -- " $f " " ${work_dir} /etc/apt/sources.list.d/$( basename -- $f ) " ; done
91
- for f in ${rootdir} /etc/config/archives/* .key; do cp -- " $f " " ${work_dir} /etc/apt/trusted.gpg.d/$( basename -- $f ) .asc" ; done
92
- for f in ${rootdir} /etc/config/archives/* .pref; do cp -- " $f " " ${work_dir} /etc/apt/preferences.d/$( basename -- $f ) " ; done
90
+ for f in " ${rootdir} " /etc/config/archives/* .list; do cp -- " $f " " ${work_dir} /etc/apt/sources.list.d/$( basename -- " $f " ) " ; done
91
+ for f in " ${rootdir} " /etc/config/archives/* .key; do cp -- " $f " " ${work_dir} /etc/apt/trusted.gpg.d/$( basename -- " $f " ) .asc" ; done
92
+ for f in " ${rootdir} " /etc/config/archives/* .pref; do cp -- " $f " " ${work_dir} /etc/apt/preferences.d/$( basename -- " $f " ) " ; done
93
93
94
94
# Set codename/channel in added repos
95
- sed -i " s/@CHANNEL/$channel /" ${work_dir} /etc/apt/sources.list.d/* .list*
96
- sed -i " s/@BASECODENAME/$codename /" ${work_dir} /etc/apt/sources.list.d/* .list*
95
+ sed -i " s/@CHANNEL/$channel /" " ${work_dir} " /etc/apt/sources.list.d/* .list*
96
+ sed -i " s/@BASECODENAME/$codename /" " ${work_dir} " /etc/apt/sources.list.d/* .list*
97
97
98
- echo " elementary" > ${work_dir} /etc/hostname
98
+ echo " elementary" > " ${work_dir} /etc/hostname"
99
99
100
- cat << EOF > ${work_dir} /etc/hosts
100
+ cat << EOF > " ${work_dir} /etc/hosts"
101
101
127.0.0.1 elementary localhost
102
102
::1 localhost ip6-localhost ip6-loopback
103
103
fe00::0 ip6-localnet
@@ -106,12 +106,12 @@ ff02::1 ip6-allnodes
106
106
ff02::2 ip6-allrouters
107
107
EOF
108
108
109
- mount -t proc proc ${work_dir} /proc
110
- mount -o bind /dev/ ${work_dir} /dev/
111
- mount -o bind /dev/pts ${work_dir} /dev/pts
109
+ mount -t proc proc " ${work_dir} /proc"
110
+ mount -o bind /dev/ " ${work_dir} /dev/"
111
+ mount -o bind /dev/pts " ${work_dir} /dev/pts"
112
112
113
113
# Make a third stage that installs all of the metapackages
114
- cat << EOF > ${work_dir} /third-stage
114
+ cat << EOF > " ${work_dir} /third-stage"
115
115
#!/bin/bash
116
116
apt-get update
117
117
apt-get --yes upgrade
@@ -123,8 +123,8 @@ apt-get --yes remove irqbalance
123
123
rm -f /third-stage
124
124
EOF
125
125
126
- chmod +x ${work_dir} /third-stage
127
- LANG=C chroot ${work_dir} /third-stage
126
+ chmod +x " ${work_dir} /third-stage"
127
+ LANG=C chroot " ${work_dir} " /third-stage
128
128
129
129
# Pull in the wifi and bluetooth firmware from manjaro's git repository.
130
130
git clone https://gitlab.manjaro.org/manjaro-arm/packages/community/ap6256-firmware.git
@@ -135,14 +135,14 @@ cp BCM4345C5.hcd brcm/BCM4345C5.hcd
135
135
cp nvram_ap6256.txt brcm/brcmfmac43456-sdio.pine64,pinebook-pro.txt
136
136
cp fw_bcm43456c5_ag.bin brcm/brcmfmac43456-sdio.bin
137
137
cp brcmfmac43456-sdio.clm_blob brcm/brcmfmac43456-sdio.clm_blob
138
- mkdir -p ${work_dir} /lib/firmware/brcm/
139
- cp -a brcm/* ${work_dir} /lib/firmware/brcm/
138
+ mkdir -p " ${work_dir} /lib/firmware/brcm/"
139
+ cp -a brcm/* " ${work_dir} /lib/firmware/brcm/"
140
140
141
141
# Time to build the kernel
142
- cd ${work_dir} /usr/src
142
+ cd " ${work_dir} /usr/src"
143
143
144
144
wget " http://www.kernel.org/pub/linux/kernel/v5.x/linux-${linuxver} .tar.xz"
145
- echo $kernsha256 | sha256sum --check
145
+ echo " $kernsha256 " | sha256sum --check
146
146
147
147
tar xf " linux-${linuxver} .tar.xz"
148
148
rm " linux-${linuxver} .tar.xz"
@@ -169,100 +169,101 @@ patch -Np1 -i "${rootdir}/pinebookpro/patches/kernel/0004-Bluetooth-hci_h5-Add-s
169
169
patch -Np1 -i " ${rootdir} /pinebookpro/patches/kernel/0005-Bluetooth-btrtl-add-support-for-the-RTL8723CS.patch"
170
170
patch -Np1 -i " ${rootdir} /pinebookpro/patches/kernel/0006-bluetooth-btrtl-Make-more-space-for-config-firmware-file-name.patch"
171
171
172
- cp ${rootdir} /pinebookpro/config/kernel/pinebook-pro-5.8.config .config
172
+ cp " ${rootdir} /pinebookpro/config/kernel/pinebook-pro-5.8.config" .config
173
173
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig
174
- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$( nproc) Image modules
174
+ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- " -j$( nproc) " Image modules
175
175
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- DTC_FLAGS=" -@" dtbs
176
176
177
- make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=${work_dir} modules_install
177
+ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=" ${work_dir} " modules_install
178
178
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_DTBS_PATH=" ${work_dir} /boot/dtbs" dtbs_install
179
179
180
- cp arch/arm64/boot/Image ${work_dir} /boot
180
+ cp arch/arm64/boot/Image " ${work_dir} /boot"
181
181
182
182
# clean up because otherwise we leave stuff around that causes external modules
183
183
# to fail to build.
184
184
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper
185
- cp ${rootdir} /pinebookpro/config/kernel/pinebook-pro-5.8.config .config
185
+ cp " ${rootdir} /pinebookpro/config/kernel/pinebook-pro-5.8.config" .config
186
186
187
187
# Fix up the symlink for building external modules
188
188
# kernver is used to we don't need to keep track of what the current compiled
189
189
# version is
190
- kernver=$( ls ${work_dir} /lib/modules)
191
- cd ${work_dir} /lib/modules/${kernver} /
190
+ kernver=$( ls " ${work_dir} /lib/modules" )
191
+ cd " ${work_dir} /lib/modules/${kernver} /"
192
192
rm build
193
193
rm source
194
194
ln -s /usr/src/linux build
195
195
ln -s /usr/src/linux source
196
- cd ${basedir}
196
+ cd " ${basedir} "
197
197
198
198
# Build the initramfs for our kernel
199
- cat << EOF > ${work_dir} /build-initramfs
199
+ cat << EOF > " ${work_dir} /build-initramfs"
200
200
#!/bin/bash
201
201
update-initramfs -c -k ${kernver}
202
202
rm -f /build-initramfs
203
203
EOF
204
204
205
- chmod +x ${work_dir} /build-initramfs
206
- LANG=C chroot ${work_dir} /build-initramfs
205
+ chmod +x " ${work_dir} /build-initramfs"
206
+ LANG=C chroot " ${work_dir} " /build-initramfs
207
207
208
- mkdir ${work_dir} /hooks
209
- cp ${rootdir} /etc/config/hooks/live/* .chroot ${work_dir} /hooks
208
+ mkdir " ${work_dir} /hooks"
209
+ cp " ${rootdir} " /etc/config/hooks/live/* .chroot " ${work_dir} /hooks"
210
210
211
- for f in ${work_dir} /hooks/*
211
+ hook_files=" ${work_dir} /hooks/*"
212
+ for f in $hook_files
212
213
do
213
- base=` basename ${f} `
214
- LANG=C chroot ${work_dir} " /hooks/${base} "
214
+ base=$( basename " ${f} " )
215
+ LANG=C chroot " ${work_dir} " " /hooks/${base} "
215
216
done
216
217
217
218
rm -r " ${work_dir} /hooks"
218
219
219
220
# Calculate the space to create the image.
220
- root_size=$( du -s -B1K ${work_dir} | cut -f1)
221
- raw_size=$(( $((${ free_space} * 1024 )) +${ root_size} ))
221
+ root_size=$( du -s -B1K " ${work_dir} " | cut -f1)
222
+ raw_size=$(( $((free_space* 1024 )) +root_size))
222
223
223
224
# Create the disk and partition it
224
225
echo " Creating image file"
225
226
226
227
# Sometimes fallocate fails if the filesystem or location doesn't support it, fallback to slower dd in this case
227
- if ! fallocate -l $( echo ${raw_size} Ki | numfmt --from=iec-i --to=si --format=%.1f) ${basedir} /${imagename} .img
228
+ if ! fallocate -l " $( echo ${raw_size} Ki | numfmt --from=iec-i --to=si --format=%.1f) " " ${basedir} /${imagename} .img"
228
229
then
229
- dd if=/dev/zero of=${basedir} /${imagename} .img bs=1024 count=${raw_size}
230
+ dd if=/dev/zero of=" ${basedir} /${imagename} .img" bs=1024 count=${raw_size}
230
231
fi
231
232
232
- parted ${imagename} .img --script -- mklabel msdos
233
- parted ${imagename} .img --script -- mkpart primary ext4 32M 100%
233
+ parted " ${imagename} .img" --script -- mklabel msdos
234
+ parted " ${imagename} .img" --script -- mkpart primary ext4 32M 100%
234
235
235
236
# Set the partition variables
236
- loopdevice=` losetup -f --show " ${basedir} " /${imagename} .img`
237
- device=` kpartx -va ${loopdevice} | sed ' s/.*\(loop[0-9]\+\)p.*/\1/g' | head -1`
237
+ loopdevice=$( losetup -f --show " ${basedir} /${imagename} .img" )
238
+ device=$( kpartx -va " ${loopdevice} " | sed ' s/.*\(loop[0-9]\+\)p.*/\1/g' | head -1)
238
239
sleep 5
239
240
device=" /dev/mapper/${device} "
240
- rootp=${device} p1
241
+ rootp=" ${device} p1"
241
242
242
243
# Create file systems
243
- mkfs.ext4 ${rootp}
244
+ mkfs.ext4 " ${rootp} "
244
245
245
246
# Create the dirs for the partitions and mount them
246
- mkdir -p " ${basedir} " /root
247
- mount ${rootp} " ${basedir} " /root
247
+ mkdir -p " ${basedir} /root"
248
+ mount " ${rootp} " " ${basedir} /root"
248
249
249
250
# Create an fstab so that we don't mount / read-only.
250
- UUID=$( blkid -s UUID -o value ${rootp} )
251
- echo " UUID=$UUID / ext4 errors=remount-ro 0 1" >> ${work_dir} /etc/fstab
251
+ UUID=$( blkid -s UUID -o value " ${rootp} " )
252
+ echo " UUID=$UUID / ext4 errors=remount-ro 0 1" >> " ${work_dir} /etc/fstab"
252
253
253
- mkdir ${work_dir} /boot/extlinux/
254
+ mkdir " ${work_dir} /boot/extlinux/"
254
255
255
256
# U-boot config
256
- cat << EOF > ${work_dir} /boot/extlinux/extlinux.conf
257
+ cat << EOF > " ${work_dir} /boot/extlinux/extlinux.conf"
257
258
LABEL elementary ARM
258
259
KERNEL /boot/Image
259
260
FDT /boot/dtbs/rockchip/rk3399-pinebook-pro.dtb
260
261
APPEND initrd=/boot/initrd.img-${kernver} console=ttyS2,1500000 console=tty1 root=UUID=${UUID} rw rootwait video=eDP-1:1920x1080@60 video=HDMI-A-1:1920x1080@60 quiet splash plymouth.ignore-serial-consoles
261
262
EOF
262
- cd ${basedir}
263
+ cd " ${basedir} "
263
264
264
- mkdir -p ${work_dir} /etc/udev/hwdb.d/
265
- cat << EOF > ${work_dir} /etc/udev/hwdb.d/10-usb-kbd.hwdb
265
+ mkdir -p " ${work_dir} /etc/udev/hwdb.d/"
266
+ cat << EOF > " ${work_dir} /etc/udev/hwdb.d/10-usb-kbd.hwdb"
266
267
# Make the sleep and brightness Fn hotkeys work
267
268
evdev:input:b0003v258Ap001E*
268
269
KEYBOARD_KEY_700a5=brightnessdown
@@ -278,8 +279,8 @@ evdev:input:b0003v258Ap001Ee0110-e0,1,2,4,k110,111,112,r0,1,am4,lsfw
278
279
EOF
279
280
280
281
# Mark the keyboard as internal, so that "disable when typing" works for the touchpad
281
- mkdir -p ${work_dir} /etc/libinput/
282
- cat << EOF > ${work_dir} /etc/libinput/local-overrides.quirks
282
+ mkdir -p " ${work_dir} /etc/libinput/"
283
+ cat << EOF > " ${work_dir} /etc/libinput/local-overrides.quirks"
283
284
[Pinebook Pro Keyboard]
284
285
MatchUdevType=keyboard
285
286
MatchBus=usb
@@ -289,40 +290,40 @@ AttrKeyboardIntegration=internal
289
290
EOF
290
291
291
292
# Make resume from suspend work
292
- sed -i s/ " #SuspendState=mem standby freeze" / " SuspendState=freeze" /g ${work_dir} /etc/systemd/sleep.conf
293
+ sed -i ' s/ #SuspendState=mem standby freeze/ SuspendState=freeze/g ' " ${work_dir} /etc/systemd/sleep.conf"
293
294
294
295
# Disable ondemand scheduler so we can default to schedutil
295
- rm ${work_dir} /etc/systemd/system/multi-user.target.wants/ondemand.service
296
+ rm " ${work_dir} /etc/systemd/system/multi-user.target.wants/ondemand.service"
296
297
297
298
# Make sound work
298
- mkdir -p ${work_dir} /var/lib/alsa/
299
- cp ${rootdir} /pinebookpro/config/alsa/asound.state ${work_dir} /var/lib/alsa/
299
+ mkdir -p " ${work_dir} /var/lib/alsa/"
300
+ cp " ${rootdir} /pinebookpro/config/alsa/asound.state" " ${work_dir} /var/lib/alsa/"
300
301
301
302
# Add a oneshot service to grow the rootfs on first boot
302
- install -m 755 -o root -g root ${rootdir} /pinebookpro/files/resizerootfs " ${work_dir} /usr/sbin/resizerootfs"
303
- install -m 644 -o root -g root ${rootdir} /pinebookpro/files/resizerootfs.service " ${work_dir} /etc/systemd/system"
303
+ install -m 755 -o root -g root " ${rootdir} /pinebookpro/files/resizerootfs" " ${work_dir} /usr/sbin/resizerootfs"
304
+ install -m 644 -o root -g root " ${rootdir} /pinebookpro/files/resizerootfs.service" " ${work_dir} /etc/systemd/system"
304
305
mkdir -p " ${work_dir} /etc/systemd/system/systemd-remount-fs.service.requires/"
305
306
ln -s /etc/systemd/system/resizerootfs.service " ${work_dir} /etc/systemd/system/systemd-remount-fs.service.requires/resizerootfs.service"
306
307
307
308
# Tweak the minimum frequencies of the GPU and CPU governors to get a bit more performance
308
- mkdir -p ${work_dir} /etc/tmpfiles.d/
309
- cat << EOF > ${work_dir} /etc/tmpfiles.d/cpufreq.conf
309
+ mkdir -p " ${work_dir} /etc/tmpfiles.d/"
310
+ cat << EOF > " ${work_dir} /etc/tmpfiles.d/cpufreq.conf"
310
311
w- /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq - - - - 1200000
311
312
w- /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq - - - - 1008000
312
313
w- /sys/class/devfreq/ff9a0000.gpu/min_freq - - - - 600000000
313
314
EOF
314
315
315
- umount ${work_dir} /dev/pts
316
- umount ${work_dir} /dev/
317
- umount ${work_dir} /proc
316
+ umount " ${work_dir} /dev/pts"
317
+ umount " ${work_dir} /dev/"
318
+ umount " ${work_dir} /proc"
318
319
319
320
echo " Rsyncing rootfs into image file"
320
- rsync -HPavz -q ${work_dir} / " ${basedir} " /root/
321
+ rsync -HPavz -q " ${work_dir} /" " ${basedir} /root/"
321
322
322
323
# Flash u-boot into the early sectors of the image
323
- cp " ${basedir} " /u-boot-" ${ubootver} " /idbloader.img " ${basedir} " /u-boot-" ${ubootver} " /u-boot.itb " ${basedir} " /root/boot/
324
- dd if=" ${basedir} " /u-boot-" ${ubootver} " /idbloader.img of=${loopdevice} seek=64 conv=notrunc
325
- dd if=" ${basedir} " /u-boot-" ${ubootver} " /u-boot.itb of=${loopdevice} seek=16384 conv=notrunc
324
+ cp " ${basedir} /u-boot-${ubootver} /idbloader.img" " ${basedir} /u-boot-${ubootver} /u-boot.itb" " ${basedir} /root/boot/"
325
+ dd if=" ${basedir} /u-boot-${ubootver} /idbloader.img" of=" ${loopdevice} " seek=64 conv=notrunc
326
+ dd if=" ${basedir} /u-boot-${ubootver} /u-boot.itb" of=" ${loopdevice} " seek=16384 conv=notrunc
326
327
327
328
# u-boot and the root filesystem now reside in the .img file, clean up the sources of those so we have space to
328
329
# compress the image
@@ -331,18 +332,18 @@ rm -rf "${work_dir}"
331
332
332
333
# Unmount partitions
333
334
sync
334
- umount ${rootp}
335
+ umount " ${rootp} "
335
336
336
- kpartx -dv ${loopdevice}
337
- losetup -d ${loopdevice}
337
+ kpartx -dv " ${loopdevice} "
338
+ losetup -d " ${loopdevice} "
338
339
339
340
echo " Compressing ${imagename} .img"
340
- xz -z " ${basedir} " /${imagename} .img
341
+ xz -z " ${basedir} /${imagename} .img"
341
342
342
343
cd " ${basedir} "
343
344
344
- md5sum ${imagename} .img.xz > ${imagename} .md5.txt
345
- sha256sum ${imagename} .img.xz > ${imagename} .sha256.txt
345
+ md5sum " ${imagename} .img.xz" > " ${imagename} .md5.txt"
346
+ sha256sum " ${imagename} .img.xz" > " ${imagename} .sha256.txt"
346
347
347
348
cd " ${rootdir} "
348
349
0 commit comments