Ubuntu 7.04 Feisty Fawn on USB 隨身碟/硬碟

igloo這兩個禮拜以來, Ubuntu 7.04 Feisty Fawn 造成蠻大的話題性,似乎有許多人認為 Linux 教學也可以帶來不少的流量,紛紛開始寫起 Ubuntu 的安裝教學(這是好事),然後自己把自己的網頁收到社會書籤去推銷一番(這就蠻ooxx的),不過的確是有不少不錯的文章,而比較熱門的話題大概就是將 Ubuntu 安裝到 USB 隨身碟或是隨身硬碟去(圖片與本文無關,純粹是因為我喜歡這張可愛的桌布)。

將 Ubuntu 安裝到隨身碟或是隨身硬碟當中其實有兩種考量:
1.這個作業系統要用來作啥?
2.要怎麼用?
這也取決了儲存設備要採用甚麼,如果是要「方便安裝」、「加速安裝」、「隨取隨用」、「緊急救援」的話,將 LiveCD 轉到 USB Flash Disk (也就是俗稱的「隨身碟」或「U 盤」)當中是最好不過的,但是這有個缺點,就是在這種情況下所有的 apt 更新、經過 apt 下載安裝的程式似乎都不起作用;如果是要一個隨處可以立即使用的個人工作環境,安裝到隨身硬碟則是較佳的選擇,並且可以更新、套用新程式、完整應用,但是這也有個缺點,就是龐大、透過 USB 運作相當遲緩、有設定 SWAP 的話速度更糟糕(尤其是在運轉中受到振動或是撞擊硬碟易掛),如果是使用 IEEE1394 介面、Firewire 介面的隨身硬碟則另當別論,至於兩者怎麼取捨則看個人,而我則是選擇將 Live CD 轉到硬碟當中(亂七八糟大綜合),就只當作救援、易於安裝、網咖取用的「活系統」來使用,不再使用 cd 或 cd-rw 也較為環保(先前燒的就送人當禮物了)。

如果要直接將完整的作業系統安裝進 USB 設備當中,可以參考這篇文章(不過這篇文章竟然是在有名大站,隨時有消失或網頁脫衣的可能性),其實過程就跟一般安裝沒兩樣,要注意的是將 grub 安裝進 usb 碟中的相對位置,而將 Ubuntu 的 Live CD 轉到 USB 硬碟當中花了我一點時間才摸懂,並且可以分成兩種情況來說明。

首先要先準備:
1. Ubuntu 7.04 Feisty Fawn 的 ISO 檔
2.一顆 USB 隨身硬碟;
3.稍微懂得使用 GNOME Partition Editor(或 Partition Magic,兩者差不多)

如果已經有安裝 Ubuntu ,準備一份 iso 檔案會更方便(如果還沒安裝,就先燒一片出來),然後開機進入 Ubuntu 當中(或是開機進入 Live CD 中)等系統都 READY 了,接上隨身硬碟,系統會直接載入隨身硬碟的各磁區,接著直接將 USB 硬碟給 umount (XD):
sudo umout /dev/sdb
如果電腦是用一顆 SATA 硬碟,隨身硬碟應該會被辨識為 /dev/sdb (如果有兩顆則變成 /dev/sdc,沒有 SATA 就是 /dev/sda ,依此類推),磁區則分別為 /dev/sdbX,如果不確定隨身硬碟是哪顆,開啟 GNOME Partition Editor 就可以看個分明,尚未安裝的可以在「應用程式\添加和刪除」中勾選 GNOME Partition Editor 後套用即可安裝,(使用 Live CD 的則可以)直接在「系統\管理」中找到後啟動。

現在一顆隨身硬碟大多應該是從 40GB 起跳,對於隨身硬碟的規劃主要還是以攜帶資料為主,所以利用 GNOME Partition Editor 我做了下面這種規劃:

38GB - Primary Partition - NTFS 格式 - /dev/sdb1
攜帶資料用
1GB - Primary Partition - FAT16 格式 - /dev/sdb2
放 Live CD 主要檔案使用(至少大於 700MB,別太小氣)
1GB - Primary Partition - ReiserFS 格式 - /dev/sdb3
使用 Live CD 所產生的檔案可以放在這邊(例如文件檔案),用這個格式是看文件說這個檔案格式比較不會有反覆讀寫的問題,可以增進些效率(如果是 USB 隨身碟也避免縮短使用壽命,FLASH 記憶體是有讀寫次數的壽命限制)。

當然也可以用 GNOME Partition Editor 切出三個主邏輯區,再用命令列來格式化會比較方便,至於用命令列的方式來切割硬碟,對於新手來說實在是太難了。要格式化時,第一個磁區就不管他了,拿到別台 Windows XP 再 Format 就好,只要格式化第二與第三個磁區即可,分別使用下列指令:
sudo mkfs.vfat -F 16 -n USB /dev/sdb2
sudo mkfs.reiserfs -l casper-rw /dev/sda3
如果是 /dev/sdc 請記得更換相關名稱。 USB 與 casper-rw 分別是給予兩個磁區的名稱,如果要另外取名,可在這個階段更換名稱(例如原本叫 USB 那區可以改叫做 rescue),但是底下步驟就得跟著更換名稱。

格式化完畢後,將隨身硬碟電源關閉,再重新打開,這時候 Ubuntu 就會重新將兩個磁區抓回來(mount),並且連結到 /media/USB 與 /media/casper-rw 底下,這時候就算是全部準備完畢了。

使用下列指令安裝 syslinux 與 mtools(功能就如同在 dos 底下使用 sys 讓磁區具有開機的功能):
sudo apt-get install syslinux mtools


接著是讓叫做 USB 的那個磁區具有開機能力,使用下列指令:
syslinux -sf /dev/sdb2


接著要準備開始 COPY 系統相關檔案:
1.如果是在已經安裝好的 Ubuntu 底下並且有備用的 iso 檔案,就先將 iso 檔案給連上來(類似虛擬光碟機一樣),假設 iso 檔案已經放在家目錄當中,開啟一個終端機使用下列指令:
sudo mkdir /media/iso/
sudo modprobe loop
sudo mount -t iso9660 -o loop ubuntu-7.04-desktop-i386.iso /media/iso/
cd /media/iso
到 /media/iso/ 資料夾中準備進行下一步。
2.如果是在 Live CD 當中則開啟一個終端機後輸入:
cd /cdrom
直接進入 cdrom 當中,準備進行下一步。

於終端機當中輸入下列指令複製相關檔案:
cp -rf casper disctree dists install pics pool preseed .disk isolinux/* md5sum.txt README.diskdefines ubuntu.ico casper/vmlinuz casper/initrd.gz install/mt86plus /media/usb/
就能夠把開機所需的相關檔案複製到開機磁區當中了,當然,要 COPY 所有檔案也行。注意最後面的粗體,如果之前有更換掉磁區名稱,要換成更換後的名稱(例如 rescue)。

接著下載 usyslinux.tar 這個檔案,雙點這個檔案(會開啟「壓縮檔管理員」)將裡面 syslinux.cfg 這個檔案解壓縮到 /media/USB 資料夾當中,如果無法下載,就自己用純文字編輯器或 gedit 複製底下文字另存一個:
DEFAULT USB

GFXBOOT bootlogo

GFXBOOT-BACKGROUND 0xB6875A

APPEND file=preseed/ubuntu.seed boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --

LABEL USB

menu label ^Start Ubuntu in persistent mode

kernel vmlinuz

append file=preseed/ubuntu.seed boot=casper persistent initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --

LABEL live

menu label ^Start or install Ubuntu

kernel vmlinuz

append file=preseed/ubuntu.seed boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --

LABEL xforcevesa

menu label Start Ubuntu in safe ^graphics mode

kernel vmlinuz

append file=preseed/ubuntu.seed boot=casper xforcevesa initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --

LABEL check

menu label ^Check CD for defects

kernel vmlinuz

append boot=casper integrity-check initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash --

LABEL memtest

menu label ^Memory test

kernel mt86plus

append -

LABEL hd

menu label ^Boot from first hard disk

localboot 0x80

append -

DISPLAY isolinux.txt

TIMEOUT 300

PROMPT 1

F1 f1.txt

F2 f2.txt

F3 f3.txt

F4 f4.txt

F5 f5.txt

F6 f6.txt

F7 f7.txt

F8 f8.txt

F9 f9.txt

F0 f10.txt
大功告成!

如果使用 Live CD 沒有問題的話,通常使用這個也應該沒有問題,在開機的時候按 del 進入 BIOS 當中將開機選項改為 USB-HDD 或 USB-ZIP 優先開機即可,比較新的主機板按 F8 或 F12 則會跳出開機設備選單,選擇 USB (甚至直接列出硬碟型號)即可,在進入系統之前,記得先選取語言,因為是 Live CD 版本,進入後再改也沒用,這就算是完工了。

如果有朋友想安裝 Ubuntu ,帶這顆硬碟去,直接從 USB 開機就可以進行硬碟切割與系統安裝,甚至執行一些系統修復或是搶救資料等等,尤其是系統安裝複製檔案的時候可說是飛快,而這還只是使用 cdrom 版本所作的隨身硬碟,如果是用 dvd 版本的 Ubuntu 7.04 Live CD 應該會更方便吧?

參考文件:
USB Ubuntu Edgy install tutorial for Linux Users
用USB隨身碟做一個ubuntu的LiveUSB