Grml 是專門為網管/系統管理員所設計的羽量級 linux, 官網的 small 版只有 350M; 即使是 貴哥實驗室版 (grml64-small-g20?.iso) 也不到500M, 很容易就可以 boot to ram 毫邁帥氣裸奔。 它本身就提供了 grml2usb 指令可以把系統安裝到 usb 上變成可開機隨身碟。 不過我習慣用 extlinux 來處理開機的部分, 因為它的設定比 grub2 簡單很多, 只需要改設定檔、 把檔案放對位置就好。 假設你用 貴哥版的 ulyana 開機、 假設你的隨身碟是 /dev/sdz, 其中第一分割 /dev/sdz1 已經格式化為 fat32。
一、 自製開機隨身碟
- 安裝 MBR 及 extlinux 開機管理員、 設定可開機等等最煩瑣的工作,
用一句話完成:
mbootuz.py mkboot /dev/sdz
其中 /dev/sdz 底下的 /dev/sdz1 (及其他分割區) 有沒有掛載都無所謂, 因為 mbootuz.py 會自動判斷是否要掛載/卸載。 - 假設 /dev/sdz1 掛載在 /media/sdz1。 請把 UEFI 開機檔案 (包含較新的 boot/syslinux/extlinux.conf) 解壓縮到 /media/sdz1 去。 至此, 可以卸載 /dev/sdz1, 並用 kvm 測試一下是否出現開機選單。
- 把 /dev/sdz1 掛載回來。 參考 講師趕時間 這篇, 在 /media/sdz1 底下建立 grml-g20A/ 子目錄。 把 grml linux 2020.06 (我下載的是 grml-small 版) 的 iso 檔裡面的 boot/grml64small/{vmlinuz,initrd.img} 跟 live/grml64-small/grml64-small.squashfs 複製到 grml-g20A/ 底下。 最後修改 extlinux.conf 裡面的 grml 開機選項相關路徑。
- 照著 「講師趕時間」 那篇設定 persistence。
我採用 persistence-2G.img.gz 的版本。
當然, persistence 映像檔的檔名及路徑必須跟 extlinux.conf 的設定一致。
卸載後用 kvm 測試是否可以完整進入 grml linux,
並且應看到類似這樣:
/dev/sda1 12570608 10187016 2383592 82% /run/live/persistence/sda1 /dev/loop0 431360 431360 0 100% /run/live/rootfs/g20A.squashfs tmpfs 1019788 0 1019788 0% /run/live/overlay /dev/loop1 1998672 52904 1824528 3% /run/live/persistence/loop1
其中一定要看到 /run/live/persistence/loop1 那一句才表示 persistence 設定成功。 等一下所有的客製化都會存在這裡。
二、 客製化
用 kvm 開機進入 grml、 apt update
之後,
就可以開始安裝套件。 我安裝了:
adb、
fwknop-client、
gdisk、 iftop、 lynx、 ntfs-3g、 p7zip rar、
udpcast、
w3m-img、 等等套件。 另外, 我的客製光碟當然一定要安裝 mbootuz.py 。
想要安裝 pdmenu 時, 發現 apt 找不到這個套件。 查看一下 /etc/apt/sources.list.d/debian.list 的內容, 得知 Grml 鎖定一個特定時間的版本 (http://snapshot.debian.org/archive/debian/20200624/) 可能是為了避免相依套件錯亂。 只好 手動下載 pdmenu、 用 dpkg -i 安裝。
客製 grml 有一個重點就是要拿它當 pxe server, 用一顆隨身碟征服一整間電腦教室。 等寒假真的在電腦教室實作完再來寫一篇。 Grml 本身就有 grml-terminalserver, 但是它採用 isc-dhcp-server 而 我需要 dnsmasq 才能在已有 dhcp 的環境下以 proxy dhcp 的方式提供 pxe 服務。 所以我又把 dnsmasq 等等 pxe 相關檔案 也都放進去。
為了方便剪貼指令, 中間我曾設定密碼、 啟用 ssh 服務、 從 host ssh 連線。 最後一定要記得編輯 /etc/shadow, 把 root 的密碼欄改回 '*' (禁止登入)。
三、 重新打包 .squashfs 與 .iso
把 *.squashfs 掛載在 /mnt/sq 、
把 persistence image 掛載在 /x/pers 、
mount -t overlay overlay
-o lowerdir=/mnt/sq,upperdir=/x/pers/rw,workdir=/x/pers/work /mnt/merged ;
mksquashfs /mnt/merged /media/sdz1/[grml 目錄]/root.squashfs
詳見 overlayfs 練習。
再把舊的 *.squashfs 改名為 *.sq 之類的 -- 如果只是搬到別的目錄的話,
debian live 還是有可能會被認真不懈的 debian live 找到,
並且把新舊兩個 *.squashfs 都掛載起來。
最後 製作 UEFI 開機光碟 iso 映像檔, 再用 螞蟻搬家法 把 .iso 檔上傳到 伺服器 (grml64-small-g20?.iso), 就大工告成啦!
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。