|
|
|
|
移动端

来尝试一下Linux内核编译的“苦”

linux内核该如何学习?1、安装vmware虚拟机或者virtualbox,再安装发行版本linux2、www.kernel.org,挑选一个内核版本3、进行解压并编译

作者:逆序人生来源:txp玩Linux|2020-10-15 11:18

 

一、前言(仅供参考)

linux内核该如何学习?

1、安装vmware虚拟机或者virtualbox,再安装发行版本linux

2、www.kernel.org,挑选一个内核版本

3、进行解压并编译

4、自己写一些模块(比如说可以去尝试解一些官网的bug),如下图所示:

下面我们就可以看到还有很多内核bug未解决的问题还在那里:

下面是提交的bug测试报告:

最后有可能的话,可以去试试尝试解这些bug!!!

5、内核源码(网络)阅读:tcp_input.c tcp_out.c tcp_ipv4.c tcp.c

进程管理:task_struct

6、书籍参考(刚开始可以只看一本书就够了,多看几遍,不求多,只求精,真正搞明白原理,这本书的内核版本是0.11,内核比较小,非常适合学习,平时学习看源码,也非常推荐看这个版本的内核源码):

一、linux内核版本下载:

1、我们可以去官网下载linux内核版本:www.kernel.org:

注:这里我下载的是最新的内核来进行编译,环境是在ubuntu18.04;注意如果低版本的ubuntu去编译搞版本的linux内核,可能会出现一些环境配置问题,比如make的版本过低等等。

2、解压并配置、编译:

(1)这里我使用了smbd服务器来共享windows文件,现在开始解压刚才下载下来的linux内核文件:

注意:一开始下载下来的linux内核文件是以".xz"结尾的,我们要用下面的命令进行解压:

  1. xz –d linux-5.8.10.tar.xz 

(2)然后就会得到上图的文件了;下面来正式解压文件了:

  1. root@txp-virtual-machine:/home/txp/share01# tar xvf linux-5.8.10.tar 

(3)然后切换到解压得到的文件目录下,并进行一些前期准备:

  1. root@txp-virtual-machine:/home/txp/share01# cd linux-5.8.10 
  2. root@txp-virtual-machine:/home/txp/share01/linux-5.8.10# ls 
  3. arch   certs    CREDITS  Documentation  fs       init  Kbuild   kernel  LICENSES     Makefile  net     samples  security  tools  virt 
  4. block  COPYING  crypto   drivers        include  ipc   Kconfig  lib     MAINTAINERS  mm        README  scripts  sound     usr 

(4)然后安装一些插件,这里我已经提前试过错了,所以只要安装下面的安装配置就行(当前第一次进行make menuconfig的时候,可以根据报错信息来进行安装一些配置):

  1. sudo apt-get install libncurses5-dev flex bison libssl-dev 

(5)进行make menuconfig,出现了那个界面并save退出(可以直接按键盘上的esc键退出):

(6)开始编译内核,这里可以根据你的电脑是多少核处理器来进行编译配置(我的电脑是战神,四核处理器)

  1. root@txp-virtual-machine:/home/txp/share01/linux-5.8.10# make -j4 
  2.  
  3.   CC [M]  net/bridge/br_vlan.o 
  4.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_clock_source.o 
  5.   LD [M]  net/dsa/dsa_core.o 
  6.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_scl_filters.o 
  7.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_transform.o 
  8.   CC [M]  drivers/gpu/drm/i915/gvt/mmio.o 
  9.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.o 
  10.   CC [M]  net/appletalk/aarp.o 
  11.   CC [M]  net/bridge/br_vlan_tunnel.o 
  12.   CC [M]  drivers/gpu/drm/i915/gvt/display.o 
  13.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.o 
  14.   CC [M]  net/appletalk/ddp.o 
  15.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.o 
  16.   CC [M]  net/bridge/br_vlan_options.o 
  17.   CC [M]  drivers/gpu/drm/i915/gvt/edid.o 
  18.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_ipp.o 
  19.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_aux.o 
  20.   CC [M]  net/bridge/br_switchdev.o 
  21.   CC [M]  net/appletalk/dev.o 
  22.   CC [M]  drivers/gpu/drm/i915/gvt/execlist.o 
  23.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c.o 
  24.   CC [M]  net/appletalk/atalk_proc.o 
  25.   CC [M]  net/bridge/br_netfilter_hooks.o 
  26.   CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_hw.o 
  27.   CC [M]  drivers/gpu/drm/i915/gvt/scheduler.o 

注:因为是最新内核,编译的时间比较久,所以耐心等待就行了(大概至少几十分钟。。。。。。),在编译的时候,我们也可以看一下内存的情况:

  1. htop 

(7)如果你要修改当前ubuntu的内核版本,可以按照下面的操作来进行,我这里就没有去更换内核了,配置了太多东西,所以就。。。。。。。

当前内核版本:

  1. root@txp-virtual-machine:/home/txp/share01/linux-5.8.10# uname -r 
  2. 5.3.0-28-generic 

a、先进行安装编译内核模块:

  1. make modules_install 
  1. make bzImage 

b、安装新编译的内核(把我们刚才编译的新内核进行替换当前内核):

  1. $ cp arch/x86/boot/bzImage /boot/vmlinuz-5.8.10 
  2. $ cp .config /boot/config-5.8.10 
  3. $ cd /lib/modules/5.8.10/ 
  4. update-initramfs –c –k 5.8.10 
  5. update-grub 

注:感兴趣的小伙子可以去尝试一下,这里我就不尝试了!,主要是这个内核编译太花时间了,我的天.......

本文转载自微信公众号「txp玩Linux」,可以通过以下二维码关注。转载本文请联系txp玩Linux公众号。

【编辑推荐】

  1. 微软不会将Windows迁移至Linux
  2. 从Linux源码看Socket(TCP)的Listen及连接队列
  3. 在Linux终端中展示幻灯片
  4. Linux内核5.9的最重要功能及安装方法
  5. Linux 内核曝严重蓝牙漏洞,影响多个版本
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

19人订阅学习

数据中心和VPDN网络建设案例

数据中心和VPDN网络建设案例

漫画+案例
共20章 | 捷哥CCIE

180人订阅学习

搭建数据中心实验Lab

搭建数据中心实验Lab

实验平台Datacenter
共5章 | ITGO(老曾)

112人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微