前言
平常每周都会有一些心得感悟,这些在大家工作中可能会有许多共性。我觉得花一些时间整理一下,跟粉丝读者们分享一下日常学习工作的想法和所得,这是一个很好的互动和文章分享的痛点。
这是第十六篇。
Linux内核编译
最近工作刚开始,领了一台新的机器,然后开机进去后发现找不到那个网卡,没法上网。问了组内的同事,是由于缺少该网卡驱动导致的。然后他就用U盘拷贝了一份内核源码目录到机器上面,更新了一下Linux内核版本,重启之后就可以找到网卡了。他U盘里面的目录是之前编译过的内核源码,然后执行了一下内核安装的命令,更换了内核就好了。
那晚下班后,就琢磨着我学习了Linux操作系统专栏那么久了,还没迈出内核编译的那一步,干就得了。
上网搜了一下怎么进行内核编译,然后就下载了最新版本的内核,在虚拟机里面把那个内核编出来了,并升级了一下虚拟机系统的内核,一步步来也不是那么的复杂,就是开始的时候那个虚拟机编译很慢,后面在网上找啊找,看到有个命令 make -j <n>
, 说是可以加快编译速度。我试了一下的确如此,然后我就修改了一下虚拟机的配置,把cpu
核和内存都给他加到更大,再编译就更快了,大概过了一个多小时编译完成。下面是具体的操作,还有几个遇到的问题,在博客中记录一下。
编译步骤
先说一下,我的虚拟机系统是ubuntu。
第一步是下载源码包,使用wget命令就可以了。
1 | wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.xz |
然后就是解压缩编译了
1 | tar xvf linux-5.17.1.tar.xz |
遇到的问题
- 虚拟机里面编译的时候会有报错
1 | make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止。 |
需要修改一下.config文件, 替换debian/canonical-certs.pem为空。
- failed to load symbols from /lib/modules/5.17.1/misc/vboxguest.ko: Invalid argument
由于是虚拟机 需要安装工具 设备->安装增强功能 -> 安装。 安装报错的话,进去虚拟机弹出光盘,然后再试一次, 就可以了。
解决问题之后, 继续make -j 12
,直到编译完成。 大概要几个小时,真正的是一个大工程啊。
更多
很多事情开始了,你会发现没有什么神秘的。
这一周主要的工作还是看代码文档,不过不是linux内核代码,而是DPDK源码,同时也编译了DPDK,运行了对应的test和example。从中发现,这些个开源代码的文档还是挺完全的,面面俱到,根据文档一步步来,耐心看下来,很容易打通一个个流程。学习了一周的DPDK的源码,看到了许多思想,其实也是以往工作中都用到过的技术,不过是应用到了DPDK的场景中了,当然也有新的东西啦。 DPDK的编译运行就在另一篇文章讲,后面慢慢地写出一系列的DPDK源码学习相关的笔记文档,吃透它,嚼碎它,消化它,让他也成为我的一部分,哈哈。
下面是今晚组长请客吃日本料理,第一次正经吃日料,还是蛮新鲜的,全部吃完了。
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。