2017年9月5日 星期二

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

請到 這裡 下載最新版的 gregslab*.iso 。 這是我上課用的 live CD。 請把它燒成 DVD、 用它開機之後, 打開一個終端機, 可以這樣自製 「百毒不侵救命碟」:

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

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

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

上述開機三要件是不會變動的檔案; mklive 子功能還會在 mblcd/ 底下建立一個會變動的映像檔, 以上面的例子來說就是 greg.img 。 你用隨身碟開機之後所做的所有變動, 都存在這個映像檔裡面。 這個檔案至少要有 300MB (命令列上至少要給 -P 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) 就夠了, 因為其他檔案都可以從光碟上救回來, 不需要備份。

如果後來改用隨身碟開機, 還可以直接再把自己複製給別人 (不含可寫入的部分), 再度完勝舊版! 不過可能要用 mbootuz.py mklive -i /dev/sdx1 ... 之類的選項, 因為開機三要件不再是來自光碟, 而是來自隨身碟。 請先用 df 查看到底開機裝置叫什麼名字。 注意: 這裡的 /dev/sdx1 必須包含數字; 先前的指令都不包含數字。 其他更多選項請見 mbootuz.py -h。 文件待補。

spl-dkms 錯誤訊息 補充說明:

  1. 如何設定電腦從隨身碟開機? 請見舊版 「百毒不侵救命碟」 使用入門
  2. 再來要玩什麼? 請見 從零開始的 linux 學習指南
  3. cklab17*.iso 這個版本是從 lubuntu 16.04 改來的。 開機時可能會遇到如右圖的錯誤訊息。 (要按下 「回報問題」 並輸入密碼, 才會看到問題類型。) 如果是 spl-dkms 的問題, 那是因為 kernel 版本跟 zfs 不合, 系統一直企圖要編譯 kernel, 但會失敗。 我已把編譯好的 kernel 複製過去, 其實還是可以用 zfs, 所以這個錯誤可忽略。 如果是 docker-ce 的問題... 目前 docker 不能用, 我還在處理當中。

* * * * *

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

這個新版的救命碟, 不僅製作變得很快很簡單, 而且可以 從網路開機。 這意謂著: (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」 的電腦教室 >:-) 可惜沒有電腦教室讓我玩 :-( 如果你們學校在臺中或高雄, 我很樂意找閒暇時間跟你一起實驗。

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

沒有留言:

張貼留言