/ dev / ttyS0无法在Qemu中打开

时间:2012-07-06 13:28:54

标签: filesystems arm qemu buildroot

我正在使用QEMU 1.1.0,使用ARM Cortex-A9模拟Versatile Express板。我已按照以下说明成功启动了简单的“Hello World”示例:

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-system-arm的initrd参数指向

/output/images/rootfs.cpio

当我启动QEMU内核启动时,然后我收到此消息:

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

启动网络......

无法打开/ dev / ttyS0:没有此类设备或地址

无法打开/ dev / ttyS0:没有此类设备或地址

无法打开/ dev / ttyS0:没有此类设备或地址

...

我所能做的就是终止QEMU。

我已经检查了rootfs.cpio的内容,如下所示:

cpio -t< rootfs.cpio

并看到有/ dev / ttyS0。

我是否遗漏了配置文件系统的内容?或者我应该在

中使用文件系统

/输出/目标

以某种方式在那里创建设备(Buildroot不这样做),然后重建文件系统?

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

1 个答案:

答案 0 :(得分:1)

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

你也可以发布整个日志文件(复制所有那些dmesg并在那里发布并在这里给出链接。)

如果您确定/ dev / ttyS0在那里,请执行以下步骤:

  • 提取(使用cpio解包)rootfs

  • 找出哪个init文件内核正在用作父进程。如果你很幸运,那么它将位于根目录中。名为initinitrc

  • 在您喜欢的编辑器中打开init文件。
  • 从你的初始化几行开始就像

    :: respawn:/ sbin / getty -L 38400 tty1
    :: respawn:/ sbin / getty -L 38400 tty2
    :: respawn:/ sbin / getty -L 38400 tty3
    :: respawn:/ sbin / getty -L 38400 tty4

  • 添加::respawn:/sbin/ls -all /dev并保存文件。 (我们添加了list命令以查看/ dev目录中的内容)

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