我正在研究创建一些具有不同参数/架构的虚拟机(可能但不一定使用QEMU)。
我熟悉构建我自己的内核,gcc,glibc等,但我不完全确定实际决定这些参数是什么(假设它与某种程度上与CPU有关)。在我看来,性能是无关紧要的,目的只是在不同环境下测试构建(主要是网络相关)。
这有可能吗?有人能把我推向正确的方向吗?我很乐意阅读文档,但我不知道从哪里开始。
答案 0 :(得分:2)
我熟悉构建自己的内核,gcc,glibc等,但我并不完全确定实际决定这些参数的内容(假设它与某种程度上与CPU有关)。
如果通过"那些参数"你的意思是子弹列表中的项目,是的,它们是由CPU的指令集架构决定的。在你将运行Linux的任何事情上,即使在64位计算机上,sizeof(int)
也将是4,即32位,但sizeof(long)
和sizeof({something} *)
将为4在32位计算机上,8位在64位计算机上。所以:
sizeof(long)
/ sizeof({pointer type})
:4位于32位x86 / 32位PowerPC / 32位SPARC /等,8位于64位x86(x86-64)/ 64位PowerPC / 64位SPARC /等。所以我猜测主机可能会有一些x86的味道,所以可能不需要模仿它。
从查看源代码到QEMU 2.3.0版本,似乎QEMU可以模拟32位和64位SPARC;如果可以的话,我建议使用SPARC虚拟机来捕获字节顺序和对齐问题。如果可能,您应该同时拥有32位和64位x86和SPARC。
之后,我会看看ARM(从源代码看起来好像64位ARM正在处理,如果还没有可用的话),然后是PowerPC(32位和64位; I& #39;我不确定他们是否模拟任何64位平台,但是MIPS(32位和64位,以及两个字节顺序,如果可能的话)。
在那之后,如果你真的雄心勃勃,你可以设置一个模仿this one机器后代的Linux盒子; QEMU似乎支持S / 390和/或z / Architecture,或者您可以使用Hercules。您还可以尝试一些支持Linux的其他嵌入式体系结构。