Ubuntu-AMD64-Howto

出自Ubuntu 正體中文 Wiki

跳轉到: 導航, 搜尋


目錄

前言

本文描述如何在 Ubuntu AMD64(64位元的架構上) 上執行 IA32(32位元的架構) 應用程式。

使用 IA32-libs

Ubuntu AMD64 已經預先安裝了 IA32-libs,這使你可以在 Ubuntu AMD64 中使用已編譯好的 32bit 應用程式。你可以透過 Linux32 執行 32bit 應用程式,首先安裝 Linux32 套件:

sudo apt-get install linux32

然後你可以透過這個指令來執行 32bit 應用程式:

linux32 <應用程式>

透過 Linux 32 執行應用程式時,機器會被辨識為 32bit 系統,你可以試試這兩個指令

uname -m
linux32 uname -m

前者會顯示"x86_64",後者則會顯示"i686"。這表示透過 Linux32 執行程式時,該程式會以為它在一個 IA32 架構,而非 AMD64。

使用 IA32 Chroot

IA32-libs 很簡易且能執行大部分的 32bit 應用程式,但要編譯或安裝 32bit 應用程式,特別是 Debian Package 時並不容易。因此,你可以選擇建立 IA32 chroot。

使用 Debootstrap 建立 IA32 chroot

sudo apt-get install debootstrap
sudo debootstrap --arch i386 hardy /chroot/hardy-i386 http://ftp.twaren.net/ubuntu

稍待片刻之後,debootstrap 已經為你安裝好基本的系統了。接著透過 chroot 切換到該系統下設定語系、時區並安裝必要的 library。

sudo cp /etc/apt/sources.list /chroot/hardy-i386/etc/apt/
sudo chroot /chroot/hardy-i386


設定 Locales

dpkg-reconfigure locales

接著你會看到如下圖的設定畫面
圖片:Locale config.png
使用空白鍵選擇你需要的語系,如果你不知道你需要哪一些,請找到並選擇以下四者。

en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_TW BIG5
zh_TW.UTF-8 UTF-8

完成後按下<Enter>,下一個畫面會詢問你以哪一個 locale 作為預設值,將游標移到 zh_TW.UTF-8(如下圖)後按<Enter>。 圖片:Locale config 2.png
稍待片刻後,系統已經產生並設定好 locales。

設定時區

tzconfig

系統會詢問是否要變更時區,請回答 'y'

Your current time zone is set to UTC
Do you want to change that? [n]: y

系統將會列出幾個地理位置,請回答'5'

Please enter the number of the geographic area in which you live:


        1) Africa                       7) Australia

        2) America                      8) Europe

        3) US time zones                9) Indian Ocean

        4) Canada time zones            10) Pacific Ocean

        5) Asia                         11) Use System V style time zones

        6) Atlantic Ocean               12) None of the above


Then you will be shown a list of cities which represent the time zone
in which they are located. You should choose a city in your time zone.

Number: 5

系統會列出該地區的時區地名,請回答'Taipei'

Aden Almaty Amman Anadyr Aqtau Aqtobe Ashgabat Ashkhabad Baghdad Bahrain
Baku Bangkok Beirut Bishkek Brunei Calcutta Choibalsan Chongqing Chungking
Colombo Dacca Damascus Dhaka Dili Dubai Dushanbe Gaza Harbin Hong_Kong
Hovd Irkutsk Istanbul Jakarta Jayapura Jerusalem Kabul Kamchatka Karachi
Kashgar Katmandu Krasnoyarsk Kuala_Lumpur Kuching Kuwait Macao Macau
Magadan Makassar Manila Muscat Nicosia Novosibirsk Omsk Oral Phnom_Penh
Pontianak Pyongyang Qatar Qyzylorda Rangoon Riyadh Riyadh87 Riyadh88
Riyadh89 Saigon Sakhalin Samarkand Seoul Shanghai Singapore Taipei
Tashkent Tbilisi Tehran Tel_Aviv Thimbu Thimphu Tokyo Ujung_Pandang
Ulaanbaatar Ulan_Bator Urumqi Vientiane Vladivostok Yakutsk Yekaterinburg
Yerevan

Please enter the name of one of these cities or zones
You just need to type enough letters to resolve ambiguities
Press Enter to view all of them again
Name: [] Taipei

看到以下回應表示設定已經完成。

Your default time zone is set to 'Asia/Taipei'.
Local time is now:      二  2月 28 13:54:37 CST 2006.
Universal Time is now:  二  2月 28 05:54:37 UTC 2006.


安裝其他元件

apt-get update
apt-get upgrade
apt-get install libx11-6
apt-get install language-support-zh


設置系統


掛載必要的目錄

掛載一些你需要在 chroot 中使用的目錄,首先編輯 /etc/fstab (警告:錯誤的編輯此檔案可能導致無法開機)。 請在 /etc/fstab 的最後面加上這幾行:

# ia32 chroot
/home          /chroot/hardy-i386/home none  bind            0       0
/tmp            /chroot/hardy-i386/tmp none   bind            0       0
proc            /chroot/hardy-i386/proc proc  defaults        0       0

存檔離開,然後掛載這些目錄。

sudo mount /chroot/hardy-i386/home
sudo mount /chroot/hardy-i386/tmp
sudo mount /chroot/hardy-i386/proc

如果你有需要額外的目錄,請依照上述方式自行掛載。

設定使用者

為了在 ia32-chroot 中也能使用你目前的帳號,需要將 AMD64 系統中的使用者資訊複製到 ia32-chroot中。

sudo cp /etc/passwd /chroot/hardy-i386/etc/
sudo cp /etc/shadow /chroot/hardy-i386/etc/
sudo cp /etc/group /chroot/hardy-i386/etc/


安裝你需要的應用程式

使用 apt 安裝應用程式

獨立的 ia32-chroot 環境意味著你可以在 ia32-chroot 內使用 apt/dpkg 來安裝/管理套件,就像平常你在 AMD64 系統上使用的方式。你可能會想安裝某些軟體,建議你一併安裝 gnome-icon-theme 以及 gnome-themes,也建議你安裝 Firefly New Sung 字型,這可以讓 ia32-chroot 上的程式運行時外觀和你在 AMD64 系統上使用的無異。

apt-get install gnome-icon-theme gnome-themes ttf-arphic-newsung

如果你想安裝 firefox、OpenOffice.org 也可以透過相同方式

apt-get install firefox
apt-get install ooo2-firefly

如果你希望能播放 wmv,也可以在 ia32-chroot 中依照 HowtoSupportMoreVideoCodecs 的方式安裝。

  • 如果您安裝 ooo2-firefly,並且使用 scim 輸入法架構,請在 ia32-chroot 多做一件事情:
mv /opt/openoffice.org2.0/program/libstdc++.so.6 /opt/openoffice.org2.0/program/libstdc++.so.6_backup
ln -s /usr/lib/libstdc++.so.6 /opt/openoffice.org2.0/program/libstdc++.so.6

原因在此篇討論串

執行 32bit 應用程式

本文提供三種方法讓你執行 ia32-chroot 中的應用程式,其中最方便的是第三種。

在 ia32-chroot 中執行應用程式

sudo chroot /chroot/hardy-i386
su - <username>
export DISPLAY=:0
<執行應用程式>
  • <username> 是你的使用者名稱。


使用 dchroot 執行 32bit 應用程式

sudo apt-get install dchroot
sudo gedit /etc/dchroot.conf 

在檔案最後面加上:

# ia32 chroot
ia32 /chroot/hardy-i386

以後只要用以下方式即可執行應用程式

dchroot -c ia32 -d <應用程式>


快速執行 32bit 應用程式的方法

如上文安裝 dchroot 並設定 /etc/dchroot.conf 後,執行:

sudo gedit /usr/local/bin/do_dchroot

在檔案內填入:

#!/bin/sh
ARGS=""
for i in "$@" ; do
ARGS="$ARGS '$i'"
done

exec dchroot -c ia32 -d -q "`basename $0`" "$ARGS"

將該檔案設為可執行:

sudo chmod 755 /usr/local/bin/do_dchroot

如果你希望能執行 32bit firefox,只要:

cd /usr/local/bin
sudo ln -s do_dchroot firefox

以後你就可以直接在 console 下 firefox 指令來執行 32bit firefox,Gnome 面板上的 firefox 啟動圖示也會變成 32bit firefox(由於預設的 PATH 變數中 /usr/local/bin 在 /usr/bin 之前)。其他應用程式也可以用相同方式執行。

建立啟動圖示

當你在 ia32-chroot 中透過安裝應用程式時,你可能希望它的圖示也能出現在 Gnome 應用程式選單中,你可以透過手動方式達到此目的。

  • 建立啟動圖示

在安裝完應用程式之後,將 ia32-chroot 中的應用程式啟動圖示複製到 AMD64 系統中。在 Ubuntu 中應用程式的啟動圖示會被放到 /usr/share/applications 目錄,啟動圖示的 icon 則放在 /usr/share/pixmaps 目錄,因此只要將 ia32-chroot 中這兩個資料夾的 *.desktop/*.xpm/*.png 項目複製到系統中的相同位置即可:

cp /chroot/hardy-i386/usr/share/applications/*.desktop /usr/share/applications/
cp /chroot/hardy-i386/usr/share/pixmaps/*.xpm /usr/share/pixmaps/
cp /chroot/hardy-i386/usr/share/pixmaps/*.png /usr/share/pixmaps/


使用本機系統的裝置

使用印表機

若您要在 ia32-chroot 中使用本機系統的印表機,請在 ia32-chroot 中以 root 執行以下命令:

apt-get install libgnomecups1.0-1 libgnomecupsui1.0-1

這將會安裝 cups 的 library,然後你就能透過 ia32-chroot 的應用程式使用本機系統的印表機。

其他注意事項

  • 在 ia32-chroot 中使用 sudo 會有錯誤訊息,請直接以 root 執行(使用 chroot /chroot/breezy-i386 時就已經是 root 了)。
  • 如果你想在 ia32-chroot 中安裝 scim,方法與 UbuntuL10n#中文輸入 的方式相同。但「設定 scim 啟動檔」部份,你應該編輯 AMD64 系統中的檔案。也就是說,「設定 scim 啟動檔」段落的所有指令應該在 AMD64 系統中執行,而不是在 ia32-chroot 中執行。