现在的位置: 首页 > 综合 > 正文

使用busybox构建yaffs2根文件系统(前言)

2013年12月18日 ⁄ 综合 ⁄ 共 1363字 ⁄ 字号 评论关闭

(一) 根文件系统启动过程

由于默认的内核命令行上有init=/linuxrc, 因此,在文件系统被挂载后,运行的第一个程序是根目录下的linuxrc。 这是一个指向/bin/busybox的链接,也就是说,系统起来后运行的第一个程序也就是busybox本身。
这种情况下,busybox首先将试图解析/etc/inittab来获取进一步的初始化配置信息(参考busybox源代码init/init.c中的parse_inittab()函数)。如果根文件目录中并没有/etc/inittab这个配置文件,根据busybox的逻辑,它将生成默认的配置"/etc/init.d/rcS"这个开机脚本.

rcS这个脚本要完成一些必要目录的挂载:

  1. /bin/mount -n -t proc none /proc
  2. /bin/mount -n -t sysfs none /sys
  3. /bin/mount -t ramfs none /dev

挂载“虚拟”文件系统,/proc, /sys,并且在/dev目录上挂载一个ramfs,相当于把原本NAND Flash上的只读的/dev目录“覆盖”上一块可写的空的SDRAM。

/sys和挂载了ramfs的/dev是正确创建设备节点的关键。对于2.6.29内核来说,已经没有了devfs的支持,创建设备节点只有通过两种办法由文件系统完成:
1) 制作文件系统镜像前用mknod手动创建好系统中所有的(包括可能有的)设备节点,并把这些节点文件一起做进文件系统镜像中;
2)在文件系统初始化过程中,通过/sys目录所输出的信息,在/dev目录下动态的创建系统中当前实际有的设备节点。

  1. echo /sbin/mdev > /proc/sys/kernel/hotplug
  2. /sbin/mdev -s
  3. /bin/hotplug
  4. 通过mdev -s 在/dev目录下建立必要的设备节点;
  5. 设置内核的hotplug handler为mdev, 即当设备热插拔时,由mdev接收来自内核的消息并作出相应的回应, 比如挂载U盘。对于mdev,需要注意的是,文件系统里存在/etc/mdev.conf文件,它包含了mdev的配置信息。以下是mdev.conf的中的一部分,
    1. # serial port devices
    2. s3c2410_serial0    0:5    0666    =ttySAC0
    3. s3c2410_serial1    0:5    0666    =ttySAC1
    4. s3c2410_serial2    0:5    0666    =ttySAC2
    5. s3c2410_serial3    0:5    0666    =ttySAC3
    6. 原本串口驱动注册的设备名是s3c2410_serial0, s3c2410_serial1和s3c2410_serial2,而mdev则会在/dev目录下对应生成ttySAC0, ttySAC1和ttySAC2以符合应用程序对于串口设备名称的习惯
  1. /sbin/ifconfig lo 127.0.0.1
  2. /etc/init.d/ifconfig-eth0
  3. 设定本机回环地址为127.0.0.1 ,运行网卡设置脚本/etc/init.d/ifconfig-eth0, 其中ifconfig-eth0中先判断, 如果根文件系统为nfs,则说明网卡已经配置OK,这里什么都不需要重新ifconfig配置了,

抱歉!评论已关闭.