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