2019年1月22日 星期二

slax: 330MB 的圖形桌面

中文勉強可用版 slax 9.6.6 桌面 Tomas Matejicek 推出 (羽量級 linux) slax 9.6.6 。 現在改採 debian 作為基底, 採用 fluxbox 作為視窗介面, 但一樣只佔不到 280MB 的空間 (僅能使用英文)。 客製化的過程變得更簡單 -- 我做了一個 50MB 的正體中文勉強可用外掛模組, 只有 sakura 終端機可以輸入中文; 瀏覽器只能讀中文不能直接輸入 (可以剪貼), 卡關太久, 沒有進展, 乾脆直接把這個半成品放出來請大家幫忙解決問題。

一、 安裝到隨身碟上

請到 朝陽科大 下載 32bit 的 iso 檔跟我所製作的 zh_TW-32bit-9.6.6.sb 中文模組。 (或者 iso 檔當然也可以從官網下載) 下載回來的 iso 直接就可以拿來燒成光碟開機了。 不過放到隨身碟上會比較好用。 以下步驟在平常我的工作系統 lubuntu 18.04 上面 (不是從 live cd 上面) 操作。

  1. 假設你已把 iso 檔掛載到 /mnt/src、 把隨身碟的第一分割掛載到 /media/sdz1。
  2. 複製: cp -a /mnt/src/slax /media/sdz1
  3. 安裝 extlinux 套件。
  4. 安裝開機選單, 方法一: 玩具烏托邦的讀者們系統裡已安裝 mbootuz, 所以只要下 sudo mbootuz.py mkboot /dev/sdz (注意: 不是 sdz1 ; 不要有數字), 然後再下 extlinux -i /media/sdz1/slax/boot 把 extlinux 重新安裝到正確的位置即可。
  5. 安裝開機選單, 方法二:
    1. dd < /usr/lib/syslinux/mbr/mbr.bin > /dev/sdz
    2. 用 fdisk 把 /dev/sdz1 設成 active
    3. extlinux -i /media/sdz1/slax/boot
    詳見 extlinux 多重開機分解動作教學
  6. 安裝開機選單, 方法三: 根據光碟根目錄下的 readme.txt , 可以從 windows 底下執行 (已拷貝到隨身碟上的那個) slax/boot/bootinst.bat。
  7. 把 isolinux 的設定檔直接拷貝過來當作 extlinux 的設定檔: cd /media/sdz1/slax/boot ; cp syslinux.cfg extlinux.cfg

然後隨身碟就可以開機囉!

補充說明:

  1. 如果你的工作系統的 linux 版本較舊, 它的 extlinux 跟 slax 的版本有可能不相容。 此時方法一跟方法二有可能會失敗。 必須將所有相關檔案都改成來自同一版本才可以。 詳見 「extlinux 多重開機分解動作教學」。
  2. 其實我不是在隨身碟上測試, 而是開一個 lvm 邏輯分割區, 用 kvm 虛擬機測試。 這時採用方法二變得超級簡單, 只需要 extlinux 那一個指令即可。
  3. 在隨身碟上工作時, 所有的變動 (例如新增套件、 編輯設定檔、 ...) 都存在 slax/changes/ 底下。

二、 GUI 基本操作

在桌面上按滑鼠右鍵, 會叫出 fluxbox 的選單, 它的設定檔在 ~/.fluxbox/menu 。

左下角的按鈕是 xlunch, 又是 Tomas 大大的作品。 它的設定檔在 /usr/share/applications/ 底下, 通常是在安裝套件時, 伴隨著應用軟體一起自動裝進去的, 但要手動加入也可以。 注意: icon 圖檔必須放在 /usr/share/icons/hicolor/64x64/apps 目錄底下, 否則 xlunch 看不見, 會忽略那個 app 的設定檔。。

以上兩者的設定檔都是馬上改馬上生效, 不需要登入再登入。

開機關的機選單在右下角。 如果選擇 「logout」, 可能會跳到文字模式下。 這時要以 root 帳號登入, 密碼是 toor。 從文字模式下, 用 startx 再回到圖形介面。

三、 新增貴哥版中文模組

如果有現成的模組, 想要納入你的系統超簡單的。 例如剛才從朝陽下載的中文模組, 只要把它放到隨身碟的 slax/modules/ 底下, 並且 rm -rf slax/change/* slax/changes/.[a-z]* 刪掉隨身碟上先前所有的記憶, 下次開機時系統裡就會出現我所安裝的套件及中文設定。

開機完成後, 命令列控貴哥會自動幫你打開三個分頁的 sakura 終端機。 在這裡可以用 w3m https://www.cyut.edu.tw/~ckhung/ (或 lynx 也一樣) 測試中文顯示, 也可以輸入中文。 因為我只會注音 (詞音) 及嘸蝦米, 所以 ctrl-shift 循環清單當中只有這兩個輸入法。 可以叫出 gcin-tools 把你常用的輸入法加回去。

但是我的中文化沒有做好, 只有在 sakura 終端機底下可以正常顯示及輸入中文。 在 chrome 瀏覽器裡, 詞音輸入法可以用; 其他像是 dillo 瀏覽器跟 geany 文字編輯器, 顯示中文沒問題, 但 ctrl-space 切換中文都無效, 只能用剪貼的。

/usr/share/applications/ 底下, 有一些檔案每次重開機會自動產生, 導致我更改檔名順序失效, 像是 leafpad 跟 chromium 都重複出現... 算了, 以後有機會再更正。

拜求中文輸入法高手指點中文輸入問題: 為什麼 sakura 完全正常; 其他多數 apps 卻無法輸入中文? 最奇怪的是 chrome 可以用詞音; 但切成嘸蝦米時卻無法成字? 如果可以解決這個問題的話, 我就要把 2019 年最佳羽量級 linux 獎頒給 slax 了!

附錄、 中文模組製作步驟

假設有一個容量至少 2G 的已格式化空白邏輯捲軸 (logical volume) /dev/mapper/lvpool-slax 可用。 用 iso 檔啟動虛擬機, 把這個空白邏輯捲軸也配給它用: kvm -monitor stdio -vga std -m 2048 -boot order=dc -cdrom .../slax-32bit-9.6.6.iso -hda /dev/mapper/lvpool-slax 以下標示 [H] 的, 表示在 host (我用的是 lubuntu 18.04) 裡面做。 其他未標示的, 都是在 guest (slax 9.6.6) 裡面做。

  1. systemctl start ssh
  2. [H] ssh root@... 密碼 toor。 這樣方便剪貼指令。
  3. 安裝重要套件:
    apt update
    apt install sakura vim-tiny lynx w3m-img
    apt install fonts-arphic-ukai gcin gcin-gtk3-immodule dbus-x11 libappindicator3-1
    apt install dillo geany # 測試中文用; 亦可省略
    
  4. slax 為求精簡, 把 locales 都刪掉了。 必須用 apt install --reinstall locales 重裝一次、 編輯 /etc/locale.gen 把 zh_TW.UTF-8 UTF-8 那一句打開 (刪掉 #)、 用 /usr/sbin/locale-gen 重新產生正體中文 locale。
  5. 根據 fluxbox 的 wiki archlinux 的文件, 找到 /usr/share/fluxbox/styles/Slax/theme.cfg 修改這一句 *font: Bitstream Vera Sans-9 改採中文字型: *font: AR PL UKai-10
  6. 抓回並解壓縮 http://wp.rdandy.com/wp-content/uploads/2010/03/noseeing-12.tar.gz 、 把 noseeing.gtab 放到 /usr/share/gcin/table/ 底下。
  7. 編輯 ~/.fluxbox/startup 在 exec fluxbox 之前加入以下:
    export LANG="zh_TW.UTF-8"
    export LC_CTYPE="zh_TW.UTF-8"
    export XMODIFIERS=@im=gcin
    export GTK_IM_MODULE="gcin"
    export QT_IM_MODULE="gcin"
    gcin &
    
    sakura -r 25 -c 72 -n 3 --colorset 1 &
    
  8. 設定 sakuradillogeany (可以直接把貴哥版中文模組裡的設定檔拷貝過去比較快)
  9. 設定 ~/.fluxbox/menu 跟 /usr/share/applications/ 。
  10. 登出, 會跳到文字模式。 用 root 登入, 密碼 toor, 再 startx 重回圖形介面。
  11. 刪除 /etc/ssh/ssh_host*key*
  12. 花一兩分鐘把以上所有的修改存成一個 .sb 模組檔: time savechanges /media/sda/zh_TW.sb 因為我用 lvm 的一個邏輯捲軸去啟動 kvm 虛擬機, 所以在虛擬機裡 /media/sda 就是可寫入的那個邏輯捲軸。 你的可寫分割區路徑可能跟我的不一樣。 虛擬機關機之後就可以去收割那個 .sb 模組檔了。

1 則留言: