Gentoo IA32 模拟¶
IA32_EMULATION¶
通过选择 IA32 模拟
( CONFIG_IA32_EMULATION
)和 32-bit time_t
( CONFIG_COMPAT_32BIT_TIME
) ,可以让系统运行混合32位/64位计算。
Processor type and features --->
[ ] Machine Check / overheating reporting
[ ] Intel MCE Features
[ ] AMD MCE Features
Processor family (AMD-Opteron/Athlon64) --->
( ) Opteron/Athlon64/Hammer/K8
( ) Intel P4 / older Netburst based Xeon
( ) Core 2/newer Xeon
( ) Intel Atom
( ) Generic-x86-64
Binary Emulations --->
[*] IA32 Emulation
[*] x32 ABI for 64-bit mode <= 这个选项为Wine运行准备
General architecture-dependent options --->
[*] Provide system calls for 32-bit time_t <= Wine运行需要这个内核支持
在64位硬件上,通过 IA32_EMULATION
配置编译的内核可以支持运行32位应用。
zcat /proc/config.gz | grep CONFIG_IA32_EMULATION
如果内核已经激活了32位支持,那么看到的输出如下:
CONFIG_IA32_EMULATION=y
如果类似我在 在MacBook Pro上安装Gentoo Linux 后编译内核去除了32位模拟支持,则显示
# CONFIG_IA32_EMULATION is not set
Multilib¶
正如 在MacBook Pro上安装Gentoo Linux 我选择纯64位 stage 3 构建 no-multilib 的系统,带来的一个问题是无法运行32位程序。通常这不是问题,但是在 Gentoo平台wine环境运行Windows程序 时会遇到无法运行的问题。所以我采用一种变通方法:
物理主机内核启用32位支持,但是我依然选择采用纯64位 No-Multilib (见 在MacBook Pro上安装Gentoo Linux 安装stage)
在Docker中使用 Gentoo镜像 是 Multilib(32和64位),这样就可以在容器内部运行 Gentoo平台wine环境运行Windows程序
保持物理主机的操作系统最精简,将所有图形运行程序迁移到Docker容器内部运行,这样有以下优点:
容器可以在服务器上远程运行,使用服务器资源来解决本地物理主机性能有限的不足
可以采用 Docker Atlas 方式运行,也可以推送到 Kubernetes Atlas 集群中,也就是说一次部署,到处运行
随时随地工作,通过 X持久化远程应用Xpra 远程运行服务器上的应用,可以保持持续的 移动工作
备注
实践待完成…