2017年9月5日 星期二

百毒不侵救命碟 「貴哥實驗室版」: 不必燒毀、 麻瓜可自製、 圖書館/電腦教室幾乎零管理

注意: 不推薦創見的隨身碟, 尤其 不推薦創見的記憶卡!

注意: mbootuz.py 僅限用於處理傳統 MBR 方式分割的硬碟/隨身碟。 mbootuz.py 不適用於處理 GPT 方式分割的硬碟/隨身碟。

請到 這裡 下載最新版的 *.iso 。 以 2018 秋天為例, 我採用 lubuntu 18.04 bionic beaver, 所以 iso 檔名為 bionic-g18?.iso 。 [或更輕巧的 32bit gantix*.iso、 文字模式救援光碟 grml linux] 這些是我上課用的 live CD。 請把它燒成 DVD、 用它開機之後, 打開一個終端機, 可以這樣自製 「百毒不侵救命碟」:

ls /dev/sd*
# 插入隨身碟
ls /dev/sd*
# 查看一下比剛才多出什麼? 例如多出 /dev/sdz 跟 /dev/sdz1, 那麼就:
sudo mbootuz.py mkboot /dev/sdz
# 密碼是一個空格 (不良示範, 不要學)
sudo mbootuz.py cplive -p greg.img -Z 2G /dev/sdz

其中 -p 後面的檔名請根據你的姓名或代號命名; -Z 後面的值代表幫 linux 預留多大的可寫入空間。 (也就是會多吃掉隨身碟那麼多空間。) 就這樣, 兩個指令, 複製時間從五分鐘十五分鐘不等, 你已成功自製 mbootuz.py cplive 版的開機隨身碟! 以下是詳細解說。 [2017/10/22 mbootuz.py 大改寫, mklive 子命令已被 cplive 子命令取代。]

linux 開機必備的幾個重要檔案 這個版本的 live CD 是 用 debian 的 live-boot 套件製作出來的。 裡面包入新版的 mbootuz.py 開機隨身碟製作指令。 現在有一個 cplive 子功能。 這個功能本身並沒有安裝開機管理員, 而是假設使用者已事先用另一個 mkboot 子功能安裝好開機管理員。 cplive 只是把開機三要件: vmlinuz*、 initrd*、 *.squashfs 從光碟上複製到 /dev/sdz 的第一分割的 mblcd/ 目錄底下, 並且在現存的 boot/syslinux/extlinux.conf 最後面多加一個開機選項而已。 它甚至並沒有修改 extlinux.conf 的預設開機選項 -- 你必須自己用 nano 或 geany 或 windows 的記事本去修改, 或是每次開機時都用方向鍵移到新建的選項。

[2020/5/28] 其實最重要的是 mbootuz.py mkboot /dev/sdz 這個指令。 剩下其他的動作其實都只是複製檔案而已, 也都可以在 windows 底下手動完成。 詳見 半自助救命碟 (講師趕時間版)

上述開機三要件是不會變動的檔案; 當命令列上有 -p 選項時, cplive 子功能還會在 mblcd/ 底下建立一個會變動的映像檔, 以上面的例子來說就是 greg.img , 並且在開機選單上新增兩個而非一個選項。 你用隨身碟開機之後所做的所有變動, 都存在這個映像檔裡面。 這個檔案至少要有 300MB (命令列上至少要給 -Z 300M); 不過 2G 是比較合理的空間。 如果後來發覺不夠用, 請照著 這一頁 的 resize2fs 那一段擴增可用空間。

所有檔案都放在 /dev/sdz 的第一分割下。 也就是說, 你的隨身碟上原有的資料不會受到影響! 以我平常上課使用大約 6G 空間的系統來說, 壓縮後剩下不到 2.5G, 加上可變動的 2G 映像檔, 只要你的隨身碟還有 5G 的空間, 就可以安裝。 跟舊版比起來, 完全不需要 mbootuz.py wipe ... 這個可怕的燒毀動作, 更簡單、 更省空間, 而且速度更快很多 -- 因為複製的內容主要是兩個很大的檔案, 而不像舊版需要複製一堆小檔案。

兩個版本的 OS 共用三個唯讀的系統檔 你還可以把 greg.img 複製一份, 命名為 experiment.img , 並且在 boot/syslinux/extlinux.conf 裡面把開機選項也複製一份、 改個 label、 把 persistence-label=greg.img 改成 persistence-label=experiment.img , 這樣你在同一顆救命碟上面就有兩個版本的系統可用! 想要備份工作環境也很簡單 -- 備份 greg.img (跟 extlinux.conf) 就夠了, 因為其他檔案都可以從光碟上救回來, 不需要備份。

如果後來改用隨身碟開機, 還可以直接再把自己複製給別人 (不含可寫入的部分), 再度完勝舊版! [2017/10/22] 更詳細的說明請見 mbootuz 官網中文文件, 很像小格的教學文, 適合從頭閱讀。

補充說明:

  1. 如何設定電腦從隨身碟開機? 請見舊版 「百毒不侵救命碟」 使用入門
  2. 再來要玩什麼? 請見 從零開始的 linux 學習指南

* * * * *

以下是給電腦教室網管老師看的。

這個新版的救命碟, 不僅製作變得很快很簡單, 而且可以 從網路開機。 這意謂著: (1) 你的電腦教室不需要還原卡 (2) 每一部學生機只需要設定網路開機, 其他什麼 OS 都不必安裝。 連硬碟都拔掉也沒關係, 或是可以只把硬碟當成暫存資料空間來用。 (3) 想要讓學生用新版的映像檔, 只需要在伺服器上更新映像檔就好。 甚至可以放好幾個映像檔, 開機時可任選。 有點類似手工打造陽春版 DRBL 的意思。 但只適用於 debian 及衍生系列, 也就是說你必須基於 debian 或 *ubuntu 打造自己的環境。

我只在家裡試過一部 client, 不確定電腦教室很多部一起開時會變多慢。 不過你可以試試看在 /var/lib/tftpboot/pxelinux.cfg/default 複製兩份新的開機選項。 一份命名為 「restore」 好了, 在 append 那句後面加上一小段 todisk=/dev/sda1; 另一份命名為 「boot-local」 好了, 在 append 那句後面加上一小段 live-media=/dev/sda1。 「restore」 選項應該會把 *.squashfs 寫入客戶端 (學生機) 的硬碟, 類似於還原功能; 「boot-local」 選項則會改從客戶端的硬碟載入 *.squashfs, 從此以後開機時就不會佔掉網路頻寬。 詳見 man live-boot。 如果客戶端記憶體夠大 (大於等於 8G), 還可以加上 toram 選項, 執行速度會變飛快。

這樣的環境跟 windows 可以和平共存。 我想要製作一個版本, 只要把其中一部電腦用我的光碟開機、 其他機器設定網路開機, 就能用一張 linux 光碟攻佔一整間 「原先完全是 windows」 的電腦教室 >:-) 可惜沒有電腦教室讓我玩 :-( 如果你們學校在臺中或高雄, 我很樂意找閒暇時間跟你一起實驗。 [2017/10/22: greglab17F 已在我們的電腦教室實現夢想!]

學校圖書館的電腦根本就只需要瀏覽器, 用這種配置超合適, 而且可以讓學生在圖書館的電腦自製開機隨身碟。 圖書館是分享知識的地方; 專屬軟體禁止分享, 完全違背圖書館的精神。 期盼這張 「從網路開機、 可自我複製到隨身碟上的 live-cd」 可以讓學生們在這個 「利益團體主導甚至滲透教育體系」 的年代重新認識圖書館的原始精神跟知識分享的意義!

4 則留言:

  1. gregslab17C.iso 的 initramfs 版本不能從網路開機, 好像跟 https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1636530 有關。

    這兩天已上傳新版 gregslab17D.iso , 可當做網路開機的映像檔, 也可當做 pxe server。 用它開機、 設定好 ip、 啟動 dnsmasq, 就可把自己傳送給 pxe 客戶, 拖一整間電腦教室 (開機超慢)。 每個客戶都可用 mbootuz 把自己複製到隨身碟上。 我要用一支隨身碟征服全世界了, 哇哈哈!! 改天再寫詳細教學文。

    回覆刪除
  2. mbootuz.py 的 mklive 子功能整個重新改寫, 並改名為 cplive, 找開機檔變得靈活很多。 官網中文文件整個重寫, 類似小格教學文, 很適合從頭閱讀。 gregslab17F 光碟上已包入 cplive 的版本 (但並非最新版)。 請按照官網第八節更新程式碼。

    現在的 mbootuz.py 可以拿來把許多 debian 系列的光碟裝到隨身碟上, 並製作 persistence。 測試過的版本包含 grml linux 跟 AVlinux。 測試出其他版本的話, 麻煩留言分享一下囉!

    回覆刪除
  3. 新增 11 分鐘 YouTube 教學影片

    回覆刪除
  4. 原來短命版的生命週期只有9個月 orz~~ lubuntu 17.04 已經過期, lubuntu 18.04 又還沒出來, 只好趕快用 lubuntu 17.10 重做一個映像檔 => 推出 18A 版。 (網址也小改了一下)

    回覆刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。