【讨论】添加用于管理内核编译、运行的命令行程序?

现状

现在DragonOS的编译管理是这样的:

  • 内核使用Makefile作为编译脚本。把kernel的rust部分编译成静态库,然后再在Makefile里面,把它与其他的.o文件进行链接,最终拷贝到./bin/kernel/kernel.elf下
  • 用户程序使用dadk进行编译。

存在的问题

随着内核变得复杂,试想以下场景:

  • 我们想指定内核编译、运行配置(通过统一的toml来指定);
  • 想在内核链接之后生成vmlinux文件或者bzImage
  • 想在链接完成之后修改内核ELF文件的header(direct linux boot需要)
  • 要在cicd环境跑测试,每次测试的配置、要安装的软件、执行的命令都不一样
  • 不同编译配置的情况下,cargo check也要更新相应的配置。不然的话vscode的提示就有问题。

如果我们使用Makefile去完成上述需求,那么这个编译脚本可能就又臭又长,并且维护起来可能比较麻烦。

因此一种简单的方式就是,写一个命令行程序,提供一些编译配置模版,并且在命令行程序里面对内核编译、系统运行的参数设置进行处理,这样的话能更方便一些。

并且,个人感觉,如果能把dadk进行修改,把dadk的功能整合进来,也许是一种方案。

欢迎大家在这个帖子下面发表自己的想法~

1 个赞

之前和 @xiaolin2004 讨论过,我打算完成网络子系统的重构后接手这部分工作。

4 个赞