首页 > 代码库 > inittab没有被执行的原因

inittab没有被执行的原因

移植文件系统,发现/etc/init.d/rcS没有被执行

而rcS应该被inittab调用

查了一下inittab也是好的,所以很纳闷,不理解是哪里的问题


后来跟踪内核发现:

init/main.c中的init_setup没有被执行

 322 static int __init init_setup(char *str)
 323 {
 324     unsigned int i;
 325 
 326     printk("##########[%s][%d][str:%s]\n", __FUNCTION__,__LINE__,str);
 327 
 328 
 329     execute_command = str;
 330     /*
 331      * In case LILO is going to boot us with default command line,
 332      * it prepends "auto" before the whole cmdline which makes
 333      * the shell think it should execute a script with such name.
 334      * So we ignore all arguments entered _before_ init=... [MJ]
 335      */
 336     for (i = 1; i < MAX_INIT_ARGS; i++)
 337         argv_init[i] = NULL;
 338     return 1;
 339 }
 340 __setup("init=", init_setup);

然后查看内核打印的信息,发下有如下一行:


Kernel command line: root=/dev/mtdblock3  init=/bin/sh rootfstype=cramfs  rw console=ttySAC0,115200n8

很明显,这里被逗比的改成了init=/bin/sh,实际上没有执行linuxrc,也就没有调用inittab,所以rcS也没有被执行

将bootargs修改为:


[u-boot@MINI2440]# setenv bootargs "root=/dev/mtdblock3  init=/linuxrc  rootfstype=cramfs  rw console=ttySAC0,115200n8" 

起来后执行正常

inittab没有被执行的原因