Linux根文件系统的制作
什么是文件系统
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。
文件系统通常使用硬盘和光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议(如NFS、SMB、9P等)提供的或者内存上,甚至可能根本没有对应的文件(如proc文件系统)。
严格地说,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。摘自<<维基百科>>
磁盘需要首先分区,然后再在格式化成指定文件系统。Linux操作系统支持的文件系统有ext2,ext3,ext4,nfs,yaffs2等等,这些文件系统都可以在内核源代码中找到其定义和实现。
什么是根文件系统
和Windows的C,D,E等盘符相似,Linux操作系统也可以将磁盘,Flash等存储设备划分为若干个区,在不同分区下存放不同类型的文件。比如Windows的C盘中就存放着启动系统所必须的一系列文件,而在Linux系统中,内核映像文件(在嵌入式系统众,内核一般单独存放在一个分区中),内核启动后运行的第一个程序(init),给用户提供操作界面的shell程序,应用程序所依赖的库等。这些必需的基本的文件集合就被称为根文件系统。它们都放在一个分区中,在系统启动后就会首先挂载这个分区,也就是挂载根文件系统。
为什么需要根文件系统
要回答这个问题,我们需要了解Linux操作系统的启动流程。Linux操作系统由三部分组成,分别是Bootloader,Linux kernel,File system.系统上电时首先执行的是Bootloader程序,主要做的任务是对硬件的初始化,并加载linux内核,linux内核启动后,就必须要挂载根文件系统,根文件系统的作用在上个小标题可以看到。没有文件系统的支持,即使linux内核运行起来了,我们也不能对内核进行操作。
如何制作根文件系统
准备阶段:需要用到的安装包有
Linux内核源代码包
根文件系统需要用到的配置文件包
用来移植根文件系统的常用命令的busybox安装包
通过samba服务器将所有要用到的安装包都拷贝到虚拟机中
我所使用的操作系统是红帽企业版6,也就是RHEL 6。
1.创建根文件系统与目录
1.1创建目录
mkdir /home/rootfs
cd /home/rootfs
mkdir bin dev sbin proc sys usr var tmp mnt etc