Wednesday, September 25, 2013

Hybrid Running 32bit applications with 64bit OS kernel

对于浏览器内经常开到40以上的标签页来说,64位程序的浏览器占用内存太多,动辙数G的物理内存消耗。 浏览器内的Flash插件也是消耗内存的大户。

解决办法是以32位浏览器来代替运行,但在64位OS下又要安装multilib库,同样的库文件安装两份, 对于SSD硬盘的容量来说又要消耗不少空间。

正好硬盘上另一分区有以前残存的一个32位Ubuntu,借壳来运行32位程序倒是不错。

# mount /dev/sda6 /mnt/sda6
# mount -o bind /home /mnt/sda6/home
# mount ... for proc sysfs /dev ...
sudo chroot /mnt/sda6 su -l user
/opt/google/chrome-26/google-chrome --extra-plugin-dir=tmp/firefox/browser/plugins

最终得到一个浏览器UA如下:

User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31

说起32位程序它不能利用64位CPU的所有寄存器,效率又有所不足,理想的解决方案应该是x32,目前看起来这个方案Intel也是也出台好几年了,但似乎没什么发行版跟进,毕竟重编译所有的库所有的应用程序这工作量实在不小,虽然它能被证明比纯32位和纯64位运行都快,但市场容量有限哪,人们对PC的兴趣转移走了也是重要的原因。现有的64位和32位能work就行。