xref: /OK3568_Linux_fs/debian/mk-rootfs-bullseye.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash -e
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun# Directory contains the target rootfs
4*4882a593SmuzhiyunTARGET_ROOTFS_DIR="binary"
5*4882a593Smuzhiyun
6*4882a593Smuzhiyuncase "${ARCH:-$1}" in
7*4882a593Smuzhiyun	arm|arm32|armhf)
8*4882a593Smuzhiyun		ARCH=armhf
9*4882a593Smuzhiyun		;;
10*4882a593Smuzhiyun	*)
11*4882a593Smuzhiyun		ARCH=arm64
12*4882a593Smuzhiyun		;;
13*4882a593Smuzhiyunesac
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunecho -e "\033[36m Building for $ARCH \033[0m"
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunif [ ! $VERSION ]; then
18*4882a593Smuzhiyun	VERSION="release"
19*4882a593Smuzhiyunfi
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunecho -e "\033[36m Building for $VERSION \033[0m"
22*4882a593Smuzhiyun
23*4882a593Smuzhiyunif [ ! -e linaro-bullseye-alip-*.tar.gz ]; then
24*4882a593Smuzhiyun	echo "\033[36m Run mk-base-debian.sh first \033[0m"
25*4882a593Smuzhiyun	exit -1
26*4882a593Smuzhiyunfi
27*4882a593Smuzhiyun
28*4882a593Smuzhiyunfinish() {
29*4882a593Smuzhiyun	sudo umount $TARGET_ROOTFS_DIR/dev
30*4882a593Smuzhiyun	exit -1
31*4882a593Smuzhiyun}
32*4882a593Smuzhiyuntrap finish ERR
33*4882a593Smuzhiyun
34*4882a593Smuzhiyunecho -e "\033[36m Extract image \033[0m"
35*4882a593Smuzhiyunsudo tar -xpf linaro-bullseye-alip-*.tar.gz
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun# packages folder
38*4882a593Smuzhiyunsudo mkdir -p $TARGET_ROOTFS_DIR/packages
39*4882a593Smuzhiyunsudo cp -rpf packages/$ARCH/* $TARGET_ROOTFS_DIR/packages
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun# overlay folder
42*4882a593Smuzhiyunsudo cp -rpf overlay/* $TARGET_ROOTFS_DIR/
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun# overlay-firmware folder
45*4882a593Smuzhiyunsudo cp -rpf overlay-firmware/* $TARGET_ROOTFS_DIR/
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun# overlay-debug folder
48*4882a593Smuzhiyun# adb, video, camera  test file
49*4882a593Smuzhiyunif [ "$VERSION" == "debug" ]; then
50*4882a593Smuzhiyun	sudo cp -rpf overlay-debug/* $TARGET_ROOTFS_DIR/
51*4882a593Smuzhiyunfi
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun# bt/wifi firmware
54*4882a593Smuzhiyunsudo mkdir -p $TARGET_ROOTFS_DIR/system/lib/modules/
55*4882a593Smuzhiyunsudo mkdir -p $TARGET_ROOTFS_DIR/vendor/etc
56*4882a593Smuzhiyun
57*4882a593Smuzhiyunsudo find ../kernel/drivers/net/wireless/rockchip_wlan/*  -name "*.ko" | \
58*4882a593Smuzhiyun    xargs -n1 -i sudo cp {} $TARGET_ROOTFS_DIR/system/lib/modules/
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunecho -e "\033[36m Change root.....................\033[0m"
61*4882a593Smuzhiyunif [ "$ARCH" == "armhf" ]; then
62*4882a593Smuzhiyun	sudo cp /usr/bin/qemu-arm-static $TARGET_ROOTFS_DIR/usr/bin/
63*4882a593Smuzhiyunelif [ "$ARCH" == "arm64"  ]; then
64*4882a593Smuzhiyun	sudo cp /usr/bin/qemu-aarch64-static $TARGET_ROOTFS_DIR/usr/bin/
65*4882a593Smuzhiyunfi
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunsudo cp -f /etc/resolv.conf $TARGET_ROOTFS_DIR/etc/
68*4882a593Smuzhiyun
69*4882a593Smuzhiyunsudo mount -o bind /dev $TARGET_ROOTFS_DIR/dev
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunID=$(stat --format %u $TARGET_ROOTFS_DIR)
72*4882a593Smuzhiyun
73*4882a593Smuzhiyuncat << EOF | sudo chroot $TARGET_ROOTFS_DIR
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun# Fixup owners
76*4882a593Smuzhiyunif [ "$ID" -ne 0 ]; then
77*4882a593Smuzhiyun       find / -user $ID -exec chown -h 0:0 {} \;
78*4882a593Smuzhiyunfi
79*4882a593Smuzhiyunfor u in \$(ls /home/); do
80*4882a593Smuzhiyun	chown -h -R \$u:\$u /home/\$u
81*4882a593Smuzhiyundone
82*4882a593Smuzhiyun
83*4882a593Smuzhiyunecho "deb http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
84*4882a593Smuzhiyunecho "deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunapt-get update
87*4882a593Smuzhiyunapt-get upgrade -y
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunchmod o+x /usr/lib/dbus-1.0/dbus-daemon-launch-helper
90*4882a593Smuzhiyunchmod +x /etc/rc.local
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunexport APT_INSTALL="apt-get install -fy --allow-downgrades"
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun# enter root username without password
95*4882a593Smuzhiyunsed -i "s~\(^ExecStart=.*\)~# \1\nExecStart=-/bin/sh -c '/bin/bash -l </dev/%I >/dev/%I 2>\&1'~" /usr/lib/systemd/system/serial-getty@.service
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun#---------------power management --------------
98*4882a593Smuzhiyun\${APT_INSTALL} pm-utils triggerhappy bsdmainutils
99*4882a593Smuzhiyuncp /etc/Powermanager/triggerhappy.service  /lib/systemd/system/triggerhappy.service
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun#---------------Rga--------------
102*4882a593Smuzhiyun\${APT_INSTALL} /packages/rga2/*.deb
103*4882a593Smuzhiyun
104*4882a593Smuzhiyunecho -e "\033[36m Setup Video.................... \033[0m"
105*4882a593Smuzhiyun\${APT_INSTALL} gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-alsa \
106*4882a593Smuzhiyungstreamer1.0-plugins-base-apps qtmultimedia5-examples
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun\${APT_INSTALL} /packages/mpp/*
109*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-rkmpp/*.deb
110*4882a593Smuzhiyun\${APT_INSTALL} /packages/gstreamer/*.deb
111*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-plugins-base1.0/*.deb
112*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-plugins-bad1.0/*.deb
113*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-plugins-good1.0/*.deb
114*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-plugins-ugly1.0/*.deb
115*4882a593Smuzhiyun\${APT_INSTALL} /packages/gst-libav1.0/*.deb
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun#---------Camera---------
118*4882a593Smuzhiyunecho -e "\033[36m Install camera.................... \033[0m"
119*4882a593Smuzhiyun\${APT_INSTALL} cheese v4l-utils
120*4882a593Smuzhiyun\${APT_INSTALL} /packages/libv4l/*.deb
121*4882a593Smuzhiyun\${APT_INSTALL} /packages/cheese/*.deb
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun#---------Xserver---------
124*4882a593Smuzhiyunecho -e "\033[36m Install Xserver.................... \033[0m"
125*4882a593Smuzhiyun\${APT_INSTALL} /packages/xserver/*.deb
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunapt-mark hold xserver-common xserver-xorg-core xserver-xorg-legacy
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun#---------------Openbox--------------
130*4882a593Smuzhiyunecho -e "\033[36m Install openbox.................... \033[0m"
131*4882a593Smuzhiyun\${APT_INSTALL} /packages/openbox/*.deb
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun#---------update chromium-----
134*4882a593Smuzhiyun\${APT_INSTALL} /packages/chromium/*.deb
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun#------------------libdrm------------
137*4882a593Smuzhiyunecho -e "\033[36m Install libdrm.................... \033[0m"
138*4882a593Smuzhiyun\${APT_INSTALL} /packages/libdrm/*.deb
139*4882a593Smuzhiyun
140*4882a593Smuzhiyun#------------------libdrm-cursor------------
141*4882a593Smuzhiyunecho -e "\033[36m Install libdrm-cursor.................... \033[0m"
142*4882a593Smuzhiyun\${APT_INSTALL} /packages/libdrm-cursor/*.deb
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun#------------------blueman------------
145*4882a593Smuzhiyunecho -e "\033[36m Install blueman.................... \033[0m"
146*4882a593Smuzhiyun\${APT_INSTALL} blueman
147*4882a593Smuzhiyunecho exit 101 > /usr/sbin/policy-rc.d
148*4882a593Smuzhiyunchmod +x /usr/sbin/policy-rc.d
149*4882a593Smuzhiyun\${APT_INSTALL} blueman
150*4882a593Smuzhiyunrm -f /usr/sbin/policy-rc.d
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun#------------------blueman------------
153*4882a593Smuzhiyunecho -e "\033[36m Install blueman.................... \033[0m"
154*4882a593Smuzhiyun\${APT_INSTALL} /packages/blueman/*.deb
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun#------------------rkwifibt------------
157*4882a593Smuzhiyunecho -e "\033[36m Install rkwifibt.................... \033[0m"
158*4882a593Smuzhiyun\${APT_INSTALL} /packages/rkwifibt/*.deb
159*4882a593Smuzhiyunln -s /system/etc/firmware /vendor/etc/
160*4882a593Smuzhiyun
161*4882a593Smuzhiyunif [ "$VERSION" == "debug" ]; then
162*4882a593Smuzhiyun#------------------glmark2------------
163*4882a593Smuzhiyunecho -e "\033[36m Install glmark2.................... \033[0m"
164*4882a593Smuzhiyun\${APT_INSTALL} /packages/glmark2/*.deb
165*4882a593Smuzhiyunfi
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunif [ -e "/usr/lib/aarch64-linux-gnu" ] ;
168*4882a593Smuzhiyunthen
169*4882a593Smuzhiyun#------------------rknpu2------------
170*4882a593Smuzhiyunecho -e "\033[36m move rknpu2.................... \033[0m"
171*4882a593Smuzhiyunmv /packages/rknpu2/*.tar  /
172*4882a593Smuzhiyunfi
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun#------------------rktoolkit------------
175*4882a593Smuzhiyunecho -e "\033[36m Install rktoolkit.................... \033[0m"
176*4882a593Smuzhiyun\${APT_INSTALL} /packages/rktoolkit/*.deb
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunecho -e "\033[36m Install Chinese fonts.................... \033[0m"
179*4882a593Smuzhiyun# Uncomment zh_CN.UTF-8 for inclusion in generation
180*4882a593Smuzhiyunsed -i 's/^# *\(zh_CN.UTF-8\)/\1/' /etc/locale.gen
181*4882a593Smuzhiyunecho "LANG=zh_CN.UTF-8" >> /etc/default/locale
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun# Generate locale
184*4882a593Smuzhiyunlocale-gen
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun# Export env vars
187*4882a593Smuzhiyunecho "export LC_ALL=zh_CN.UTF-8" >> ~/.bashrc
188*4882a593Smuzhiyunecho "export LANG=zh_CN.UTF-8" >> ~/.bashrc
189*4882a593Smuzhiyunecho "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrc
190*4882a593Smuzhiyun
191*4882a593Smuzhiyunsource ~/.bashrc
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun\${APT_INSTALL} ttf-wqy-zenhei fonts-aenigma
194*4882a593Smuzhiyun\${APT_INSTALL} xfonts-intl-chinese
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun# HACK debian11.3 to fix bug
197*4882a593Smuzhiyun\${APT_INSTALL} fontconfig --reinstall
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun#\${APT_INSTALL} xfce4
200*4882a593Smuzhiyun#ln -sf /usr/bin/startxfce4 /etc/alternatives/x-session-manager
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun# HACK to disable the kernel logo on bootup
203*4882a593Smuzhiyun#sed -i "/exit 0/i \ echo 3 > /sys/class/graphics/fb0/blank" /etc/rc.local
204*4882a593Smuzhiyun
205*4882a593Smuzhiyuncp /packages/libmali/libmali-*-x11*.deb /
206*4882a593Smuzhiyuncp -rf /packages/rkisp/*.deb /
207*4882a593Smuzhiyuncp -rf /packages/rkaiq/*.deb /
208*4882a593Smuzhiyuncp -rf /usr/lib/firmware/rockchip/ /
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun# reduce 500M size for rootfs
211*4882a593Smuzhiyunrm -rf /usr/lib/firmware
212*4882a593Smuzhiyunmkdir -p /usr/lib/firmware/
213*4882a593Smuzhiyunmv /rockchip /usr/lib/firmware/
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun# mark package to hold
216*4882a593Smuzhiyunapt list --installed | grep -v oldstable | cut -d/ -f1 | xargs apt-mark hold
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun#---------------Custom Script--------------
219*4882a593Smuzhiyunsystemctl mask systemd-networkd-wait-online.service
220*4882a593Smuzhiyunsystemctl mask NetworkManager-wait-online.service
221*4882a593Smuzhiyunrm /lib/systemd/system/wpa_supplicant@.service
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun#------remove unused packages------------
224*4882a593Smuzhiyunapt remove --purge -fy linux-firmware*
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun#---------------Clean--------------
227*4882a593Smuzhiyunif [ -e "/usr/lib/arm-linux-gnueabihf/dri" ] ;
228*4882a593Smuzhiyunthen
229*4882a593Smuzhiyun        # Only preload libdrm-cursor for X
230*4882a593Smuzhiyun        sed -i "1aexport LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libdrm-cursor.so.1" /usr/bin/X
231*4882a593Smuzhiyun        cd /usr/lib/arm-linux-gnueabihf/dri/
232*4882a593Smuzhiyun        cp kms_swrast_dri.so swrast_dri.so rockchip_dri.so /
233*4882a593Smuzhiyun        rm /usr/lib/arm-linux-gnueabihf/dri/*.so
234*4882a593Smuzhiyun        mv /*.so /usr/lib/arm-linux-gnueabihf/dri/
235*4882a593Smuzhiyunelif [ -e "/usr/lib/aarch64-linux-gnu/dri" ];
236*4882a593Smuzhiyunthen
237*4882a593Smuzhiyun        # Only preload libdrm-cursor for X
238*4882a593Smuzhiyun        sed -i "1aexport LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libdrm-cursor.so.1" /usr/bin/X
239*4882a593Smuzhiyun        cd /usr/lib/aarch64-linux-gnu/dri/
240*4882a593Smuzhiyun        cp kms_swrast_dri.so swrast_dri.so rockchip_dri.so /
241*4882a593Smuzhiyun        rm /usr/lib/aarch64-linux-gnu/dri/*.so
242*4882a593Smuzhiyun        mv /*.so /usr/lib/aarch64-linux-gnu/dri/
243*4882a593Smuzhiyun        rm /etc/profile.d/qt.sh
244*4882a593Smuzhiyunfi
245*4882a593Smuzhiyuncd -
246*4882a593Smuzhiyun
247*4882a593Smuzhiyunrm -rf /var/lib/apt/lists/*
248*4882a593Smuzhiyunrm -rf /var/cache/
249*4882a593Smuzhiyunrm -rf /packages/
250*4882a593Smuzhiyun
251*4882a593SmuzhiyunEOF
252*4882a593Smuzhiyun
253*4882a593Smuzhiyunsudo umount $TARGET_ROOTFS_DIR/dev
254