备注
AI Translation Notice
This document was automatically translated by hunyuan-turbos-latest model, for reference only.
Source document: userland/rootfs/dadk-rootfs-manifest.md
Translation time: 2026-02-10 05:29:39
Translation model:
hunyuan-turbos-latest
Please report issues via Community Channel
DADK RootFS Manifest Configuration (Non-Nix)
This document explains the current RootFS configuration method for DragonOS based on DADK (corresponding to the traditional pipeline of make run / make write_diskimage), and aligns with the latest implementation in the repository.
备注
If you are using the Nix RootFS build pipeline, please refer to diskgen.md in the same directory.
1. Single RootFS Manifest Entry
The current single entry file is:
config/rootfs-manifests/<name>.toml
Examples:
config/rootfs-manifests/default.tomlconfig/rootfs-manifests/ubuntu2404.toml
Selection via environment variable:
ROOTFS_MANIFEST=default make run-nographic
ROOTFS_MANIFEST=ubuntu2404 make run-nographic
Defaults to default if not specified.
2. Manifest Field Descriptions
Example (config/rootfs-manifests/ubuntu2404.toml):
[metadata]
name = "ubuntu2404"
arch = "x86_64"
[rootfs]
fs_type = "ext4"
size = "2G"
partition = "mbr"
[base]
image = "ubuntu:24.04"
pull_policy = "if-not-present"
[user]
config_dir = "user/dadk/config/sets/ubuntu2404"
Field semantics:
metadata.arch: Must match the currentARCH(will error before build if inconsistent).rootfs.fs_type: Such asfat32/ext4.rootfs.size: Disk image size (e.g.,2G).rootfs.partition: Partition scheme (currently commonlymbr).base.image: Docker base image; empty string means no base.base.pull_policy: Image pull policy.user.config_dir: User program configuration directory corresponding to the current manifest.
3. Package Configuration Directory Conventions
Current directory structure:
user/dadk/config/all/: Stores all application.toml.user/dadk/config/sets/<set-name>/: Organizes package collections by scenario, typically referencing../../all/*.tomlvia soft links.
For example:
user/dadk/config/sets/default/user/dadk/config/sets/ubuntu2404/
Switch the installed package collection by changing user.config_dir in the manifest.
4. Parsing and Generated Files
Automatically called before build:
tools/rootfs_manifest_resolve.sh
Generates two files:
config/rootfs.generated.tomldadk-manifest.generated.toml
Subsequent DADK commands uniformly execute based on dadk-manifest.generated.toml.
You can also manually perform a check:
ROOTFS_MANIFEST=ubuntu2404 ARCH=x86_64 make prepare_rootfs_manifest
5. Common Commands
5.1 Full Build and Launch
ROOTFS_MANIFEST=default make run
ROOTFS_MANIFEST=ubuntu2404 make run-nographic
5.2 Write Disk Image Only
ROOTFS_MANIFEST=ubuntu2404 SKIP_GRUB=1 make write_diskimage
5.3 Build User Space Only and Install to bin/sysroot
ROOTFS_MANIFEST=ubuntu2404 make user
6. Reinstallation Behavior After Manifest Changes
user/Makefile has implemented the following protection logic:
When the manifest changes, it cleans the DADK output cache and reinstalls user programs.
When the manifest tags are inconsistent, it deletes and recreates
bin/sysroot, preventing old results from polluting new configurations.
Therefore, it is usually unnecessary to manually delete sysroot; simply re-execute the build command with the new ROOTFS_MANIFEST.