80 公克筆電? 可開機電子書包? Edubuntu Live-USB! (技術篇)
本文有點亂; 請改參考 「usb 開機筆記」
後記: 寫完這篇文章後沒幾週, 聽朋友說網路上已經可以找到很多類似的版本, 安裝過程更簡單, 而且也已經藉由記憶體模擬硬碟的方式, 讓 usb 姆指碟也適用。 (網址待補... 請搜尋 usbuntu)
其他類似文章:
- suan 的文章: 更簡短, 更普遍, 適用於 ubuntu, knoppix, ... 等等許多不同版本)
- BillyPan 的文章: 如果換了電腦 X Window 就開不起來怎麼辦?
這篇筆記是寫給已稍微熟悉某版本 Linux 且稍微熟悉命令列的朋友看的。 我自己用過的版本包含 slackware, redhat 與 mandriva (以前叫做 mandrake) 但從沒認真學過 debian 系列的版本。 我的系統切成十幾個分割, 上面裝了好幾個不同版本的 Linux。 本文假設您的電腦已安裝某版本的 Linux, 並且硬碟上有一個夠大的閒置分割 (2.5GB); 另外有一顆 usb 外接硬碟, 一樣需要有一個至少 2.5GB 的分割。 關於外接硬碟, 建議用機械式的硬碟 (有 「轉速」 的); 不建議用 flash disk。
Edubuntu 初體驗
先逛一下 ubuntu 臺灣站 看一下大家的討論; 本文推薦下載的版本是 edubuntu 光碟 (下載點) 建議下載完映象檔要檢查一下 md5sum 確認正確。
設定 BIOS 以光碟開機。 如果希望看到中文, 出現 "boot: " 提示時,
應打入 live locale=zh_TW
但不要期望太高,
主選單都還是英文; 字型蠻醜的, 而且少數有中文的地方也還會掉字。
還是等正式安裝後再設定中文比較實在。
大力推薦的幾套軟體: 「教育」 選單底下的 kanagram, kalzium, 「遊戲」 選單底下的 gcompris, tuxmath, atomix
在 accessories 裡面有個 terminal 可以開啟終端機。 在終端機上, 打
sudo bash
可以變身為 root, 胡作非為。 以上網為例,
edubuntu 內定以 dhcp 方式上網; 如果需要用 adsl 上網, 就必須以 root
身份打 pppoeconf
。
如果下指令的時候, 出現一堆 locale 相關的錯誤訊息
(例如下面幾節在硬碟上安裝/刪除軟體時, 下 apt-get 指令,
就可能會出現), 那是因為光碟版對中文支援不完整。 用 env | grep
TW
可以看到: 當初一句 "locale=zh_TW", 讓 ubuntu
設了許多環境變數想支援中文 (但欠了一些中文套件)。 建議不如把
"目前這個終端機" 的中文設定通通關掉: unset $(env | grep TW |
sed 's/=.*//')
植入硬碟
可以點選桌面上的 "install", 把 edubuntu 植入該分割。
如果硬碟上已有 grub 或 lilo 等開機管理員, 不希望 ubuntu 再安裝一次, 可以在安裝前插入 usb 硬碟, 並在安裝 grub 時, 把 hd0 欄位改掉。 可是 usb 硬碟的代號是什麼?
- 在 usb 硬碟的根目錄上建立一個怪怪的, 從來沒用過的檔名, 例如 usb-hd-20070131
- 進入 grub
- 打
find /usb-hd-20070131
它會到每個儲存裝置的根目錄底下去找 usb-hd-20070131 這個檔案, 並印出該裝置的代號。 這個代號就可以拿來用。 [ 推薦 grub 參考文章]
裝完後記得把 usb 硬碟上面的 /boot/grub/menu.lst 檔複製出來, 將裡面其中一筆開機選項貼到你原本的 grub 選單, 並加以適當修改。
改裝
假設剛才的 edubuntu 安裝在 /dev/hda17。 重新回到自己熟悉的 Linux
版本底下。 建議先 fsck -f /dev/hda17
然後才掛載, 例如
mount /dev/hda17 /mnt/my-edu
最後並建議趕緊將最清潔最原始的初安裝版本壓縮起來: cd
/mnt/my-edu ; tar czf
/some/dir/in/a/large/partition/my-edubuntu.0.tgz .
未來我們將在 /mnt/my-edu 目錄底下進行大翻修。
為網路增刪套件作準備: cp /etc/resolv.conf
/mnt/my-edu/etc
並編輯 /mnt/my-edu/etc/apt/sources.list
以後果自負的心態把 universe 那兩句註解打開 (刪掉前面的 #) 走出
ubuntu 團隊支援的小圈圈, 進入整個宇宙。
chroot /mnt/my-edu
變身至新安裝的硬碟空間底下工作。
從網路抓回全宇宙的套件清單: apt-get update
(有點久)
第一步先瘦身吧! 查一下已安裝的套件當中, 那些套件最佔空間:
dpkg-query -W -f '${Installed-Size;6} ${Package}\n' | sort
-n
詳見 dpkg-query
手冊 例如發現 openoffice.org-core 佔用最多空間, 又想起 OLPC 計劃主持人 Nicholas Negroponte
說: 「教小朋友這些辦公軟體,
簡直就是一種罪行!」 就決定下指令把它刪掉: apt-get remove
--purge openoffice.org-core
不過出現一些錯誤訊息, 裡面提到
openoffice.org-l10n-en-gb openoffice.org-l10n-en-za 這兩個套件。
一不做二不休: apt-get remove --purge openoffice.org-core
openoffice.org-l10n-en-gb openoffice.org-l10n-en-za
砍掉 23
個套件, 264 MB, 大快人心!
不要急著安裝很多新套件, 先安裝非用不可的就好, 例如中文:
apt-cache search locale | grep zh
從這個指令當中看出,
有一個 「虛擬套件」 叫做 language-support-zh 是所有中文套件的基礎。
試著安裝, 結果... 天啊, 太多了, 又要把 OO.o 裝回來? 不了, 謝謝;
只挑其中重要的, 逐一手動安裝, 例如 scim-tables-zh, scim-chewing,
scim-pinyin 等等。 另外, 文鼎的中文字形也是必備的: apt-cache
search arphic
為適應未來潮流, 挑 utf8 編碼的來安裝:
apt-get install ttf-arphic-ukai ttf-arphic-umin
最後,
記得在 /etc/X11/Xsession.d 底下建立一個文字檔, 檔名任意, 例如叫做
74scim, 內容如下:
export XMODIFIERS="@im=SCIM" export GTK_IM_MODULE="scim" export XIM_PROGRAM="scim -d" export QT_IM_MODULE="scim" scim -f x11 -d & scim -f socket -d &
這才會自動啟動 scim。 [推薦 ubuntu 中文化文章]
當然, 作為一張教育光碟, 還算輕薄短小卻極具教育意義的 Dr. Geo 跟 gnuplot 是絕對必要的。
建議把 /var/cache/apt/archives 底下的所有 *.deb 搬到另外一個分割。 兩個目的: 希望這裡空一點, 免得等一下把不必要的垃圾放進 usb 硬碟; 又希望下次可以節省一些下載時間 (如果您也是用入門級的 ADSL 的話啦)
另外, 為了將來安裝到 usb 硬碟上考量, 不妨讓它每次開機都重新偵測顯示卡。 在 etc/init.d/gdm 檔案裡面的 "start)" 之下, 加一句: [參考文章]
dpkg-reconfigure -fnoninteractive --no-reload -phigh xserver-xorg
至此, 可以退出 chroot 環境, 卸下這個分割, 檢查分割, 再掛回來, 並再次備份一個壓縮檔, 例如叫做 my-edubuntu.1.tgz
安裝到 usb 硬碟
假設你的 usb 硬碟是 /dev/sdz 且欲安裝在 /dev/sdz17 分割上面。 又假設已有空的工作目錄 /media/live-usb。
第一步複製, 跟安裝到硬碟上一樣, 很簡單: mount /dev/sdz17
/media/live-usb
然後 cd /media/live-usb ; tar xzpsf
/some/dir/in/a/large/partition/my-edubuntu.1.tgz
(解壓縮修改過的備份) 哦, 還要修改 /etc/fstab, 反映真實的根目錄
切記!
第二步設定 grub。 在 /media/live-usb 的 boot/grub 底下,
應該有一些 *stage* 的檔案。 把先前存起來的 menu.lst 複製到此處。
下指令 blkid | grep sdz17
把 UUID="..."
那一串複製下來。 這是硬碟分割區的代號。 到 menu.lst
裡面做適當的修改, 包含:
- 刪掉不需要的開機選項。
- 把所有
root (hd0,5)
之類的那幾列都刪掉; 把所有的root=/dev/hda6
之類的地方, 改成root=UUID=...
就是用剛才 blkid 指令之後複製的那一串來貼上, 並且把引號去除掉。
第三步安裝 grub。 再用先前講的 grub 裡面的 find 指令, 找出 usb
硬碟的分割代號, 例如叫做 (hd27,16)
(因為 grub 從 0
開始算; 而 linux, fdisk 等等其他軟體則是從 1 開始算, 所以通常差 1)
進入 grub, 執行
root (hd27,16) setup (hd27)
重開電腦, 將 BIOS 設成 usb 開機, 開始享用吧!
補充
如何製作 grub 開機畫面? 看這裡。
簡單兩句話: 要安裝 ImageMagick 套件, 然後下指令: convert
-resize 640x480 -colors 14 image.png image.xpm ; gzip
image.xpm
其他參考資料
- Installing Ubuntu On An External USB Hard Drive
- Edgy USB Install
- Making a USB Stick bootable with Grub
- 本頁最新版網址: https://frdm.cyut.edu.tw/~ckhung/b/sa/edubuntu.php; 您所看到的版本: February 14 2012 10:32:25.
- 作者: 朝陽科技大學 資訊管理系 洪朝貴
- 寶貝你我的地球, 請 減少列印, 多用背面, 丟棄時做垃圾分類。
- 本文件以 Creative Commons Attribution-ShareAlike License 或以 Free Document License 方式公開授權大眾自由複製/修改/散佈。