| Home | 最新文章 | 登入 | 申請網誌

64-bit Linux 下裝 32-bit 環境


換了電腦近半年,要用的東西都裝得七七八八。卻有一些軟件根本沒有 64-bit 版本,例如 Java-plugin、flash player 和 OpenOffice.org。有關公司或團體好像也無意推出 64-bit 版本

終於把心一橫,下定決心,根據 “The Debian GNU/Linux AMD64 HOW-TO”,裝了 32-bit 系統。並使用 chroot 環境把 32-bit 和 64-bit 軟件分開



首先,揀定一個目錄,作為 32-bit 系統的根目錄。

fat-penguin:~# mkdir -p /opt/chroot/sid-i386

使用 debootstrap,安裝基本要用的軟件。可惜 debootstrap 不懂認 stable,testing 和 unstable 等代號。不過問題不大,反正 sid 是永遠的 unstable…

fat-penguin:~# debootstrap –arch i386 sid /opt/chroot/sid-i386/ ftp://ftp.hk.debian.org/debian

安裝完了一堆東西,可以進入 chroot 環境玩玩(絕對懷疑此步驟有無必要。不過,自己有這樣做,唯有照錄)

fat-penguin:~# chroot /opt/chroot/sid-i386/
fat-penguin:/# apt-get install libx11-6

離開 chroot 環境,修改 /etc/ld.so.conf,以加上 32-bit 函式庫

/usr/X11R6/lib
/usr/lib/atlas
# chroot i386 system libs
/opt/chroot/sid-i386/lib
/opt/chroot/sid-i386/usr/lib
/opt/chroot/sid-i386/usr/X11R6/lib
/opt/chroot/sid-i386/usr/local/lib

之後把 32-bit 的 loader(ld-linux.so.2) link 好,並執行 ldconfig 讓系統可以用到 32-bit 的函式庫。

fat-penguin:~# ln -sf /opt/choot/sid-i386/lib/ld-linux.so.2 /lib/ld-linux.so.2
fat-penguin:/lib# ldconfig

如果裝了 ia32-libs,本身已有一個 symoblic link。不過,既然安裝完整的 32-bit 環境,還要 ia32-libs 作甚?乾脆一併鏟掉!

再修改真正的 /etc/fstab,讓 chroot 環境下可用到真正的檔案。這裡會用 mount 的 –bind 參數,讓一個子目錄甚致檔案在另一個地方出現,做出類似跨檔案系統的 hardlink 效果

/home           /opt/chroot/sid-i386/home       none    bind    0       0
/tmp            /opt/chroot/sid-i386/tmp        none    bind    0       0
proc            /opt/chroot/sid-i386/proc       proc    defaults        0       0
/etc/passwd     /opt/chroot/sid-i386/etc/passwd none    bind    0       0
/etc/shadow     /opt/chroot/sid-i386/etc/shadow none    bind    0       0
/etc/group      /opt/chroot/sid-i386/etc/group  none    bind    0       0
/usr/share/fonts    /opt/chroot/sid-i386/usr/share/fonts    none    bind    0    0

mount 進有關目錄和檔案

fat-penguin:/opt/chroot/sid-i386/etc# mv passwd i386passwd #其實刪去也沒所謂
fat-penguin:/opt/chroot/sid-i386/etc# mv shadow i386shadow
fat-penguin:/opt/chroot/sid-i386/etc# mv group i386group
fat-penguin:/opt/chroot/sid-i386/etc# touch passwd
fat-penguin:/opt/chroot/sid-i386/etc# touch shadow
fat-penguin:/opt/chroot/sid-i386/etc# touch group
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/home/
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/tmp/
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/proc/
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/etc/passwd
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/etc/shadow
fat-penguin:/opt/chroot/sid-i386/etc# mount /opt/chroot/sid-i386/etc/group

這時,root 用戶已可以 chroot 到 /opt/chroot/sid-i386 目錄下執行 32-bit 程式。不過,普通用戶不能 chroot…你說怎麼辦?怎麼辦?怎麼辦?

這問題早有人問過,並有了答案︰dchroot。安裝後,修改 /etc/schroot/schroot.conf

 [sid]
description=Debian sid (unstable)
location=/opt/chroot/sid-i386
priority=3
users=fatpenguin
root-groups=root
aliases=unstable,default

重點是要把可以用這個 chroot 的用戶加到 users 中。之後便可用 dchroot -c sid -d
執後檔案。

這個做法不怎麼方便。可在 /usr/local/bin(或 /opt/bin)建立一些 script 簡化︰ 

fat-penguin:/usr/local/bin# cat do_dchroot
#!/bin/sh

ARGS=”"for i in “$@” ;
do       
  ARGS=”$ARGS '$i'”
done

exec dchroot -c sid -d -q “`basename $0`” “$ARGS”

fat-penguin:/usr/local/bin# ln -s do_dchroot openoffice
fat-penguin:/usr/local/bin# ln -s do_dchroot oowriter
fat-penguin:/usr/local/bin# ln -s do_dchroot oocalc

只需執行 /usr/local/bin/openoffice 便行了

(本來想在 symbolic link 加上 32,但要在 do_dchroot 中刪去…老了…shell script 怎樣寫?!)

要注意,jdk5 已經在 sid 出現,但是在 non-free distribution 裡(幸好我試 sid…)

 

參考資料︰

The Debian GNU/Linux AMD64 HOW-TO 


按此回應 回應的RSS 暫時未有引用通告  (0)


Comments »

暫時未有回應

Trackback 路徑: http://fat-penguin.mocasting.com/main/wp-trackback.php/78088


 

nice! (0)


回應

電郵地址不會被顯示

:  (必須填寫)

:  (必須填寫)

:  

:  
(必須填寫)

:  authimage

友好連結:m-Friends|HKWBBS|HKWCHAT|網上食譜|數碼攝影網

| 1