快轉到主要內容

如何安裝Slackware 15 + KDE桌面 + 中文輸入法設定

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Linux系統安裝教學
標籤 Slackware
目錄

想要回到Linux最初的起點,選Slackware。

終於找到了一個比Arch Linux和Gentoo還難用的系統了:Slackware!歡迎來挑戰。沒有Systemd也沒有OpenRC,所有系統服務全部用script啟動,原汁原味的Unix哲學(煙)。

Slackware的吉祥物是一隻叼著煙斗的Tux。所以找了虹夏來抽根煙

1. Slackware簡介
#

Slackware並非適合新手使用的Linux發行版,幾乎所有東西都要手動設定,要頻繁看文件,而且文件非常難讀。

Slackware是一款堅持「Unix哲學」的Linux發行版,意圖讓系統是精簡,好理解的,並且對採用新技術比較保守。不過好不好維護那又是另外一回事了(煙)。它期望使用者手動摸索,了解Linux系統的底層運作原理。

slackware.webp

Slackware是目前還有在維護的最古老Linux發行版之一,於1993年發布,也就是Linus Torvalds推出Linux Kernel的兩年之後。Slackware比Debian早幾個月誕生。在當時可以說是創舉,因為Linux只是一個核心,不能直接使用。Slackware是早期幾個將GNU軟體與Linux核心打包起來,成為完整作業系統的典範。

長期以來幾乎只由Patrick Volkerding一人主導開發,並開放社群貢獻套件。Slackware幾乎可以視為Patrick Volkerding一個人的作品,他自己一人維護了1000多個套件組成Slackware Linux的基本系統,包括KDE Plasma與XFCE桌面。想要其他套件的就得裝社群提供的第三方套件。這跟其他Linux發行版由社群共同開發的模式非常不一樣,Slackware是作者定時放出一個他打包好的「完整」Linux系統給人家使用,然後人們再針對這個系統開發軟體。

Slackware有官方Wiki頁面,還有LinuxQuestions.org這個網站當作討論論壇。Patrick Volkerding是Slackware的終身仁慈獨裁者(BDFL),一家子收入幾乎全靠社群捐贈。

講個八卦,openSUSE最早就是基於Slackware開發的,不過現在兩者的系統結構已經大相逕庭,很難視為同一個系統了。另外,1995年杜奕瑾在台灣大學初次架設起PTT BBS的時候,就是跑在Slackware上面的。


Slackware更新頻道分為Current與Stable。Current是滾動更新,軟體版本會一直變動。Stable為經過測試的穩定版本,在維護週期內軟體版本不太會升級,只會有安全性更新。

目前最新版本是2022年發表的Slackware 15,Linux核心版本5.15。

大版本之間發表時間不固定,例如Slackware 11到12中間差了1年,但是從Slackware 14到Slackware 15中間就隔了8年時間。這個開發進度比Debian Stable還慢!其實會隔這麼久是因為Slackware官網商店的負責人捲款潛逃導致作者生計一度陷入困頓,依靠社群捐款接濟才撐得下去。這反應了Slackware開發問題:太依賴一個人決策了。

Slackware開發時間很長,而且由作者一人維護,是可以保證基本系統的穩定啦,但就是套件太舊了…Linux應該是需要頻繁更新的系統才對。考慮到Slackware 15已經是4年前發表的版本了,套件非常舊。如果你想要使用最新版軟體的話,最好使用Slackware Current。例如,Slackware 15還在用KDE Plasma 5.23,想要新版一點的KDE Plasma的話就得使用Slackware Current了。不過2026年的Slackware Current也不過收錄到KDE Plasma 5.27而已。想要更新的KDE Plasma 6就得用第三方套件庫了。

Slackware特別之處在於幾乎沒有套件管理。雖有套件管理器slackpkg,但是它完全不會有依賴關係解析,就是解壓縮軟體放到指定位置,沒了,不會檢查依賴是否衝突。這工具的用途就純粹從Slackware作者發布的套件庫下載最新版軟體罷了。感覺瞬間回到1990年代,透過FTP下載軟體壓縮檔,自己編譯的時代。

這樣做的好處是,使用者被迫要自己去了解系統安裝發生了什麼事,而非被軟體輸出的結果所遮掩。slackpkg不像apt或dnf,每個套件都含有Metadata,可以讓程式列出套件依賴關係,並提示使用者哪些套件該裝或者衝突。早些年代,apt的前身dpkg依賴關係的管理也很弱,但起碼經過多年開發已經有成熟的解決方案了,Slackware的套件管理卻是維持跟30年前差不多的樣子。

在極端情況下,你需要自行摸索Slackware軟體的依賴關係,一個一個手動裝。日後更新Slackware軟體的時候,也要自行注意軟體依賴的套件是否更新完整。

Slackware使用原始的init系統,系統服務沒有專用的init管理程式,不使用Systemd,沒有OpenRC也沒有runit什麼的,全部用System V風格的init script管理。這種機制相較於現在主流的Systemd管理方式來說十分古老。這樣的好處大概就開機很快吧,10秒內就能進入KDE Plasma X11桌面,且開機後RAM的佔用率不到1GB!

Slackware跟主流Linux發行版不一樣,Slackware作者幾乎沒有製作什麼系統管理工具或便捷的指令稿(例如Debian有一鍵更新GRUB的script),全部都要使用者自己調整,或者依賴第三方方案。雖然Slackware系統安裝程式會幫你部署好一個可以立即用的Slackware環境,但剩下的就要靠你自己了。


我有種感覺,Slackware可以說是最接近Linux From Scratch狀態的Linux發行版了。它就像是單純把Linux核心和一組軟體打包給你使用的樣子。Gentoo和Arch Linux雖然難裝,好歹還有完整說明文件和Wiki,更新很活躍。Slackware則是很雜亂,需要依賴使用者自己摸索。

如果你真的喜歡Unix哲學,那你真的是要很死忠的才會用的下去Slackware,因為系統設計實在太古老了。目前仍有其他追尋Unix哲學而且現代化的Linux發行版,例如NetBSD開發者建立的Void Linux,以及Artix Linux、Devuan等等。Slackware在這方面沒有Void Linux那麼好用,尤其是預設的套件管理器方面Slackware真的是完全跟不上時代了。需要依靠社群製作的第三方軟體補強。

2. 測試環境
#

  • 主機板:ASUS K31CD-K
  • CPU:Intel i5-7400
  • GPU:Intel UHD 630
  • GPU:Nvidia GTX1050Ti
  • RAM:16GB

3. 製作Slackware開機隨身碟
#

  1. Slackware預設ISO裡面的安裝程式沒有GUI,是ncurses寫的純文字界面。如果想要LiveUSB,請下載「LiveSlak」。

  2. Slackware官網很樸素,下載點不太好找。你應該要到Slackware Mirrors下載Slackware ISO Images。

  3. 選取slackware64-15.0-install-dvd.iso,適用x86_64架構。

  4. 建議驗證檔案完整性

  5. 使用Ventoy製作開機碟

  6. 關閉Secure Boot

  7. 在電腦使用UEFI開機

4. 安裝Slackware系統
#

  1. 建議連上有線網路安裝。

  2. 開機輸入root登入帳號

  3. Slackware的安裝器不會幫你分區,所以你要手動分區

  4. 列出可用磁碟列表,例如SSD會顯示/dev/sda

fdisk -l
  1. 用fdisk選取要安裝的硬碟,建立三個分區。
fdisk /dev/sda
  1. 建立GPT分割表。第一個是UEFI分區(至少512MB),然後SWAP分區(實體RAM兩倍大小),最後是Linux根目錄分區。並寫入變更。
g

n
1
First Sector: (Enter)
Last Sector: +512M
t
uefi

n
2
First Sector: (Enter)
Last Sector: +4096M

n
3
First Sector: (Enter)
Last Sector: (Enter)

w
  1. 啟動Slackware安裝程式
setup
  1. SWAP選取剛剛分割的第二個分區,作為SWAP分區

  2. TARGET,選取要安裝系統的硬碟

  3. 格式化為EXT4

  4. 新增EFI分區

  5. SOURCE選取要從哪裡安裝軟體

  6. 選取USB,從隨身碟載入離線安裝套件

  7. 或是HTTP,從線上套件庫下載Slackware套件

  8. 若使用HTTP,這裡的套件庫網址你要自己填,參照:https://mirrors.slackware.com。台灣的鏡像站有國網中心的http://ftp.twaren.net/Linux/Slackware/

  9. 用空白鍵選取要安裝的軟體,不知道為什麼它會同時勾選XFCE和KDE Plasma,就維持一個桌面就好

  10. 勾選在安裝的時候顯示所有訊息

  11. 等待套件解壓縮完成安裝

  12. 跳過製作開機碟

  13. 安裝適用UEFI系統的ELILO開機引導程式

  14. 設定主機名稱

  15. 讓系統開機透過NetworkManager服務自動連上網路

  16. 設定開機要啟動的服務,建議勾選NTPD自動校時

  17. 時區選台灣台北

  18. 預設文字編輯器選Vim

  19. 設定開機啟動的X11桌面,這裡選KDE Plasma,它會自動新增~/.xinitrc

  20. 設定root密碼

  21. 一切就緒後,選取EXIT退出安裝程式。拔掉隨身碟重開機。

5. 新增一般使用者與啟動圖形環境
#

  1. 初次開機輸入root登入帳號。預設的執行層級(Runlevel)不會自動啟動圖形環境。

  2. 建議先新增一個一般使用者叫做user

useradd -m -g users -G wheel,audio,video -s /bin/bash user

passwd user
  1. 編輯/etc/sudoers
sudo vim /etc/sudoers
  1. 在root下面,將使用者加入到sudoers
user ALL=(ALL:ALL) ALL
  1. Slackware的執行檔環境變數可以用echo $PATH查看,位於/sbin目錄下的指令是只有Root可以使用的。若要讓一般使用者可以透過sudo執行,將/etc/sudoers以下段落取消註解
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/Slackpkg+usr/bin:/sbin:/bin"
  1. 將啟動KDE Plasma桌面的.xinitrc範本複製到一般使用者家目錄
cp /etc/X11/xinit/xinitrc.kde /home/user/.xinitrc
  1. 切換到一般使用者
su user

cd ~
  1. 然後再啟動嘗試啟動KDE Plasma X11桌面
startx
  1. 編輯/etc/inittab
sudo vim /etc/inittab
  1. 修改預設執行層級(initdefault)為4,代表開機之後應Slackware該要啟動圖形介面。這樣之後開機就會自動啟動SDDM顯示管理器的登入界面。
id:4:initdefault:
  1. 也可以直接用init指令切換目前的Runlevel:
sudo init 4

6. 設定slackpkg套件管理器
#

  1. Slackware官方套件庫的軟體基本上只由Patrick Volkerding一人維護。官方套件管理器是slackpkg,功能非常簡陋,安裝軟體的時候不會檢查依賴項目,就只是單純下載軟體然後將檔案解壓縮,執行裡面的指令碼放到指定路徑。

  2. 如果在安裝Slackware系統的時候選擇離線安裝,則你就得手動填寫套件庫網址。編輯/etc/slackpkg/mirrors

sudo vim /etc/slackpkg/mirrors
  1. 將裡面要使用的伺服器鏡像站取消註解,台灣的鏡像站有國網中心的http://ftp.twaren.net/Linux/Slackware/。注意一次只能使用一個伺服器!以Slackware 15來說伺服器網址應該含有/slackware64-15.0/

  2. 然後更新套件庫資料庫

sudo slackpkg update gpg

sudo slackpkg update
  1. 更新並升級目前系統所有的套件。可能要手動回答是否覆蓋舊版軟體設定檔。
sudo slackpkg install-new

sudo slackpkg upgrade-all
  1. 移除不屬於Slackware的套件,確保系統正常(註:這會移除Slackbuilds的套件)
sudo slackpkg clean-system
  1. 如果更新的時候有升級Linux核心,需要手動覆蓋掉舊版的vmlinuz與initrd.gz檔案,這樣ELILO才會在下次開機的時候載入新版Linux核心:
# 選項一:通常只要執行這個指令就會自動更新核心
sudo eliloconfig

# 選項二:手動更新
# 重新生成initrd
sudo /usr/share/mkinitrd/mkinitrd_command_generator.sh
# 依照上述指令稿的內容執行sudo mkinitrd開頭的指令
# 複製新版核心
sudo cp /boot/vmlinuz /boot/efi/EFI/Slackware/vmlinuz
# 複製initrd
sudo cp /boot/initrd.gz /boot/efi/EFI/Slackware/initrd.gz
  1. 重開機。
sudo reboot
  1. 搜尋並安裝套件
sudo slackpkg search vim

sudo slackpkg install vim

7. 新增SlackBuilds第三方套件庫
#

  1. 這是選擇性項目,建議啟用,不然Slackware作者自己維護的軟體太少了,連瀏覽器都沒有幾個。Slackware有非官方的套件庫,例如SlackBuilds收錄了很多社群貢獻的套件。SlackBuilds類似Arch Linux的AUR,提供自動編譯並安裝套件的機制。SlackBuilds的套件有的需要編譯,有的則是二進位檔。

  2. 可以用sbopkgsbotoolssboui的Helper協助安裝SlackBuilds的軟體。這裡推薦使用sbotools,它會自動檢查依賴並安裝SlackBuilds的軟體。

  3. 參照官網指示安裝sbotools。只要複製二進位壓縮檔網址,下載然後安裝就可以了:

wget "https://pink-mist.github.io/sbotools/downloads/sbotools-2.7-noarch-1_SBo.tgz"

sudo installpkg ./sbotools-*-noarch-1_SBo.tgz
  1. 然後就可以用sbotools的工具搜尋SlackBuilds的套件。例如安裝Librewolf瀏覽器:
sudo sbofind librewolf

sudo sboinstall librewolf
  1. 如果真的有軟體找不到,就使用Flatpak吧。

8. 系統管理指令
#

  1. Slackware使用原始的Sysvinit,透過/sbin/init程式來控制系統狀態與啟動服務,連service指令都沒有。

  2. 所有系統服務都放在/etc/rc.d/。電腦開機後第一個啟動的行程是/sbin/init,它會讀取/etc/inittab,判斷應該啟動的Runlevel,接著執行/etc/rc.d/下的指令稿來啟動服務。例如啟動sshd,就是看/etc/rc.d/rc.sshd這個指令稿裡面定義的函數來啟動:

sudo /etc/rc.d/rc.sshd start
  1. 各種Runlevel的定義參照/etc/inittab,裡面有各種Runlevel對應不同的路徑。例如跟隨X11啟動的程式應該是Runlevel 4,因此要在/etc/rc.d/rc.4這個檔案裡面,指定開機要啟動的顯示管理器。嘗試檢視該檔案內容,Slackware應該已經幫你寫好判斷邏輯了,它會嘗試依序搜尋系統有哪些顯示管理器的執行檔然後啟動。
cat /etc/rc.d/rc.4
  1. 若要將系統服務加入到開機自動啟動,賦予執行權限。例如設定開機自動啟動sshd:
chmod +x /etc/rc.d/rc.sshd
  1. 取消自動啟動,撤銷執行權限:
chmod -x /etc/rc.d/rc.sshd
  1. 也可以在/etc/rc.d/rc.local自定義開機要啟動的指令稿。

9. 安裝Nvidia顯卡驅動
#

Intel和AMD的顯卡驅動含在Linux核心裡面,開機後udevd會自動載入DRM核心模組,通常不用裝。但是Nvidia顯卡需要安裝閉源驅動才能發揮最大效能。

目前沒有人給Slackware打包Nvidia閉源驅動,所以最好的方式是到Nvidia官網下載.run檔案,以DKMS方式編譯安裝。你可能需要手動補齊GCC依賴。

參見:Linux使用.run file安裝Nvidia閉源驅動與CUDA Toolkit

10. 中文化與輸入法
#

  1. Slackware 15應該已經預先安裝noto-cjk-fonts-*字型,所以可以顯示漢字。

  2. 編輯/etc/locale.conf,設定語言為正體中文

echo "LANG=zh_TW.UTF-8 UTF-8" | sudo tee -a /etc/locale.conf
  1. 編輯/etc/environment,加入以下環境變數
LANG=zh_TW.UTF-8
LC_CTYPE=zh_TW.UTF-8
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_COLLATE=zh_TW.UTF-8
LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
LC_PAPER=zh_TW.UTF-8
LC_NAME=zh_TW.UTF-8
LC_ADDRESS=zh_TW.UTF-8
LC_TELEPHONE=zh_TW.UTF-8
LC_MEASUREMENT=zh_TW.UTF-8
LC_IDENTIFICATION=zh_TW.UTF-8
LC_ALL=
  1. KDE Plasma桌面可能要到Plasma Settings → Languages,手動選取語言為正體中文才會切換界面語言。

  2. Slackware 15應該內建Fcitx5框架,但是是很久以前的版本,還叫做Fcitx。可能要手動把它的Desktop Entry加入到開機自動啟動:

mkdir -p ~/.config/autostart

cp /usr/share/applications/fcitx.desktop ~/.config/autostart/
  1. 然後編輯/etc/environment,設定使用Fcitx5框架的環境變數:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=fcitx
  1. 重開機,按CTRL+空白鍵應該就能喚醒輸入法了。

  2. Slackware官方套件庫只有提供拼音(pinyin)、舊型的注音(libbopomofo)、依賴表格檔的輸入法,而且太舊了,不太好用。可以透過Slackbuilds安裝比較現代的新酷音(fcitx5-chewing)或者小麥注音(fcitx5-mcbopomofo)。若是編譯失敗,考慮直接用Flatpak版本的Fcitx5

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。