通过nfs挂载的文件系统不能进控制台


在调试linux过程中,通过NFS来挂载单板的根文件系统是最常见的事,但是系统启动后,可能会出现如下警告:

WARNING: Unable to open an initial console.

在键盘上敲回车键不能进入控制台。

解决办法:

在NFS下的单板的跟文件系统rootfs的dev目录下增加两个文件:

sudo mknod console c 5 1
sudo mknod null c 1 3

这样在启动单板时,就不会出现上述问题。

“可能原因”分析:

通过内核代码可以分析Linux的启动过程,当挂载根文件系统过后,内核还会打开"dev/console"作为控制台。

但是如果/dev下面没有这个文件,这一步就会出错。

static int __init kernel_init(void * unused)
{
	...
	...
        /* Open the /dev/console on the rootfs, this should never fail */
        if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
                printk(KERN_WARNING "Warning: unable to open an initial console.\n");
 	...
	...
	
        return 0;
}


当内核启动完成后,会完成其他挂载点,其中就会将/dev挂载到基于内存的文件系统。这时udev或mdev会自动创建设备文件节点,也会自动创建 /dev/console和/dev/null。但是内核没起来之前就已经用到了/dev/console,所以在/dev/没被挂载之前必须包含/dev/console文件。所以在制作根文件系统的时候,必须要包含/dev/console。


以上都是个人观点,欢迎拍砖,指正大家一起学习


猜你喜欢

转载自blog.csdn.net/huohongpeng/article/details/78598356