拯救 Slackware 系統大作戰

為什麼會有這篇部落格文章呢?沒錯,又是下錯指令惹的禍。原本想說在 rc.local (Slackware 的自訂啟動指令稿)加入刪除 /tmp 中部分檔案的指令,結果不曉得是指令下錯還是什麼的,開機時顯示「無法刪除 /boot/efi: 存取遭拒」之類的錯誤訊息,馬上發覺大事不妙,只得用力按住關機鍵強制關機。果然再開機時,系統直接顯示找不到開機裝置。

好險因為前陣子需要重新分割磁碟、讓開機分割區大一點,身邊還備著 AntiX 23 的開機隨身碟。用隨身碟開機後,檢查了一下,系統分割區 /dev/sda2 不知道刪到什麼,拒絕裝載;但個人檔案分割區 /dev/sda4 還在,而且逛了一下,似乎沒檔案被刪到。

確定個人檔案都還在之後,就是認命重裝系統的時間啦。

製作安裝分割區

AntiX 隨身碟中預設安裝了 Broadcom 的 Wi-Fi 驅動程式,因此可以輕鬆連上網路、打開 Firefox 下載 Slackware 映像檔。下載完後,先將 /dev/sda5 從 swap 格式化為 ext4(其實這個步驟應該是多餘的,只是做個保險),再將下載好的 Slackware ISO 寫入分割區。但重開機之後一樣找不到開機裝置,我才意識到還有一步沒做:複製 EFI 檔案。

複製 EFI 檔案

一般使用 UEFI 開機的電腦都會在第一個分割區尋找名為 bootx64.efi 的檔案,因此需要將 Slackware ISO 的 EFI 檔案先複製到電腦的 EFI 分割區(/dev/sda1),才能開機。複製完後重開機,果然看到了 Slackware 開機畫面,也成功開進了安裝系統。

重新安裝 Slackware

再來當然是直接執行 setup,但不知道為什麼安裝程式沒辦法成功掛載 Slackware 檔案的所在位置,因此我需要手動下指令

mkdir /source
mount /dev/sda5 /source

來將分割區先行掛載,再進入安裝程式指定從 /source/slackware64 安裝套件。接下來安裝完套件、設定好網路,再按照 Slackware Wiki 的指示 安裝 GRUB,終於能重新開機了。

失去了什麼,留下了什麼

新增使用者 ltlnx、執行 startkwayland 開啟 KDE 圖形介面後,意外地發現整個介面跟重裝之前完全相同。當然,自行安裝的套件全部消失無蹤,但不用重新設定圖形介面還是省下了不少麻煩。偉哉現代 Linux 系統。

問題是現在還沒有工具將失去的套件裝回來,因此要先安裝第三方套件管理程式。

安裝第三方套件(SlackBuild)管理程式

我慣用的 SlackBuild 管理程式是 sboui,一個擁有終端機圖形介面(TUI)的第三方套件管理程式。在前往 slackbuilds.org 下載 sboui 時,發現自己已經下載過 sboui 與其依賴套件 libconfig 的 SlackBuild 壓縮檔,只要解壓縮再跑一遍 SlackBuild、安裝編譯完的套件即可。因此快速地安裝並設定完了 sboui,準備往下個步驟前進。

安裝輸入法

Slackware 預設安裝了 ibus 與 fcitx5 任君挑選,而感覺在 KDE 下運作得比較順暢的是 fcitx5。因此接下來進入 sboui 安裝適用於 fcitx5 的注音輸入法,fcitx5-mcbopomofo 與 fcitx5-chewing。(兩個套件都是我個人維護的,因此對於安裝方式還算熟悉。)在 Wayland 下可以直接從 KDE 設定中選取輸入法,在啟動圖形介面時會自動啟用 fcitx5,因此不需要特別設定環境變數。但為了保險(還有偶爾需要開進 XFCE 的需求),還是得設定一下環境變數。

環境變數

除了前述的輸入法設定之外,還需要指定讓程式預設使用 Wayland 的變數。因此需要在 /etc/environment 中新增:

# set Wayland as default
GDK_BACKEND=wayland
QT_QPA_PLATFORM=wayland
XDG_SESSION_TYPE=wayland

# set fcitx5 as default
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

新增完之後重開機,Wayland 應用程式顯示正常,輸入法也能用了。最後就剩下第三方軟體還沒處理。

重新安裝常用軟體

這個就比較棘手一點:因為我不可能記得之前安裝的所有第三方軟體,只能憑記憶推敲。平常常用的程式像 LibreOffice、Inkscape、Pandoc、scrcpy、mpv 等隨即浮現在腦海中,缺少的字體如 unifont 也能馬上發覺。剩下想不起來的套件,也只能等到要用的時候再行安裝。

Bonus:設定 Fontconfig

因為預設 Slackware 的 Fontconfig 會先回退到醜醜的文泉驛正黑,需要多寫 fontconfig 設定才能回退到思源黑體。我在網路上找到了這個還不錯的 CJK Fontconfig 設定檔,省得我自己打一個。在將 53-cjk.conf 檔案複製到 ~/.config/fontconfig/conf.d/ 之後重開機,字型回退就正常多了。

最後一步

上面這樣算是全部設定完了,最後一步就是把暫時用來放安裝檔的分割區重新格式化成 swap 格式,再編輯 /etc/fstab 讓 swap 在開機時能自動啟用。格式化完之後,拯救系統大作戰終於圓滿落幕。

總檢討

折騰了大概兩個小時,終於把能用的系統裝回來了。就算使用 Linux 好幾年,偶爾還是會難逃一劫,平常就要確保:

就這樣。好險有救回來。

– ltlnx 2024-04-22

標籤:slackware

如果想讓我知道您看過這個頁面,請點擊這個連結運作原理