编译linux内核

本文详细介绍编译Linux内核的全过程,包括源码下载、内核修改、编译技巧及常见问题解决,如内存不足、编译加速、内核验证等,适合初学者和进阶者参考。

编译linux内核

编译内核一听就有点上档次,但是不管这个操作到底有好高大上,俗话说得好

一切从实际出发,理论结合实际,实事求是,在实践中检验真理并发展真理,人参补酒王八汤。。。

要编译内核关键就是编译过后我咋晓得我到底编译成功没有喃?要想验证就在内核中加入自己的代码,编译完内核后,调用一哈就晓得自己到底成功没有。步骤就是:

  1. 通过sudo apt-get install linux-source-4.15.0下载linux内核源码
  2. 将下图代码添加到sys.c文件中在这里插入图片描述
  3. 在类似于表映射文件syscall_64.tbl中修改如下代码在这里插入图片描述
  4. 这一步我感觉好像可以不用。。在这里插入图片描述
  5. 然后就是正式编译了在这里插入图片描述在这里插入图片描述
  6. 最后就是在内核安装结束后,写自己的测试程序,然后观察结果,两行的结果中的第一列应该是相同的因为第一项是从1970年到现在的系统记录的是时间,以秒为单位,而这个程序一般来说要不到什么时间,除非你在一分钟的最后59的最后机微妙精确的执行才会不同,而第二项一般都要差几个数,第二项是修饰第一项中最后一秒里面走到了多少微妙就相当于一点半修饰一点这个小时里面走了多少分钟在这里插入图片描述
  7. 最后就是截图在这里插入图片描述

提供几个非常好的,我在编译linux内核中遇到问题的博客
大概的步骤可以参考这篇ubuntu编译内核流程
当遇到磁盘空间不够的时候,千万不要去干重装这种浪费时间的事,最好的办法:扩展空间
这篇为博客相当好: Ubuntu使用Gparted扩展分区空间

再有就是编译的时候我们用的都是make[…]等命令,为啥我们不用最常见的gcc命令喃?
这两篇博客好: makefile粗略认识跟我一起写Makefile
看了这两个博客之后就可以干点有意思的事情了~,比如说自己悄悄咪咪的把内核源码那个文件夹头的Makefile拷贝出来,自己写那个Makefile,然后假装遇到困难,去找自己的同学(不要切找那种很凶的,因为别个可能早就晓得了),然后就假装自己遇到了看不懂的提示,就是自己一输make命令就弹出来个莫名其妙的提示,然后其他的就自己发挥了 ~除了这个Makefile还有就是printk,一起用。。。

然后就是编译的时候太慢,因为我们老师提都没给我们这个小东西,我们就瓜兮兮的编译,一编就3、4个小时,其实是可以用更短的时间的,用 make -j4,这就是开多线程并发便宜,因为现在电脑大多都是多核,可以达到真正的并发,我是从这篇博客 985的计算机学到的,他里面有很多截图我就不上我自己的图了~
在这里插入图片描述
我的cpu是四核四线程,我把那个逻辑处理器当成线程数,可以让任务管理器把cpu性能显示成几张图,有几张图就是几线程,然后在虚拟机里面设置一哈就可以跑了,确实不一样!我之前一个线程要四个小时左右,现在要一个小时20分钟。但是这就有个问题了,按理来说一个线程四个小时,那四个线程应该稳进1个小时左右三,左右分钟三,但是这个为啥会差二十多分钟将近半个小时,经过我的观察,如果四线程要是起作用的话的上面那张图里面的四个小框框都会使用率100%的情况,但是在编译过程中有一些情况是cpu的使用率会降下来的情况,也就是说可能Makefile中写的并不是所有的文件编译都能采用并发的情况,有些文件的编译只能用单线程来,并发可能会出现某种问题,所以就不是简单的线性关系。

经过上面的九九八十一难之后,我终于。。。系统崩溃了
在这里插入图片描述

看来九九八十一难我才经历了八十难,革命尚未成功啊~

我第一反应就是我把原本的内核整坏了,导致开不了机,但这里其实不是这么回事,但是如果真的是内核出了问题,尽量不要重装因为你的系统一般不止一个内核,可以进入GRUB引导选择可以用的内核进入系统,或者真的没有其他可以用的内核的话,可以参考这篇文章linux修复内核ubuntu内核损坏的修复,只是参考,因为毕竟出问题开不了机的时候,只有通过U盘或者光盘开机,然后打开的是光盘或者U盘中的系统,你需要挂在自己的分区才能访问到自己电脑中的数据,所以你要想装入新的内核就必须要把自己电脑中的一些重要分区都挂载进来,然后装内核才会真正装到你的电脑中。

不过这个提示信息是out of memory and no killab....., 这个的解决办法就是把自己虚拟机的内存设置高一点,我感觉之所以自己的内核编译后会出现这种问题,就是系统的内核是经过某种优化处理的,所以我只用设置1G内存就够用了,但是我们自己拿到源码就开始乱整编译出来的东西,没有经过处理,所以在性能上面有差距。

进去以后通过GRUB引导,选择内核,这个内核会更具版本的高低自动降序排列,所以编译之前就要记住自己到编译的什么版本的内核,还有就是如果时间安装的现成的内核,我感觉后面就有(-generic)字样, 因为我自己编译的内核就没有generic

在这里插入图片描述

还有就是网上有删除内核的方法,但是那些都是针对那些能够通过命令找到img文件的内核(我就把这一类的内核成为正规安装的内核,我们自己编译安装的内核就是歪内核),如果想删除自己编译的歪内核,就需要自己手动删除,这篇 删除linux内核的方法 ,我试过了反正把/boot目录下的下的内核文件都删干净了而且还更新了GRUB中的内容,因为内安装都是默认安装到/boot下的,因为/boot是开机启动的目录

这个是完整源码 python实现 Django 【python毕业设计】基于Python的天气预报(天气预测分析)(Django+sklearn机器学习+selenium爬虫)可视化系统.zip 源码+论文+sql脚本 完整版 数据库是mysql 本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后本研究旨在开发一个基于Python的天气预报可视化系统,该系统结合了Django框架、sklearn机器学习库和Selenium爬虫技术,实现对天气数据的收集、分析和可视化。首先,我们使用Selenium爬虫技术从多个天气数据网站实时抓取气象数据,包括温度、湿度、气压、风速等多项指标。这些数据经过清洗和预处理后,将其存储在后端数据库中,以供后续分析。 其次,采用s,将其存储在后端数据库中,以供后续分析。 其次,采用sklearn机器学习库构建预测模型,通过时间序列分析和回归方法,对未来天气情况进行预测。我们利用以往的数据训练模型,以提高预测的准确性。通过交叉验证和超参数优化等技术手段,我们优化了模型性能,确保其在实际应用中的有效性和可靠性。 最后,基于Django框架开发前端展示系统,实现天气预报的可视化。用户可以通过友好的界面查询实时天气信息和未来几天内的天气预测。系统还提供多种图表类型,包括折线图和柱状图,帮助用户直观理解天气变化趋势。 本研究的成果为天气预报领域提供了一种新的技术解决方案,不仅增强了数据获取和处理的效率,还提升了用户体验。未来,该系统能够扩展至其他气象相关的应用场景,为大众提供更加准确和及时的气象服务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值