如何理解Linux内核编译

74次阅读
没有评论

共计 3047 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章给大家介绍如何理解 Linux 内核编译,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、前言(仅供参考)

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

一、linux 内核版本下载:

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

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

2、解压并配置、编译:

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

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

xz  ndash;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 键退出):

(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

(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  ndash;c  ndash;k 5.8.10 $ update-grub

关于如何理解 Linux 内核编译就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3047字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)