程序员

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

作者:admin 2021-08-21 我要评论

一、前言(仅供参考) linux内核该如何学习? 1、安装vmware虚拟机或者virtualbox,再安装发行版本linux 2、www.kernel.org,挑选一个内核版本 3、进行解压并编译 4...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

 

一、前言(仅供参考)

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公众号。


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/liEevzqN7r77Xrw962y7tA

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 来尝试一下Linux内核编译的“苦”

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

  • Edge和Chrome 9个新功能告诉你「该选谁

    Edge和Chrome 9个新功能告诉你「该选谁

  • 在Linux命令行内的大小写转换

    在Linux命令行内的大小写转换

  • 这6个服务器监控工具,系统管理员不要

    这6个服务器监控工具,系统管理员不要

腾讯云代理商
海外云服务器