[2014/2/27 補充] 老師們, 想用救命碟上課, 但沒空幫許多學生複製嗎? 本篇作廢, 請改參考新文章 「教你的學生半自助打造救命碟」。
[2013/9/3 補充] 如果您只是自己要用 (而沒有要替學生大量製作), 請對照參考另文: Antix 13.1: 用窮人的資源過富足的生活。
老師如果想用自己客製化的 linux 開機隨身碟上 「非 linux」 課程 (例如我有一學期曾經 在電腦教室用 drge/gnuplot/maxima 上微積分課), 可以考慮採用本文的方式。 您可以幫學生製作陽春版+slax版開機碟 (複製速度較快), 然後請學生自行下載完整版的系統快照壓縮檔 (例如 SimplyMepis), 自行解壓縮。 學生只需要學本文的第三節, 或者更簡單版本的教學文 (例如改用圖形界面檔案總管操作)。 以下則假設讀者是 「不曾碰過 linux, 但有興趣學習自助打造開機隨身碟」 的學生 (任何科系)。 同時, 這篇也可作為 linux 課程的第一週教材。
一、 準備動作和預備知識
先規畫一下你要給 Linux 多大的空間。 我切 1.6G - 1.8G 給 vfat 分割 (windows 只認得這一個分割); 6G 給 Linux 的分割。 一般上網/辦公/聽音樂/看影片/畫圖的工作都沒有問題; 另外放了幾套數理化天文教育軟體, 演講的時候很好用。 這樣用掉了將近 4G 左右。 扣除其他東西, 大約只剩不到 0.6G 可以新增套件。
分割 | 容量 | 用途 |
/dev/sdx1 | 1.6G - 1.8G | 格式化成 vfat, 可以和 windows 交換資料 |
/dev/sdx5 | 6G | 系統4G; 家目錄 0.7G; slax 0.7G; 剩不到 0.6 G 可以新增套件 |
下載 slax-cyut 開機光碟。 用 slax 光碟開機, 會以 root 的帳號自動登入。 當你打開終端機視窗 (konsole) 時, 會看到 root 專用的 "#" 提示符號 (而不是一般用戶看到的 "$" 號)。 如果你不是從零開始, 而是用已經做好的隨身碟開機, 並且已經用 cyut 的身份登入, 那麼必須先打 su 變身成 root。 (slax 的 root 的預設密碼以及我所製作的 SimplyMepis 的 root 的預設密碼都是 toor。) 以下所有指令都必須用 root 的身份操作。
終端機視窗可以開好幾個分頁。 從 「工作階段」 底下選取 「新增 shell」, 就可以開啟一個新分頁。 如果看不見選單列, 請先按滑鼠右鍵選擇 「顯示選單列」, 或按 Ctrl-Alt-M 選單列就會出現。
命令列上有一個功能叫做 command completion 命令快打。 例如等一下要打的指令 "mk-boot-usb" 其實不必辛苦地打全名, 可以先只按幾個鍵 "mk-", 然後按 「Tab」 鍵, 系統會自動將指令名稱打完。 檔名也有類似的 file name completion 檔名快打 功能。 在命令列底下, 懶惰是一種美德, 請盡量享用這些快打功能, 既省事又比較不會出錯。
等一下插入隨身碟的時候 (現在請先別插入; 或者插入實驗後請先拔出來) 系統會跳出視窗問你是否要掛載。 每偵測到一個分割, 就會跳出一個視窗。 平常的隨身碟只有一個分割, 但若你將先前做過救命碟的隨身碟拿來重做, 可能就會看到三個或更多視窗。 不論跳出幾個視窗, 請全部按 「取消」。
二、 製作陽春版救命碟
- 用 slax-cyut 光碟開機。 (暫時請先不要把目的地碟插入電腦!)
- 開一個終端機視窗。 先認一下系統內有哪些硬碟與隨身碟。
下指令:
fdisk -s /dev/sd?
看一下你的電腦上有哪些硬碟與隨身碟、 容量各有多大。 印出來的數字以 K 為單位, 所以點掉三位數就變成 M, 點掉六位數就變成 G。 以我的 eeepc 為例, 從下面的輸出結果可以看出: 我的內建 ssd 硬碟是 8G, 系統叫它 /dev/sda; 另有一張 2G 記憶卡, 系統叫它 /dev/sdb。/dev/sda: 7880544 /dev/sdb: 1982464
- 終端機視窗開一個新分頁, 並且下指令
mk-boot-usb
。 系統會請你這時才插入隨身碟。 插入之後隔幾秒, 隨身碟的燈會閃幾下, 然後跳出視窗。 這時才可以按 「Enter」 鍵, 然後系統便知道你新插入的隨身碟代號叫什麼。 這時再切換回先前的分頁, 按 「上箭頭」 叫出先前的fdisk -s /dev/sd?
指令, 再查看一次系統裝置。 以我的例子而言, 從這次我看到的結果得知: 新插入的目的地碟容量有 1G, 被系統稱為 /dev/sdc。/dev/sda: 7880544 /dev/sdb: 1982464 /dev/sdc: 991231
- 再切換回剛剛 mk-boot-usb 執行到一半的分頁。 Mk-boot-usb 會把每個分割最近修改過的幾個檔案列出來給你看。 (圖中黃線框起來的部分) 如果看到熟悉/重要/不該刪的檔案, 請趕快按 ctrl-C 中斷, 現在後悔還來得及! 也許拿錯隨身碟了?
- 請打幾個數字, 用空格分開, 而且加起來必須等於 "available" 前面的數字。 我的 1G 隨身碟只剩 944 MB 可用, 所以放不下 SimplyMepis, 只能放 slax。 於是我回答 "144 800" (不要敲入引號)。
- 按 Enter 之後, 還有最後一次反悔的機會。 如果一切 ok, 就回答 "yes" (三個字母都要打, 表示 「毀滅現有資料」 的意志堅決)
- 應該會出現幾個 "=+=+= formatting /dev/sd.." 之類的訊息, 又出現 "grub> Installation finished. No error reported." 之類的訊息, 那麼這顆隨身碟大概就成功, 可以開機了。
- 下指令:
qemu -usb /dev/sdx
用模擬器測試開機。 (如果你當初是用已做好的隨身碟內的 slax 開機, 用普通帳號 cyut 登入, 那麼這時必須先開另一個 cyut 帳號的分頁, 然後不要 su, 而是直接在 $ 提示符號下, 打sudo qemu -usb /dev/sdx
並且被問到密碼時, 直接按 Enter) 然後會出現右圖般的開機畫面。 如果沒有按上箭頭或下箭頭選別的作業系統 (現在選了也沒用), 右下角數秒 10 秒之後就會自動進入 ttylinux。 這個版本只是為了確認可以開機; 實際上我們不會用到它。 可以直接把視窗關掉。 (如果將來安裝並進入 slax 或 SimplyMepis, 就必須從選單裡面正常關機。) 如果不小心點進 qemu 視窗, 滑鼠會被吃掉; 按 "ctrl-alt" 可以逃出來。
三、 還原 SimplyMepis
目前這顆隨身碟上只安裝了一個 (一般人不太能用的) ttylinux; 選單裡面其他都是假的。
接下來要把可用的 linux 複製進隨身碟。
先用 fdisk -s /dev/sd?
檢查一下你的隨身碟代號以及大小,
再用 fdisk -l /dev/sdx
檢查一下隨身碟分割的狀況,
最後用 df
檢查一下隨身碟是否已掛載。
如果沒有, 就下指令 mount /dev/sdx5 /mnt/sdx5
然後再下一次 df
應該會看到你的隨身碟的第五分割被掛載在
/mnt/sdx5 底下。 (以上請把所有的 sdx5 換成正確的代號。)
如果你的隨身碟容量是 4G 或更小, 請直接跳到第五節。 8G 或更大的隨身碟, 請繼續往下讀。 你可以下載我所製作的 2G 左右的 SimplyMepis 的系統快照壓縮檔。 這裡面包含四個版本的 Linux:
版本 | 體積 | 用途 |
DSL | 0.05G | 雲端版, 如果你自己有架 vnc server 並提供中文桌面, 這就夠了 |
clonezilla | 0.13G | 臺灣之光版, 國網開發, 可備份還原 windows |
slax-cyut | 0.7G | 超強麻雀版 (五臟俱全); 應用軟體有點舊 |
SimplyMepis | 4G | 完整版, 如果空間夠, 就跟桌機沒兩樣 |
SimplyMepis 有兩組帳號密碼: cyut 的密碼是 tuyc; root 的密碼是 toor。
然後 cd /mnt/sdx5
切換到第五分割的根目錄,
解壓縮: tar xzpsf /mnt/.../.../.../mepis-11-e-cyut.tgz
最後面的路徑請根據你剛才下載時存放的真實位置來修改。
記得檔名快打很好用, 每一層目錄名稱都可以打一兩個字母然後直接按 tab 鍵。
這大概要解半個小時到50分鐘。 可以開另一個終端機分頁,
不時用 df 看一下進度; 最好是先去做其他事, 例如運動一下。
經過漫長的等待, 提示符號再度出現。
最後下一個指令 mbu-uuid /dev/sdx
修正開機選單 (第四分割內的 boot/grub/menu.lst)
和檔案系統表單 (第五分割內的 etc/fstab) 裡面的 UUID, 就大功告成了!
如果在關機之前要拔掉隨身碟, 請記得先卸下隨身碟的所有分割:
umount /dev/sdx?
; 如果先關機才拔下來就無所謂。
以後你們老師如果製作新版的系統快照壓縮檔讓你下載, 你也可以如此自行更新。
四、 調校、 複製、 異動備份
目前的選單預設以 ttylinux 開機。 這不太方便。
請掛載 /dev/sdx4 (開機分割), 下指令 nano
/mnt/sdx4/boot/grub/menu
進入編輯器 nano 修改開機選單。
把 "default 0" 那一句的 0 改成正確的數字。
(0 表示最上面的選項 "ttylinux", 1 表示下一個選項 "DSL 4.4.0", ... 等等)
注意到選單裡面有一句 "splashimage=/boot/grub/gnu-tux-usb.xpm.gz"
如果想要換一個開機畫面, 可以改這一句。
找一張色彩比較貧乏的圖 (例如黑白相片; 因為最後只能保留 14 個顏色)
例如叫做 welcome.png (jpg 也可以; 大小不拘) 然後用這串指令:
convert -resize 640x480 -colors 14
welcome.png welcome.xpm ; gzip welcome.xpm
產生 welcome.xpm.gz , 放到同一目錄, 並且修改 splashimage 之後的檔名,
就變成你自選的開機畫面了。
這顆隨身碟可以自我複製, 但必須用 slax 開機。
如果用甲碟的 SimplyMepis 開機, 以下的指令也可以用,
但只能將乙碟複製給丙碟, 不能將甲碟本身複製給別人。
請在插入目的碟之前與之後分別用 fdisk -s /dev/sd?
指令找出目的碟的代號, 然後用這個指令複製:
mk-boot-usb -b -v 1 -s /dev/sdx -d /dev/sdy
這個指令起手無回! (因為加了 -b -v 1 表示要批次作業)
-s 後面請給來源碟的代號 (source); -d 後面請給目的地碟的代號
(destination), 然後就會花三十分到一小時的時間複製。
複製成功後, 照樣需要下 mbu-uuid /dev/sdy
修正開機選單和檔案系統表單。
複製時請注意保護自己的隱私!
我自己有兩顆自用碟; 五六顆分享碟。
含有隱私資料的自用碟是絕對不會拿出來分享的啦 :-)
如果你只是想備份 「異動過的資料」, 只需要備份第五分割的兩個檔案:
-rw-r--r-- 1 root root 805306368 2011-10-17 09:24 images/worksp.img -rw-r--r-- 1 root root 314572800 2011-10-16 21:24 slax-6.1.2/work-space.img
前者是 SimplyMepis 的使用者家目錄; 後者是 slax 的異動檔。 這兩個檔都是 loopback file system -- 有點像是光碟映像檔, 各自內含完整的檔案系統。 slax 的所有異動都存放在後面這個異動檔裡面, 所以如果不小心把 slax 玩壞掉了, 把原始的異動檔拷貝回來, 就又是一尾活龍。 至於 SimplyMepis 大部分時候還原這個 「使用者家目錄」 可能也 ok; 不過並不是百分之百有效, 因為系統還有其他檔案可能也會有異動。
另一方面, 這兩個映像檔的大小, 也限制了你的工作空間的大小。 如果希望擴大, 可以重新製作映像檔。 詳見 Linux 下的特殊檔案系統。 (slax 映像檔製作也請見下一節。)
五、 窮人版救命碟
如果你的隨身碟只有 4G 怎麼辦? 好吧, 那就只能 slax 而已囉。 2G 也可以。 其實 1G 就夠了。 別失望, 雖然塞不下 OO.o, 但是其他東西也夠好用了。 如果不是因為作者 Tomáš Matějíček 大大停止更新, 我還是會選擇繼續用這個短小精悍的版本。
做完第二節 「陽春版救命碟」 並且掛載目的地碟的第五分割之後,
請 df
看一下光碟機掛載在何處,
也順便看一下第五分割還剩多少空間可用。
cd /cdrom0/
切換到光碟機所在目錄,
ls -l
檢查一下光碟內容。
du -s
看一下光碟佔用多少空間。
如果確認第五分割還裝得下整片光碟的內容,
就這麼複製: cp -a slax/ /mnt/sdx5/slax-6.1.2
然後大約等不到十分鐘, 提示符號會再度出現。
我們已經把整個 slax/ 目錄複製過去
(其他目錄和檔案並不需要) 並且改名為 slax-6.1.2
(因為第四分割的 boot/grub/menu.lst 已如此指定)。
到這一步, 這顆隨身碟其實已經可以用來開機。
不過最好還是設定一下它的異動檔。
查看第四分割的 boot/grub/menu.lst 可以看見
slax 選項裡面的這一小段: changes=/slax-6.1.2/work-space.img
表示 slax 會自動尋找 slax-6.1.2/work-space.img
這個檔案儲存它所有的異動。
你可以把第三節裡面提到的
SimplyMepis 的系統快照壓縮檔裡面的對應檔案複製過來;
也可以這樣自行製作:
cd /mnt/sdx5/slax-6.1.2 dd count=614400 < /dev/zero > work-space.img mkfs -t ext2 work-space.img mkdir /mnt/t1 mount -o loop work-space.img /mnt/t1 df cd /mnt/t1 tar xzpsf /cdrom0/slax/changes.tgz df cd - umount /mnt/t1
其中幾句稍微解釋一下:
- dd 那一句的效果是製作一個三百多M的空白檔案 work-space.img。 count= 後面的數字的單位是 "0.5K"。
- mkfs 那一句的效果是將空白檔轉為一個 loopback device。 系統會懷疑你是玩真的還是玩假的。 按 y 就對了。
- 解壓縮之前之後的 df 讓你比較一下解完之後 changes.tgz 佔用多少空間; 也讓你知道還有多少空間可用。
- changes.tgz 就是我預先設定好的 「異動檔」 內容。
如果有興趣進一步研究 slax, 請見 slax-cyut 首頁。
六、 結語
呼, 累斃了! 不過聽高醫大陳以德老師說 「把別人的電腦變成你的電腦」 研習報名大爆滿, 我當然必須好好準備...
對於熱切推廣 linux 開機隨身碟的老師而言, 希望這篇提供一個可行的模式。 未來您上課, 可以這樣做:
- 您自己選一個習慣版本的 linux, 把隨身碟當成硬碟來安裝。 客製化。 如果不是從我提供的 SimplyMepis 開始改起, 請記得要採取 延年益壽措施。
- 壓縮成為 「XX老師版的系統快照壓縮檔」。
- 用 slax-cyut 光碟製作 「陽春版救命碟」。 把 slax 及您的快照壓縮檔解開到第五分割。 修改 menu.lst 開機選單, 確認可以正常使用。
- 用 slax-cyut 光碟幫學生製作 「陽春版 + slax 版救命碟」 -- 如果 slax 再拿掉一些模組, 複製速度可以很快。 (可以考慮順便教學生如何複製)
- 教學生進 slax 上網下載你提供的系統快照壓縮檔, 並用圖形界面的檔案總管把它解壓縮到第五分割。
- 以後若老師推出更新版, 學生可以自助下載、 解壓縮。
不想深究的一般學生並不需要閱讀本文, 只需要學會第三節的 「圖形版」 (若您寫了講義, 請在此留言分享連結)。
為了避免 「支援 Windows 8」 型號電腦禁止消費者自主開機 所造成的生態浩劫, 請各位老師幫忙讓更多學生和消費者懂得透過 「買電腦前先測試隨身碟開機」 的方式來保障自己的消費權益! 您的微積分課、 統計學課、 演算法課、 資料結構課、 ... 不只是資訊課程, 許多數學、 物理、 化學等等非關資訊學科的課, 也都可以這樣做哦!
讚!
回覆刪除感謝分享
謝謝老師的分享,已成功製作slax-cyut救命碟,唯想再進一步製作SimplyMepis版時,ftp://penguin.im.cyut.edu.tw/ckhung/mepis-11-e-cyut.tgz的連結是無效的,是否已不提供下載了呢?
回覆刪除啊, 謝謝提醒... 先前系上 penguin 主機的硬碟被我灌爆掉了, 所以暫時刪除。 剛剛已經把檔案移到朋友的機器上了, 請再試試文中新的連結。
回覆刪除