模組


掛上/卸下模組

在 .../modules/ 子目錄下 (完整的路徑可能是 /mnt/sdx5/slax-6.1.2/slax/modules/ 之類的) 有許多 .lzm 檔。 每一個檔案, 其實是一個 檔案系統 file system 的映象檔 -- 就像是一片光碟的映象檔 xxx.iso 一樣。 詳見 Linux 下的特殊檔案系統。 Slax 開機時, 會自動將這個目錄下的每個 .lzm 檔掛載加入它的 aufs 幻象當中; 每個 .lzm 都會貢獻一些應用軟體或資料給整個 「聯集」。 請在 konsole 下開兩個分頁, 我們將以 gnuplot 為例, 看看如何掛上/卸下模組。 進入 gnuplot 之後, 隨便下一個指令, 例如 splot x*x-y*y 然後隨即按 ctrl-d 離開, 跳回 bash。

A 分頁 B 分頁
cd .../modules/
ls -l gnuplot全名
grep gnuplot /proc/mounts
du /mnt/live/memory/images/gnuplot全名/
gnuplot
ls -l /usr/bin/gnuplot /usr/share/gnuplot/
find /mnt/live/memory/images/gnuplot全名/ -type f | less
su
deactivate gnuplot全名
grep gnuplot /proc/mounts
du /mnt/live/memory/images/gnuplot全名/
gnuplot
ls -l /usr/bin/gnuplot /usr/share/gnuplot/
find /mnt/live/memory/images/gnuplot全名/ -type f | less
activate gnuplot全名
grep gnuplot /proc/mounts
du /mnt/live/memory/images/gnuplot全名/
gnuplot
ls -l /usr/bin/gnuplot /usr/share/gnuplot/

要掛載模組, 用 activate 指令。 掛載之後, 在 /proc/mounts 裡面會出現一列關於這個模組的記錄。 從那裡, 可以查出這個模組解壓縮後的長像 (應該是在 /mnt/live/memory/images/模組全名 底下)。 壓縮檔 .lzm 的大小, 大約只佔壓縮前的 30%-50%。 這就是為什麼 slax 可以用這麼少的資源, 做那麼多事。 這個新增模組所提供的所有檔案 (指令/文件/函式庫/...), 馬上就透過 aufs 反映在系統裡面。 要卸下模組, 用 deactivate 指令。 卸下後, /proc/mounts 裡面的那一列, /mnt/live/memory/images/ 底下關於此模組的子目錄, 還有系統裡面先前它所提供的指令/文件/函式庫/... 就通通一起消失了。

新增模組

Slax 官方網站提供 很多現成的模組 可下載。 例如搜尋 openoffice, 並且選擇 "sort modules by name" 就很容易找到 OpenOffice 3.2.0 (太大, 所以沒收錄到 slax-cyut-100228.iso 裡面)。 高雄 Linux 使用者協會的 Kevin 也 製作了一些模組; 也可下載我所製作的 cyut 版 slax 光碟, 裡面的 modules/ 與 optional/ 子目錄內有一些我從各處搜集或轉檔而來的套件。 不論從何處取得, 只要把模組放到你的隨身碟的 .../modules/ 目錄下, 下次開機時, 就會自動掛載; 或者現在就下 activate 指令, 也可立即掛載。 有些模組有 相依性 dependency -- 必須同時安裝其他模組, 這個模組才能使用。

新增模組之後, 選單裡面可能還是看不見新的套件。 這時可 (用一般使用者的身份) 執行 kbuildsycoca 重建系統選單。 詳見 kbuildsycoca --help。

因為 slax 由 slackware 改裝而來, 從相容性的角度考量, 除了 slax 官網之外, slackware 官網是取得套件的第一優先選擇。 到 slackware 找到對應版本的目錄, 找到 FILELIST.TXT (套件列表) 及 MANIFEST.bz2 (套件內所有檔案列表, 極大), 從裡面找到想要安裝的套件, 例如叫做 xyz.tgz, 然後用 tgz2lzm xyz.tgz xyz.lzm 轉檔, 並將轉出來的 xyz.lzm 放到 slax/modules/ 目錄底下即可。

除了 slackware 官方網站之外, 還有一些支援 slackware 的倉庫有些額外套件可下載: "Alien", "slacky", "tuxfamily"

如果是相依性並不複雜的套件, 還可從其他格式 (.deb 或 .rpm) 的套件轉檔。 例如 deb2lzm xyz.deb 會產生 xyz.lzm 或 rpm2lzm xyz.rpm 會產生 xyz.lzm 。 不知為何, rpm2lzm 並未內建, 上網也找不到。 所以只好先: alien --to-tgz xyz.rpm 產生 xyz.tgz, 再: tgz2lzm xyz.tgz xyz.lzm 產生 xyz.lzm。