我是靠谱客的博主 鳗鱼大雁,最近开发中收集的这篇文章主要介绍Linux内核编译过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

准备工作

硬件:笔记本

系统: Ubuntu18.04 64位

下载内核

1、先安装ubuntu18.04的系统。
2、到内核官网下载最新的内核code: https://www.kernel.org/

如图所示下载最新kernel 例如 Linux-4.19
在这里插入图片描述

3、将下载的内核 Linux-4.19 保存到 /usr/src/ 目录下: (/usr/src 一般就是用来存放Linux的内核源码)
4、进入Linux-4.19目录下: cd /usr/src/linux-4.19

编译内核

5、执行 make menuconfig 配置需要的功能,这边我主要关心的是driver modules。(权限不够加 sudo,以下一样)

在这里插入图片描述
在这里插入图片描述

6、执行 make 编译内核,这边需要很长时间(大约3小时)

安装内核

一、 安装内核模块

7、使用命令:make modules_install安装内核模块

二、 安装内核

8、然后使用make install安装内核

此时,内核已经编译完毕。


修改启动程序配置,运行新的内核

9、先将生成的bzImage文件和System.map文件拷贝到/boot/目录下,命令如下:
cp /usr/src/linux-4.19/arch/x86_64/boot/bzImage /boot/
cp /usr/src/linux-4.19/System.map /boot/

建立镜像文件

10、 在终端输入命令:
mkinitramfs 4.19.0 -o /boot/initrd.img-4.19.0
来建立镜像文件

更新修改系统引导配置

11、 然后输入命令:
update-initramfs -c -k 4.19.0
12、再输入命令:
update-grub2
更新修改系统引导配置。
13、查看grub.cfg中的配置信息
gedit /boot/grub/grub.cfg
看是否有Linux-4.19.0的相关信息。

在这里插入图片描述

重启验证

14、命令:/sbin/reboot
在开机界面中看是否有 linux-4.19的启动项

》》》

参考:https://www.cnblogs.com/scut-linmaojiang/p/4342045.html


update: 可能存在的问题

1、如果卡在ubuntu loading initial ramdisk

编译内核过程中,当安装内核模块时未使用

INSTALL_MOD_STRIP=1 标注,会导致initrd文件过大,Ubuntu 20.04所用的Grub
2.04无法支持过大的initrd文件(如500M),导致内核启动时卡在“loading initial ramdisk”(Can’t allocate initrd)。

可行的办法

安装模块时加上INSTALL_MOD_STRIP=1
sudo make INSTALL_MOD_STRIP=1 modules_install

2、系统安装完成启动后花屏 提示Couldn’t get size: 0x800000000e

原因是NVIDIA GEFORCE RTX2080显卡适配的问题

解决方法:在选择系统的时候按e进入配置界面,在quiet前面加nomodeset,启动后打开terminal输入sudo gedit /etc/modprobe.d/blacklist.conf,输入密码后在最后一行加上blacklist nouveau。(禁用自带的显卡驱动)

保存后在terminal输入sudo update-initramfs -u 使修改生效

然后安装nvidia显卡驱动,重启后正常了

3、自编译内核 invalid signature 问题解决

具体出错如下:

> error: /vmlinuz-5.3.0 has invalid signature error: you need to load
> the kernel first

出错的原因是,你编译的内核没有 sign, 最简单的解决方法就是关掉sign 检测
解决方法: 进入BIOS 中,关闭 Secure Boot
以HP 为例,开机后按F10 进入BIOS配置选项,关闭secure Boot

4、Linux内核编译错误:make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止。**

可以将 .config 里面相关设置关闭,如下下图所示:
需要注意的是 .config 至少编译配置的临时文件,最好去改动你配置的config文件
在这里插入图片描述

最后

以上就是鳗鱼大雁为你收集整理的Linux内核编译过程的全部内容,希望文章能够帮你解决Linux内核编译过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部