在Windows中由不同的盘用于存放用户数据,在Linux下也有类似的概念。同Windows的系统盘C盘一样,Linux也有用于存放内核映像文件、内核启动后的第一个程序(init())、Shell程序、以及应用程序所依赖的库等的地方,这些加起来成为根文件系统,它们存放在一个分区里,内核运行后会去挂接这个分区。Linux没有分区的概念,而是以树状结构的方式管理所有目录。
内核如何启动一个应用程序呢?内核启动后的最后一步会去启动init()进程。在init_post()里会首先打开一个设备open(“dev/console”),sys_dup(0),sys_dup(0),这是一个初始化串口的操作,这样我们可以通过控制台看到内核输出,然后通过run_init_process()启动第一个应用程序。启动的程序由用户设置init = xxx,如果没有指定,则默认依次执行系统指定的程序,如果都没有则报错
创建文件
1、跳转到/work/nfs_root/first_fs查看:cd /work/nfs_root/first_fs
2、查看文件下的主设备号和次设备号:ls dev/console /dev/null -l
会查看到以下内容
crw------- 1 root root 5,1 2010-11-26-07;47 /dev/console //c为字符设备,5为主设备号,1为次设备号
3、创建dev目录并跳转到该目录下:mkdir dev
cd dev/
4、执行:mknod console c 5 1 //c为字符设备,5为主设备号,1为次设备号
如果遇到权限问题,加上sudo 即sudo mknod console c 5 1
5、mknod console c 1 3
构造一个inittab
mkdir etc
vi etc/inittab
写入:console::askfirst:-/bin/sh
三、拷贝C库
1、跳转到目录:cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linxu/lib
2、查看文件夹下的代码:ls -l
.a为静态库,我们只需要动态库
3、创建目录:mkdir /work/nfs_root/first_fs/lib
4、拷贝该文件的库到指定目录:cp *.so* /work/nfs_root/first_fs/lib -d
5、查看:cd /work/nfs_root/first_fs/lib
四、烧写
(一)制作工具
1、制作yaffs2
解压缩:yaffs_source_util_larger_small_page_nand.tar.bz2
tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
2、解压缩得到目录:Development.util.ok
到该文件下:cd Development._util_ok
cd yaffs2/
ls
cd utils
pwd
ls
make
ls -l --------->查看编译好的工具
sudo cp mkyaffs2image /user/local/bin/ ---------->将编译好的东西拷贝到指定的目录
sudo chmod +x /usr/local/bin/mkyaffs2image
cd /work/nfs_root/
mkyaffs2image
mkyaffs2image first_fs first_fs.yaffs2
(二)拷贝到电脑
(三)烧写
进入uboot界面
选择 y--->Download root_yaffs image
打开DNW,选择需要烧写的文件
至此,第一个根文件系统已经弄好,