View Chinese description | 查看中文说明
This kernel can be used for Armbian
and OpenWrt
systems. For example, it can be used in the amlogic-s9xxx-armbian, amlogic-s9xxx-openwrt, flippy-openwrt-actions, and unifreq/openwrt_packit projects. It can be integrated when compiling firmware or installed to use in an existing system.
You can adjust the kernel's configuration as needed, such as adding drivers and patches. You can also compile personalized signature kernels with special significance according to your mood, such as 5.10.95-happy-new-year
, 5.10.96-beijing-winter-olympics
, 5.10.99-valentines-day
, and so on.
Pre-compiled kernels are available in the Releases of ophub/kernel.
-
Clone the repository to local
git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-armbian.git
-
Install necessary software packages (the script has only been tested under x86_64 Ubuntu-20.04/22.04)
sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-22.04
sudo apt-get install -y $(cat compile-kernel/tools/script/ubuntu2204-build-armbian-depends)
- Go to the
~/amlogic-s9xxx-armbian
root directory, and then runsudo ./recompile -k 5.15.100
or other specified parameter commands to compile the kernel. The script will automatically download and install the compilation environment and kernel source code, and make all settings. The packaged kernel files are saved in thecompile-kernel/output
directory.
-
Update local compilation environment and configuration files:
armbian-kernel -u
-
Compile the kernel: Run
armbian-kernel -k 5.15.100
or other specified parameter commands to compile the kernel. The script will automatically download, install the compilation environment and the kernel source code, and make all settings. The packaged kernel files are saved in the/opt/kernel/compile-kernel/output
directory.
Parameter | Meaning | Description |
---|---|---|
-r | Repository | Specifies the source code repository for compiling the kernel. You can choose the kernel source code repository from github.com , such as -r unifreq . The parameter format can be a combination of three items owner/repo@branch . The owner's name owner is a mandatory parameter, the kernel source code repository name /repo and the branch name of the repository @branch are optional parameters. When only specifying the owner's name owner , it will automatically match the kernel source code repository with the name format linux-5.x.y and the branch main of the owner. If the repository name or branch name is different, please specify it in combination, such as owner@branch or owner/repo or owner/repo@branch . Default value: unifreq |
-k | Kernel | Specifies the kernel name, such as -k 5.15.100 . Multiple kernels are connected with _ , such as -k 5.15.100_5.15.50 |
-a | AutoKernel | Sets whether to automatically adopt the latest version of the same series of kernels. When it is true , it will automatically search whether there is a newer version of the same series of kernels specified in -k , such as 5.15.100 . If there is a latest version after 5.15.100 , it will automatically switch to the latest version. When set to false , it will compile the specified version of the kernel. Default value: true |
-m | MakePackage | Sets the package list for making the kernel. When set to all , it will make all the files of Image, modules, dtbs . When the setting value is dtbs , only 3 dtbs files will be produced. Default value: all |
-p | AutoPatch | Sets whether to use custom kernel patches. When set to true , it will use the kernel patches in the tools/patch directory. For detailed instructions, refer to how to add kernel patches. Default value: false |
-n | CustomName | Sets the custom signature of the kernel. When set to -ophub , the generated kernel name is 5.15.100-ophub . Please do not include spaces when setting custom signatures. Default value: -ophub |
-t | Toolchain | Sets the toolchain for compiling the kernel. Options: clang / gcc / gcc-<version> . Default value: gcc |
-c | Compress | Set the compression format used for initrd in the kernel. Options: xz / gzip / zstd / lzma . Default value: xz |
sudo ./recompile
: Compile the kernel using the default configuration.sudo ./recompile -k 5.15.100
: Use the default configuration and specify the kernel version to be compiled through-k
. Multiple versions are connected using_
for simultaneous compilation.sudo ./recompile -k 5.15.100 -a true
: Use the default configuration and set whether to automatically upgrade to the latest kernel of the same series during kernel compilation through the-a
parameter.sudo ./recompile -k 5.15.100 -n -ophub
: Use the default configuration and set the kernel custom signature through the-n
parameter.sudo ./recompile -k 5.15.100 -m dtbs
: Use the default configuration and specify only the creation of dtbs files through the-m
parameter.sudo ./recompile -k 5.15.100_6.1.10 -a true -n -ophub
: Use the default configuration and set multiple parameters.
💡 Tip: We recommend using the kernel source code from repositories such as linux-6.1.y, linux-5.15.y, linux-5.10.y and linux-5.4.y of unifreq
for compilation, who added drivers and patches for related boxes. It is recommended to use the template in tools/config, which has been pre-configured according to the related boxes and can be customized based on this.
-
In the Action page, select
Compile the kernel
and click theRun workflow
button to compile. -
See the use of the template compile-kernel.yml. The code is as follows:
- name: Compile the kernel
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 6.1.y_5.15.y
kernel_auto: true
kernel_sign: -yourname
💡 Note: If you fork
the repository and made modifications, you need to change the Actions username
to your own repository when using it, for example:
uses: YOUR-REPO/amlogic-s9xxx-armbian@main
These parameters correspond to the local compilation commands
. Please refer to the above explanation.
Parameter | Default Value | Description |
---|---|---|
build_target | kernel | Fixed parameter kernel , set the compilation target to the kernel. |
kernel_source | unifreq | Specifies the source code repository for compiling the kernel. Default value is unifreq . Refer to -r for functionality. |
kernel_version | 6.1.y_5.15.y | Specifies the kernel name, such as 5.15.100 . Refer to -k for functionality. |
kernel_auto | true | Sets whether to automatically adopt the latest version of the same series kernel. Default value is true . Refer to -a for functionality. |
kernel_package | all | Sets the package list for making the kernel. Default value is all . Refer to -m for functionality. |
kernel_sign | -ophub | Sets the kernel custom signature. Default value is -ophub . Refer to -n for functionality. |
kernel_toolchain | gcc | Sets the toolchain for compiling the kernel. Default value is gcc . Refer to -t for functionality. |
kernel_config | false | By default, use the configuration template in the tools/config directory. You can set the directory for storing the kernel configuration file in your repository, such as kernel/config_path . The configuration templates stored in this directory must be named after the main version of the kernel, such as config-5.10 , config-5.15 , etc. |
kernel_patch | false | Sets the directory for custom kernel patches. |
auto_patch | false | Sets whether to use custom kernel patches. Default value is false . Refer to -p for functionality. |
compress_format | xz | Set the compression format used for initrd in the kernel. Default value is xz . Refer to -c for functionality. |
To upload to Releases
, you need to set Workflow read/write permissions
for repository. For more details, see Usage Instructions.
Parameter | Default Value | Description |
---|---|---|
${{ env.PACKAGED_OUTPUTTAGS }} | 6.1.y_5.15.y | The name of the compiled kernel. |
${{ env.PACKAGED_OUTPUTPATH }} | compile-kernel/output | The path of the directory where the compiled kernel is stored. |
${{ env.PACKAGED_OUTPUTDATE }} | 04.13.1058 | The compilation date (month.day.hourminute). |
${{ env.PACKAGED_STATUS }} | success | Compilation status: success / failure. |
This kernel can be used for Armbian
and OpenWrt
systems. For example, the project of ophub.
The following describes separately how to integrate it when compiling Armbian firmware, and how to install it for use in an existing system.
Compiling Armbian firmware supports localization operations, and it also supports online compilation using Actions on github.com. The method of use when localizing compilation can be found in: Local Packaging, and the method of use when using Actions for online compilation can be found in: Using GitHub Actions for Compilation.
You can use the armbian-update
command to install the compiled kernel into an existing Armbian system. For specific operation methods, please refer to: Update Armbian Kernel.
In the Linux mainline kernel, some drivers are not yet supported, so you can customize and compile driver modules. For specific instructions, please refer to: Compile Driver Module
The following describes separately how to integrate it when compiling firmware in the OpenWrt system and how to install it for use in an existing system.
Compiling OpenWrt firmware supports localization operations, and it also supports online compilation using Actions on github.com. The method of use when localizing compilation can be found in: Local Packaging, and the method of use when using Actions for online compilation can be found in: Use GitHub Actions for Compilation.
You can use the luci-app-amlogic plugin to install the compiled kernel into an existing OpenWrt system. For specific operation methods, please refer to: Update OpenWrt.