哈喽,我是子牙老师。又又又做出新东西了:为Linux内核写了个文件系统,Linux内核可正常识别
你可能想问:你写的文件系统Linux能用吗?当然可以!怎么用呢?mount呀
mount成功后,你在目录mnt做的一切操作,都是使用我写的文件系统aayafs。不过所有的操作都要你去实现,哪些呢?几个核心operations需要填充,填充好后注册进入内核,就可以用了
比如我来做几个我已经实现的操作看看
我还实现了文件的读写
读文件报了个错,应该是功能没有实现完整。因为读文件需要操作很多很多数据结构,各种数据结构中的属性。又没有人教这个,也没有书跟视频,只能借助ChatGPT一点一点调试
我写的这个文件系统是nodev,就是不需要硬盘,所有的数据都保存在内存中,已经写完了。后续有空准备写一个需要设备的文件系统,比如给硬盘写一个文件系统,参考EXT文件系统结构及算法,写一个。
据说玩文件系统跟硬盘数据恢复很赚钱,有木有懂行的,科普一下
如果你想学习如何为Linux内核写一个文件系统,或者你想透彻得看到VFS、EXT的源码,可以加班主任微信【jvm-anan】,备注【手写文件系统】,后面开课,班主任会第一时间通知你
因为我是研究计算机基础学科的,比如操作系统、Linux内核、Java虚拟机、文件系统、网络协议栈……所以我每次分享我的研究成果,总有人问:你做这些有什么意义呢?正好借助AI把这个写出来,我也有点思考,就一起分享了
这只是我的判断,不一定就是正确答案,但是时间会证明一切。我判断错了,我做的一切都会被时代淘汰。我判断对了,我做的一切都是提前布局,我就算踩中了风口,我的梦想就得以实现
以下,enjoy
我的思考
把这个文件系统写出来后,我就在想:以前我为什么写不出来,今天怎么就能写出来了?我觉得有两个核心条件成熟了!
一、AI的出现。在没有AI的时候,你根本不知道如何动手做这个事,第一步应该做什么,第二步应该做什么……现在有了AI,你就可以问它:如何给Linux内核写一个文件系统,顺着它给的答案,不断的提问,慢慢就能得到答案
你有没有发现,AI你也可以用,但是你还是写不出来这个文件系统,你觉得原因是什么?(这里没有鄙视链,只是单纯举例,内心脆弱的boy别瞎想,没有人瞧不起你,你是最棒的!)
其一,你不具备基于Linux内核写文件系统的认知。因为你对Linux内核、文件系统、Linux内核中文件系统是如何工作的……你没有这层认知。所以你知道未来的核心竞争力是什么吗?不是写代码的能力,是看懂AI生成的代码的能力,这是其一。如何看懂?懂那个技术才能看懂!所以AI的到来,不学习还是不行。或者可以说,AI的出现,会变得更卷!比谁的学习速度更快、比谁的技术深度更深、比谁的技术广度更广
其二,ChatGPT给你的答案,你没有环境去运行。你不知道这个代码如何在Linux内核中运行、如何单步调试Linux内核中的文件系统代码、如何通过增删改查目录或文件来测试你写的文件系统……我觉得这是AI时代程序员的第二个核心能力:有能力构建一切代码的运行环境,去运行、单步调试AI给你生成的代码
总结说,第二个条件就是我的认知达到了这个水平!我写过操作系统:x86单核操作系统、x64多核操作系统,能够搭建单步调试Linux内核环境,对Linux内核的内存、进程、系统调用、网络、文件系统等核心子系统非常熟悉、知道如何在Linux内核中写驱动写文件系统及单步调试方向,我基于Linux内核写过发行版,我就可以无障碍的在用户层实现各种shell命令去测试我写的文件系统
我的判断
因为AI的存在,AI的不断强大,使用AI我学会了很多我以前不会的技术,我得出这样的判断:你想研究的任何技术,你只要能构建出测试代码的环境,理论上来说,你就可以学会任何技术。