Skip to content

Build kernel

Build kernel #250

Workflow file for this run

name: kernel_build
run-name: Build kernel
on:
workflow_dispatch:
inputs:
kvnum:
description: 'Kernel version number'
required: true
default: '6.6.4'
type: 'string'
jobs:
amd64_kernel:
name: AMD64 Kernel
runs-on: ubuntu-latest
container:
image: docker.io/uycyjnzgntrn/rust-linux:1.64.0
options: "--platform linux/amd64 --privileged --cap-add SYS_ADMIN --device /dev/fuse"
volumes:
- ${{ github.workspace }}:/src
steps:
- uses: actions/checkout@v3
- name: Build
shell: bash
run: |
MAJOR_KERNEL_VERSION=$(echo "${{ inputs.kvnum }}" | awk -F"." '{print $1}')
mkdir -p /tmp/artifacts
cp config.amd64 /tmp/artifacts/config
apt update && apt install -y xz-utils build-essential ca-certificates curl bc kmod cpio flex gcc libncurses5-dev libelf-dev libssl-dev dwarves bison ccache rsync wget zstd debhelper
mkdir -p /usr/src/kernel
cd /usr/src/kernel && curl -L -o linux-${{ inputs.kvnum }}.tar.xz https://cdn.kernel.org/pub/linux/kernel/v${MAJOR_KERNEL_VERSION}.x/linux-${{ inputs.kvnum }}.tar.xz
cd /usr/src/kernel && tar axf linux-${{ inputs.kvnum }}.tar.xz
rm /usr/src/kernel/linux-${{ inputs.kvnum }}.tar.xz
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && cp /tmp/artifacts/config .config
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && ./scripts/config --disable SYSTEM_TRUSTED_KEYS
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && ./scripts/config --disable SYSTEM_REVOCATION_KEYS
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && ./scripts/config --disable DEBUG_INFO
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && ./scripts/config --enable DEBUG_INFO_NONE
cd /usr/src/kernel/linux-${{ inputs.kvnum }} && nice make LOCALVERSION=-smallserver ZSTD_CLEVEL=22 CC="gcc" -j`nproc` bindeb-pkg && cp ../*.deb /tmp/artifacts/ && rm /tmp/artifacts/config
- name: Upload a Build Artifact
uses: actions/upload-artifact@v3
with:
name: kernel-deblive-smallserver-${{ inputs.kvnum}}-amd64
path: /tmp/artifacts
arm64_kernel:
name: ARM64 Kernel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Build
shell: bash
run: |
MAJOR_KERNEL_VERSION=$(echo "${{ inputs.kvnum }}" | awk -F"." '{print $1}')
mkdir -p /tmp/artifacts && cp ${{ github.workspace }}/config.arm64 /tmp/artifacts/config && docker run --platform linux/amd64 --privileged --cap-add SYS_ADMIN --device /dev/fuse -v /tmp/artifacts:/artifacts docker.io/uycyjnzgntrn/rust-linux:1.64.0 /bin/sh -c "apt update && apt install -y xz-utils git ca-certificates binutils-aarch64-linux-gnu fakeroot zlib1g-dev gcc-aarch64-linux-gnu build-essential curl bc kmod cpio flex libncurses5-dev libelf-dev debhelper libssl-dev dwarves bison ccache rsync wget zstd && mkdir -p /usr/src/kernel && cd /usr/src/kernel && curl -L -o linux-${{ inputs.kvnum }}.tar.xz https://cdn.kernel.org/pub/linux/kernel/v${MAJOR_KERNEL_VERSION}.x/linux-${{ inputs.kvnum }}.tar.xz && tar axf linux-${{ inputs.kvnum }}.tar.xz && rm /usr/src/kernel/linux-${{ inputs.kvnum }}.tar.xz && cd /usr/src/kernel/linux-${{ inputs.kvnum }} && cp /artifacts/config .config && ./scripts/config --disable SYSTEM_TRUSTED_KEYS && ./scripts/config --disable SYSTEM_REVOCATION_KEYS && ./scripts/config --disable DEBUG_INFO && ./scripts/config --enable DEBUG_INFO_NONE && nice make ARCH=arm64 DEB_HOST_ARCH=arm64 CONCURRENCY_LEVEL=`nproc` CC=aarch64-linux-gnu-gcc CROSS_COMPILE=aarch64-linux-gnu- LOCALVERSION=-smallserver ZSTD_CLEVEL=22 bindeb-pkg && cp ../*.deb /artifacts/ && rm /artifacts/config"
- name: Upload a Build Artifact
uses: actions/upload-artifact@v3
with:
name: kernel-deblive-smallserver-${{ inputs.kvnum}}-arm64
path: /tmp/artifacts