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