我想與其他一些發行版一起安裝 Guix System Distribution(或 GuixSD,或只是 Guix)。問題是,Guix 無法識別 Realtek 驅動程序,該驅動程式不是免費的,因此我無法使用 WiFi。我可以透過乙太網路安裝 Guix,但它非常不穩定,所以我想將其與現有的 Debian (buster) 安裝一起安裝,這樣我就可以添加 Nonguix 通道並安裝驅動程式。問題是,我真的不知道該怎麼做。
我很確定它包括將Guix 安裝到Debian 上,安裝一些軟體包,並將GuixSD 綁定到根目錄上(至少,NixOS 就是這樣做的,Guix 的靈感就來自於此),或者包括chroot 到ISO 中。
我將不勝感激任何可能的幫助。
系統資訊
# neofetch # some info was filtered
root@deblugo
---------------
OS: Debian GNU/Linux 10 (buster) x86_64
Host: HP Notebook
Kernel: 4.19.0-16-amd64
Packages: 1624 (dpkg)
Shell: bash 5.0.3
CPU: Intel Celeron N3060 (2) @ 2.480GHz
GPU: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx
Memory: 1931MiB / 3803MiB
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
# uname -a
Linux deblugo 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
答案1
在 Debian 上安裝
來自 GNU Guix 參考手冊,2 安裝:
筆記 我們推薦使用這個shell 安裝程式腳本在正在運行的 GNU/Linux 系統上安裝 Guix,此後稱為國外發行版。該腳本自動下載、安裝和初始配置 Guix。它應該以 root 使用者身分運行。
以下是bash
在 Debian buster 上安裝 Guix 的一行指令:
bash <(wget -qO- https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh)
非guix通道安裝
改編自的指令Nonguix 專案頁面:
Nonguix 可以安裝為Guix頻道。為此,請將其添加到~/.config/guix/channels.scm
:
(cons* (channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
;; Enable signature verification:
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
%default-channels)
然後跑guix pull
。
使用非自由韌體和驅動程式
若要將 Guix 系統與標準 Linux 核心和非自由韌體一起使用,請編輯作業系統定義的核心和韌體欄位config.scm
:
;; Import nonfree linux module.
(use-modules (nongnu packages linux)
(nongnu system linux-initrd))
(operating-system
(kernel linux)
(initrd microcode-initrd)
(firmware (list linux-firmware))
...
)
如果您只需要 Realtek 網路裝置的韌體,則可以使用較小的韌體套件來節省磁碟空間:
(firmware (cons* iwlwifi-firmware
%base-firmware))
當然,然後運行sudo guix system reconfigure /etc/config.scm
以應用您的配置。
安裝圖
正如您所說,官方的 Guix 安裝映像不適用於您的硬件,因此您可以使用以下命令生成運行非自由 Linux 核心和非自由韌體的安裝映像:
guix system image --image-size=7.2GiB /path/to/this/channel/nongnu/system/install.scm
如下所示,您需要執行guix pull
來下載 Nonguix 軟體包描述。您的 USB 隨身碟上需要有一些可用空間才能成功執行此操作。上述--image-size
選項可讓您指定影像的大小,並為其指派可用空間。給定的值純粹是指示性的 - 它顯然取決於您的拇指驅動器容量。
然後,您可以使用以下命令將產生的磁碟映像寫入 USB 隨身碟:
筆記 |
---|
此範例假設您的拇指驅動器被 Linux 識別為/dev/sdb . |
dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync
透過上述方法產生的安裝媒體不會自動配置您的通道規格。您需要「手動」新增 Nonguix /etc/guix/channels.scm
,然後運行guix pull
以使 Guix 能夠識別 Nonguix 方案庫。以下是將 Nonguix 包含在通道規範中的 Guile 方案代碼。
(use-modules (ice-9 pretty-print))
(with-output-to-file "/etc/guix/channels.scm"
(lambda _
(pretty-print
'(cons*
(channel (name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix"))
%default-channels))))
如中所提到的第82期,Realtek 網路設備的模組已包含在內kernel-linux-5.11
:
韌體檔案應該在
realtek-firmware
包中linux-firmware
。但我想我們需要建立該RTW88
模組。所以我們需要設定CONFIG_RTW88=m
進去upstream guix gnu/packages/aux-files/linux-libre/5.10-x86_64.conf
。 [因為]kernel linux-5.11
,這個特定的模組現在應該預設啟用......