您的位置:首页 > 其它

busybox根文件系统mdev的详解

2016-06-21 13:32 260 查看
原文连接:http://7071976.blog.51cto.com/7061976/1385965

本文参考《嵌入式linux应用开发完全手册》部分内容

mdev是udev的简化版本,它也是通过读取内核信息来创建设备文件

一、mdev的用途:

  1、 初始化/dev目录、动态更新

       1.1、动态更新不仅是更新/dev目录,还支持热插拔,即支持接入卸下设备时执行某些动作,insmod自动创建/dev/***(class_create,class_device_create要自动创建设备必须依赖udev或mdev)

二、配置init脚本自动运行命令

1、busybox文件目录中/doc/mdev.txt中写到

   所以在/etc/init.d/rcS 配置如下

2、在busybox文件目录中/doc/mdev.txt还有如下关键说明

   所以要修改/etc/fstab来自动挂载文件系统,修改etc/init.d/rcS加入要自动运行的命令。

三、s3c2410、s3c2440的串口名是s3c_2410_serial0、s3c_2410_serial1、s3c_2410_serial2,而不是ttySAC0、ttySAC1、ttySAC2。需要修改/etc/inittab文件

扩展1:
   1、linux有几种虚拟的文件系统类型(只存在于内核,在物理内存不存在,不过我们可以用挂载的方式将它在物理内存上进行映射,如
mount
-t
proc proc 
/proc;将cpu,mem等信息挂载在硬盘中
),比如proc,sysfs,tmpfs,root
   2、proc是内核用的文件系统,用于显示内核信息及改变内核参数;

   3、sysfs文件系统用来管理和显示各种设备的运行参数及设备的层次结构。//能减少对flash的对写

   4、tmpfs:能解决临时的设备(/dev)或文件(/tmp)访问速度慢的缺点。//由于原来/dev的是devfs文件系统

       4.1、是一种虚拟内存文件系统

       4.2、最大的特点就是它的存储空间在VM(virtual memory)里面

       4.3、VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)

       4.4、对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的

       4.5、tmpfs默认的大小是RM的一半,假如你的物理内存是128M,那么tmpfs默认的大小就是64M
     4.6、使用:mount -t tmpfs -o size=20m tmpfs /mnt/tmp

     4.7、断电或者你卸载它之后,数据就会立即丢失
     4.8、tmpfs使用的是VM,因此它比硬盘的速度肯定要快,由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。没有关系,只要在/etc/fstab里面加上下面的语句:tmpfs /tmp tmpfs size=2m 0 0;重启电脑之后就一切OK了。

扩展2:/etc/fstab 的用途
/etc/fstab 是设定分割区分 mount 目录相关的档案,开机时会依这个档案的內容 mount 档案系統,mount 档案系統的命令为:

   linux# mount -av

   会依 /etc/fstab 的內容 mount 进"除了 root 以外的所有档案系統"。

   root 是在开机时由核心所 mount 进來的。root 先由核心 mount 成 read-only,然后由使用者手动 remount 成 read-write。

扩展3:init根据/etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络;

   init 是在核心 mount 进 root 后,第一個执行的程式 (第一个 process),init 所负责的工作包括:
执行 /etc/rc.d/rc?.d 里的 scripts

   将系统由开机状态 (boot-up state) 切换至多使用者状态 (multiuser state)

   负责进入 tty (本地端) 的 login shell

   负责开机与关机的程序 (procedure)。
扩展4:开机的执行上述文件的过程:
1、开机==>mount -t root root /root (此句内核自动执行)==> /etc/fstab ==> /etc/inittab ==> 执行/etc/rc.d/目录下的脚本(包括/etc/init.d/rcS)
2、linuxrc文件的作用

   2.1、在嵌入式Linux中,init进程的执行程序通常是二选其一.这两个执行程序分别是/sbin/init程序,或者是Busybox生成的linuxrc程序.init进程的作用即这个程序的功能.init进程具体运行哪个程序,则由uboot的环境变量bootargs决定,即init=/linuxrc.通常采用命令行参数"init=xxxx"指定某个程序作为init进程运行.比如,init=linuxrc.可以说,linuxrc程序的作用就是init进程的作用.

   2.2linuxrc是一个程序,它的执行流程如下所示.其中,如何解析inittab文件可以由用户设定,其它两个一般都不会修改.

     2.2.1、设置信号处理函数.

     2.2.2、初始化控制台.
    2.2.3、解析inittab文件.

扩展5:细说/etc/fstab

1、 /etc/fatab

   1.1、文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件

   1.2、这个文件的全路径是/etc/fstab,fsck、mount、umount的等命令都利用该程序

   1.3、用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等

2、/ect/fstab参数解释

1.1、<type> 指挂载设备或分区为何种文件系统类型

           典型 的名字包括这些:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap和auto, 
'auto' 不是一个文件系统,而是让mount命令自动判断文件类型,特别对于可移动设备,软盘,DVD驱动器,这样做是很有必要的,因为可能每次挂载的文件

           类型不一致。

2.2、<options>,选项,这部分是最有用的设置!!!

   它能使你所挂载的设备在开机时自动加载、使中文显示不出现乱码、限制对挂载分区读写权限。它是与mount命令的用法相关的

       推荐参数

            noatime   关闭atime特性,提高性能,这是一个很老的特性,放心关闭,还能减少loadcycle

       默认设置
defaults  使用默认设置。等于rw,suid,dev,exec,auto,nouser,async,具体含义看下面的解释。
        自动与手动挂载 auto  在启动或在终端中输入mount -a时自动挂载

           noauto 设备(分区)只能手动挂载 The file system can be mounted only explicitly.

       IO编码设置 

           iocharset=?;在=号后面加入你的本地编码,似乎在这个设备(分区)中做文件IO的时候就会自动做编码的格式转换。

           例如:你的某个分区是编码是utf8,而设备中文件的编码是gb2312,当是复制你设备中的文件到你的这个分区时,它将自动做编码转换

       读写权限

          umask=   这是关于读写权限的,好像比下面的ro,rw选项更管用!!!

          例如:umask=000或0222,使得挂载时option中有default,普通用户仍然能读写挂载设备中的东西。

              ro  挂载为只读权限

              rw   挂载为读写权限

       可执行

              exec     是一个默认设置项,它使在那个分区中的可执行的二进制文件能够执行。

                  noexec  二进制文件不允许执行。千万不要在你的root分区中用这个选项!!!

        I/O同步

              sync      所有的I/O将以同步方式进行

                  async  所有的I/O将以非同步方式进行

       用户挂载权限

              user  允许任何用户挂载设备。 Implies noexec,nosuid,nodev unless overridden.

              nouser  只允许root用户挂载。这是默认设置。

                  suid     Permit the operation of suid, and sgid bits. They are mostly used to allow users on a computer system to execute 

                   binary executables with temporarily elevated privileges in order to perform a specific task.

                  nosuid   Blocks the operation of suid, and sgid bits.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: