Linux内核学习①:内核的下载、编译及过程中的问题处理

Linux内核文件下载

内核下载网址:

http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/

①进入该网站后界面如下:

②选择自己合适的版本进行下载,如博主下载的版本是V5.9,步骤如下选中V5.x

博主下载的是这一版本的内核压缩包

③下载成功后解压出来即可,这目录便是Linux内核的所有文件,至此文件下载完毕

编译内核源码

由于是Linux的内核文件所以仅下载到Windows的目录下是无法进行编译的,所以我们要将其拷贝到Linux的目录中再进行编译。

在编译内核前,我们可以输入命令查看当前系统的版本信息和内核版本信息,如博主的Linux是Ubuntu18.04因此内核版本为4.15.0
可通过如下命令

cat /etc/issue #查看系统版本信息
cat /etc/redhat-release #查看系统版本信息(第一种方法不行则采用第二种)

uname -mrs #查看内核版本信息

博主将事先下载的Linux内核5.9拷贝到Linux虚拟机和Windows之间的共享文件夹中
(在此博主遇到一个问题,即在拷贝文件夹过程中会报错提示某个目录无权限,因此不能完整拷贝过来,博主的解决方法是直接将整个压缩包拷贝到共享文件夹中,再通过命令对其进行解压)
系统提示无权限,直接取消即可,直接拷贝整个压缩包,而非文件夹

博主事先在Linux虚拟机中的桌面创建了个Demo目录,再将共享文件夹中的Linux内核源码的压缩包拷贝到桌面的Demo文件夹中
打开终端后,命令如下:

cd Desktop #进入桌面
sudo mkdir Demo #创建Demo文件夹
cp /mnt/hgfs/Linux_share/Demo/linux-5.9.tar Demo/
#拷贝共享文件夹中的压缩包到Linux虚拟机中的Demo路径下,由于每个人的路径不一定一致,因此路径名需要修改

拷贝完成之后,我们进入该目录执行命令进行解压。

cd /Desktop/Demo #进入到Demo目录
tar xvf linux-5.9.tar #解压该压缩包到当前目录下

可以看到我们解压后的文件

在进入该目录执行编译前我们需要通过命令下载一些编译相关的依赖。

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

安装完成之后的界面如下

下载完依赖后在编译内核之前,可以对内核源代码进行配置,配置的主要目的是为了确定哪些模块会变编译到内核当中去。
首先进入源代码的目录中

cd linux-5.9 #进入到源码目录中
cp -v /boot/config-$(uname -r) .config
#从当前机器的启动目录拷贝配置信息到源代码目录。
#这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。


完成上述配置后,可以输入

make menuconfig #该命令会执行一些脚本,然后打开一个配置界面

下面是打开的配置界面。可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果不熟悉,可以不做任何修改。

下面就可以进行内核的编译了,在当前目录下能够看到有个Makefile文件,我们直接执行make命令进行编译即可

sudo make #执行当前目录下的Makefile脚本开始编译

(编译过程中需要确认必要的问题,这些问题取决于你将升级的现有内核以及升级后的内核。博主在编译过程中一路回车,最终没有编译过,报了个错误)

经过百度以后,需进行如下操作
查看当前目录下的文件,找到.config文件

先使用vi 命令进入该文本,再使用快捷查找

/CONFIG_SYSTEM_TRUSTED_KEYS  #使用该命令课跳转至该处
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" #这个双引号中间要删除,如下图
CONFIG_SYSTEM_TRUSTED_KEYS=""  #如左侧所示


执行完成之后,可再次执行sudo make命令继续编译,编译时长比较长需要耐心等待。
执行成功后,打印如下图所示(显示界面不一致,原因是因为编译一次时间太长了第二天重新编译的,期间博主用的串口工具进行远程登陆编译的,没有影响正常敲命令就好了,成功的打印是一样的。)

然后安装模块

sudo make modules_install #安装模块

成功后打印如下

最后我们执行命令安装内核
安装内核前可以再次看到我们的内核版本原来是4.15.0

sudo make install #安装内核

若无报错,则安装成功后打印如下。

最后我们重启下我们的虚拟机,即可。

Linux内核学习①:内核的下载、编译及过程中的问题处理相关推荐

  1. oracle安装搜狗输入法教程,Linux入门学习教程:在Ubuntu 14.04中安装使用搜狗拼音输入法...

    然后,访问搜狗输入法Linux版的官网,http://pinyin.sogou.com/linux,下载搜狗输入法Linux版.从官网可以看到,该输入法官方只支持Ubuntu(不过网上有人通过将deb ...

  2. Storm编译打包过程中遇到的一些问题及解决方法

    Storm编译打包过程中遇到的一些问题及解决方法 参考文章: (1)Storm编译打包过程中遇到的一些问题及解决方法 (2)https://www.cnblogs.com/panfeng412/p/s ...

  3. Nginx编译安装过程中make编译报错

    Nginx编译安装过程中make编译报错 起因 1.-Werror警示报错 解决方法: 2.第二种如下的报错 解决方法: 起因 nginx编译安装过程中,往往一到 make 编译步骤就开始频繁报错,我 ...

  4. Linux内核学习之路_1_编译Linux内核

    1.准备工作 1.1 学习环境 1.2 下载Linux内核源码 1.3 解压Linux内核 1.4 目录结构介绍 1.2.2 Linux内核配置 1.1 学习环境 本系列教程使用的环境如下: 操作系统 ...

  5. OpenWrt学习总结(2)编译OpenWrt过程中整理的软件包下载网址

    编译OpenWrt BarrierBreaker14.07过程中会出现很多软件包找不到软件源,或者连接不到软件包的下载网址,这时我们就需要根据编译出现的错误提示去手动下载相应的软件包. 手动下载时,建 ...

  6. 编译apache过程中出现如下错误及解决办法

    在编译apache的过程中出现如下错误: no SSL-C headers found configure: error: ...No recognized SSL/TLS toolkit detec ...

  7. 关于vue框架下载步骤以及过程中可能遇到的问题汇总

    1.下载各个版本的vue框架链接介绍 | vue-element-admin 2.下载方法 1.去git网站下载git,如果git已经下载并安装好,该步可以省略   2.去nodejs网站下载node ...

  8. redhat linux 7.1安装教程,redhat7.1安装过程中怎么分区?

    我的分区如下: c:(2.5G FAT32)--WINXP d:(4G FAT32) e:(4G FAT32) f:(6G FAT32) g:(500M FAT16) h:(2G EXT2)--LIN ...

  9. HEVC代码学习:帧间预测——MVP过程中MV的获取、传递及存储

    作为一个视频编码小白,最近开始着手啃HEVC帧间预测的代码,想用博客记录一下自己的学习过程,也想与大家分享.交流一下. HEVC代码的学习主要是参考两位大神岳麓吹雪.NB_vol_1的博客以及HM参考 ...

最新文章

  1. 图机器学习中的数据增强技术
  2. 音视频技术开发周刊 | 220
  3. python代码加密cython_利用Cython加密python脚本
  4. python中多对多替换_Python对指定文件内容进行全局替换
  5. AngularJS 开发辅助工具
  6. 二十天一学通C#:.NET中文件和文件夹的类
  7. Android-HelloWorld
  8. Audio Jungle宣传专题片头音乐AE模板专用配乐合集-永久更新
  9. SplitContainer的使用
  10. 【观察】百度搜索开放平台
  11. 实验3 交互式SQL语言1
  12. linux 缩小硬盘镜像,缩小qcow2格式kvm虚拟镜像磁盘大小[转]
  13. 618蓝牙耳机选哪一款比较好?推荐口碑最好的无线蓝牙耳机品牌
  14. 怎么查看拼多多店铺销量?怎么查看店铺后台数据图?
  15. 2021-2027全球与中国玻璃纤维网市场现状及未来发展趋势
  16. 完数什么意思_完美数是什么?
  17. java使用knn实现mnist_java使用knn实现mnist - 百度学术
  18. 【Android】请求打开蓝牙和定位功能
  19. EasyRecovery 简体中文版
  20. 程序员一般通过什么途径接私活?怎样做兼职程序员接私活?

热门文章

  1. 用python编写猜成语游戏_10分钟学会用python写游戏!Python其实很简单!
  2. 使用 Vite 和 TypeScript 从零打造一个属于自己的 Vue3 组件库
  3. Win10 通过SAMBA访问linux服务器拒绝访问
  4. Excel获取文件夹所有文件或图片名称 快速搞定你的数据源
  5. 物联网实验光控小夜灯
  6. python打印unicode编码_【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码...
  7. css iframe 滚动,css – 如何设置iframe的滚动条样式?
  8. 提升领导力的 7 种方法
  9. Verilog移位运算符
  10. Python用SMTP自动发送邮件email