如是觀齋


此心本真如,妄想始蔽覆,顛倒無明,長淪生死,猶盲人夜行,永不見日。業相既起,境界為緣,業起緣生,重重束縛,何有自在?
須知體即法身,相即般若,用即解脫,若止觀則成定慧,定慧以明心,德相圓矣!

2007年11月7日 星期三

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

轉載自http://xml.nchu.edu.tw/blogs/?page_id=85

這一次又再度嘗試將 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 版,下載網址https://sourceforge.net/projects/grub4dos) 所提供的 grldr.mbr 來啟動,原因以及目前的解決方式都在利用NT的啟動管理器引導GRLDR.MBR(網址http://www.znpc.net/bbs/viewthread.php?tid=2300&extra=&page=1)這一篇的討論中。



安裝的過程中,我們主要參考 Grub4DOS 的 Grub4dos tutorial(網址http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos_tutorial),對於文件中不是很清楚的地方,我會說明一下。首先修改開機的 boot manager 自然就是 Vista 的開機管理程式,有關 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
# 方法一
titleHOME: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

titleUbuntu 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

titleUbuntu, 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 (即格林威治GMT)。如果硬碟有其他作業系統,而該系統又將硬體時鐘的時區假定為你所屬時區 (微軟視窗一般會如此)。當你在兩個作業系統交替啟動時,將做成時區混亂,所以建議你把硬體時鐘修正為你所在時區。 否則如果你像我是多重開機,那麼你在 Ubuntu 和 Windows 的時間就會不一樣。因此,在安裝 Ubuntu 的時候,如果你要多重開機,請記得把 UTC 設為 no。如果你已經依照 Ubuntu 的建議設成 yes 的話,你可以依照 Ubuntu 筆記(網址http://www.google.com/notebook/public/00624818301689030111/BDQGkIwoQg9X9h8gi)中的”修正 Ubuntu 和 Windows 時間不同步”來修改如下。

把 /etc/default/rcS 中相關片段如下文字的 "UTC=yes" 改成為 "UTC=no" :

# Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not.
UTC=no

重新啟動系統。這時你的時鐘必會快了或慢了幾個小時,可以在Ubuntu進Terminal視窗依以下方法修正:
$ sudo ntpdate time.nist.gov # 根據你所指定的時間伺服器修正你的系統時鐘(軟體時鐘)
$ sudo hwclock -w # 根據修正好的系統時鐘(軟體時鐘)時間修正硬體時鐘的時間


無線網卡


家裡的電腦只能利用無線上網,手邊有 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(網址 https://help.ubuntu.com/community/WifiDocs/Driver/Ndiswrapper)。

在找資料的過程中,我發現無線網卡在 Linux 的環境中的支援實在不是很完整,安裝也不容易,如果你也想在 Linux 嘗試無線連線,可以參考WifiDocs/WirelessCardsSupported(網址 https://help.ubuntu.com/community/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 再找找看了),安裝的方式就是輸入

sudo apt-get update

sudo apt-get install nvidia-glx

sudo nvidia-xconfig --add-argb-glx-visuals --composite

重新啟動 X (同時按 Ctrl+Alt+Backspace 鍵)



在我安裝完 nVidia 的驅動程式之後,不論再哪一部電腦,X 都跑的很正常。ㄛ,也因為如此,我也安裝了 Beryl,真的好看而且感覺不出來速度變慢,強力推薦。

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁