移植文件系统,发现/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"
起来后执行正常