入门

We recommend you developing the kernel in Debian-12.0+ or Ubuntu-24.04+ environment to get the best tooling support.

准备基本的开发环境

repo

我们使用repo来管理内核项目。请按照https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/安装repo

gn

我们使用GN来组织和构建BlueOS项目,而不是Rust生态系统的官方包管理器cargogn提供比cargo更好的多语言支持和更快的构建速度。你可以从https://gn.googlesource.com/gn/#getting-a-binary下载预构建的gn二进制文件。将下载的二进制文件放入一个目录,并确保该目录在你的${PATH}中。

在Linux上安装包

安装由发行版提供的软件包。

sudo apt install build-essential cmake ninja-build pkg-config \
                 libssl-dev gdb-multiarch curl git wget \
                 libslirp-dev python3 python3-pip meson \
                 libglib2.0-dev flex bison libfdt-dev \
                 gcc-riscv64-unknown-elf clang llvm lld \
                 python3-kconfiglib python3-tomli

此外,下载并安装arm toolchains

wget https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi.tar.xz
tar xvf arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi.tar.xz -C <install-path>
wget https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-elf.tar.xz
tar xvf arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-elf.tar.xz -C <install-path>

<install-path>/arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-elf/bin<install-path>/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi/bin 添加到你的 $PATH 中。

Build and install QEMU on Linux

下载QEMU源代码tarball,

wget https://download.qemu.org/qemu-10.0.2.tar.xz
tar xvf qemu-10.0.2.tar.xz
cd qemu-10.0.2
mkdir build && cd build
../configure --prefix=<install-path> --enable-slirp && \
    make -j$(nproc) install

<install-path>/bin 添加到你的 $PATH 中。

在macOS上安装包

brew install coreutils llvm@19 lld@19 gcc-arm-embedded cmake ninja qemu
brew tap riscv-software-src/riscv
brew install riscv-tools riscv64-elf-gcc riscv64-elf-binutils riscv64-elf-gdb
python3 -m pip install --user --break-system-packages --upgrade kconfiglib

For aarch64 toolchain, please refer to arm-gnu-toolchain. It’s recommended to download tarballs rather than pkgs. For RISC-V toolchain on macOS, please refer to homebrew-riscv.

代码格式化工具

我们使用相应编程语言的代码格式化工具来保持代码风格一致。这些格式化工具可以通过

# 在Linux上sudo apt install clang-format yapf3
# 在 macOS 上brew install clang-format yapf

以下是格式命令及其对应编程语言的表格。

语言格式化命令
Rustrustfmt
C/C++clang-format
Pythonyapf3
GNgn format

初始化和同步项目

使用以下命令初始化项目。

mkdir blueos-dev
cd blueos-dev

If you have configured public ssh key on github, please use following commands

repo init -u git@github.com:vivoblueos/manifests.git -b main -m manifest.xml

otherwise, please try

repo init -u https://github.com/vivoblueos/manifests.git -b main -m manifest.xml

然后同步项目中的所有仓库。

repo sync

您可以通过在上面的命令后添加-j$(nproc)来加速同步。