Starry开发笔记
分支维护
- arceos: https://github.com/Godones/arceos/tree/ebpf
- starry: https://github.com/Godones/StarryOS/tree/dev
第一周进展
starry当前的编译流程:
- axconfig-gen 生成配置文件
- axhal 中回生成链接脚本,传递给rustbianyiqi
- 编译StarryOS
- 去掉elf文件的符号[./scripts/make/dwarf.sh]
1 | make ARCH=loongarch64 build |
主要的错误信息:
1 | error: unknown target triple 'loongarch64-unknown-none', please use -triple or -arch |
- 解决loongarch64的clang编译问题
生成内核符号
- 生成内核符号
- nm产生的符号需要经过处理才能获得一个比较合理的符号名称
- 在内核初始化期间将改符号文件在/proc目录下显示
starry在创建disk.img时需要将改符号保存到磁盘镜像中,但是内核初始化后proc目录会被重新覆盖,因此不能直接将符号移到磁盘的proc目录下,需要内核启动在创建/proc目录时重新创建。
总结:
- 熟悉starry编译流程,以及riscv/la64的编译运行
- axksym 库,用于生成内核符号并且提供接口在内核中查找符号(符号名称->地址/地址->符号名称)
- 支持通过直接生成类似/proc/kallsyms的文件,需要在启动阶段读取文件
- 支持通过生成汇编文件将符号信息和内核一起链接
- 修改编译流程,生成符号并保存到磁盘镜像
- 用户可以通过
/proc/kallsyms
查看符号