Linux内核编译过程

news/2024/7/8 12:09:23

准备工作

硬件:笔记本

系统: 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文件
在这里插入图片描述


http://www.niftyadmin.cn/n/3059530.html

相关文章

Linux Shell nohup命令用法

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –usermysql &。可是有很多程序并不想mysqld一样,这…

必应搜索昨日起出现大规模的无法访问

昨天下午,必应搜索在国内出现大规模的访问故障,显示“无法访问此网站”,具体原因未知。必应由微软公司在2009年推出,英文名为 Bing,是全球领先的搜索引擎之一。对昨天下午起国内出现的大规模访问故障,有网友…

python 正则匹配+爬虫+返回信息对比 实例(亲自测试)

①将输入两个文件的txt,正则匹配,进行拼接:(所有的)②将text信息(“找一下恒洁”),组成完整的URL链接,进行爬虫搜索 ③保存所有的content,匹配自己所需要的信…

27 | 主库出问题了,从库怎么办?

在前面的第24、25和26篇文章中,我和你介绍了MySQL主备复制的基础结构,但这些都是一主一备的结构。 大多数的互联网应用场景都是读多写少,因此你负责的业务,在发展过程中很可能先会遇到读性能的问题。而在数据库层解决读性能问题&a…

Linux下硬盘读写压力测试脚本(Python版)

import os,time for i in range(300000):os.system(sudo time dd if/dev/sda4 of/test1.txt bs8k count300000)time.sleep(0.2)os.system(sudo rm /test1.txt)time.sleep(0.1)if i%10 0:print i os.system("echo END") if后面跟的是输入地址,使用lsblk命…

走进广西春运高铁“扫雷车” 司机时刻紧盯前方

1月24日凌晨,广西动车司机周祥兴驾驶着DJ8836/7次CRH2A-2393号动车检测车在贺州至怀集、怀集至桂林的线路上行驶。动车检测车是每天开行最早的一班车,用于检测接触网和轨道的情况,也被称为“扫雷车”。动检车司机最重要的工作是瞭望&#xff…

图像卷积尺寸计算

输入图像大小为:W*W 卷积核大小为:F*F stride步长大小为:S*S padding 大小为:P*P 卷积之后的尺寸为N*N N(W-F2P)/S1转载于:https://www.cnblogs.com/code-wangjun/p/10325141.html

Android之Activity系列总结(一)--Activity概述

Android之Activity系列总结(一)--Activity概览Activity本文内容创建 Activity实现用户界面在清单文件中声明 Activity启动 Activity启动 Activity 以获得结果结束 Activity管理 Activity 生命周期实现生命周期回调保存 Activity 状态处理配置变更协调 Ac…