An official build system for JetKVM firmware, enabling you to compile and customize every aspect of your JetKVM device - from bootloader to applications. This repository provides a comprehensive SDK for building firmware images tailored to your JetKVM device. It handles U-Boot, kernel, root filesystem, media, and optional applications - all under a single repository.
sudo apt-get update &&
sudo apt-get install -y --no-install-recommends \
build-essential \
device-tree-compiler \
gperf g++-multilib gcc-multilib \
libnl-3-dev libdbus-1-dev libelf-dev libmpc-dev dwarves \
bc openssl flex bison libssl-dev python3 python-is-python3 texinfo kmod cmake
./build.sh lunch BoardConfig_IPC/BoardConfig-EMMC-NONE-RV1106_JETKVM_V2.mk
./build.sh
This single command builds U-Boot, the kernel, the root filesystem, and any additional media or applications configured for your JetKVM device. The final images will appear in output/image/.
For incremental development or debugging, you can build individual components:
./build.sh clean uboot
./build.sh uboot
Generates:
output/image/MiniLoaderAll.bin
output/image/uboot.img
./build.sh clean kernel
./build.sh kernel
Generates: output/image/boot.img
./build.sh clean rootfs
./build.sh rootfs
Generates: output/image/rootfs.img
Then, to package everything (including rootfs.img) into your final JetKVM firmware:
./build.sh firmware
./build.sh clean media
./build.sh media
Generates media-related libraries or drivers in: output/out/media_out
./build.sh clean app
./build.sh app
Generates application binaries in: output/out/app_out
Note
Reference applications may depend on the media build.
./build.sh firmware
Assembles all components into flashable images, placed in output/image/
.
After building, your output/ directory should look like this:
output/
├── image
│ ├── download.bin
│ ├── env.img
│ ├── idblock.img
│ ├── uboot.img
│ ├── boot.img
│ ├── rootfs.img
│ └── userdata.img
└── out
├── app_out
├── media_out
├── rootfs_xxx
├── S20linkmount
├── sysdrv_out
└── userdata
image/
- Contains final firmware images for flashing onto your JetKVM device.out/
- Holds intermediate build artifacts like compiled apps, media components, and the rootfs packaging directory.
All variables for customizing builds—like CPU architecture, boot medium, partitioning, or optional features—are documented in cfg-all-items-introduction.txt
A few notable examples:
Item | Description |
---|---|
RK_ARCH | Builds 32-bit (arm ) or 64-bit (arm64 ) firmware. |
RK_BOOT_MEDIUM | Specifies the storage medium: emmc , spi_nor , spi_nand , or slc_nand . |
RK_UBOOT_DEFCONFIG | Specifies the U-Boot defconfig file. |
RK_KERNEL_DEFCONFIG | Specifies the Kernel defconfig file. |
RK_KERNEL_DTS | Target DTS (Device Tree) for kernel builds. |
RK_PARTITION_CMD_IN_ENV | Defines partition layouts for the firmware. |
RK_APP_TYPE | Determines which reference apps to include. |
RK_ENABLE_WIFI | Enables Wi-Fi functionality for the JetKVM firmware. |
RK_CHIP | Cannot be modified: Different chips correspond to different SDKs. |
RK_TOOLCHAIN_CROSS | Cannot be modified: Defines the cross-compilation toolchain. |
See the cfg-all-items-introduction.txt file for a complete list of config variables
To start the kernel configuration,
cp ./arch/arm/configs/rv1106-jetkvm-v2_defconfig .config
make ARCH=arm menuconfig
After the kernel configuration is complete, you can save the configuration file as follows:
make ARCH=arm savedefconfig
cp defconfig ./arch/arm/configs/rv1106-jetkvm-v2_defconfig
We welcome contributions from the community! Whether it's improving the firmware, adding new features, or enhancing documentation, your input is valuable. We also have some rules and taboos here, so please read this page and our Code of Conduct carefully.
Please also review our Code of Conduct to keep the community welcoming and constructive.
- Avoid Copying from Windows - Moving the source code on Windows might break file permissions or symbolic links. Always handle the codebase in a native Linux environment.
Happy Building - With this SDK, you’ll have full control of your JetKVM firmware—tailoring it to your hardware, storage preferences, and custom application needs.