這篇文章簡介GNU Guix System是什麼,以及如何安裝GNU Guix在您的電腦上。
使用GNU Guix System理由:
- 全由自由開源的軟體組成,尊重使用者的計算機自由。
- 系統設定、軟體安裝可輕易複現(reproduce),只要透過一個宣告檔就可配置完成。
- 官方有詳細的參考手冊和教學影片。
使用前,你應該考慮:
- 自由軟體代表有很多Wifi網路卡、Nvidia顯示卡會無法運作,除非安裝非官方的軟體庫
- 使用此系統需要對Linux系統的底層運作有一定了解。
- 撰寫宣告檔需要熟悉Scheme (Lisp) 程式語言。
1. GNU Guix System簡介#
GNU Guix啟發自Nix,是一種宣告式(delcartion)安裝、版本管理能力強的Linux套件管理員,且Guix強調官方軟體庫只收錄自由軟體。
官方網站有完整的 參考手冊詳述每個指令的詳細用法,Guix也是自由軟體基金會(Free Software Foundation)的GNU計畫的一部分。
GNU Guix可以安裝在其他Linux發行版上,跟其他套件管理員共存。對Guix來說,這叫做安裝在外部發行版(foreign distro)上。
另一方面,GNU Guix也可以安裝成獨立的系統,即為GNU Guix System (舊稱GNU GuixSD)。Guix為類似滾動更新的發行版,預設內核是無封閉韌體的"Linux-libre",init程式是GNU Shepherd。
GNU Guix System主打從軟體到系統設定,都可寫一個宣告檔進行安裝,並且能隨時回滾(降級)。甚至Guix系統本身也可以視為一個Git儲存庫,每對系統進行變更就會保留舊版設定檔。
2. 安裝GNU Guix System#
到 官網下載ISO,目前版本是1.3.0。
製作開機隨身碟,開機進入系統。會出現Guix的文字介面安裝程式。此畫面無法使用滑鼠,要用鍵盤上下左右+Enter來操作。
選擇語言按下Enter
選擇地區
選擇使用純文字模式繼續安裝
選擇時區
選擇鍵盤布局
給主機取名字
關閉從區域網路下載substitute
設定Root密碼
接著新增一個普通使用者帳戶
接著是桌面環境,推薦GNOME或XFCE。為輕便我選XFCE。
設定開機要啟動的服務
選擇將系統安裝至整個硬碟
確認好之後開始安裝。
之後Guix會自動下載需要的軟體套件。由於目前全球鏡像站點不多,下載速度可能會很慢。
安裝完成後重開機,拔掉隨身碟。開機進入桌面,會顯示GDM。
3. Guix安裝軟體#
GNU Guix System的套件管理員當然就是Guix。
更新系統#
使用以下指令更新最新版系統:
guix pull
此指令等同apt update
& apt upgrade
。每次修改系統前最好先執行一次。
安裝軟體#
Guix安裝軟體的指令是guix install
,會將軟體安裝到目前使用者的家目錄下,所以安裝不需要Root權限。
Guix可以從本機編譯軟體套件,不過guix install
預設會下載"substitute"安裝,也就是軟體庫上預先編譯好的套件。
Guix官方軟體庫只提供自由軟體,儘管如此還是有非官方的 Guix Nonfree軟體庫,裡面才有收錄閉源的Nvidia驅動。
- 首先,安裝GNOME Epiphany瀏覽器 (很不幸的,Firefox不夠自由):
guix install epiphany
- 接著是中文字型,不過這只對目前使用者有效。要將此套件安裝至系統,請參閱下一節的guix system指令用法。
guix install font-google-noto fontconfig
fc-cache -rv
- 再來是輸入法,目前只能用ibus-rime。因為會動到系統檔案,請移動到下一節。
4. Guix修改系統設定#
說明#
GNU Guix System的桌面環境和系統服務的設定跟一般的GNU/Linux不太一樣。如果要修改系統設定,或是安裝全部使用者可用的系統套件,就要使用指令guix system
+ 宣告檔。宣告檔可利用安裝系統後生成的檔案,位於/etc/config.scm
,直接拿這個下去改。
用guix system --reconfigure
修改系統的過程稱為實例化,修改後的系統會成為一個新的版本(generation),並成為開機GRUB選單中的預設選項。相反,使用guix system --rollback
則是讓系統回滾到上一個版本。因此透過guix system
來修改系統設定才能確保系統可滾回舊版本。
未來的Guix會引入guix home
指令,此指令主要是用於修改家目錄下的隱藏設定檔。
修改系統安裝ibus#
- 接續上一節內容,我們要安裝ibus rime輸入法,並將中文字體安裝到系統。因此要修改
/etc/config.scm
,插入以下內容:
(use-moudles (gnu))
(use-modules (gnu packages ibus))
(use-modules (gnu packages language))
(use-modules (gnu packages fonts))
(use-modules (gnu packages gnome))
(use-modules (gnu packages certs))
(use-service-modules desktop networking ssh xorg)
(operating-system
;; ...略...
(packages
(append
(list
nss_certs
ibus
lbus-rime
font-gnu-unifont
dconf)
%base-packages))
;; ...略...
)
- 變更系統,之後會重新下載套件。
guix pull
sudo guix system --reconfigure /etc/config.scm
- 參考
设置输入法 - Guix中文社區,修改家目錄下的
.pam_environment
檔案,填入:
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"
export GUIX_GTK2_IM_MODULE_FILE=/run/current-system/profile/lib/gtk-2.0/2.10.0/immodules-gtk2.cache
export GUIX_GTK3_IM_MODULE_FILE=/run/current-system/profile/lib/gtk-3.0/3.0.0/immodules-gtk3.cache
重新開機,GRUB選單會多出新版本的系統
啟動
ibus-setup
。