Arch Linux 从内核源码手动编译定制内核

NOTE:为方便起见,以下命令都在root模式下运行

一:准备编译环境

二:创建工作目录

三:下载内核源码并解压

  • 下载
  • 解压
  • 跳过验证部分,若要执行验证步骤请参考原文(笔者验证时出现了一些问题,故直接跳过):https://wiki.archlinux.org/index.php/Kernel/Traditional_compilation#Preparation
  • 修改所需变更的源码

四:配置

  • 保证内核树的绝对干净
  • 导出当前内核配置 打开.config找到 CONFIG_LOCALVERSION在引号中填入版本名,注意不要与 /usr/lib/modules/下的文件夹有重复,不然会覆盖掉原先的内核。

五:编译安装

  • 8线程全速运行
  • 安装内核模块
  • 拷贝内核到 /boot 目录 一般都是64位机器,32位的就不写了,x86_64换成x86就是32位系统的了。

六:制作初始化内存盘

  • 复制模板preset文件
  • 修改preset文件
  • 举例
  • 自动生成initramfs镜像 也可以手动生成

七:生成引导文件

  • 用grub-mkconfig命令生成引导文件  

八:相关问题

1. 生成的镜像无法引导成功

笔者第一次启动的时候确实失败了,切换到原来的内核,删除掉定制内核相关文件,用mkinitcpio重新生成后就正常了。其他问题暂时没有遇到,姑且不论。

2. 新内核造成相关软件运行异常

有些软件是需要一些驱动的,新安装的内核不包含这些驱动,就会造成软件运行异常,比如Virtualbox,安装对应软件的dkms版本,Dkms会将软件相关驱动编译进内核,重启就可以正常运行了。

如Virtualbox的:

再加载驱动模块