根文件系统(一):基础

         本文主要探讨210根文件系统相关知识。

根文件系统
        
存储设备(flash等)是分块(扇区),访问存储设备是按块号 (扇区号)来访问,文件系统(软件)对存储设备扇区进行管理,将对扇区的访问变成对目录和文件名的访问
        根文件系统init进程的应用程序和其他应用程序,提供根目录、etc、bin等目录以及shell命令
        根文件系统=inuxrc+VFS+...

linuxrc(进程1)
       
 linuxrc是可执行应用程序,属于应用层通常为静态连接
        linuxrc提供交互界面且被其他应用程序是直接或间接调用
        linuxrc(busybox)负责系统启动后的配置
        busybox构建rootfs用于产生init进程应用程序,提供shell命令程

VFS
     
   VFS是虚拟文件系统(FAT、NTFS、ext2、ext3、jffs2、yaffs2、ubi)用于管理块设备,通过文件系统将对扇区的访问变成对目录和文件名的访问且提供访问和操作文件的API,且同一API可适用于对不同格式的文件的操作
        sys,proc实时产生系统运行过程的信息文件以及dev下的设备文件,当系统检测到外部设备接入时,dev下产生对应设备文件,设备取消时设备文件消失都与VFS机制有关

buildroot
        依赖(g++ bison flex texinfo git hgsubversion whois)
        buildroot包含交叉编译工具链制作及rootfs配置编译
        编译后生成rootfs.tar(buildroot/output/images/)
        解压到release目录下使用

demo:

        ext3根文件系统制作                

mkdir make_rootfs 

cd make_rootfs

dd if=/dev/zero of=rootfs.ext2 bs=1024 count=2048

losetup  /dev/loop1 rootfs.ext2

mke2fs -m 0 /dev/loop1 2048

mount -t ext2 /dev/loop1 ../rootfs/

cd ../rootfs

touch linuxrc

cd ..

umount /dev/loop1

losetup -d /dev/loop1

        搭建nfs

apt-get install nfs-kernel-server -y

apt-get install nfs-common -y

vim /etc/exports

/root/rootfs *(rw,sync,no_root_squash,no_subtree_check)

exportfs -r

/etc/init.d/nfs-kernel-server restart

/etc/init.d/rpcbind restart

检测挂载路径和内容

showmount localhost -e

mount -t nfs -o nolock localhost:/root/rootfs /mnt


        配置内核支持nfs启动

make distclean

make x210ii_qt_defconfig

make menuconfig

make -j8

cp -r arch/arm/boot/zImage ~/tftp/
Networking support 
    Networking options 
        TCP/IP networking
                [*]IP: kernel level autoconfiguration
                    [*] IP: DHCP support
                    [*] IP: BOOTP support
                    

File systems  --->  
    Network File Systems  --->
        <*> NFS client support 
        [*] NFS client support for NFS version 3                                  
        [*] NFS client support for the NFSv3 ACL protocol extension 
        [*] NFS client support for NFS version 4 (EXPERIMENTAL) 
        [*] NFS client support for NFSv4.1 (DEVELOPER ONLY) 
        [*] Root file system on NFS 

 

        uboot配置nfs启动参数

set bootargs root=/dev/nfs nfsroot=192.168.100.100:/root/rootfs ip=192.168.100.27:192.168.100.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200 

 set bootcmd 'tftp 30800000 zImage;bootm 30800000'

 save 

 reset

        结果显示:

                vfs挂载成功,但linuxrc异常

根文件系统(一):基础_第1张图片

你可能感兴趣的:(linux,嵌入式硬件,arm开发)