Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

rsdk

rsdk 是目前瑞莎最新的系统构建工具。

rsdk 在此前 rbuilddebos-radxa 的基础上进一步提供了更多工具来改善开发体验。

为什么要迁移到另一个系统构建器?

rsdk 是 Radxa 系统构建器的又一次进化。主要目标是为了摆脱 debos,原因如下:

  1. (以前)缺乏 ARM64 支持
  2. 我们使用 pagefile 来解决 dkms 编译失败的问题,这 需要 KVM 可用.
  3. Go 模板有待改进。
  4. 提供的 actions 正在成为限制我们实现预期结果的因素。

除此之外,我们的系统已经发展到了 100 多个存储库,并通过各种 CI/CD 工作流相互连接。从操作的角度来看,我们还需要一个工具来集中管理它们,同时客户还可以使用同样的工具来复制我们的设置,供他们自己使用。

最后,我们想简短地回答一个常见问题“我在哪里可以下载 X 的 SDK”。到目前为止,由于系统设计的复杂性,我们的回答一直是对系统设计的简要说明。我们想做一个更符合客户期望的系统,其中所有相关的 Radxa 源代码只有一个入口。

因此,rsdk 诞生了。

Run rsdk with Visual Studio Code & devcontainer

[!TIP] 这是我们推荐的 rsdk 运行方式。

首先,请安装一下运行时依赖:

sudo apt-get update
sudo apt-get install git qemu-user-static binfmt-support

Then follow Visual Studio Code’s documentation to:

  1. 安装 Visual Studio Code
  2. 设置 devcontainer

然后使用 git 克隆该项目:

git clone --recurse-submodules https://github.com/RadxaOS-SDK/rsdk.git

在 Visual Studio Code 中打开项目。项目的右下角上会弹出一个通知,询问你是否要在 devcontainer 中重新打开。点击,然后等待容器设置完成。

你可以同时使用 VS Code remote development 拓展,从而在其他系统上远程运行 rsdk。

常见问题

  1. devcontainer 设置暂停,出现您可能受到 GitHub 的速率限制.消息

    您可能受到 GitHub 的速率限制。请遵循输出中列出的说明。

  2. devcontainer 启动失败。

    请编辑 .devcintainer/devcontainer.json,并调整 runArgs 属性。

Run rsdk with devcontainer alone

This is similar to how we build system images in the CI pipelines.

首先,请安装一下运行时依赖:

sudo apt-get update
sudo apt-get install git qemu-user-static binfmt-support
sudo apt-get install npm docker.io
sudo usermod -a -G docker $USER

If you were not in the docker group before, you will need to log out and log back in.

For SSH, simple disconnect the current session and reconnect.

Then clone the project with git and install devcontainer:

git clone --recurse-submodules https://github.com/RadxaOS-SDK/rsdk.git
cd rsdk
npm install @devcontainers/cli
export PATH="$PWD/src/bin:$PWD/node_modules/.bin:$PATH"
rsdk devcon up
rsdk devcon

You are now inside the rsdk’s devcontainer shell.

The following recording demostates how to set up rsdk and build an image on a fresh Debian 12 install:

asciicast

常见问题

  1. devcontainer 设置暂停,出现您可能受到 GitHub 的速率限制.消息

    您可能受到 GitHub 的速率限制。请遵循输出中列出的说明。

  2. devcontainer 启动失败。

    Please edit .devcontainer/devcontainer.json, and adjust runArgs property.

Run rsdk using released Debian package

待发布

Run rsdk natively

[!WARNING] This is not a well supported or tested installation method.

When you have issues, please check the source code for up-to-date runtime dependencies.

We do not answer support questions related to this type of installation.

要本地运行 rsdk,您最好使用 Ubuntu 系统,因为 devcontainer 基于此系统。

请首先在您的系统上安装 devenv

可选择安装 direnv,然后在项目文件夹中运行 direnv allow 来启用它。

然后运行 devenv shell 进入开发 shell。这个 shell 将对您的 PATH 变量进行操作,使开发依赖可用。

如果安装了 direnv,就不必在进入项目目录使用 SDK 时运行上述命令。不过,direnv shell 缺少 starship 集成和 rsdk 自动补全,因为它只保存环境变量。

有一些额外的系统配置和软件包 devenv 目前无法管理。它们主要由 rsdk-setup 中的 install_native_dependency 函数负责。

基本用法

rsdk 自带 bash-completion,可帮助用户使用 CLI。

在终端中输入 rsdk 后,如果没有子命令建议,按两次 Tab 键后,应运行 rsdk shell 进入开发环境。

进入开发环境之后,您可以使用自动补全功能查询支持的命令列表。

伴随 --help 参数运行命令时,将显示其帮助文本。

使用 TUI 运行向导

rsdk 命令是常用的 CLI 入口。

在不带任何参数的情况下运行时,将运行 rsdk-tui

  1. 从终端执行 rsdk 来进入 TUI 向导模式。

  2. 选择要运行的任务。
    您可以使用方向键导航,使用回车键进行选择,使用 Escape 键离开当前窗口。
    在这个示例中,我们将选择 Build system image

┌─────────────────┤ RSDK ├──────────────────┐
│ Please select a task:                     │
│                                           │
│            Build system image             │
│            =========                      │
│            About                          │
│                                           │
│         <Ok>             <Cancel>         │
│                                           │
└───────────────────────────────────────────┘
  1. 选择想要构建的产品。
    您可以使用空格键选择产品,选择的产品将在括号出现星号。
    只使用回车键不会选择产品!
    在本例中,我们将选择 rock-5b-6_1
┌─────────────────┤ RSDK ├──────────────────┐
│ Please select a product:                  │
│                                           │
│  ( ) radxa-e25                        ▒   │
│  (*) rock-5b-6_1                      ▒   │
│  ( ) rock-5b                          ▒   │
│                                           │
│         <Ok>             <Cancel>         │
│                                           │
└───────────────────────────────────────────┘
  1. Decide whether to configure package mirrors (optional).
    Before starting the actual build, rsdk-tui will ask whether you want to configure alternative package mirrors (Radxa radxa-deb mirror and Debian/Ubuntu mirror). If you select No, default mirrors will be used and the build will proceed directly to confirmation. If you select Yes, TUI will guide you to choose mirrors (including selecting the default entries). If you cancel during mirror selection, the wizard will return to this question so you can decide again:
┌─────────────────┤ RSDK ├──────────────────┐
│ Do you want to configure alternative      │
│ package mirror?                           │
│                                           │
│          <Yes>             <No>           │
│                                           │
└───────────────────────────────────────────┘

If you choose Yes, you will be guided to select the Radxa APT mirror:

┌─────────────────┤ RSDK ├──────────────────┐
│ Select Radxa APT mirror (radxa-deb):      │
│                                           │
│  (*) Use official Radxa repository        │
│  ( ) mirrors.aghost.cn (radxa-deb)        │
│  ( ) mirrors.lzu.edu.cn (radxa-deb)       │
│  ( ) mirrors.hust.edu.cn (radxa-deb)      │
│  ( ) mirrors.sdu.edu.cn (radxa-deb)       │
│  ( ) mirror.nju.edu.cn (radxa-deb)        │
│  ( ) mirror.nyist.edu.cn (radxa-deb)      │
│                                           │
│         <Ok>             <Cancel>         │
│                                           │
└───────────────────────────────────────────┘

Then select an optional Debian/Ubuntu mirror (or keep the default):

┌─────────────────┤ RSDK ├──────────────────┐
│ Select Debian/Ubuntu mirror (optional):   │
│                                           │
│  (*) Use default Debian/Ubuntu mirror     │
│  ( ) mirrors.ustc.edu.cn                  │
│  ( ) mirrors.tuna.tsinghua.edu.cn         │
│  ( ) mirrors.lzu.edu.cn                   │
│  ( ) mirrors.hust.edu.cn                  │
│  ( ) mirrors.sdu.edu.cn                   │
│  ( ) mirror.nju.edu.cn                    │
│  ( ) mirror.nyist.edu.cn                  │
│                                           │
│         <Ok>             <Cancel>         │
│                                           │
└───────────────────────────────────────────┘
  1. Confirm and start the build.
    After mirrors (if any) are configured, rsdk-tui will show a summary of the selected product and mirrors. This corresponds to the final CLI command that will be executed (equivalent to passing -M/-m to rsdk build when mirrors are set). Review the summary carefully and choose Yes to start the build, or No to go back:
┌─────────────────┤ RSDK ├──────────────────┐
│                                           │
│ Are you sure to build with:               │
│                                           │
│ Product: rock-5b-6_1                      │
│ Radxa mirror: https://mirrors.example/r…  │
│ Debian/Ubuntu mirror: https://mirrors…    │
│                                           │
│                                           │
│          <Yes>             <No>           │
│                                           │
└───────────────────────────────────────────┘

Advanced build should use rsdk-build command instead.

从旧工具链迁移

rbuild

rsdk buildrbuild 的替代。它使用相同的参数排序,并支持类似的输入值。

如果没有提供套件或版本参数,rsdk build 将使用 src/share/rsdk/configs/products.json 中定义的值,而不是 bullseyecli

rsdk build 并不支持所有 rbuild 选项。请查看 help 命令以了解更多详情。

.rbuild-config file is now replaced by devenv.local.nix, and option names are adjusted. You can check devenv.local.nix.example for syntax.

rbuild json

该子命令被 src/share/rsdk/configs 下的配置文件取代。

rbuild shrink-image

不再需要这个子命令,因为现在图像缩小不再是选项,而是标准操作。

rbuild write-image

rsdk write-imagerbuild write-image 的替代。它使用相同的参数顺序。

定制化构建

rsdk uses devenv to manage its development envrionronment, but itself is not nix based. nix has good support generating NixOS images, but here we are dealing with a Debian system, and some parts are currently missing.

We currently uses bdebstrap, which is a YAML frontend for mmdebstrap. mmdebstrap is the recommended tool for building RISC-V systems compared to traditional debootstrap.

YAML itself is not a templating language, so it cannot dynamically generate different configurations for different builds. We use jsonnet for this purpose.

Lastly, mmdebstrap does not handle disk image generation. We again use jsonnet to dynamically generate a guestfish script to handle this task.

All of those tools are glued by bash to provide a frontend, known as rsdk-build.

Depending on your goal, you would need the knowledge of some of the above tools.

Rootfs customization

rootfs.jsonnet is the entry point for rootfs template. It collects the various inputs and passes them to different modules.

Module loading order matters, as that will determine *-hooks’s execution order. The safest way is to only edit the customize-hooks field in rootfs.jsonnet and only adding new entries after the existing ones.

You can also edit the packages field in rootfs.jsonnet to add additional packages to the system. customize-hooks will be run after packages are installed in the rootfs.

Checkout Work with local packages if you have local packages to install.

Disk image customization

image.jsonnet is the template for the deployment script. It is generally not necessary to change this part.

添加新设备支持

Every device supported by RadxaOS requires several metapackages available in the apt repositories. They are usually unique to each hardware, as such cannot be shared between devices.

It is intentional to keep this info in form of package dependencies, and spread out in several packages, instead of a single hard coded config file. This is because:

  1. Different build tools don’t need to track this config in order to build with correct packages.
  2. Ease of migration between tools.
    For example, from rbuild to rsdk, we use the same simple package logic instead doing data transform, which was the case for rbuild’s configs files.
  3. Allow underlying package to be changed/updated in the future.

Adding new device

Currently, there are 4 places that need to be updated:

  1. Kernel metapackages
    Those includes Linux kernel image as well as kernel header, and some other less used packages.
    Currently you need to edit the related bsp Linux profile to include the new device.
  2. Firmware metapackage
    This is similar to the kernel package in case of U-Boot, where the U-Boot profile needs to be updated.
    For EDK2 you will need to add the metapackage in the related repo.
  3. Product metapackage
    Each product also needs its own package to pull device-specific drivers, and some common config options. Those are defined in radxa-profiles repo.
  4. products.json
    This registers the supported products for rsdk and their default configurations.

Right now, product metapackage does not specify dependencies to kernel and firmware (even though we have product-agnostic metapackages for those two). This is to allow users to install custom kernels only without breaking the dependencies.

Note that vendor metapackage is listed as recommended in product metapackages. This way users can install the system without SoC vendors’ binary packages.

Finally, create the new product build repo under radxa-build with rsdk-infra-product-update command.

What if we introduce a new SoC?

You need to additionally update following places:

  1. Vendor metapackage
    Each SoC needs their own package to pull SoC-specific packages, and some common config options. Those are defined in vendor-profiles repo.
  2. socs.json
    New SoC MUST be added to soc_specific_repo array as well.
  3. New SoC-specific apt repo under radxa-repo organization.
  4. SoC-specific package repo
    In case of Rockchip, those are managed by rockchip-prebuilt repo, and we create Rockchip SDK prebuilt packages in GitHub Releases, which will be uploaded to the SoC-specific apt repo.
    If the new SoC is only a variant of already supported SoC, then you only need to edit the related pkg.conf to include the new SoC-specific apt repo.

What if we introduce a new SoC vendor?

You need to additionally update following places:

  1. Vendor metapackage
    Each vendor needs their own package to pull common config options. Those are defined in vendor-profiles repo.
  2. socs.json
    There should be a new item for the new vendor.

设置默认构建选项

Like rbuild, rsdk also allows defining global build options. The underlying mechanical is the same: predefined environmental variables. However, since we use devenv to manage the environment, the way to define them is also changed.

For now, you will need to add your definitions in devenv.local.nix file. We provide devenv.local.nix.example as a reference for file structure. This is also what we use in the office, but the server is locally hosted, so you won’t be able to use it.

Example: set up local apt cache to speed up build

If you want to speed up image building time, one way is to use a locally hosted apt cache to reduce download time.

First, copy devenv.local.nix.example to devenv.local.nix. You can then remove RSDK_OPTION_REPO_SUFFIX if you do not want to build test image by default, and then change RSDK_OPTION_*_MIRROR to your own address. Typical options are:

  • RSDK_OPTION_DISTRO_MIRROR: default Debian/Ubuntu mirror (equivalent to rsdk build -m).
  • RSDK_OPTION_RADXA_MIRROR: default Radxa APT mirror for radxa-deb (equivalent to rsdk build -M).

When using Radxa repositories, rsdk will use Radxa pkgs.json metadata by default whenever it is available. You can disable this behavior at build time by passing -P/--no-pkgs-json or by setting RSDK_OPTION_PKGS_JSON=false explicitly in the environment.

Below are example NixOS configuration to set up a local apt cache service, as well as the mirror definition for acng.conf file. They may not be complete, so adjust to match your own use case.

{
  virtualisation = {
    oci-containers = {
      backend = "podman";
      containers = {
        acng = {
          image = "docker.io/mbentley/apt-cacher-ng";
          ports = [
            "3142:3142"
          ];
          volumes = [
            "/home/acng/containers/acng.conf:/etc/apt-cacher-ng/acng.conf"
            "/home/acng/containers/acng/:/var/cache/apt-cacher-ng/"
          ];
          environment = {
            PUID = "1000";
            PGID = "100";
            TZ = "Asia/Shanghai";
          };
        };
      };
    };
  };
}
Remap-debian: /debian ; http://mirrors.tuna.tsinghua.edu.cn/debian
Remap-debian-security: /debian-security ; http://mirrors.tuna.tsinghua.edu.cn/debian-security
Remap-ubuntu: /ubuntu ; http://mirrors.tuna.tsinghua.edu.cn/ubuntu
Remap-ubuntu-ports: /ubuntu-ports ; http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
Remap-armbian: /armbian ; http://mirrors.tuna.tsinghua.edu.cn/armbian
Remap-proxmox: /proxmox ; http://mirrors.tuna.tsinghua.edu.cn/proxmox/debian
Remap-proxmox-new: /debian/pve ; http://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve
Remap-rbuild: /rbuild ; http://radxa-repo.github.io/apt
Remap-rbuild-buster: /rbuild-buster ; http://radxa-repo.github.io/buster
Remap-rbuild-buster-test: /rbuild-buster-test ; http://radxa-repo.github.io/buster-test
Remap-rbuild-bullseye: /rbuild-bullseye ; http://radxa-repo.github.io/bullseye
Remap-rbuild-bullseye-test: /rbuild-bullseye-test ; http://radxa-repo.github.io/bullseye-test
Remap-rbuild-rk3528a-bullseye-test: /rbuild-rk3528a-bullseye-test ; http://radxa-repo.github.io/rk3528a-bullseye-test
Remap-rbuild-focal: /rbuild-focal ; http://radxa-repo.github.io/focal
Remap-rbuild-focal-test: /rbuild-focal-test ; http://radxa-repo.github.io/focal-test
Remap-rbuild-jammy: /rbuild-jammy ; http://radxa-repo.github.io/jammy
Remap-rbuild-jammy-test: /rbuild-jammy-test ; http://radxa-repo.github.io/jammy-test
Remap-rbuild-bookworm: /rbuild-bookworm ; http://radxa-repo.github.io/bookworm
Remap-rbuild-bookworm-test: /rbuild-bookworm-test ; http://radxa-repo.github.io/bookworm-test
Remap-rbuild-rk3588-bookworm-test: /rbuild-rk3588-bookworm-test ; http://radxa-repo.github.io/rk3588-bookworm-test
Remap-rbuild-rk3588s2-bookworm-test: /rbuild-rk3588s2-bookworm-test ; http://radxa-repo.github.io/rk3588s2-bookworm-test
Remap-rbuild-sid: /rbuild-sid ; http://radxa-repo.github.io/sid
Remap-rbuild-sid-test: /rbuild-sid-test ; http://radxa-repo.github.io/sid-test
Remap-rbuild-noble-test: /rbuild-noble-test ; http://radxa-repo.github.io/noble-test
Remap-rbuild-vscodium: /rbuild-debs ; https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs

使用本地生成的 Debian 包

Background

When working at the bleeding edge, developer needs to test some locally built packages before committing the changes. However, to ensure the build is reproducible, maintainer wants to lock up all inputs, usually in a version-controlled way.

At Radxa, this conflict primarily impacts our BSP developers, who are not involved in toolchain development. As such, rbuild provides some helper flags to allow better integration with bsp’s build outputs. The scope of local packages is intentionally limited to kernel and firmware packages, since the development workflow for the OS maintainers is different: just test the package on a live system.

rsdk initially dropped this support. As an evolution of rbuild, the package situation was stable enough that BSP developers did not need to build images with custom packages very often. The support is now available in more general form, in hope to support fully offline system building in the future.

rsdk-build --debs

rsdk-build now supports --debs <debs_dir> flag. A folder containing locally built packages are needed with this flag.

When this flag is specified, the content of debs_dir will be copied inside the target system, and will be added as a local apt repository under /srv/local-apt-repository, and it will have pin priority of 1999, effecitive making it the only provider of the included package.

[!WARNING] Unlike rbuild, this local apt repository will persist in the rootfs. This will block future package upgrade via apt if it is available in an online source, and also serves as the build input for future reproduceible build.

Consider clear /srv/local-apt-repository after the build if this behaviour is undesired.

When running rsdk in devcontainer, we recommend debs_dir to be inside rsdk project folder (for example, the debs folder in the project root). As the host path may not be mapped inside devcontainer, rsdk-build may not be able to access it.

Add packages that are not part of the default install

Because the package are not explicitly installed like the case of rbuild, if you want a package to be installed, it has to also be installed by the normal build steps.

If your package is not installed by default, you will need to follow Rootfs customization to add them to the build steps.

Override packages that are part of the default install

For example, if we want to replace the U-Boot for ROCK 4SE, we need to provide both the u-boot-rock-4se metapackage, which is installed by the build script, and the u-boot-latest binary package, which provides the bootloader and is u-boot-rock-4se’s dependency.

Usually you should copy every generated packages to debs_dir for each project you are going to override. This is to reduce the likelihood of missing a dependency.

rsdk

rsdk 命令是常用的 CLI 入口。

When it is run without any argument, it will run rsdk-tui instead.

rsdk-build

Build RadxaOS system image.

Command usage

$ rsdk build [options] <product> [suite] [edition]

Options

--no-cache
    Do not use cached build artifacts. This will result in rootfs rebuild.
--no-efi
    Do not create EFI partition in the generated image.
-d | --debug
    Enable debug output. This will also build rootfs into a folder for easier
    examination.
--dry-run
    Generate all build metadatas into a temporary folder and exit. The temporary
    folder path will be printed to standard output.
-T | --test-repo
    Build using Radxa APT test archives.
-m | --mirror <mirror_url>
    Specify custom Debian / Ubuntu archive mirror URL.
--snapshot <timestamp>
    Build using Debian / Ubuntu snapshot archive.
    A timestamp is required. Ex: 20260105T082626Z.
    This is incompatible with '-m | --mirror <mirror_url>'.
-M <mirror_url>
    Specify custom non-Debian non-Ubuntu archive mirror URL. This mirror should
    serve both Radxa archives as well as any other 3rd party archives.

    The following archives will use this mirror:
        radxa
        vscodium
-i | --image-name <image_name>
    Set the system image name. (Default: output.img)
-h | --help
    Show this message.
-k | --override-kernel
    Override the default kernel profile. Ex: latest, rockchip, rk2312, etc.
-f | --override-firmware
    Override the default firmware profile. Ex: latest, rknext, etc.
-p | --override-product
    Override the default product profile. Ex: rock-4se, radxa-zero, etc
-P | --no-pkgs-json
    Skip downloading and embedding Radxa pkgs.json metadata into the image.
--no-vendor-packages
    Do not install the vendor package specified in product profile.
--debs <debs_dir>
    Include <debs_dir> as the local package archive.
    The packages in this archive will be preferred over all other archives.
    Packages will be kept even after the build is completed, effectively
    disabling any future upgrades on the included packages.
    WARNING: the entire content of <debs_dir> will be included!
--sdboot
    [EXPERIMENTAL] Enable systemd-boot.
    This feature is off by default, as U-Boot will try EFI boot first before
    Standard boot.
    Only supported in some distros.
-s | --sector-size <sector_size>
    Override image's sector size. Ex: 512 (default), 4096, etc.
    This is used when the local storage has a different sector size compared
    to the target storage.
    By default, rsdk assumes running on a 512-byte sector storage, building
    512B system image. This option can be used to create 4096B image that is
    needed for UFS boot.
    Building 512B image on non-512B storage is currently not supported.

构建 RadxaOS 镜像

当没有提供套件或版本参数时,rsdk-build 将使用特定产品的默认值,这些默认值定义在 src/share/rsdk/configs/products.json 中相应数组的第一个元素。
以 ROCK 3C 为例,如果要为 RadxaOS Bullseye 构建 CLI 映像,可以运行以下命令:

rsdk build rock-3c bullseye cli

Mirror options

rsdk build supports changing both the Radxa APT repository (radxa-deb) and the Debian/Ubuntu upstream mirror:

  • -M <radxa-mirror>: change Radxa APT mirror (radxa-deb). For example:

    rsdk build -M https://mirrors.ustc.edu.cn/radxa-deb rock-3c
    

    If you pass a third‑party radxa-deb mirror here, rsdk will disable Radxa pkgs.json usage by default, because those mirrors usually do not provide pkgs.json.

  • -m | --mirror <distro-mirror>: change Debian/Ubuntu mirror. For example:

    rsdk build -m https://mirrors.ustc.edu.cn rock-3c
    

You can also use them together to change both Radxa and Debian/Ubuntu mirrors:

rsdk build \
	-M https://mirrors.ustc.edu.cn/radxa-deb \
	-m https://mirrors.ustc.edu.cn \
	rock-3c

Radxa pkgs.json option

By default, when using the official Radxa repository (https://radxa-repo.github.io/radxa-deb and its variants), rsdk downloads and embeds Radxa pkgs.json metadata into the image.

For third‑party radxa-deb mirrors that do not provide pkgs.json, you may want to disable this behavior.

You can explicitly skip downloading and embedding pkgs.json by using:

rsdk build -P rock-3c

or:

rsdk build --no-pkgs-json rock-3c

This option is useful when you know the current mirror does not provide pkgs.json.

RadxaOS 镜像输出路径

You can find the generated RadxaOS image as out/${product}_${suite}_${edition}/output.img.

rsdk-chroot

Enter chroot environment for a given disk or disk image.

Requires systemd-nspawn (provided by systemd-container package in Debian).

Command usage

$ rsdk chroot <target path>

Supported target type

  • Raw block device (i.e. ordinary disk)
  • System image file
    • Requires kpartx (provided by multipath-tools package in Debian)
  • Existing rootfs directory

Following distributions may be used in addition to rsdk image:

  • debos-radxa image
  • rbuild image
  • rsdk image
  • Armbian image
  • Orange Pi image
  • Rockchip SDK image

rsdk-install

Install a build artifacts to a given disk or disk image.

Requires systemd-nspawn (provided by systemd-container package in Debian).

Command usage

$ rsdk install <target path> <artifact path>

Supported target type

  • Raw block devices (i.e. ordinary disks)
  • System image file
    • Requires kpartx (provided by multipath-tools package in Debian)

Supported artifact type

  • *.deb: Debian package
  • *.dtb: Device tree file
  • *.dtbo: Device tree overlay file

Only rsdk image supports all artifact types. Other distributions may have issues on some artifact types.

rsdk-shell

建议先运行 rsdk shell 设置工作环境,然后再运行其他命令。
不过,大多数命令都能顺利运行。
rsdk shell 之外,某些增强功能(例如,bash 补全和 shell 提示)在默认情况下可能不可用。