1*4882a593Smuzhiyun#! /bin/bash 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunISO_FILE=debian-11.4.0-arm64-DVD-1.iso 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunDIR="$( cd "$( dirname "$0" )" && pwd )" 6*4882a593SmuzhiyunSDK_PATH=$DIR/.. 7*4882a593SmuzhiyunINITRD=$DIR/rd 8*4882a593SmuzhiyunDEBIAN_DIR=$DIR/iso 9*4882a593SmuzhiyunKERNEL_NAME=kernel 10*4882a593Smuzhiyun 11*4882a593Smuzhiyunif [ ! -f "$DIR/$ISO_FILE" ]; then 12*4882a593Smuzhiyunecho "Download Debian ISO" 13*4882a593Smuzhiyunwget https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/$ISO_FILE -P $DIR/ 14*4882a593Smuzhiyunif [ $? -ne 0 ] 15*4882a593Smuzhiyunthen 16*4882a593Smuzhiyun echo "please check link: https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/$ISO_FILE" 17*4882a593Smuzhiyun exit 18*4882a593Smuzhiyunelse 19*4882a593Smuzhiyun echo "Download sucess" 20*4882a593Smuzhiyunfi 21*4882a593Smuzhiyunfi 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunif [ ! -d "$DEBIAN_DIR" ]; then 24*4882a593Smuzhiyunecho “decompress ISO” 25*4882a593Smuzhiyunxorriso -osirrox on -indev $DIR/$ISO_FILE -extract / $DEBIAN_DIR 26*4882a593Smuzhiyunfi 27*4882a593Smuzhiyun 28*4882a593Smuzhiyunecho "unpack initrd.gz" 29*4882a593Smuzhiyunmkdir -p $INITRD 30*4882a593Smuzhiyuncp $DEBIAN_DIR/install.a64/initrd.gz $INITRD/ 31*4882a593Smuzhiyuncd $INITRD 32*4882a593Smuzhiyungunzip initrd.gz --quiet 33*4882a593Smuzhiyuncpio -di < initrd 34*4882a593Smuzhiyunrm initrd 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunecho "install modules into initrd" 37*4882a593Smuzhiyuncd $SDK_PATH/$KERNEL_NAME 38*4882a593Smuzhiyunmake modules_install INSTALL_MOD_PATH=$INITRD --quiet 39*4882a593Smuzhiyun 40*4882a593Smuzhiyunecho "pack initrd.gz" 41*4882a593Smuzhiyuncd $INITRD 42*4882a593Smuzhiyuncp $SDK_PATH/debian/overlay-debug/usr/local/bin/io $INITRD/bin/ 43*4882a593Smuzhiyunfind . | cpio --quiet -o -H newc --owner 0:0 | gzip > $DEBIAN_DIR/install.a64/initrd.gz 44*4882a593Smuzhiyuncd $SDK_PATH 45*4882a593Smuzhiyunrm -r $INITRD 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunif [ ! -d $SDK_PATH/$KERNEL_NAME/debian ]; then 48*4882a593Smuzhiyun echo -e "\033[36m Please compile the kernel deb before: ./build.sh kernel \033[0m" 49*4882a593Smuzhiyun exit 50*4882a593Smuzhiyunfi 51*4882a593Smuzhiyun 52*4882a593Smuzhiyunecho "update kernel deb" 53*4882a593Smuzhiyunrm -f $DEBIAN_DIR/pool/main/l/linux-signed-arm64/linux-image-5* 54*4882a593Smuzhiyunrm -f $DEBIAN_DIR/pool/main/l/linux/linux-headers-* 55*4882a593Smuzhiyunrm -f $DEBIAN_DIR/pool/main/l/linux/linux-libc-* 56*4882a593Smuzhiyunrm -f $SDK_PATH/$KERNEL_NAME/linux-image-*dbg*.deb 57*4882a593Smuzhiyuncp $SDK_PATH/$KERNEL_NAME/linux-image-*.deb $DEBIAN_DIR/pool/main/l/linux-signed-arm64/ 58*4882a593Smuzhiyuncp $SDK_PATH/$KERNEL_NAME/linux-headers-*.deb $DEBIAN_DIR/pool/main/l/linux/ 59*4882a593Smuzhiyuncp $SDK_PATH/$KERNEL_NAME/linux-libc-*.deb $DEBIAN_DIR/pool/main/l/linux/ 60*4882a593Smuzhiyuncp $SDK_PATH/$KERNEL_NAME/arch/arm64/boot/Image $DEBIAN_DIR/install.a64/vmlinuz 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunKERNEL_VERSION=$(cat $SDK_PATH/$KERNEL_NAME/include/config/kernel.release) 63*4882a593Smuzhiyun 64*4882a593Smuzhiyunif [ "$KERNEL_VERSION" == "5.4.18" ]; then 65*4882a593Smuzhiyun echo "insert cmdline into grub.cfg" 66*4882a593Smuzhiyun sed -i 's/vmlinuz/vmlinuz earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000n8/g' $DEBIAN_DIR/boot/grub/grub.cfg 67*4882a593Smuzhiyunfi 68*4882a593Smuzhiyun 69*4882a593Smuzhiyunecho "modify package Depends $KERNEL_VERSION kernel" 70*4882a593Smuzhiyunfor file in $( find $DEBIAN_DIR/pool/main/l/linux-signed-arm64/ -type f -name '*deb' | sort ) 71*4882a593Smuzhiyundo 72*4882a593Smuzhiyunrm -rf tmp 73*4882a593Smuzhiyundpkg-deb -I $file | grep "Kernel-Version: " && 74*4882a593Smuzhiyundpkg-deb -R $file tmp && 75*4882a593Smuzhiyunsed -i '/^Kernel-Version: /c\Kernel-Version: '"$KERNEL_VERSION"'' tmp/DEBIAN/control && 76*4882a593Smuzhiyundpkg-deb -b tmp $file && 77*4882a593Smuzhiyunrm -rf tmp 78*4882a593Smuzhiyun 79*4882a593Smuzhiyundpkg-deb -I $file | grep "Depends: linux-image-" && 80*4882a593Smuzhiyundpkg-deb -R $file tmp && 81*4882a593Smuzhiyunsed -i '/^Depends: linux-image-/c\Depends: linux-image-'"$KERNEL_VERSION"'' tmp/DEBIAN/control && 82*4882a593Smuzhiyundpkg-deb -b tmp $file && 83*4882a593Smuzhiyunrm -rf tmp 84*4882a593Smuzhiyundone 85*4882a593Smuzhiyunrm -rf tmp 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun# ------------------rkwifibt------------ 88*4882a593Smuzhiyunecho -e "\033[36m Install rkwifibt.................... \033[0m" 89*4882a593Smuzhiyunmkdir -p $DEBIAN_DIR/pool/main/rockchip/ 90*4882a593Smuzhiyuncp $SDK_PATH/debian/packages/arm64/rkwifibt/*.deb $DEBIAN_DIR/pool/main/rockchip/ 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunecho "update Release info" 93*4882a593Smuzhiyuncd $DEBIAN_DIR/ 94*4882a593Smuzhiyuncat << EOF >> deb.conf 95*4882a593SmuzhiyunDir { 96*4882a593Smuzhiyun ArchiveDir "."; 97*4882a593Smuzhiyun OverrideDir "."; 98*4882a593Smuzhiyun CacheDir "."; 99*4882a593Smuzhiyun}; 100*4882a593Smuzhiyun 101*4882a593SmuzhiyunTreeDefault { 102*4882a593Smuzhiyun Directory "pool/"; 103*4882a593Smuzhiyun}; 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunBinDirectory "pool/main" { 106*4882a593Smuzhiyun Packages "dists/bullseye/main/binary-arm64/Packages"; 107*4882a593Smuzhiyun}; 108*4882a593Smuzhiyun 109*4882a593SmuzhiyunDefault { 110*4882a593Smuzhiyun Packages { 111*4882a593Smuzhiyun Extensions ".deb"; 112*4882a593Smuzhiyun Compress ". gzip"; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun}; 115*4882a593Smuzhiyun 116*4882a593SmuzhiyunContents { 117*4882a593Smuzhiyun Compress "gzip"; 118*4882a593Smuzhiyun}; 119*4882a593SmuzhiyunEOF 120*4882a593Smuzhiyunapt-ftparchive generate deb.conf 121*4882a593Smuzhiyunrm deb.conf 122*4882a593Smuzhiyun 123*4882a593Smuzhiyuncat << EOF >> udeb.conf 124*4882a593SmuzhiyunDir { 125*4882a593Smuzhiyun ArchiveDir "."; 126*4882a593Smuzhiyun OverrideDir "."; 127*4882a593Smuzhiyun CacheDir "."; 128*4882a593Smuzhiyun}; 129*4882a593Smuzhiyun 130*4882a593SmuzhiyunTreeDefault { 131*4882a593Smuzhiyun Directory "pool/"; 132*4882a593Smuzhiyun}; 133*4882a593Smuzhiyun 134*4882a593SmuzhiyunBinDirectory "pool/main" { 135*4882a593Smuzhiyun Packages "dists/bullseye/main/debian-installer/binary-arm64/Packages"; 136*4882a593Smuzhiyun}; 137*4882a593Smuzhiyun 138*4882a593SmuzhiyunDefault { 139*4882a593Smuzhiyun Packages { 140*4882a593Smuzhiyun Extensions ".udeb"; 141*4882a593Smuzhiyun Compress ". gzip"; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun}; 144*4882a593Smuzhiyun 145*4882a593SmuzhiyunContents { 146*4882a593Smuzhiyun Compress "gzip"; 147*4882a593Smuzhiyun}; 148*4882a593SmuzhiyunEOF 149*4882a593Smuzhiyunapt-ftparchive generate udeb.conf 150*4882a593Smuzhiyunrm udeb.conf 151*4882a593Smuzhiyun 152*4882a593Smuzhiyuncat << EOF >> release.conf 153*4882a593SmuzhiyunAPT::FTPArchive::Release::Codename "bullseye"; 154*4882a593SmuzhiyunAPT::FTPArchive::Release::Origin "Debian"; 155*4882a593SmuzhiyunAPT::FTPArchive::Release::Components "main"; 156*4882a593SmuzhiyunAPT::FTPArchive::Release::Label "Debian"; 157*4882a593SmuzhiyunAPT::FTPArchive::Release::Architectures "arm64"; 158*4882a593SmuzhiyunAPT::FTPArchive::Release::Suite "bullseye"; 159*4882a593SmuzhiyunEOF 160*4882a593Smuzhiyun 161*4882a593Smuzhiyunapt-ftparchive -c release.conf release dists/bullseye > ../Release 162*4882a593Smuzhiyunrm release.conf 163*4882a593Smuzhiyunmv ../Release dists/bullseye/Release 164*4882a593Smuzhiyunrm dists/bullseye/main/binary-arm64/Packages 165*4882a593Smuzhiyunrm dists/bullseye/main/debian-installer/binary-arm64/Packages 166*4882a593Smuzhiyun 167*4882a593Smuzhiyunfind -follow -type f ! -name md5sum.txt -print0 | xargs -0 md5sum > md5sum.txt 168*4882a593Smuzhiyun 169*4882a593Smuzhiyunecho "repack ISO" 170*4882a593Smuzhiyunxorriso -as mkisofs -r -V 'Debian 11 ARM64' -o $SDK_PATH/rockdev/rk3588-$ISO_FILE -J -joliet-long -cache-inodes -e /boot/grub/efi.img -no-emul-boot -append_partition 2 0xef $DEBIAN_DIR/boot/grub/efi.img -partition_cyl_align all $DEBIAN_DIR 171