文件是 android源码下:路径system\core\init\init.c
int main(int argc, char **argv)
{
int fd_count = 0;
struct pollfd ufds[4];
char *tmpdev;
char* debuggable;
char tmp[32];
int property_set_fd_init = 0;
int signal_fd_init = 0;
int keychord_fd_init = 0; if (!strcmp(basename(argv[0]), "ueventd"))
return ueventd_main(argc, argv); /* clear the umask */
umask(0); /* Get the basic filesystem setup we need put
* together in the initramdisk on / and then we'll
* let the rc file figure out the rest.
*/
mkdir("/dev", 0755);
mkdir("/proc", 0755);
mkdir("/sys", 0755); mount("tmpfs", "/dev", "tmpfs", 0, "mode=0755");
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
mount("devpts", "/dev/pts", "devpts", 0, NULL);
mount("proc", "/proc", "proc", 0, NULL);
mount("sysfs", "/sys", "sysfs", 0, NULL);这个就是ramdisk中的init进程。为什么在main开始后还要建立如 /dev /proc /sys
这些文件?
是不是应为ramfs里面没有这些目录吗?谢谢。
androidinit进程
int main(int argc, char **argv)
{
int fd_count = 0;
struct pollfd ufds[4];
char *tmpdev;
char* debuggable;
char tmp[32];
int property_set_fd_init = 0;
int signal_fd_init = 0;
int keychord_fd_init = 0; if (!strcmp(basename(argv[0]), "ueventd"))
return ueventd_main(argc, argv); /* clear the umask */
umask(0); /* Get the basic filesystem setup we need put
* together in the initramdisk on / and then we'll
* let the rc file figure out the rest.
*/
mkdir("/dev", 0755);
mkdir("/proc", 0755);
mkdir("/sys", 0755); mount("tmpfs", "/dev", "tmpfs", 0, "mode=0755");
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
mount("devpts", "/dev/pts", "devpts", 0, NULL);
mount("proc", "/proc", "proc", 0, NULL);
mount("sysfs", "/sys", "sysfs", 0, NULL);这个就是ramdisk中的init进程。为什么在main开始后还要建立如 /dev /proc /sys
这些文件?
是不是应为ramfs里面没有这些目录吗?谢谢。
androidinit进程
解决方案 »
- 除了在onCreate里设置没有标题(Title)外,还有其他方法吗?
- android 卸载和装载内存卡 代码
- android:drawable属性能不能设置一个图像文件路径
- android eclipse 真机调试
- Android RemoteView的问题
- 做翻页时手势被前面的view档主了
- 重写OnCreateOptionMenu用PopupWindow代替 能打开但是点第二下无法关闭 求大神指教啊
- onReceive()方法中intent所邦定的String数据为什么不是原来的值?
- 安卓开发,如何在A程序中启动B程序的Service ??
- 小米下开发的应用监听不到本身被覆盖安装的广播ACTION_PACKAGE_REMOVED
- android 登录时显示进度条,代码执行了进度条不显示
- 如何实现运行一个其他APK一段时间后销毁
http://goo.gl/sliY7
开启启动 然后挂某一个设备为根文件系统。这个文件系统(ramdisk)中执行目录下的init进程。这个init进程就是system\core\init\init.c中main函数的二进制文件?不知道这样理解对吗。
prepare_namespace()之后执行:
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
在这个init的进程中同样又去建立 sys dev proc 等目录。如果这个ramdisk中有了 dev sys proc等目录,是不是在这个init中就没有必要再去做一遍同样的事情。同样引申出 我的问题:1,通常boot传递参数的时候会制定文件系统 比如 root = mtdxx等。这时候系统启动的时候是先挂载ramdisk为根文件系统,还是直接挂在uboot参数传递过来的设备为根文件系统?
2,查看板子起来以后的文件以及文件目录 发现一个system的目录。这个是后续挂在上去的?刚接触android不久,问题可能有点初级。谢谢
system是通过init。rc脚本mount上去的。你问的问题不是初级的,是有技术含量的。