Skip to content

Commit 6b21e9b

Browse files
committed
Add checker for kernel module
1 parent 98a3fd5 commit 6b21e9b

2 files changed

Lines changed: 96 additions & 64 deletions

File tree

.github/workflows/test.yml

Lines changed: 93 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -77,95 +77,126 @@ jobs:
7777
uses: actions/upload-artifact@v4
7878
with:
7979
name: static-youtubeUnblock-${{ matrix.arch }}
80-
path: ./**/youtubeUnblock*.tar.gz
80+
path: ./**/static-youtubeUnblock*.tar.gz
8181

8282
build-kmod:
8383
needs: prepare
84-
name: build-kmod ${{ matrix.arch }}
84+
name: build-kmod ${{ matrix.kernel_version }}
8585
runs-on: ubuntu-latest
8686
strategy:
8787
matrix:
88-
arch: [x86_64]
89-
branch: [latest-stable]
88+
include:
89+
- kernel_version: "6.6.52"
90+
source: "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.52.tar.xz"
91+
container_version: "24.04"
92+
93+
- kernel_version: "5.15.167"
94+
source: "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.167.tar.xz"
95+
container_version: "24.04"
96+
97+
- kernel_version: "5.4.284"
98+
source: "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.284.tar.xz"
99+
container_version: "24.04"
100+
101+
- kernel_version: "4.19.322"
102+
source: "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.322.tar.xz"
103+
container_version: "24.04"
104+
105+
- kernel_version: "4.4.302"
106+
source: "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.302.tar.xz"
107+
container_version: "24.04"
108+
109+
- kernel_version: "3.10.108"
110+
source: "https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.108.tar.xz"
111+
container_version: "16.04"
112+
113+
- kernel_version: "3.0.101"
114+
source: "https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.0.101.tar.xz"
115+
container_version: "14.04"
90116
steps:
91117
- name: Checkout
92118
uses: actions/checkout@v4
93119

94-
- name: Build
95-
id: build
96-
env:
97-
ARCH: ${{ matrix.arch }}
98-
VERSION: ${{ needs.prepare.outputs.version }}
99-
SHA: ${{ needs.prepare.outputs.sha }}
100-
shell: bash
101-
run: |
102-
make kmake
103-
tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-$PLATFORM-$(uname -r).tar.gz kyoutubeUnblock.ko
104-
105-
- name: Upload artifacts
106-
if: steps.build.outcome == 'success'
107-
uses: actions/upload-artifact@v4
120+
- name: Restore builder from cache
121+
id: cache-restore
122+
uses: actions/cache/restore@v4
108123
with:
109-
name: kmod-youtubeUnblock-${{ matrix.arch }}
110-
path: ./**/kmod-youtubeUnblock*.tar.gz
124+
path: ~/builder.tar
125+
key: builder-${{ matrix.kernel_version }}
111126

112-
build-kmod-20.04:
113-
needs: prepare
114-
name: build-kmod ${{ matrix.arch }}
115-
runs-on: ubuntu-latest
116-
strategy:
117-
matrix:
118-
arch: [x86_64]
119-
branch: [latest-stable]
120-
steps:
121-
- name: Checkout
122-
uses: actions/checkout@v4
127+
- name: Load builder from cache
128+
if: steps.cache-restore.outputs.cache-hit == 'true'
129+
run: |
130+
docker import - builder < ~/builder.tar
123131
124-
- name: prepare runner
125-
shell: bash
132+
- name: Prepare build env
133+
if: steps.cache-restore.outputs.cache-hit != 'true'
126134
run: |
127-
apt install -y \
128-
bridge-utils \
129-
qemu-kvm \
130-
libvirt-daemon-system \
131-
libvirt-clients \
132-
virtinst \
133-
libguestfs-tools \
134-
wait-for-it \
135-
whois \
136-
sshpass
137-
138-
- name: build virtual machine
139-
shell: bash
135+
mkdir ~/linux
136+
pwd
137+
ls /
138+
ls ~
139+
140+
- name: Obtain kernel
141+
if: steps.cache-restore.outputs.cache-hit != 'true'
140142
run: |
141-
virt-builder ubuntu-20.04 \
142-
--network \
143-
--format qcow2 -o "vm_ubuntu.qcow2" \
144-
--update \
145-
--install build-essential \
146-
--run-command "useradd -p '' -s /bin/bash -m -G sudo ubuntu" \
147-
--edit '/etc/sudoers:s/^%sudo.*/%sudo ALL=(ALL) NOPASSWD:ALL/' \
148-
--edit '/etc/default/grub:s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"/' \
149-
--run-command update-grub
150-
143+
cd ~/linux
144+
wget ${{ matrix.source }} -O kernel.tar.xz -q
145+
tar -xf kernel.tar.xz
146+
rm -f kernel.tar.xz
147+
/bin/bash -c "mv linux-* linux"
148+
ls
149+
ls linux
150+
151+
- name: Install docker
152+
if: steps.cache-restore.outputs.cache-hit != 'true'
153+
run: |
154+
cd ~/linux
155+
docker pull ubuntu:${{ matrix.container_version }}
156+
docker container create --name ubu_builder -w / ubuntu:${{ matrix.container_version }} tail -f /dev/null
157+
docker container start ubu_builder
158+
docker container exec ubu_builder bash -c "apt update && apt install -y build-essential flex bc bison libelf-dev elfutils libssl-dev"
159+
docker cp ./linux ubu_builder:/linux
160+
161+
- name: Build kernel
162+
if: steps.cache-restore.outputs.cache-hit != 'true'
163+
run: |
164+
cd ~/linux
165+
docker container exec -w /linux ubu_builder bash -c 'make defconfig'
166+
docker container exec -w /linux ubu_builder bash -c 'make -j $(nproc)'
151167
152-
168+
- name: Export container
169+
if: steps.cache-restore.outputs.cache-hit != 'true'
170+
run: |
171+
cd ~/linux
172+
docker container kill ubu_builder
173+
docker container export ubu_builder > ubu_builder.tar
174+
docker container rm ubu_builder
175+
mv ./ubu_builder.tar ~/builder.tar
176+
docker import - builder < ~/builder.tar
177+
178+
- name: Save kernel image to cache
179+
if: steps.cache-restore.outputs.cache-hit != 'true'
180+
id: cache-save
181+
uses: actions/cache/save@v4
182+
with:
183+
path: ~/builder.tar
184+
key: builder-${{ matrix.kernel_version }}
153185

154-
- name: Build
186+
- name: Build kernel module
155187
id: build
156188
env:
157-
ARCH: ${{ matrix.arch }}
158189
VERSION: ${{ needs.prepare.outputs.version }}
159190
SHA: ${{ needs.prepare.outputs.sha }}
160191
shell: bash
161192
run: |
162-
make kmake
163-
tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-$PLATFORM-$(uname -r).tar.gz kyoutubeUnblock.ko
193+
docker run --rm -v ./:/youtubeUnblock -w /youtubeUnblock builder make kmake KERNEL_BUILDER_MAKEDIR:=/linux
194+
tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-linux-${{ matrix.kernel_version }}.tar.gz kyoutubeUnblock.ko
164195
165196
- name: Upload artifacts
166197
if: steps.build.outcome == 'success'
167198
uses: actions/upload-artifact@v4
168199
with:
169-
name: kmod-youtubeUnblock-${{ matrix.arch }}
200+
name: kmod-youtubeUnblock-linux-${{ matrix.kernel_version }}
170201
path: ./**/kmod-youtubeUnblock*.tar.gz
171202

tls.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,9 @@ int gen_fake_sni(struct fake_type type,
275275
if (type.type == FAKE_PAYLOAD_RANDOM && data_len == 0) {
276276
#ifdef KERNEL_SPACE
277277

278-
// get_random_bytes(&data_len, sizeof(data_len));
279-
data_len = get_random_u32() % 1200;
278+
get_random_bytes(&data_len, sizeof(data_len));
279+
data_len = data_len % 1200;
280+
// data_len = get_random_u32() % 1200;
280281
#else
281282
data_len = random() % 1200;
282283
#endif

0 commit comments

Comments
 (0)