公告

FujoOS公布日延期,以仓库发布为准

文档 开始 构建内核

构建内核

构建分两步:cargo 产出 ELF,然后把它压平成一个连续镜像。第二步存在的原因值得说明——它不是习惯,而是因为 -kernel 路径需要一个可被直接映射的连续映像,而链接产物带有节区对齐与间隙。

bash 构建
cd kernel
cargo build --release

python tools/flatten_elf.py \
    kernel/target/x86_64-unknown-none/release/fujo-kernel \
    kernel/fujo-kernel.bin --pad 0x1C0000

产物

文件 说明
kernel/target/x86_64-unknown-none/release/fujo-kernel 链接器直接产出的 ELF64,带节区与对齐信息。
kernel/fujo-kernel.bin 压平后的连续镜像,--pad 补齐到固定大小,供 -kernel 直接加载。

内核内部还有一套工具链

上面构建的是内核。有趣的是内核自己也带一套编译器:汇编器 → 链接器 → C 子集编译器(fujocc),全链产出 ELF64,它已经构建并运行过自己的 hello。那是 W16 的自举“毕业考试”,和这里的宿主构建是两件不同的事。

相关: 内核内部的工具链细节见 仓库结构;Loment 自己的工具链(lomfmt / LSP / 包管理器)是另一条线,见 语言 · 工具链