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

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

 [[346476]]

一、前言(仅供参考)

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

 

责任编辑:武晓燕 来源: txp玩Linux
相关推荐

2022-08-08 10:09:08

Vitest单元测试

2018-02-08 10:52:13

Kotlin语言代码

2021-01-21 07:31:11

Filter框架权限

2010-12-06 09:10:02

LightSwitch

2022-03-02 10:53:22

Postman工具开发

2023-02-08 09:02:05

VS Code摸鱼神器

2022-06-29 10:04:01

PiniaVuex

2022-12-03 18:24:13

数据能力场景

2013-11-20 13:41:32

IE微软解决方法

2009-12-07 09:57:06

Fedora/内核编译

2021-05-26 07:53:58

Linux运维Linux系统

2020-07-02 09:46:05

AI

2021-04-13 07:29:13

Swagger3接口Postman

2009-06-15 11:22:06

2023-07-25 15:17:38

Linux操作系统开发

2024-03-01 18:55:54

内存调试Go 语言

2009-10-16 09:45:41

Linux内核操作系统

2023-05-03 09:09:28

Golang数组

2015-05-28 10:31:49

JSJS微信分享

2017-03-27 18:05:49

Linux内核编译与开发
点赞
收藏

51CTO技术栈公众号