linuxrc

来源:互联网 发布:软件研发管理系统 编辑:程序博客网 时间:2024/06/02 07:30

linuxrc rcS rc.local Profile

一直对linuxrc不解,内核配置命令行参数以及Uboot设置环境变量bootargs里面的init=/linuxrc解析

file linuxrc 是乱码,后来查资料得知:linuxrc 仅仅是内核启动后init要运行的程序,这个程序可以是shell,可以是二进制,也可以是链接.

/Linuxrc 执行init 进程初始化文件。主要工作是把已安装根文件系统中的/etc 安装为ramfs,
并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;接着Linu
xrc 重新构建文件分配表inittab;之后执行系统初始化进程/sbin/init。
/mnt/etc/init.d/rcS 完成各个文件系统的 mount,再执行/usr/etc/rc.local;通过rcS 可
以调用 dhcp 程序配置网络。rcS 执行完了以后,init 就会在一个 console 上,按照 ini
ttab 的指示开一个 shell,或者是开 getty + login,这样用户就会看到提示输入用户名的
提示符。
/usr/etc/rc.local 这是被init.d/rcS 文件调用执行的特殊文件,与Linux 系统硬件平台相关,
如安装核心模块、进行网络配置、运行应用程序、启动图形界面等。
/usr/etc/profile rc.local 首先执行该文件配置应用程序需要的环境变量等。


Linuxrc
#!/bin/sh
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
/bin/cp -a /mnt/etc/* /etc
echo "re-create the /etc/mtab entries"
# re-create the /etc/mtab entries
/bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/3 /
/bin/mount -f -t ramfs ramfs /etc
exec /sbin/init


主要工作是把已安装根文件系统中的/etc 挂载为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;
接着Linuxrc重新构建文件分配表inittab;
之后执行系统初始化进程/sbin/init。
注意/Linuxrc这个文件不是系统必须的;
如果系统中没有这个文件的话,则默认首先运行/sbin/init,且其他的功能可在/etc/rcS文件中实现


但是查看linuxrc内容是乱码

/sbin/init也是在initramfs或initrd里,整个busybox全都在里面

linuxrc会被当作init来使用,在busybox中有
./include/applets.h:92:IF_FEATURE_INITRD(APPLET_ODDNAME(linuxrc,init, BB_DIR_ROOT, BB_SUID_DROP,linuxrc))
所以有没有linuxrc都没有关系,反正只要有/sbin/init就行了


要使用linuxrc,就必须在cmdline里添加init=/linuxrc,如果有了这个,就不会再去执行/sbin/init了
所以不存在你说的先执行linuxrc再执行init的情况


rcS
/mnt/etc/init.
d/
#!/bin/sh
/bin/mount -a
exec /usr/etc/rc.local


rc.local
/usr/etc/
#!/bin/sh
. /usr/etc/profile
echo "HELLO! Embest"
echo "ifconfig eth0 192.168.0.10"
ifconfig eth0 192.168.0.10


http://blog.csdn.net/zhoudaxia/article/details/6666872 //其他有关讲解

1 0
原创粉丝点击