linuxrc 详解
来源:互联网 发布:上瘾网络剧未删减 编辑:程序博客网 时间:2024/05/17 08:10
linuxrc 详解
做嵌入式根文件系统时,有linuxrc如下:
#!/bin/sh
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
这里的ramfs是从哪儿来,做的根目录没有这个,挂这个的目的是干吗
/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/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
exec /sbin/init 这里是映象的还是根目录下的?
-----------------------------------------------------------------------------------
内核运行时是不是会自己生成一个根文件系统,通过linux command line找到*.cramfs,ram,romfs等
映象文件,再挂到内核生成的根文件解构下?
总是挂不上去,只能发现ram映象及其filetype
首先你要看懂这个linuxrc,
1. /bin/mount -n -t ramfs ramfs /etc
这句话的作用加载一个ramfs作为/etc目录。这样/etc就是一个可写目录。
看这个脚本,得出你的根文件系统是一个cramfs,是一个只读文件系统中,而/etc作为系统运行配置文件的存放地点,可能会写一些运行状态在这里, linuxrc第一件事情就是将一个ramfs mount 到/etc只读目录中,使得/etc/目录可写,指定参数 -n的目的是告诉mount不要写/etc/mtab, 这个文件存放当前系统mount了的所有文件系统中。 因为现在/etc/目录还是只读,所以这次mount不要写这个文件,否则会失败。
而你问到的 ramfs在哪里,这个在你的 /etc/fstab文件中应该有ramfs一项, mount 会去找这项,如果没有,mount会失败。后面就执行不下去。
2. /bin/cp -a /mnt/etc/* /etc
/etc成为可写目录后,将所有/mnt/etc中的配置文件拷贝到/etc/中,这说明你的ramfs可能是一个空的ramfs,没有配置文件,或者配置文件比较老。 同时也说明你这个系统是一个只读系统,每次系统运行中写入的配置不会保留。
将以前mount的那些信息重新写到/etc/mtab中,命令就是下面这些。
3. /bin/mount -f -t cramfs -o remount,ro /dev/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
这些命令只是将这些mount信息写到/etc/mtab中,不会实际去mount这些block device,说明你的根文件系统依然是以前的那个/dev/bon/2
4. exec /sbin/init
执行根文件系统中的init执行程序,使其成为1号进程。shell正式运行。
你的shell运行不起来,可能是因为/etc/fstab有问题,注意看一下你的cramfs中的这个文件内容是否正确。
脚本不全,无法做出更进一步判断。最好把你的脚本和cramfs中的文件结构贴出来
#!/bin/sh
echo "mount /etc as ramfs"
/bin/mount -n -t ramfs ramfs /etc
这里的ramfs是从哪儿来,做的根目录没有这个,挂这个的目的是干吗
/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/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
exec /sbin/init 这里是映象的还是根目录下的?
-----------------------------------------------------------------------------------
内核运行时是不是会自己生成一个根文件系统,通过linux command line找到*.cramfs,ram,romfs等
映象文件,再挂到内核生成的根文件解构下?
总是挂不上去,只能发现ram映象及其filetype
首先你要看懂这个linuxrc,
1. /bin/mount -n -t ramfs ramfs /etc
这句话的作用加载一个ramfs作为/etc目录。这样/etc就是一个可写目录。
看这个脚本,得出你的根文件系统是一个cramfs,是一个只读文件系统中,而/etc作为系统运行配置文件的存放地点,可能会写一些运行状态在这里, linuxrc第一件事情就是将一个ramfs mount 到/etc只读目录中,使得/etc/目录可写,指定参数 -n的目的是告诉mount不要写/etc/mtab, 这个文件存放当前系统mount了的所有文件系统中。 因为现在/etc/目录还是只读,所以这次mount不要写这个文件,否则会失败。
而你问到的 ramfs在哪里,这个在你的 /etc/fstab文件中应该有ramfs一项, mount 会去找这项,如果没有,mount会失败。后面就执行不下去。
2. /bin/cp -a /mnt/etc/* /etc
/etc成为可写目录后,将所有/mnt/etc中的配置文件拷贝到/etc/中,这说明你的ramfs可能是一个空的ramfs,没有配置文件,或者配置文件比较老。 同时也说明你这个系统是一个只读系统,每次系统运行中写入的配置不会保留。
将以前mount的那些信息重新写到/etc/mtab中,命令就是下面这些。
3. /bin/mount -f -t cramfs -o remount,ro /dev/bon/2 /
/bin/mount -f -t ramfs ramfs /etc
这些命令只是将这些mount信息写到/etc/mtab中,不会实际去mount这些block device,说明你的根文件系统依然是以前的那个/dev/bon/2
4. exec /sbin/init
执行根文件系统中的init执行程序,使其成为1号进程。shell正式运行。
你的shell运行不起来,可能是因为/etc/fstab有问题,注意看一下你的cramfs中的这个文件内容是否正确。
脚本不全,无法做出更进一步判断。最好把你的脚本和cramfs中的文件结构贴出来
- linuxrc 详解
- linuxrc详解
- linuxrc 详解
- linuxrc
- linuxrc
- 详解Linuxrc、rcS、rc.local、Profile
- 详解Linuxrc、rcS、rc.local、Profile
- 详解Linuxrc、rcS、rc.local、Profile
- 详解Linuxrc、rcS、rc.local、Profile
- 详解Linuxrc、rcS、rc.local、Profile
- linux initrd与linuxrc
- linuxRC的含义
- 问题解决办法总结_Failed_to_execute_/linuxrc
- Linux 的 initrd (linuxrc,init)
- Linux 的 initrd (linuxrc,init)
- linuxrc与inittab的作用?
- Linux 的 initrd (linuxrc,init)
- Linux中linuxrc的作用
- “达内”JAVA技术培训有感(一)
- A simple approach to Speech Recognition - step.1
- [转]如何实现按键精灵的简单路点行走
- 居然找到了期中考化学时候无聊画的一幅画
- 【转】VBS函数的简单库
- linuxrc 详解
- 关于动态加载布局的想法(初学)
- asp文件打包和释放类
- js浮动层制作
- C#中导出数据到EXCEL的简单例子
- 【转】内存地址数据读取:最准确的判断方法
- ICE学习
- 一个Asp.net探针的源码
- Win32 common control(Statusbar)