入门
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生态系统的官方包管理器cargo。gn提供比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
以下是格式命令及其对应编程语言的表格。
| 语言 | 格式化命令 |
|---|---|
| Rust | rustfmt |
| C/C++ | clang-format |
| Python | yapf3 |
| GN | gn 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)来加速同步。