我正在使用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的新手,所以任何提示或建议都非常受欢迎。
答案 0 :(得分:1)
提取rootfs并输入ls -all /dev/ttyS0
并检查其major
和minor
号码。因为如果您的主要号码不是必需的号码,那么它将不会调用相应的内核功能,在这种情况下它只会是一个垃圾字符设备。
你也可以发布整个日志文件(复制所有那些dmesg并在那里发布并在这里给出链接。)
如果您确定/ dev / ttyS0在那里,请执行以下步骤:
提取(使用cpio解包)rootfs
找出哪个init文件内核正在用作父进程。如果你很幸运,那么它将位于根目录中。名为init
或initrc
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目录中的内容)
/dev/ttyS0
是否真的丢失了?