xref: /OK3568_Linux_fs/debian/mk-iso-debian.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyunechodecompress ISO25*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