Starry-dev

Starry开发笔记

分支维护

第一周进展

starry当前的编译流程:

  1. axconfig-gen 生成配置文件
  2. axhal 中回生成链接脚本,传递给rustbianyiqi
  3. 编译StarryOS
  4. 去掉elf文件的符号[./scripts/make/dwarf.sh]
1
make ARCH=loongarch64 build

image-20250913155503762

主要的错误信息:

1
error: unknown target triple 'loongarch64-unknown-none', please use -triple or -arch
  • 解决loongarch64的clang编译问题

生成内核符号

  1. 生成内核符号
  2. nm产生的符号需要经过处理才能获得一个比较合理的符号名称
  3. 在内核初始化期间将改符号文件在/proc目录下显示

image-20250913195921829

starry在创建disk.img时需要将改符号保存到磁盘镜像中,但是内核初始化后proc目录会被重新覆盖,因此不能直接将符号移到磁盘的proc目录下,需要内核启动在创建/proc目录时重新创建。

总结:

  • 熟悉starry编译流程,以及riscv/la64的编译运行
  • axksym 库,用于生成内核符号并且提供接口在内核中查找符号(符号名称->地址/地址->符号名称)
    • 支持通过直接生成类似/proc/kallsyms的文件,需要在启动阶段读取文件
    • 支持通过生成汇编文件将符号信息和内核一起链接
  • 修改编译流程,生成符号并保存到磁盘镜像
  • 用户可以通过/proc/kallsyms 查看符号