我试图了解linux内核(好吧......我刚刚开始)。 我已下载了源代码,我编译了它(3.14)。 我使用Qemu启动内核,它的工作原理。 (我构建了一个rootfs) 这是我的命令:
qemu-system-x86_64 -kernel linux/arch/x86_64/boot/bzImage -hda rootfs/disk.img -append "root=/dev/sda console=ttyS0" -nographic ;
在编译之前,我在start_kernel函数中添加了一些printk,我可以看到它。
现在我试图推出一个小C程序。它只是打印一个'#34; hello world"使用写并返回0;
我已经在我的debian(3.14内核)上编译了我的程序,我将它复制到我已经为内核安装了disk.img的文件中。 当我用Qemu启动内核时,我做了
/ # ./HelloWorld <br>
但没有任何反应。
之后,我将退出(EXIT_FAILURE)放在HelloWorld上。 所以我有:
/ # ./HelloWorld <br>
/ # echo $? <br>
0
而不是1。
有时候我有:
/ # ./HelloWorld <br>
-/bin/sh: ./HelloWorld: not found
我将所有人的权限都放在该程序上。
我不明白为什么它不起作用?这是因为我复制了程序吗?我必须要在Qemu中直接编译gcc和其他东西吗?
谢谢!