你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

linux内核编译的“苦”

[复制链接]
gaosmile 发布时间:2020-9-24 22:37

一、前言(仅供参考)

linux内核该如何学习?

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

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

3、进行解压并编译

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

微信图片_20200924223435.png 微信图片_20200924223443.png


微信图片_20200924223447.png

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

微信图片_20200924223451.png

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

微信图片_20200924223454.png

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

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

进程管理:task_struct

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

微信图片_20200924223458.png

一、linux内核版本下载:

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

微信图片_20200924223502.png

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

2、解压并配置、编译:

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

微信图片_20200924223507.png

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

xz –d linux-5.8.10.tar.xz

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

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

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

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

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

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

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

微信图片_20200924223511.png

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


root@txp-virtual-machine:/home/txp/share01/linux-5.8.10# make -j4

  CC [M]  net/bridge/br_vlan.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_clock_source.o
  LD [M]  net/dsa/dsa_core.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_scl_filters.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_transform.o
  CC [M]  drivers/gpu/drm/i915/gvt/mmio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.o
  CC [M]  net/appletalk/aarp.o
  CC [M]  net/bridge/br_vlan_tunnel.o
  CC [M]  drivers/gpu/drm/i915/gvt/display.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.o
  CC [M]  net/appletalk/ddp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.o
  CC [M]  net/bridge/br_vlan_options.o
  CC [M]  drivers/gpu/drm/i915/gvt/edid.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_ipp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_aux.o
  CC [M]  net/bridge/br_switchdev.o
  CC [M]  net/appletalk/dev.o
  CC [M]  drivers/gpu/drm/i915/gvt/execlist.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c.o
  CC [M]  net/appletalk/atalk_proc.o
  CC [M]  net/bridge/br_netfilter_hooks.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_hw.o
  CC [M]  drivers/gpu/drm/i915/gvt/scheduler.o

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

htop

微信图片_20200924223515.png

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

当前内核版本:

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

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

make modules_install
make bzImage

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

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

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


收藏 1 评论0 发布时间:2020-9-24 22:37

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版