龙芯内核编译

龙芯内核编译

目前龙芯已经由MIPS架构转战LoongArch架构.
目前主要在做UEFI相关的事情,偶尔会编译编译内核调试些东西,所以梳理了这篇文档.

  • vmlinux+vmlinuz
  • libmodules
  • RamDisk_initrd

准备阶段

目前龙芯主要针对3A5000,所以就采用LoongArch架构的编译为例.
编译器采用Gcc交叉编译LoongArch版本

  • 编译器版本 :
    loongarch64-linux-gnu-gcc-8.3.0
  • 配置文件 采用龙芯默认配置:
    cp arch/loongarch/configs/loongson3_defconfig .config

开始编译

vmlinux/vmlinuz

  • 执行 make ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu-(此为编译器路径 which gcc) menuconfig
    在这里插入图片描述

进入图形化配置界面,开关相关功能,我们直接Esc退出.

  • 执行 make ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu- -j 16 //采用16线程进行编译(目前我是在服务器上编译,核数较多). 到此vmlinux/vmlinuz 非压缩和压缩版内核就编译完成.在这里插入图片描述
    System.map 是符号表

  • 执行 make modules_install INSTALL_MOD_PATH=./ ARCH=loongarch CROSS_COMPILE=/opt/LoongArch_Toolchains/loongarch64-linux-gnu-2020-11-06/bin/loongarch64-linux-gnu- 编译lib/modules/ 驱动模块包,熟悉内核的人都了解,当配置menuconfig的时候,会将M的驱动以modules的形式在内核中加载.在这里插入图片描述

将编译的文件进行使用

1.vmlinuz 放在os的/boot/下,并可以修改成自己喜欢的名字 vmlinuz_go

2.将lib/modules/下的文件copy到os根目录/lib/modules/

3.目前龙芯在支持UOS,所以参考Deebian制作Ramdisk为例: 执行 在这里插入图片描述
使用draut进行制作,该脚本制作的Ramdisk支持了好几种文件系统,你可以简单制作RamDisk,这里就不详细介绍该命令了.将制作的*.img文件拷贝到/boot下.
dracut 是一个事件驱动的 initramfs 基础设施。dracut(工具)被用来通过拷贝工具和文件,从一个已经安装的系统创建一个 initramfs 镜像,并将镜像与dracut框架结合在一起。

4.修改grub引导程序,进行加载相应的内核和RamDisk.

  • 目前 grub在Deebian系统的目录: /boot/efi/boot/grub.cfg
    修改linux命令加载的文件名-> vmlinuz_go
    initrd命令加载的文件名-> initrd.live

以后会坚持写文档与随便.

  • 3
    点赞
  • 5
    收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页
评论 8

打赏作者

来杯清咖_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值