当前位置: 首页 > 科技观察

试一试Linux内核编译的“苦”

时间:2023-03-22 02:06:49 科技观察

1.前言(仅供参考)如何学习linux内核?1、安装vmware虚拟机或者virtualbox,然后安装发行版linux2,www.kernel.org,选择一个Kernelversion3,解压编译4,自己写一些模块(比如可以尝试解决一些bug在官网),如下图所示:下图我们可以看到内核bug还有很多没有解决的问题:以下是提交的bug测试报告:最后,如果可能的话,你可以尝试解决这些问题虫子!!!5.内核源码(网络)阅读:tcp_input.ctcp_out.ctcp_ipv4.ctcp.c进程管理:task_struct6,书籍参考(一开始只能看一本书,多看几遍,不要索要更多,求精,真正理解原理。本书内核版本为0.11,内核比较小,非常适合学习,平时学习阅读源码,也非常推荐阅读本版本内核源码):1.下载linux内核版本:1.我们可以到官网下载linux内核版本:www.kernel.org:注意:我这里下载的是最新版本的kernel用于编译,环境为ubuntu18.04;注意,如果使用低版本的ubuntu编译一个版本的linux内核,可能会出现一些环境配置问题,比如make的版本太低等。2.Decompressandconfigureandcompile:(1)HereIusethesmbdservertosharewindowsfiles,nowIstarttodecompressthelinuxkernelfilejustdownloaded:Note:thelinuxkernelfiledownloadedatthebeginningendswith".xz"Yes,weneedtousethefollowingcommandtodecompress:xz–dlinux-5.8.10.tar.xz(2)Thenyouwillgetthefileintheabovepicture;let’sofficiallydecompressthefile:root@txp-virtual-machine:/home/txp/share01#tarxvflinux-5.8.10.tar(3)Thenswitchtothedecompressedfiledirectory,andmakesomepreliminarypreparations:root@txp-virtual-machine:/home/txp/share01#cdlinux-5.8.10root@txp-virtual-machine:/home/txp/share01/linux-5.8.10#lsarchcertsCREDITSDocumentationfsinitKbuildkernelLICENSESMakefilenetsamplessecuritytoolsvirtblockCOPYINGcryptodriversincludeipcKconfiglibMAINTAINERSmmREADMEscriptssoundusr(4)然后安装一些插件,这里我已经提前试过错了,所以只要安装下面的安装配置就行(当前Whenperformingmakemenuconfigforthefirsttime,youcaninstallsomeconfigurationsaccordingtotheerrormessage):sudoapt-getinstalllibncurses5-devflexbisonlibssl-dev(5)performmakemenuconfig,theinterfaceappearsandsavetoexit(youcandirectlypresstheesckeyonthekeyboardExit):(6)Startcompilingthekernel,hereyoucancompileandconfigureaccordingtohowmanycoreprocessorsyourcomputerhas(mycomputerisAres,quad-coreprocessor)root@txp-virtual-machine:/home/txp/share01/linux-5.8.10#make-j4CC[M]net/bridge/br_vlan.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_clock_source.oLD[M]net/dsa/dsa_core.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_scl_filters.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_transform.oCC[M]drivers/gpu/drm/i915/gvt/mmio.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.oCC[M]net/appletalk/aarp.oCC[M]net/bridge/br_vlan_tunnel.oCC[M]drivers/gpu/drm/i915/gvt/display.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.oCC[M]net/appletalk/ddp.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.oCC[M]net/bridge/br_vlan_options。oCC[M]drivers/gpu/drm/i915/gvt/edid.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_ipp.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_aux.oCC[M]net/bridge/br_switchdev.oCC[M]net/appletalk/dev.oCC[M]drivers/gpu/drm/i915/gvt/execlist.oCC[M]drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c.oCC[M]net/appletalk/atalk_proc.oCC[M]net/bridge/br_netfilter_hooks.oCC[M]驱动程序/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_hw.oCC[M]驱动程序/gpu/drm/i915/gvt/scheduler.o注意:因为是最新的内核,所以编译的时间比较长,所以耐心等待(大概至少几十分钟吧。。。),编译的时候,我们也可以看一下内存情况:htop(7)如果要修改当前的ubuntu内核版本,可以按照下面的步骤进行。我这里没有改内核,配置的东西太多了,就干脆。......当前内核版本:root@txp-virtual-machine:/home/txp/share01/linux-5.8.10#uname-r5.3.0-28-generica,首先安装编译内核模块:makemodules_installmakebzImageb,安装新编译的内核(用我们刚刚编译的新内核替换当前内核):$cparch/x86/boot/bzImage/boot/vmlinuz-5.8.10$cp.config/boot/config-5.8.10$cd/lib/modules/5.8.10/$update-initramfs–c–k5.8.10$update-grub注:有兴趣的小伙伴可以试一下,这里就不试了!主要是这个内核编译太花时间了,我的天。。。。。本文转载自微信公众号“txp玩转Linux”,可以通过以下二维码关注。转载本文请联系txp玩Linux公众号。