需要多久才能看完linux内核源码?(Linux内核兼容困境:硬件驱动不足,无法满足用户需求)
Linux内核兼容困境:硬件驱动不足,无法满足用户需求
Linux内核兼容的驱动太少,现在老的新的海量的芯片核显和独立显卡等硬件研发生产时,各厂家都是围绕Windows进行驱动程序调试适配生产的,硬件一出厂就和Windows定下了青梅竹马的“娃娃亲”,烧成灰都相互认识,装机顺利没有Linux装机磕磕碰碰鼻青脸肿也进不去。跟Linux完全就是“陌生人”,又看不上Linux穷小子,兼容不兼容无所谓,不是这些硬件厂家考虑的事,各大硬件官网只有Windows7、Windows10主流系统的驱动提供下载。
有些小白说,驱动不是问题,光要国产软件应用丰富就行,说得倒很轻飘简单。他们不知道生态分两部分:①硬件及驱动 ②应用软件。没有主要核心零部件驱动,连装系统和体验系统的门都进不去。电脑的机理跟我们人体系统机理差不多,手脚、眼睛、耳鼻等一系列的器官只不过是人体系统的硬件,神经系统才是器官连接大脑CPU的驱动程序,让人能够活动自如,没有神经驱动我们人就变成聋子、睁眼瞎、瘫子、瘸子类型的残疾人。大家平时主要直接跟各种行业应用和系统设置面对面的打交道,系统运行稳定时跟驱动接触少,只有装系统和出故障时才接触到驱动程序,驱动程序是系统中协调系统各层面的默默无闻的幕后英雄。
同时驱动程序也是闯祸者,成熟系统只占故障率的10%左右,系统80~90%的故障都是来源于驱动系统的缺失和不兼容,驱动出错,系统背锅。驱动缺失,系统挨骂!
驱动兼容缺失会导致很大一部分机器U盘引导装深度Deepin64位和优麒麟系统时就卡死到蓝屏状态,装Deepin32位正常,装Windows64位也正常,说明Linux内核和硬件厂商没有相互协作把Linux驱动维护升级,半途荒废到那儿了。所以Linux和这些芯片显卡硬件相遇时会出现“你不认识我,我不认识你”的卡死状态,能装上deepin都是碰上了运气!像中彩票一样。
实在要硬盘真实安装,制作U盘启动盘安装碰碰运气吧,如果装不上,就不要勉强,不管你用什么U盘烧录工具都没用,白费劲。即使通过什么调试勉强安装上,接下来会有各种各样的其他类型驱动引起的问题让你寸步难行,挂了都是家常便饭。
要想看看Deepin是个啥样子,装个虚拟机,虚拟机就像是“孙”,会七十二般变化,它能虚拟变化成出各种各样的兼容Linux的驱动,虚拟机运行deepin非常稳定流畅,没有各种驱动困扰。作为体验过各大Linux的过来人说句实话,不管是deepin还是优麒麟、新支点、Ubuntu等五花八门的Linux发行版都是非常低级的,都属于狗肉上不了席的程序员使用的小众系统,成不了大众系统,尤其是AI智能的未来,像原始DOS的命令行方式的系统只能当个玩具玩玩而已,不能当作生产力,跟不上时代发展的要求。
国内一些的Linux技术人员和团队仍然固步自封,自我陶醉在Linux所谓的代码效率高的小圈子里,成了“井底蛙”,就不想跳出井口看看外面的世界,哪怕看一眼Android这个成功的范例,它可是Linux的亲儿子,问Android中有一条或者是有半条命令行了吗?想起了一位主持人说的话:就算低头拉车,也要抬头看一看天。
目前的Deepin被一批肤浅者带偏了,正事不足讨论什么圆角直角的美与丑、额头的大与小、老桌面与新桌面的比较投票,走偶像派。无可厚非,走偶像是收获了一点粉丝,“新鲜劲”是有期限的,还得靠系统的可靠和能力维持人机的长期协作伙伴关系。就目前深度不可能维持鱼和熊掌二者兼得的局面,把有限的精力投入到关键的地方。
关于Linux内核,它是属于全世界的,不专属于哪个国家地区和组织。中国还没有哪一家公司有强大的人力、物力、影响力、科技实力对Linux内核进行改进和提升,贡献中国智慧,中国力量,中国解决方案,改善内核兼容海量的驱动,都想投机取巧,喜好形式主义的表面文章,争先恐后干换皮的装修公司一大堆,包括华为、小米这样典型的公司都拿现成的安卓换皮装修。鸿蒙系统,自己和媒体一波一波吹牛声波传遍了全世界,只有敏锐者看清的是只剩名字起得好!连哄带蒙,至今连个影子都没有。
国内Deepin和优麒麟将要面对生态链中遇到第一道难以逾越的驱动鸿沟。一大部分机器安装失败其实是Linux内核天生的营养不良的缺陷导致。
学习Linux内核代码是否有必要?
先抛结论,Linux内核源码属于那种有生之年都不能看完的类型,但是并不妨碍我们通过努力成为某个领域的系统专家。
最近Phoronix发布了对Linux内核仓库的统计信息。统计信息显示Linux内核代码库虽然过去一年linux内核大肆精简了大约100万的代码,仍然有2780万行代码,其中核心代码占5%,网络相关的代码占35%,驱动超过40%。
看重点,总代码行数超过2700万行,而且这个总量还在因为新的硬件驱动代码加入而持续增加中。
从上面数据看,如果纯粹看代码,估计有生之年都没办法阅读完。那么Linux内核真的没有办法学习了吗? 答案是否定的, 既然操作系统是人创造出来的,那么就一定是人能够掌握和维护的。单纯从数据上看,内核中有75%的代码都是和网络与驱动相关的。网络部分实现了各种网络协议栈,驱动部分适配的各种各样的硬件,核心代码大概只有5%,涉及调度,内存管理,虚拟文件系统等。
也就是说出了这两个部分,其它代码数量也没有那么夸张。
内核里面有很多子模块,包括调度,内存管理,文件系统,网络,系统接口,驱动等等,每一个模块都代表一个大的领域。每个人不可能有这么多精力去全部都精通,因此只能选择一个感兴趣的方向去深入研究,而其它的模块只需要大概了解即可。
作为Linux创始人Linus Torvalds ,他贡献的代码现在在内核里面也仅仅占到百分之3点几,Torvalds负责审核的代码仓库也就那么几个,其它的大多都交给开源社区去维护管理了。
很多人都抱着朝圣的心理,想去拜读一下Linux内核源码,好像没有看过源码就不够格成为大神,真的是这样吗? 作为一个多年的内核开发者,真的不建议新手就去直接学习内核源码。
且抛开操作系统的复杂性不谈,光是内核里面的各种宏技巧,各种炫技的写法,就足够新手迷惑好半天。事实上,内核代码并不是一个很好的入门读物,你得有一定的开发基础,并且在真正需要的情况下,才会试图去了解它的原理。而且绝大部分情况下,你都用不着修改它,毕竟能发现了一个内核bug,都算是很牛的事情了。
要成为大神,其实有很多很多的努力方向,不一定非看懂操作系统不可,操作系统原理是成为大神的一条路,但不是唯一。等你在工作中,真的需要修改优化系统的时候再去了解也不迟。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 490382048@qq.com 举报,一经查实,本站将立刻删除。