forked from RedPill-TTG/redpill-load
/
make5.sh
132 lines (118 loc) · 6.37 KB
/
make5.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/env bash
echo 'Clean Directory!!!!!!!!!!!!!'
rm -rf /opt/build/pat
rm -rf /opt/build/synoesp
pataddress="https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_SA6400_42962.pat"
toolchain="https://global.download.synology.com/download/ToolChain/toolchain/7.1-42661/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-gcc850_glibc226_x86_64-GPL.txz"
linuxsrc="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.55.tar.xz"
patfile=$(basename ${pataddress} | while read; do echo -e ${REPLY//%/\\x}; done)
echo "::set-output name=patfile::$patfile"
# install bsdiff
apt-get install -y bsdiff cpio xz-utils
# install libelf-dev, libssl-dev
apt-get install libelf-dev libssl-dev
#ls -al $GITHUB_WORKSPACE/
[ ! -d /opt/build ] && mkdir /opt/build
[ ! -d /opt/dist ] && mkdir /opt/dist
cd /opt/build
[ ! -f ds.pat ] && curl -kL ${pataddress} -o ds.pat
[ ! -f toolchain.txz ] && curl -kL ${toolchain} -o toolchain.txz
[ ! -f linux.tar.xz ] && curl -kL ${linuxsrc} -o linux.tar.xz
# download old pat for syno_extract_system_patch # thanks for jumkey's idea.
[ ! -f oldpat.tar.gz ] && curl -kL https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat -o oldpat.tar.gz
[ ! -d /opt/build/synoesp ] && mkdir synoesp && tar -C ./synoesp/ -xf oldpat.tar.gz rd.gz
cd synoesp
xz -dc < rd.gz >rd 2>/dev/null || echo "extract rd.gz"
echo "finish"
cpio -idm <rd 2>&1 || echo "extract rd"
mkdir extract
cd extract
cp ../usr/lib/libcurl.so.4 ../usr/lib/libmbedcrypto.so.5 ../usr/lib/libmbedtls.so.13 ../usr/lib/libmbedx509.so.1 ../usr/lib/libmsgpackc.so.2 ../usr/lib/libsodium.so ../usr/lib/libsynocodesign-ng-virtual-junior-wins.so.7 ../usr/syno/bin/scemd ./
ln -s scemd syno_extract_system_patch
cd ../..
mkdir pat
#tar xf ds.pat -C pat
ls -lh ./
LD_LIBRARY_PATH=synoesp/extract synoesp/extract/syno_extract_system_patch ds.pat pat || echo "extract latest pat"
echo "test4"
# is update_pack
if [ ! -f "pat/zImage" ]; then
cd pat
ar x $(ls flashupdate*)
tar xf data.tar.xz
cd ..
fi
echo "test5"
[ ! -d /opt/build/toolchain ] && mkdir toolchain && tar xf toolchain.txz -C toolchain
[ ! -d /opt/build/linux-src ] && mkdir linux-src && tar xf linux.tar.xz --strip-components 1 -C linux-src
# extract vmlinux
./linux-src/scripts/extract-vmlinux pat/zImage > vmlinux
# sha256
sha256sum ds.pat >> checksum.sha256
sha256sum pat/zImage >> checksum.sha256
sha256sum pat/rd.gz >> checksum.sha256
sha256sum vmlinux >> checksum.sha256
cat checksum.sha256
# patch vmlinux
# vmlinux_mod.bin
# New fabio patching method
echo "Patching Kernel"
curl --insecure -L https://github.com/pocopico/tinycore-redpill/raw/main/tools/bzImage-to-vmlinux.sh -o bzImage-to-vmlinux.sh
curl --insecure -L https://github.com/pocopico/tinycore-redpill/raw/main/tools/kpatch -o kpatch
chmod 777 kpatch
chmod 777 bzImage-to-vmlinux.sh
echo "Current path `pwd`"
ls -ltr
./kpatch /opt/build/vmlinux /opt/build/vmlinux_mod.bin
git clone https://github.com/kiler129/recreate-zImage.git
chmod +x recreate-zImage/rebuild_kernel.sh
cd linux-src
# ---------- make zImage_mod
# Make file more anonymous
export KBUILD_BUILD_TIMESTAMP="1970/1/1 00:00:00"
export KBUILD_BUILD_USER="root"
export KBUILD_BUILD_HOST="localhost"
export KBUILD_BUILD_VERSION=0
export ARCH=x86_64
export CROSS_COMPILE=/opt/build/toolchain/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-
#make olddefconfig
make defconfig
# change to lzma
sed -i 's/CONFIG_KERNEL_GZIP=y/# CONFIG_KERNEL_GZIP is not set/' .config
sed -i 's/# CONFIG_KERNEL_LZMA is not set/CONFIG_KERNEL_LZMA=y/' .config
# << see_below
make clean
sed -i 's/bzImage: vmlinux/bzImage: /' arch/x86/Makefile
make vmlinux -j4 || true # make some *.o inspire by UnknowO
cp ../vmlinux_mod.bin vmlinux # vmlinux_mod.bin is already stripped of debugging and comments, strippe again should be ok
# Fix for kver 5 (PeterSuh-Q3)
sed -i 's/CONFIG_RELOCATABLE=y/# CONFIG_RELOCATABLE is not set/' .config
sed -i 's/# CONFIG_RANDOMIZE_BASE is not set/CONFIG_RANDOMIZE_BASE=y/' .config
export VO__text="xas_next"
export VO___bss_start="mm_rss_stat"
export VO__end="_end"
make bzImage
sed -i 's/bzImage: /bzImage: vmlinux/' arch/x86/Makefile
cp arch/x86/boot/bzImage ../zImage_mod
make clean
# see_below
sed -i 's/ ld -/ ${CROSS_COMPILE}ld -/' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/(ld -/(${CROSS_COMPILE}ld -/' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/ gcc / ${CROSS_COMPILE}gcc /' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/ nm / ${CROSS_COMPILE}nm /' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/ objcopy / ${CROSS_COMPILE}objcopy /' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/(objdump /(${CROSS_COMPILE}objdump /' ../recreate-zImage/rebuild_kernel.sh
sed -i 's/ readelf / ${CROSS_COMPILE}readelf /' ../recreate-zImage/rebuild_kernel.sh
# Fix for kver 5 (PeterSuh-Q3)
sed -i 's#make \#make #' ../recreate-zImage/rebuild_kernel.sh
sed -i '119,124d;160,164d' ../recreate-zImage/rebuild_kernel.sh
../recreate-zImage/rebuild_kernel.sh $PWD/../linux-src ../vmlinux_mod.bin ../zImage_mod
# ----------
cd ..
bsdiff pat/zImage zImage_mod diff.bsp
echo '---copy file---'
#cp vmlinux /opt/dist
#cp vmlinux_mod.bin /opt/dist
cp diff.bsp /opt/dist
cp checksum.sha256 /opt/dist
echo '---END---'