目录
本系列文章由江山(csdn名:补不补布)(github:jianggogogo)自己写成,当中用到引用时都已经标记出来,如果出现版权问题,请直接联系我修改。当然,技术在于分享,欢迎大家转载,不过请注明出处。最后,如果出现有错误的地方欢迎大家指正。
前言:
在学习韦东山教程时,直接从裸板开发直接跳到了驱动开发的课程当中,发现中间缺少了很大一部分。现在重新学习了课后的知识之后,来重新写这样一篇笔记。
一、目的
笔记,记录
- linux内核打补丁,编译。
- 创建一个根文件系统。
- nfs网络文件系统创建。
二、Linux内核打补丁,编译:
2.1、下载一个内核和补丁文件:
这三个是对应的内核和补丁的安装包。
2.2、解压缩内核文件
流程为:
1、解压缩内核文件。
2.3、打补丁
2、打补丁,命令如下:
patch <p1 < ../linux-2.6.22.6_jz2440.patch
2.4、生成配置目录
注意,由于linux可以适用于不同的开发板,那么对于不同的开发板自然要使用不同的配置,这里使用的是s3c2440那么自然也需要找到s3c2440的配置模式,当然,这些文件已经在linux里面集成了,我们只需要找出来然后编译就可以实现。
- 这个文件名为:>s3c2440_deconfig
- 文件目录为:>arch/arm/configs
在linux目录下编译板子的配置文件
make s3c2440_deconfig
这一步会生成一个文件:config_ok。
然后我们将这个生成的配置文件,设置为系统需要的配置文件:
cp config_ok .config
然后,生成目录和打开目录,命令如下:
//这一步用来打开配置菜单
make menuconfig
菜单如下:
2.4、编译和下载内核映像文件
注意,我们的Linux内核文件下载下来能够直接用于开发板上面吗?答案当然是否定的,毕竟这只是一个内核文件,开发板却是很多的。我们需要使用相同的规则来编译内核,让所有的的开发板都能识别这一个规则,从而实现在开发板上面运行linux。
这个按照固定规则生成的文件叫做:uImage。
在内核目录:
执行:
make uImage
这时候会生成一个文件,uImage。这时候,我们在uboot中选择下载uimage就可以将linux 内核映像文件烧入了,如下面所示哦,选择k
2.5、结果
经过,上面的操作,那么我们的开发板就可以说拥有了自己的linux系统文件。
三、根文件系统创建:
我也一直想不同这东西到底是个啥。可是后来自己的一想,原始人估计也没有办法给衣服下一个定义,只不过是突然觉得冷了,就拿了一些东西该盖在自己的身上。
所以,初学linux的人来说,我们也无法给根文件系统下一个或者说看别人的解释就明白这是啥。我们只有自己去用,去犯错误。才能体会,当初设计者为啥要给出这样一个东西。
3.1、为啥需要根文件系统。
我是这样想的,Linux一启动,总该知道内核外面究竟是有点啥东西吧。但是问题来了,就像古代的朱元璋一登基,总得问问丞相同志,我这个皇帝有多少土地啊,多少臣民啊,多少妃子啊(当然,这个他自己知道)。不知道这些,皇帝就没有办法开展工作啊。
所以,就像上面一样,linux一加载,也该知道自己现在运行的环境有点啥东西。所以,linux内核第一个加载的记录文件的东西就叫做根文件系统。
3.2、最小的根文件系统:
当然,网上有很多做好的根文件系统,但是这些做好的各有各的功能,从基础做一个简单的也能提高自己的能力。
3.2.1、busybox
第一步,我们的根文件系统,起码得支持我们的命令吧。如果,ls这种基础命令都不支持,那么太难了。
busybox就是集成命令得一个库。
- 首先这是文件目录得配置文件。<