Linux在启动时利用NFS方式挂在根文件系统时无法初始化console的问题

在使用NFS挂载Linux根文件系统时遇到启动时无法初始化console的问题。通过分析kernel_cmd_line参数和系统启动过程,发现console=ttySAC0与实际设备不符。修改为ttyUSB0后启动时接收不到串口数据。通过mknod命令创建/dev/console解决了问题,但对设备在启动过程中如何被创建仍存疑问。分析了start_kernel()和rest_init()函数,发现console_init()在早期启动阶段被调用,而kernel_init()中尝试打开/dev/console。问题在于找到确切的设备创建时机。
摘要由CSDN通过智能技术生成

        前几天在FriendlyARM的 mini2440板子上跑Linux的时候碰到了一个很费解的现象,按照教程上说,是可以利用NFS的方式来挂载Host开发机上的根目录来开发的。教程中给的kernel_cmd_line 是:

param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.111:/opt/FriendlyARM/mini2440/root_qtopia ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0:sbc2440.arm9.net:eth0:off"

        后面很长的部分主要是ip地址设置和nfs的目录,这里首先碰到的问题是它写了console=ttySAC0。这个不是很理解为什么,ttySAC0不是应该是windows上的超级终端么,我是在Fedora13下面用minicom连接的,系统里面显示的设备名字是/dev/ttyUSB0。但是奇怪的是这个参数是对的,我改成ttyUSB0之后反而启动的时候就收不到串口的数据了。

        之后就是正常启动,然后到VFS mount之后突然说 unable to initial console之类的,然后串口就失去控制了,但是板子上的系统还是可以正常启动,而且起来之后我尝试着打开终端然后往串口发送数据居然成功了。也就是说通信驱动之类的问题应该都是好的,只是设备文件名弄的不太对之类的问题。手动建立个这个设备应该就可以了。网上找到有人说在/dev下面 mknod –m 600 console c 5 1就可以了,我本来觉得是不行的,结果死马当活马医的试了试居然行了,我觉得很奇怪。按照我的理解,虽然我在host上面在mknod了这个设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值