为什么要编译内核?在Gnome桌面环境下,不知什么原因,nouveau显示驱动总是会出现问题。然而尝试着禁掉它,却都没啥作用,只能从内核层面剔除nouveau。
大致步骤:
获取Linux内核源码
解压并配置内核参数
- tar.gz后缀的解压命令为tar,参数为-xvzf
- tar.xz后缀的解压命令为tar,参数为-xvJf
需要下载安装的编译工具:gcc、make、flex、bison、bc、sed、cpio、pahole
# 导出正在运行的内核的配置文件
zcat /proc/config.gz > .config
# make nconfig
进入解压后的文件下,配置编译参数,nouveau的参数路径为:Device Drivers --> Graphices support --> Nouveau (NVIDIA) cards
另外,还需要为将要编译的内核设置一个名字以方便区分,参数路径为:General setup --> Local version(注意:在名字前加一个“-”,因为编译后的名字为版本号+名字,中间加减号以隔开)
编译并安装内核
#编译
make
#安装
make modules_install
#将内核拷贝至/boot,xx主要是为了与原本的内核区分开,随便写
cp -v arch/x86/boot/bzImage /boot/vmlinuz-linux<xx>
# 制作初始化内存盘,version可在/lib/modules/下查看
mkinitcpio -k <version> -g /boot/initramfs-linux<xx>.img
# 拷贝System.map
cp System.map /boot/System.map-<kernelName>
ln -sf /boot/System.map-<kernelName>/boot/System.map
#更新grub
grub-mkconfig -o /boot/grub/grub.cfg
以上就是全部内容,具体参考archwiki内核编译