2012年10月25日 星期四

啟動安裝於外接式 USB 硬碟的 Ubuntu

距離完成前一篇直接從外接式 USB 硬碟將 Gentoo 啟動的時間,算算已經超過兩年多了,時間過的實在是超嚇人的。這一次又再度嘗試將 Ubuntu 安裝在外接式 USB 硬碟,主要原因是擁有一個 40G 的 USB 硬碟已經有了一陣子了,我把它分成兩個部份,一個部份是用來備份(約 20GB),另一個部份把它當作 Ubuntu 的開機硬碟,這樣子上班和回家都可以玩同一套 Ubuntu。安裝的過程中也發現了一些小狀況,除了利用這個文件作個紀錄之外,也順便做一些筆記,或許將來用得上。以下,我會分成幾個部分來探討,但是最重要的是你一定要確定兩部(或者多部電腦)之間,硬體上會不會有很大的差異,如果是,安裝的過程以及之後的使用都會比較麻煩;舉個例子來說,假設你上班的電腦是 ATI 的顯示卡,而家裡的電腦是 nVidia 的顯示卡,那麼你要如何使用 X 的介面?更不要說你想使用像是 beryl 或者 compiz 這一類的超強的 3D X 介面了。如果你也想像我這樣做,請你務必考慮清楚,因為我的狀況比較單純,家裡和上班的電腦都是 nVidia 的卡。

多重開機

電腦內的硬碟首先安裝了 Windows XP Pro 在第一個分割區,然後才把 Windows Vista 安裝在第二個分割區,開機的 boot manager 自然就是 Vista 的開機管理程式。由於不想利用類似 spfdisk 的開機程式把資料寫到 MBR,因此想利用 Grub4DOS 來啟動 XP、Vista、和 Ubuntu。 將 Grub4DOS 以及 Vista 合用的時候,我們無法使用 Grub4DOS (使用的是 0.4.2 版) 所提供的 grldr.mbr 來啟動,原因以及目前的解決方式都在利用NT的啟動管理器引導GRLDR.MBR這一篇的討論中。
安裝的過程中,我們主要參考 Grub4DOS 的 Grub4dos tutorial,對於文件中不是很清楚的地方,我會說明一下。首先,有關於 bcdedit 的用法,在文件中列出四個指令如下:
   bcdedit /create /d "Start GRUB4DOS" /application bootsector
   bcdedit /set {id} device boot
   bcdedit /set {id} path \grldr.mbr
   bcdedit /displayorder {id} /addlast
可是難道真的要輸入 {id}嗎?其實,在第一個指令輸入之後,電腦會輸出一個類似 {xxxx-xxxx-xxxx-xxxx} 的 ID,請你把這個 {xxxx-xxxx-xxxx-xxxx} 帶入第二、三、以及四個指令內。
再來就是依照文件,我們需要 "copy grldr.mbr to C:\, grldr and menu.lst to the root directory of any FAT16/FAT32/NTFS/EXT2 partition."。這個地方花了我不少時間,其實,以我的情形來說,grldr.mbr、grldr、和 menu.lst 都是安裝到第一個分割區內;也就是說,如果我開機進入 XP,那麼這三個檔以及 grub 資料夾以及其所有的檔案,都應該在 C 槽;如果我開機進入 Vista,那麼這三個檔以及 grub 資料夾以及其所有的檔案,都應該在 D 槽。
最後,我們需要電腦準備 menu.lst,其內容如下:
timeout 20
default 0
splashimage (hd0,0)/grub/xp2008.xpm.gz

# boot up menu
# 方法一
title  HOME:Ubuntu 7.10
root  (hd1,0)
kernel  /boot/vmlinuz-2.6.22-12-generic root=/dev/sdb1 ro quiet splash locale=zh_TW
initrd  /boot/initrd.img-2.6.22-12-generic
quiet

title  Ubuntu 7.10 (recovery mode)
root  (hd1,0)
kernel  /boot/vmlinuz-2.6.22-12-generic root=/dev/sdb1 ro single
initrd  /boot/initrd.img-2.6.22-12-generic

title Load Windows XP Pro
root (hd0,0)
chainloader (hd0,0)/ntldr


title Load Windows Vista
root (hd0,1)
chainloader (hd0,0)/bootmgr

# 方法二
title Find and Boot Ubuntu
fallback 5
find --set-root /sbin/init
configfile /boot/grub/menu.lst

title  Ubuntu, memtest86+
root  (hd1,0)
kernel  /boot/memtest86+.bin
quiet
這個 menu.lst 有幾個地方特別值得說明一下。首先,我們可以在安裝完 Ubuntu 之後,特別去看一下安裝的 kernel 是什麼,一旦知道正確的檔案全名,我們就可以像"方法一"的方式把它定義在 menu.lst 內。這樣的作法有一個很大問題,那就是每一次做了軟體更新之後,你的 kernel 可能也被更新了,那麼你又得來修改 menu.lst。找了一下 Grub4DOS 的文件後,發現了"方法二"的 作法,它可以利用 find 的指令找到最新的 kernel 並載入,非常的方便,試用了幾天之後,我已經把它移到第一個預設啟動的位置。最後,請特別注意一下,啟動 XP 和 Vista 的方式,它們都是利用 chainloader 的指令進行,而且啟動的程式 (hd0,0)/ntldr (給 XP 的) 和 (hd0,0)/bootmgr (給 Vista 的) 都在 (hd0,0),也就是第一個分割區。我想在安裝 Vista 的時候,Vista 也把一些必要的檔案安裝於 XP 的分割區,我實在不是很喜歡這個方式,不過還沒找出其他方式以前,就先這樣嘍。
如果你是利用 DHCP 的方式取得 IP 位址的,每一次重新開機 /etc/resolv.conf 都會被重新設定。如果你希望固定加入(例如)中華電信的 DNS,那麼你可以把下一行加到 /etc/dhcp3/dhclient.conf 檔案內。
prepend domain-name-servers 168.95.1.1, 168.95.192.1;

另一個安裝 Ubuntu 常發生的討厭問題就是時區的設定,在安裝的時候,Ubuntu 特別強調應該將 UTC 設為 yes,可是如果你像我是多重開機,那麼你在 Ubuntu 和 Windows 的時間就會不一樣。所以,在安裝 Ubuntu 的時候,如果你要多重開機,請記得把 UTC 設為 no。如果你已經依照 Ubuntu 的建議設成 yes 的話,你可以依照 Ubuntu 筆記中的"修正 Ubuntu 和 Windows 時間不同步"來修改。

無線網卡

家裡的電腦只能利用無線上網,手邊有 Corega 的 CG-WLUSB2GLV2 USB 無線網卡,在 Ubuntu 環境下嘗試利用這張網卡上網的過程問題重重。本來,USB 硬碟中已經安裝了Ubuntu 的 6.10 版(也就是 Edgy),但是不論是使用 ndiswrapper 或者是 ZD1211、ZD1211B、ZD1211rw 都沒有辦法讓 Ubuntu 認識這張網卡。曾經試圖 email Corega 的技術支援部門,問他們這張卡的 Chipset 是哪一種,有沒有 Linux 的驅動程式等三個問題,只可惜只收到技術支援部門的簡短回答:不支援 Linux;對於這樣簡短的回答,我以後再也不會買任何 Corega 的產品(除非迫不得已)。
在沒有網路連線的情形下,我也不可能把電腦搬來搬去只為了下載 Kernel 的 source 來 compile,在想不出其他更好的辦法下,而且想要試試 Ubuntu 7.10 版,所以在它還剩十天才正式發行的情形下,就把 RC 版下載來試試看。皇天不負苦心人,雖然 ZD1211 的驅動程式仍然不能用,但是 ndiswrapper 終於可以認識 CG-WLUSB2GLV2,wlan0 也終於出現在 ifconfig 和 iwconfig 的輸出了。從 CG-WLUSB2GLV2 的 XP 驅動程式,我猜 CG-WLUSB2GLV2 的 chipset 應該是奇怪的 zd1211bu。可是奇怪的是 lsusb 也找不出 chipset 的資料,XP 內也看不出。ndiswrapper 的安裝方式請參考WifiDocs/Driver/Ndiswrapper
在找資料的過程中,我發現無線網卡在 Linux 的環境中的支援實在不是很完整,安裝也不容易,如果你也想在 Linux 嘗試無線連線,可以參考WifiDocs/WirelessCardsSupported。尤其文章中特別指出 Ralink 2500/RT2400 and Realtek RTL8180 chipsets 的支援比較完整,你如果想買一片無線網卡,或許這些 chipset 的產品可以考慮考慮。

如何調整

  • Ubuntu 7.10 版的預設 3D 特效是利用 compiz。用了幾天之後,我覺得它並沒有 Beryl 的穩定。再試個幾天,如果還是不滿意,考慮刪除 compiz,改用 Beryl。
  • 有關於 X 的調整:由於我一開始安裝的是 Ubuntu 的 6.10 版(也就是 Edgy;我不確定最新的 7.04 Feisty 版是不是相同),在兩部電腦上的 xorg.conf 的設定無法互相使用。這個時候有兩個方式可以暫時解決:第一個方法就是把 /etc/X11/xorg.conf 移除掉(請重新命名,不要真的移除),第二個方式就是重新設定,設定的語法:dpkg-reconfgure xserver-xorg。設定後,可以利用 /etc/init.d/gdm restart 來重新啟動 X。
  • 或者可以立刻安裝 nVidia 的驅動程式(如果你的不是,你就得到 google 再找找看了),安裝的方式就是輸入
    1. sudo apt-get update
    2. sudo apt-get install nvidia-glx
    3. sudo nvidia-xconfig --add-argb-glx-visuals --composite
    4. 重新啟動 X (同時按 Ctrl+Alt+Backspace 鍵)
  • 在我安裝完 nVidia 的驅動程式之後,不論再哪一部電腦,X 都跑的很正常。ㄛ,也因為如此,我也安裝了 Beryl,真的好看而且感覺不出來速度變慢,強力推薦。

沒有留言:

張貼留言