2012-07-06 28 views
4

我正在使用QEMU 1.1.0,仿真带ARM Cortex-A9的Versatile Express主板。我已成功地推出以下这说明简单的“Hello World”的例子:/dev/ttyS0无法在Qemu中打开

http://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-emulate-with-qemu/

,但现在我想自己创建的文件系统。

我决定使用buildroot,版本2012.05。我已经将它配置为为ARM Cortex-A9目标创建工具链,内核和文件系统映像。

内核版本为3.3.7,而且我选择的文件系统为cpio,未压缩。在调用的qemu系统臂initrd的参数是指向

/output/images/rootfs.cpio

当我启动QEMU内核启动,但后来我得到这个消息:

初始化随机数发生器...完成。

启动网络...

无法打开/ dev/ttyS0来:没有这样的设备或地址

无法打开/ dev/ttyS0来:没有这样的设备或解决

不能打开/ dev/ttyS0来:没有这样的设备或处理

...

我所能做的就是终止QEMU。

我已经检查rootfs.cpio的内容是这样的:

的cpio -t < rootfs.cpio

看,发现里面是/ dev/ttyS0来。

我在配置文件系统时错过了什么吗?或者我应该使用

/输出文件系统/目标

以某种方式创建设备(S)有(Buildroot里面没有做到这一点),然后重建文件系统?

我是Buildroot的新手,所以任何提示或建议都非常值得欢迎。

回答

1

提取rootfs和类型ls -all /dev/ttyS0并检查它是majorminor的数字。因为如果您的主号码不是必需的号码,那么它将不会调用相应的内核功能,在这种情况下,它只会是垃圾邮件字符设备。

你也可以发布整个日志文件(复制所有这些dmesg并将它们发布到某处并在此提供链接。)

如果你确信的/ dev/ttyS0来有请执行下列操作步骤:

  • 提取物(解包使用的cpio)根文件系统

  • 找出init文件内核使用作为父母的过程。如果你幸运的话,它会躺在根目录下。命名为initinitrc

  • 打开init文件在您最喜爱的编辑器中。
  • 开始你的init的几行会像

    ::重生:/ sbin目录/盖蒂-L 38400为tty1
    ::重生:/ sbin目录/盖蒂-L 38400 TTY2
    ::重生:/ sbin目录/盖蒂-L 38400 tty3上
    ::重生:/ sbin目录/盖蒂-L 38400 tty4

  • 添加::respawn:/sbin/ls -all /dev并保存文件。 (我们已经添加了list命令来查看/ dev目录内有什么)

  • 重新启动系统并检查dmesg。看看/dev/ttyS0是否真的缺失?
+0

如果'/ dev'目录中没有'tty',我可以做些什么? – 2015-12-28 18:58:54