2023年12月4日 星期一

antix 23 兩種客製化方式: remaster 跟 snapshot

先前介紹過 antix linux 的 frugal 與 persistence。 今天來介紹客製化的方法: remaster 跟 iso snapshot。 兩種方法的最大好處都是: 可以讓你用很少的硬碟空間, 把調整過的好用環境備份起來。 以下假設你已先採用 frugal 的方式把 antix 安裝在至少 8G 的隨身碟上, 並且設定至少 1G 的 persistence 。 (系統約 2G、 persistence 1G、 swap 1G、 新產生的客製版約 2G、 新的 persistence 1G)

我是採用 virt-manager 啟動隨身碟上的 antix 23 frugal/persistence install。 客製化的過程中, 從 host 用 ssh 登入, 用 apt install 安裝套件, 如果安裝命令列套件, 就沒有問題; 但凡是有安裝到 X window 下的套件, 就會出現 "AttributeError: NoneType object has no attribute lookup_icon" 這樣的錯誤訊息。 這可能是因為每次 apt install 結束後, 系統就會呼叫 desktop-menu 指令, 把這些新的 X window 套件加入桌面選單, 但是因為 ssh 登入時沒有看到 X 的環境, 所以失敗。 這時可以直接從 virt-manager 的虛擬機 X window 環境裡的終端機 (用 root 的身份) 重新下: desktop-menu –write-out-global 完成最後的動作。 如果一開始就從 X window 環境裡下 apt install, 就不會有這個問題。

客製化完成之後, 即可選擇要用 remaster 或是 iso snapshot 的方式保留目前的狀態。 persist-config persist-save

一、 remaster

簡單地說, "remaster" 就是把未壓縮的 (ext4 格式) 上層 persistence 映像檔 "rootfs" 跟已壓縮的 (squashfs 格式) 下層系統映像檔 "linuxfs" 合併成新的 linuxfs.new, 並且在下次開機時, 自動將 linuxfs 改名為 linuxfs.old、 把 linuxfs.new 改名為 linuxfs。 當然, 舊的 rootfs 其實也就不需要了, 所以在 remaster 的最後階段, 我都會選擇重新建立一個空的 rootfs。

要進行 remaster, 可以從主選單叫出 Control Centre、 進入 live 分頁, 即可點選 "Remaster-Customize Live"; 或是直接從命令列下 live-remaster。 製作過程中, remaster-type 我選 personal, 於是 /home/ 底下的個人設定才會一併被儲存。 製作 linuxfs.new 時會用到 mksquashfs 指令, 而它有幾種不同的壓縮選項: gzip 是 mksquashfs 的預設壓縮格式; antix 的文件 (下方連結) 推薦 lz4 格式; xz 壓出來檔案最小, 但壓縮與解壓的速度都最慢。 antiX-FAQ Live Remastering 這篇文章有每個步驟的截圖。

二、 snapshot

如果想要把客製化的版本製作成 iso 檔, 就要採用 snapshot 功能來備份系統。 它一樣也會把上層的 rootfs 跟下層的 linuxfs 合併, 最後再合併開機所需要的 vmlinuz 與 initrd 等等檔案打包在一起, 產生一個 iso 檔。

snapshot 設定頁面之一 要進行 remaster, 可以從主選單叫出 Control Centre、 進入 maintenance 分頁, 即可點選 "ISO Snapshot"; 或是直接從命令列下 iso-snapshot。 首先要指定 iso 檔的存入目錄 (snapshot location)。 Antix 隨身碟開機時存放 linuxfs 跟 rootfs 的那個分割區, 開機後掛載在 /live/dev-boot/ 目錄底下。 這裡才有足夠的空間, 所以我選擇這個目錄。 選完之後, 注意 iso-snapshot 固定會自動幫你加一層 snapshot/ 子目錄。

下方 "Optional Customization" 的諸多欄位裡面, "Live kernel" 欄位的預設值應該是它自動判斷的, 就不要去更改它。 "Boot Options" 欄位的預設值應該也是根據此次開機時的命令列參數自動判斷的; 因為它原先顯示的是 "initrd=/antix23/initrd.gz" 也就是我放在 extlinux.conf 用來啟動 frugal installation 的值。 可是, 對 iso-snapshot 來說, 那只是一個它要如實交給 kernel 的字串而已, 「解讀它」 是 kernel 的任務, 不是 iso-snapshot 的任務, 所以它做出來的 iso 檔並不會認這個設定, 還是會想要從官方 iso 設定的 antiX/ 目錄去找 vmlinuz 跟 initrd.gz。 總之, 這裡應該固定填 "initrd=/antiX/initrd.gz", iso 檔才可以正確開機; 當然也可以再加上其他開機選項。

其他欄位只是文字, 可以照你開心的方式去填。

snapshot 設定頁面之二 下一頁有更多設定。 第一部分是要略過哪些目錄。 (哪些目錄不寫入 iso 檔?) 第二部分是選擇壓縮演算法, 一樣, 應該是指製作 linuxfs 的 mksquashfs 指令要採用哪個演算法; 還有要不要產生檢核碼。 後者就算沒勾, 也可以事後再下 md5sum 或 sha512sum 指令產生。 第三部分則是選擇要不要連同個人設定一起備份。 我在 /home/demo 裡面並沒有放隱私資料, 只有做一些好用的設定, 所以就一起寫入 iso 吧!

我製作的 g23A-antix23-386.iso 已上傳到 這裡。 root 跟 demo 的密碼都是一個空格; vnc 的密碼是六個空格。 這份文字檔 是給我自己看的修改筆記。 後來才發現: 在製作 iso 檔時, 很多東西會被清掉/省略, 例如 /media 底下的目錄, 還有 /var/log/apache2 。 要用的時候還是必須手動重建。

沒有留言:

張貼留言

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