根文件系统_rcs

上传人:xzh****18 文档编号:44588492 上传时间:2018-06-14 格式:PDF 页数:8 大小:120.46KB
返回 下载 相关 举报
根文件系统_rcs_第1页
第1页 / 共8页
根文件系统_rcs_第2页
第2页 / 共8页
根文件系统_rcs_第3页
第3页 / 共8页
根文件系统_rcs_第4页
第4页 / 共8页
根文件系统_rcs_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《根文件系统_rcs》由会员分享,可在线阅读,更多相关《根文件系统_rcs(8页珍藏版)》请在金锄头文库上搜索。

1、由于 init=/linuxrc,因此,在文件系统挂载后,运行的第一个程序就是根目录下的 linuxrc, 而这是一个指向/bin/busybox 的链接,也就是说,系统起来后运行的第一个程序就是 busybox 本身。busybox 首先将试图解析/etc/inittab 来获取进一步的初始化配置信息(参考 busybox 源代码init/init.c 中的 parse_inittab()函数)。而事实上,root_qtopia 中并没有/etc/inittab 这 个配置文件,根据 busybox 的裸机,它将生成默认的配置。其中最重要的一个,就是 new_init_action(SYSI

2、NIT,INIT_SCRIPT,“), 也 就 决 定 了 接 下 来 初 始 化 的 脚 本 是 INIT_SCRIPT 所定义的值,这个宏的默认值是“etc/init.d/rcS“。下面是文件系统中/etc/init.d/rcS 的内容,也是我们要分析的重点1.PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:2.runlevel=S3.prevlevel=N4.umask 0225.export PATH runlevel prevlevel#为启动环境设置必要的环境变量;1./bin/hostname FriendlyARM#设置机器名

3、字;1./bin/mount -n -t proc none /proc2./bin/mount -n -t sysfs none /sys3./bin/mount -n -t usbfs none /proc/bus/usb4./bin/mount -t ramfs none /dev#挂载“虚拟“文件系统“/proc“和“/sys“,并且在/dev 目录下挂载一个 ramfs,相当于把原本 nandflash 上的只读的/dev 目录“覆盖“上一块可写的空的 SDRAM。#这里要注意的是,/sys 和挂载了 ramfs 的/dev 是正确创建设备节点的关键。对于 2.6.29 内核来说,已

4、经没有 devfs 的支持,创建设备节点只有通过两种办法由文件系统完成:1)制作文件系统镜像前用 mknod 手动创建好系统所有的(包括可能有的)设备节点,并 把这些节点文件一起做进文件系统镜像中;2)在文件系统初始化过程中,通过/sys 目录所输出的信息,在/dev 目录下动态的创建系统 中当前实际有的设备节点。显然,方法 1)有很大的局限性,仅限于没有设备动态增加或减少的情况,不适用于 很多设备热插拔的情况,比如 U 盘,SD 卡等等。方法 2)是目前大多数 PC 上的 linux 的做法(基于udev 实现)。这种方法有2 个前提:/sys 目录挂载和一个可写的/dev 目录。这也就 是

5、为什么我们这里需要挂载/sys 和 ramfs 在/dev 目录上,事实上,这种方法最早就是为热 插拔设计的,你可以理解为当系统启动时,所有设备一下子全部“插入“了进来。这里有一点要说明的是,在文件系统初始化跑到这里之前,原来的/dev 目录下必须有 一个设备节点:/dev/console。其实,要搞清楚“程序“这种东西,没有什么好的办法,无非 2个东西,源码和脚本1.echo /sbin/mdev /proc/sys/kernel/hotplug2./sbin/mdev -s3./bin/hotplug#这几个就是用来完成上面所说的两个东西:1)通过 mdev -s 在/dev 目录下创建必

6、要的设 备节点;2)设置内核的 hotplug handler 为 mdev,即当设备热插拔时,由 mdev 接受来自内 核的消息并作出相应的回应,比如挂载 U 盘。对于 mdev,需要注意的是,文件系统里存在/etc/mdev.conf 文件,它包含了 medv 的配 置信息。通过这个文件,我们可以自定义一些设备节点的名称或链接来满足特定的需要。这 是root qtopia 中 mdev.conf 的内容:1.#system all-writable devices2.full 0:0 06663.null 0:0 06664.ptmx 0:0 06665.random 0:0 06666.

7、tty 0:0 06667.zero 0:0 06668.9.#console devices10.tty0-9* 0:5 066011vc/0-9* 0:5 066012. 13. # serial port devices 14. s3c2410_serial0 0:5 0666 =ttySAC0 15. s3c2410_serial1 0:5 0666 =ttySAC1 16. s3c2410_serial2 0:5 0666 =ttySAC2 17. s3c2410_serial3 0:5 0666 =ttySAC3 18. 19. # loop devices 20. loop0-9

8、* 0:0 0660 =loop/ 21. 22. # i2c devices 23. i2c-0 0:0 0666 =i2c/0 24. i2c-1 0:0 0666 =i2c/1 25. 26. # frame buffer devices 27. fb0-9 0:0 0666 28. 29. # input devices 30. mice 0:0 0660 =input/ 31. mouse.* 0:0 0660 =input/ 32. event.* 0:0 0660 =input/ 33. ts.* 0:0 0660 =input/ 34. 35. # rtc devices 36

9、. rtc0 0:0 0644 rtc 37. rtc1-9 0:0 0644 38. 39. # misc devices 40. mmcblk0p1 0:0 0600 =sdcard */bin/hotplug 41. sda1 0:0 0600 =udisk * /bin/hotplug可以看到,原本串口驱动注册的设备名是 s3c2410_serial0, s3c2410_serial1 和 s3c2410_serial2 ,而 mdev 则会在/dev 目录下对应生成 ttySAC0, ttySAC1 和 ttySAC2 以 符合 应用程序对于串口设备名称的习惯。 同样的,/dev/s

10、dcard 和/dev/udisk 永远分别指向 SD 卡 和 U 盘的第一个分区。(所以,用那些没有分区表的 SD 卡或U 盘的兄弟知道原因了吧.)1.#mounting file system specified in /etc/fstab2.mkdir -p /dev/pts3.mkdir -p /dev/shm4./bin/mount -n -t devpts none /dev/pts -o mode=06225. /bin/mount -n -t tmpfs tmpfs /dev/shm 6. /bin/mount -n -t ramfs none /tmp 7. /bin/mou

11、nt -n -t ramfs none /var8.mkdir -p /var/empty9.mkdir -p /var/log10.mkdir -p/var/lock11.mkdir -p/var/run12.mkdir -p /var/tmp就像注释中所说的,这是用来挂载其他一些常用的文件系统,并在/var 目录下(同样是 ramfs,可写的)新建必要的目录。1. /sbin/hwclock -s用来 设定系统时间的,从硬件 RTC 中获取,要获取正确的时间,必须先设置好正确的时间(如何设置 RTC 见用户手册说明),目前友善之臂的开发板出厂时并没有设置实际的 时 间,而是系统默认的。接下

12、来就是启动系统服务了,包括log 记录,网络, http server 和自定义的“跑马灯服 务“. 1. syslogd 2. /etc/rc.d/init.d/netd start 3. echo “ “ /dev/tty1 4. echo “Starting networking.“ /dev/tty1 5. sleep 1 6. /etc/rc.d/init.d/httpd start 7. echo “ “ /dev/tty1 8. echo “Starting web server.“ /dev/tty1 9. sleep 1 10. /etc/rc.d/init.d/leds s

13、tart 11. echo “ “ /dev/tty1 12. echo “Starting leds service.“ /dev/tty1 13. echo “ “ 14. sleep 1启动一系列服务: syslog - 用于记录内核和应用程序 debug 信息 netd - inetd, 一个挂载启动各种网络相关服务的看守进程 httpd - http server 看守进程 leds - 跑马灯看守进程 其中,inetd的配置文件为/etc/inetd.conf,这是文件内容 1. # /etc/inetd.conf: see inetd(8) for further informa

14、tions. 2. echo stream tcp nowait root internal 3. echo dgram udp wait root internal 4. daytime stream tcp nowait root internal 5. daytime dgram udp wait root internal 6. time stream tcp nowait root internal 7. time dgram udp wait root internal 8. 9. # These are standard services. 10. # 11. ftp stream tcp nowait root /usr/sbin/ftpd /usr/sbin/ftpd 12. telnet stream tcp nowait root /usr/sbin/telnet

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号