2014年2月27日 星期四

教你的學生半自助打造救命碟

您的學生人數太多, 您沒空幫他們製作完整的救命碟嗎? 想要採用救命碟上課的老師可以請學生 「半自助」 打造救命碟。 本文大部分內容可作為講義給學生看; 老師的部分只是簡要地描述大略步驟。 本文假設老師自己曾經用 mk-boot-usb 成功地製作過 antix 之類的完整版 linux 及 finnix 之類的救援版 linux。

一、 老師準備工作 (學生可略過)

  1. 製作一顆 finnix 救命碟。 例如我用 mk-boot-usb -b -v 1 -d /dev/sdx -z '100+ 6400' 製作一顆空的救命碟, 在 /dev/sdx1 留下至少 100M 的空間, /dev/sdx5 留下 6.4G 的空間, 然後按照 finnix 那篇第一節最後面把 finnix 放在第五分割的子目錄裡。 這樣第五分割還會剩下 6G 多, 未來可以存放完整的版本 -- 例如 antix。 但先別裝上完整版。 這顆 「僅有 finnix 的輕便隨身碟」, 複製起來比較快。 記得把完整版的開機選單 (menu.lst) 直接複製到 /media/sdx4/boot/grub 裡面去, 這樣學生可以少一個動作。。
  2. 第一次上課時, 把學生分為六至八組, 每組六至八人。 每一組的組長要在幾天之內交一顆空白隨身碟到老師這邊; 其他人下次要帶空白隨身碟來上課。
  3. 老師回家自己幫組長複製 「僅有 finnix 的輕便隨身碟」。
  4. 第二次上課時, 講授 複製救命碟 的步驟, 並請各組組長幫組員複製輕便碟。
  5. 規定下次上課前, 所有同學都應有輕便碟可用。 若是 16G 或更大的隨身碟, 請在下課上次之前把一個好幾 G 的完整版壓縮檔案 (下詳) 下載到第一分割去, 以避免上課時網路塞車。 如果可以的話, 請按照下一節在家裡能做幾步算幾步。 建議把這篇文章存在手機上, 方便參考。 (因為用 finnix 開機時, 沒有圖形介面、 沒有中文。)
  6. 準備好完整版 (例如 antix) 的壓縮檔、 公佈網址。
  7. 在老師自己的筆電, 或是電腦教室的老師機上面安裝 samba (另文詳), 並且把完整版壓縮檔放上去分享。
  8. 第三次上課時, 按照下一節操作。

* * * 以下是給學生看的 * * *

二、 半自助式打造 antix 救命碟

假設你手中已有一顆 「僅有 finnix 的輕便隨身碟」。 並且假設你的隨身碟為 16G 或更大。 以下步驟如果沒做完, 隨時都可以下 poweroff 指令關機。

  1. 你可以進入 windows, 下載 阿貴老師提供的 「完整版 antix 13.2 壓縮檔」 (或你們老師所提供的版本)。 不過被笨笨的 windows 看到你的隨身碟, 就很難保證百毒不侵了。 所以更好的方式是直接進入 finnix 下載。 (下詳) 又, 同一個目錄下有一個 md5sum.txt 檔, 可供驗證下載檔案沒有失誤。 (下詳)
  2. 請參考 救命碟使用入門 的第二節 「用救命碟重開電腦」, 學會在你的桌機或筆電用這顆隨身碟開機。
  3. 看到開機選單時, 要趕快按上下箭頭選擇進入 finnix。
  4. fdisk -s /dev/sd? 看一下你的隨身碟代號。 如果都不像, 改下 ls /dev/sd* 再根據先前的結果改下 fdisk -s /dev/sd[abh] 之類的, 表示要看 /dev/sda、 /dev/sdb、 /dev/sdh 的大小。 以下假設你的隨身碟叫做 /dev/sdx。
  5. [掛載 vfat 分割] df 會看到目前已掛載的分割。 下 mount /dev/sdx1 再下 df 會看到隨身碟的第一分割被掛載在 /media/sdx1 底下。 (請確認無誤才往下做, 否則只是做虛功。)
  6. cd /media/sdx1 當然要把 sdx1 改成你的隨身碟的真正代號。 下 pwd 確認一下已切換到 /media/sdx1 目錄。
  7. [下載] 如果你先前沒在 windows 底下下載很大的完整版壓縮檔的話, 那就現在下載囉: wget http://.../完整版檔名.tgz 這個下載應該要花不少時間。 請按著 ctrl-alt 不放, 點一下 F2, 切換到第二個終端機。 下幾次 df 指令, 確認 /media/sdx5 分割的可用空間越來越少。 若要切回原終端機, 可以按著 ctrl-alt 不放, 點一下 F1。 已下載完的同學請直接跳到下一步。
  8. [檢查 md5sum] 很久以後下載完成, 用 ls -l 看一下抓回來的檔案大小是否正確。 也可以進一步下 md5sum 完整版檔名.tgz 並且跟老師提供的 md5sum 比對, 驗證一下傳輸過程沒有任何錯誤。 (兩者的 md5sum 相同。)
  9. [掛載完整版 linux 分割] 下 mount /dev/sdx5 再下 df 確認已成功地把隨身碟的第五分割掛載在 /media/sdx5 底下。
  10. cd /media/sdx5 並下 pwd 確認一下已切換到 /media/sdx5 目錄。
  11. [解壓縮]: tar xzf /media/sdx1/完整版檔名.tgz (請記得: [Tab] 鍵很好用, 可以省打很多字) 這個會無聲無息地執行二三十分鐘。 可以再用 ctrl-alt-f2 切換到第二個終端機, 並且下幾次 df 確認 /media/sdx1 分割的可用空間越來越少。 請去運動一下或吃飯洗澡之類的 :-)
  12. [修正 UUID]: 現在你的隨身碟上已有 finnix 與 antix (或老師所提供的其他完整版); 但是 antix 還不能開機。 我們需要修正兩個設定檔。 先查詢正確的 UUID: tune2fs -l /dev/sdx5 | grep UUID 出現一個 32 位的 16 進位數字。 用滑鼠點兩下, 就複製起來了。
  13. 編輯 antix 的 fstab: nano /media/sdx5/etc/fstab 找到一處 UUID=xxxx 把原來的 32 位數字刪掉, 按滑鼠右鍵貼上正確的 UUID。 按照螢幕下方的提示, 按 ctrl-O 存檔 再按ctrl-X 離開, 回到命令列。
  14. mount /dev/sdx4 然後編輯開機選單: nano /media/sdx4/boot/grub/menu.lst 再度找到兩處 UUID=xxxx, 換掉、 存檔。
  15. 大功告成! 下 poweroff 關機。 重開電腦, 如果順利的話, 就可以進入 antix (或老師所提供的其他完整版) 了! 帳密是 tux 一個空格, 以及 root 一個空格。

以上修正 UUID 的動作, 其實就是 mbu-uuid /dev/sdx 在做的事; 不過 mbu-uuid 沒寫得很好, 只適用於複製出來的隨身碟, 不適用於半自助打造的隨身碟。

三、 8G 碟怎麼辦?

[2015/4/7 更新: 不要用網路芳鄰。 改用 udpcast 平行快速配送 吧!]

如果你的隨身碟只有 8G, 那麼就要改從老師所提供的網路芳鄰抓取完整版壓縮檔。 即使是 16G 或更大的隨身碟, 如果沒有事先下載完整版壓縮檔, 當然也可以用這個方法。 不過這只適用於同一網域 (例如電腦教室裡面的老師機) 而且很多人同時連到老師機, 會很容易塞車。

你可以照著上一節的步驟做, 但省略 [掛載 vfat 分割] 一直到 [檢查 md5sum] 的這些步驟, 改做這幾個步驟:

  1. mkdir /mnt/ckx220i 其實名字無所謂, 總之就是建一個空目錄, 作為下一步的掛載點 (mount point)。
  2. mount -t cifs //192.168.999.999/xyz /mnt/ckx220i 以上的 網路芳鄰位址 是隨便寫的; 正確的位址, 上課時老師會查出來寫在白板上。
  3. df 確定網路芳鄰掛載成功。

然後接續上一節 [掛載完整版 linux 分割] 那一步開始往下做。 當然, 解壓縮時 (tar xzf ...) 壓縮檔的路徑必須改成 /mnt/ckx220i/完整版檔名.tgz 之類的, 請以老師上課公告為主。 解壓縮完畢, 修正 UUID 之前, 記得先下: umount /mnt/ckx220i 並下 df 確認以釋放網路芳鄰, 不再佔用頻寬。

四、 完整版開機成功之後?

May your tux usb keys and sd cards live long and prosper! 完整版開機成功之後, 建議把第一分割的完整版壓縮檔搬到電腦硬碟上, 不要留在隨身碟上。 然後趕快再 用 finnix 開機, 複製 一枝備用的乾淨原始母碟。 當然, 這次的複製, 花的時間會比較長 (20-40 分), 步驟會比較簡單 (只有 mk-boot-usb 跟 mbu-uuid 這兩個指令; 基本上根本不需要用到本篇的步驟)。 不只複製一枝, 多複製幾支吧! 貴哥及史波克祝你的百毒不侵救命碟長命百歲, 多子多孫! [Live long and prosper!]

9 則留言:

  1. 所以目前8G隨身碟 不能用網路芳鄰來掛載囉!!

    回覆刪除
    回覆
    1. 8G隨身碟必須用網路芳鄰來掛載。 要等上課那天才能做, 而且會跟其他同學塞車。 所以建議買一枝 16G 的, 預先下載以免上課當天塞車啦。

      刪除
  2. 如果要分享大檔案給許多人,可以試試用BT分享
    先將分享檔案以BT製作成種子檔,再在網路芳鄰分享中放上BT client和種子檔,讓接收者下載
    這會比所有人都在擠網路芳鄰的單一電腦還要快許多

    回覆刪除
    回覆
    1. 有好的教學文 (for debian 系列) 可以推薦嗎? 之前曾經想學可是好像搜尋到的文章都看不懂 orz

      刪除
    2. 作者已經移除這則留言。

      刪除
    3. 首先要先了解BT整個系統不是完全分散式的,機制運作需要稱為Tracker的伺服器,上面儲存一個BT分享現在分享者、下載者的資訊

      以下是個人在Ubuntu 12.04上的作法

      1.製作種子
      有一些GUI BT client也有製作種子的功能,在Linux下有Transmission(GTK+)、KTorrent(KDE)等等可以用,只要了解觀念使用方式不會差太多
      個人這裡使用mktorrent這個CLI工具製作,先安裝:
      $ sudo apt-get install mktorrent

      接著從mktorrent -h可以查到使用方式:
      $ mktorrent -a [tracker announce URL] -o [輸出torrent檔案] [分享檔案]
      example: $ mktorrent -a udp://tracker.openbittorrent.com:80/announce -o ~/share.torrent ~/share/

      輸出的檔案就是要分享的種子檔
      Tracker可以從網路上搜尋可用的,一個BT分享可以設定多個Tracker,在此使用參考資料的作為範例

      2.做種,當分享者
      BT的分享機制就是要有人分享檔案,其他人才能下載,因此至少需要有一個分享者
      分享者以任意的BT client開啟剛才做好的種子檔,下載目錄選擇存放該分享檔案的目錄,如此BT client就會開始做種
      此時即可測試其他人是否可以透過BT下載到分享的檔案

      注意:以上作法會將檔案公開到網路上,若是私人檔案請不要用此方式分享


      後記:
      個人在自己測試這些方式時,發現開始做種後,剛開始其他下載者貌似要等一段時間才能發現分享者並開始下載,不確定原因

      另在找尋資料時看到有稱為Magnet的P2P分享技術,貌似這個方式無需Tracker和種子檔,不過沒有做深入研究


      參考資料:
      http://zfly9.blogspot.tw/2013/04/bitcomet.html
      http://www.cnx-software.com/2012/06/08/how-to-create-and-seed-a-torrent-in-ubuntu-using-transmission-command-line/
      http://openbittorrent.com/
      http://pcuser.pixnet.net/blog/post/26604286

      刪除
  3. 老師請問一下這完整版 antix 13.2 壓縮檔」 的root密碼是?? 謝謝老師

    回覆刪除
    回覆
    1. 啊 忘記說了, 是一個空格。

      刪除
    2. 謝謝老師!真的太棒了~從以前的knoppix->slax->antix 這版真的輕巧又方便好用!好好的來體驗一下這好玩隨身碟

      刪除