linux rcs文件中的ip,linux根文件系统制作之rcS文件分析

本文详细解读了BusyBox启动脚本rcS中的关键步骤,包括设置PATH,设置运行级别,挂载虚拟文件系统,设备节点创建,驱动模块加载,以及系统时间设置等内容。重点介绍了mdev-s的作用和console节点的重要性。
摘要由CSDN通过智能技术生成

先把我的rcS文件贴出来,然后逐行解析:

*****************************************************************************

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel

#

#       Trap CTRL-C &c only in this shell so we can interrupt subprocesses.

#

mount -a

mkdir -p /dev/pts

mount -t devpts devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

mkdir -p /var/lock

mkdir /dev/fb /dev/v4l

ln -s /dev/fb0 /dev/fb/0

ln -s /dev/video0 /dev/v4l/video0

#ln -s /dev/ts0 /dev/h3600_tsraw

hwclock -s

feed_wdg &

qtopia &

insmod /lib/input-polldev.ko

insmod /lib/mac80211.ko

#TL-WN321G+

insmod /lib/rt2x00lib.ko

insmod /lib/rt2x00usb.ko

insmod /lib/rt73usb.ko

#TL-WN322G+

insmod /lib/zd1211rw.ko

insmod /lib/ov9650.ko

ifconfig lo 127.0.0.1

net_set &

/etc/rc.d/init.d/leds start

/etc/rc.d/init.d/netd start

/etc/rc.d/init.d/httpd start

/bin/hostname -F /etc/sysconfig/HOSTNAME

********************************************

PATH=/sbin:/bin:/usr/sbin:/usr/bin

这个熟悉吧,设置命令的路径

runlevel=S

设置运行级别,由上一篇日志知道,busybox会忽略这个相,所以这个设置在这里不起作用

S代表运行级别1,即single-user(单用户)模式

prevlevel=N

umask 022

不了解这两个是干嘛用的,了解的大神还请告知一下

但是把这两个注释掉也会正常启动,猜想也不会用到

mount -a

挂载文件/etc/fstab中设置的所有设备,这里都是基于内存的虚拟文件系统,用于查看系统信息或优化性能

看一下/etc/fstab的内容:

#device         mount-point     type    options         dump    fsck order

proc            /proc           proc    defaults                0       0

tmpfs           /tmp            tmpfs   defaults                0       0

sysfs           /sys            sysfs   defaults                0       0

tmpfs           /dev            tmpfs   defaults                0       0

var             /dev            tmpfs   defaults                0       0

ramfs           /dev            ramfs   defaults                0       0

挂载虚拟文件系统,mdev -s运行的前提

挂载的设备名没什么意义,有意义的是文件系统类型,因为这些文件系统全部是从内存里挂载,划分一块内存挂载到

文件系统上,设备名只是容易区分是哪种文件类型。虚拟文件系统基本上是提供与内核交互的一种通道。

这些的意思都是把内存挂载到这些文件,我们看到的proc、tmp、dev都是内存挂载的,里面创建的文件重启就

不存在了,用du也查看不到大小

但以tmpfs挂载的/tmp里的文件(新建或拷贝进去),用du可以查看到大小,而且重启之后文件就消失了,不知为何。

从上面可以看出dev下的节点都是启动之后由“mdev -s”创建的,存在于内存中。大部分构建文件系统的教程里都说console

和null节点时必须的,手动创建的,这里可以不需要。原因如下:

系统在启动之后在rcS文件里执行“mdev -s”会创建这两个节点,以后终端操作的节点都是这个时候创建的,原根文件系统里的

节点会被覆盖。但是在执行“mdev -s”终端将是不可用的。做了一个小实验,如果根文件系统里有console和null节点,在“mdev -s”

之前就可以使用echo输出。如果根文件系统里没有这两个节点,启动时会打印“Warning: unable to open an initial console.”,并且

在“mdev -s”之前不可以使用echo输出。

之所以打印“Warning: unable to open an initial console.”,是因为:

static noinline int init_post(void)

__releases(kernel_lock)

if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)

printk(KERN_WARNING "Warning: unable to open an initial console.\n");

mkdir -p /dev/pts

mount -t devpts devpts /dev/pts

第一条是创建/dev/pts目录,-p的意思是创建多级目录,即如果父亲目录不存在,则创建

第二条/dev/pts也是从内存挂载一个虚拟的文件系统,作用是可以了解目前远程虚拟终端(telnet,ssh等)的基本情况

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

第一条指定热插拔的处理函数。把“/sbin/mdev”写到/proc/sys/kernel/hotplug,内核会读取里面的内容,当有热插拔

事件时,会调用这个函数。

第二条,自动在/dev下创建设备节点。“mdev -s”会扫描/sys/class/xxx,在目录中查找dev文件

。例如:/sys/class/tty/tty0/dev,它的内容为"4:0"。目录名作为设备名。/sys/class/下的每个文件夹都代表着一个子系统。

然后mdev创建/dev/设备名的设备节点。所以系统启动后你在/dev下看到的设备节点全都来源于这条指令。

至于class里面的文件是怎么生成的,这就涉及到设备模型的内容了,这里不讲。

关于热插拔可参考其他博文。

hwclock -s

设置系统时间,从RTC获取

如果时间不正确,可在系统启动之后用date命令修改系统时间,然后通过“hwclock -w”写入RTC,下次启动就正确了

feed_wdg &

内核配置启动了看门狗,让这个应用程序一直运行来喂狗,不然程序会隔一段时间就重启

qtopia &

后台运行qt程序

insmod /lib/input-polldev.ko

insmod /lib/mac80211.ko

#TL-WN321G+

insmod /lib/rt2x00lib.ko

insmod /lib/rt2x00usb.ko

insmod /lib/rt73usb.ko

#TL-WN322G+

insmod /lib/zd1211rw.ko

insmod /lib/ov9650.ko

手动添加各种驱动模块

ifconfig lo 127.0.0.1

net_set &

配置自环ip和运行网卡设置脚本

/etc/rc.d/init.d/leds start

/etc/rc.d/init.d/netd start

/etc/rc.d/init.d/httpd start

运行初始化用户程序

/bin/hostname -F /etc/sysconfig/HOSTNAME

设置主机名(使用的是HOSTNAME文件里的内容)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值