Skip to content

Compile the kernel

Compile the kernel #1

#==========================================================================
# Description: Compile the kernel
# Copyright (C) 2021 https://github.com/unifreq/openwrt_packit
# Copyright (C) 2021 https://github.com/ophub/amlogic-s9xxx-armbian
#==========================================================================
name: Compile the kernel
on:
repository_dispatch:
workflow_dispatch:
inputs:
kernel_source:
description: "Select the kernel source"
required: false
default: "unifreq"
type: choice
options:
- unifreq
- codesnas
- dy008
kernel_version:
description: "Select kernel version"
required: false
default: "6.1.y"
type: choice
options:
- 5.4.y
- 5.10.y
- 5.10.y-rk35xx
- 5.15.y
- 6.1.y
- 6.6.y
- 6.1.y_6.6.y
- 5.15.y_5.10.y
kernel_auto:
description: "Auto use the latest kernel"
required: false
default: true
type: boolean
kernel_package:
description: "Select compile package list"
required: false
default: "all"
type: choice
options:
- all
- dtbs
kernel_toolchain:
description: "Select the compilation toolchain"
required: false
default: "gcc"
type: choice
options:
- clang
- gcc
- gcc-11.3
- gcc-12.2
- gcc-12.3
- gcc-13.2
- gcc-13.3
compress_format:
description: "Set the initrd compression format"
required: false
default: "xz"
type: choice
options:
- xz
- gzip
- zstd
- lzma
kernel_sign:
description: "Set the kernel custom signature"
required: false
default: "-dy008"
type: choice
options:
- -ophub
- -dy008
env:
TZ: America/New_York
jobs:
build:
runs-on: ubuntu-22.04
if: ${{ github.event.repository.owner.id }} == ${{ github.event.sender.id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Initialization environment
id: init
env:
DEBIAN_FRONTEND: noninteractive
run: |
docker rmi $(docker images -q) 2>/dev/null
[[ -n "${AGENT_TOOLSDIRECTORY}" ]] && sudo rm -rf "${AGENT_TOOLSDIRECTORY}"
sudo rm -rf /usr/share/dotnet /etc/apt/sources.list.d /usr/local/lib/android 2>/dev/null
sudo swapoff -a
sudo rm -f /swapfile /mnt/swapfile
sudo -E apt-get -y update
sudo -E apt-get -y purge azure-cli ghc* zulu* llvm* firefox google* dotnet* powershell openjdk* mongodb* moby* || true
sudo -E apt-get -y install $(curl -fsSL https://is.gd/depend_ubuntu2204_armbian)
sudo -E systemctl daemon-reload
#sudo -E apt-get -y full-upgrade
sudo -E apt-get -y autoremove --purge
sudo -E apt-get clean
sudo sed -i '/NVM_DIR/d;/skel/d' /root/{.bashrc,.profile}
sudo rm -rf ~/{.cargo,.dotnet,.rustup}
sudo timedatectl set-timezone "${TZ}"
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Create simulated physical disk
id: disk
run: |
mnt_size=$(expr $(df -h /mnt | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 1)
root_size=$(expr $(df -h / | tail -1 | awk '{print $4}' | sed 's/[[:alpha:]]//g' | sed 's/\..*//') - 4)
sudo truncate -s "${mnt_size}"G /mnt/mnt.img
sudo truncate -s "${root_size}"G /root.img
sudo losetup /dev/loop6 /mnt/mnt.img
sudo losetup /dev/loop7 /root.img
sudo pvcreate /dev/loop6
sudo pvcreate /dev/loop7
sudo vgcreate github /dev/loop6 /dev/loop7
sudo lvcreate -n runner -l 100%FREE github
sudo mkfs.xfs /dev/github/runner
sudo mkdir -p /builder
sudo mount /dev/github/runner /builder
sudo chown -R runner.runner /builder
df -Th
- name: Create a mapped directory
id: mapped
working-directory: /builder
run: |
df -hT ${PWD}
mkdir -p /builder/{kernel,output}
ln -sf /builder/kernel /home/runner/work/_actions/dy008/amlogic-s9xxx-armbian/main/compile-kernel/kernel
ln -sf /builder/output /home/runner/work/_actions/dy008/amlogic-s9xxx-armbian/main/compile-kernel/output
echo "status=success" >> ${GITHUB_OUTPUT}
- name: Compile the kernel [ ${{ inputs.kernel_version }} ]
uses: dy008/amlogic-s9xxx-armbian@main
if: ${{ steps.mapped.outputs.status }} == 'success' && !cancelled()
with:
build_target: kernel
kernel_source: ${{ inputs.kernel_source }}
kernel_version: ${{ inputs.kernel_version }}
kernel_auto: ${{ inputs.kernel_auto }}
kernel_package: ${{ inputs.kernel_package }}
kernel_sign: ${{ inputs.kernel_sign }}
kernel_toolchain: ${{ inputs.kernel_toolchain }}
compress_format: ${{ inputs.compress_format }}
- name: Upload Kernel to Release
uses: ncipollo/release-action@main
if: ${{ env.PACKAGED_STATUS }} == 'success' && !cancelled()
with:
tag: kernel_stable
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
removeArtifacts: false
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
The kernel can be used to compile Armbian and OpenWrt.
The kernel source code comes from: ${{ inputs.kernel_source }}
The kernel compilation toolchain: ${{ inputs.kernel_toolchain }}