看完1, 知道根文件系统的结构和作用。
看完2, 知道kernel挂载根文件系统的实际过程。
1. 详解制作根文件系统 http://fangjian0518.blog.163.com/blog/static/5591965620112171420757/
什么是根文件系统?Linux引导启动时,默认使用的文件系统是根文件系统。
存放文件系统的设备就是文件系统设备。比如,对于一般使用的windows 2000操作系统,硬盘C盘就是文件系统设备,而硬盘上按一定规则存放的文件就组成文件系统,windows 2000有NTFS或FAT32等文件系统。
当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:
目录名 | 存放的内容 |
/bin | 必备的用户命令,例如ls、cp等 |
/sbin | 必备的系统管理员命令,例如ifconfig、reboot等 |
/dev | 设备文件,例如mtdblock0、tty1等 |
/etc | 系统配置文件,包括启动文件,例如inittab等 |
/lib | 必要的链接库,例如C链接库、内核模块 |
/home | 普通用户主目录 |
/root | root用户主目录 |
/usr/bin | 非必备的用户程序,例如find、du等 |
/usr/sbin | 非必备的管理员程序,例如chroot、inetd等 |
/usr/lib | 库文件 |
/var | 守护程序和工具程序所存放的可变,例如日志文件 |
/proc | 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容 |
/sys | 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容 |
/mnt | 文件系统挂接点,用于临时安装文件系统 |
/tmp | 临时性的文件,重启后将自动清除 |
FHS(Filesystem Hierarchy Standard)标准
2. Linux--根文件系统的挂载过程分析 http://blog.csdn.net/guopeixin/article/details/5962482
简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统,也即真实的文件系统。挂载好真实的根文件系统之后,再去执行文件系统中的初始化程序。
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
...
3. 常识:
ps的机制是通过查看/proc中的内容来获得进程信息的, 在/etc/init.d/rcS里面有mount -t proc none /proc 。
linux/proc/devices和/dev区别 http://www.chinaitlab.com/embed/linux/876632.html
问:linux环境下,/dev/目录下的内容与/proc/下文件devices中的内容有什么区别?我在目 标板上做实验时发现,当我向板子上加载驱动模块时,devices文件中有变化,而/dev下根本没有变化,/dev/下不也应该是设备接点吗,为什么为 模块建立设备接点时,/dev/下却没有变化呢?
/proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数。
/dev/*.* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod dr1 c 254 0,用户通过此设备名来访问你的驱动。
设备 文件 ,设备编号 #ll -a /dev 在每一行都可以看到设备文件、设备编号(主、次)
对于每种硬件设备,系统内核有相应的设备驱动程序负责对它的处理。而在Unix 中,使用设备文件的方式来表示硬件设备,每种设备驱动程序都被抽象 为设备文件的形式,这样就给应用程序一个一致的文件界面,方便应用程序和操作系统之间的通信。
习惯上,所有的设备文件 都放置在/dev 目录下。