System-Installation

使用現有的 Linux 系統安裝 GuixSD

  • June 9, 2021

我想與其他發行版一起安裝 Guix System Distribution(或 GuixSD,或只是 Guix)。問題是,Guix 無法辨識非免費的 Realtek 驅動程序,所以我無法使用 WiFi。我可以用乙太網安裝 Guix,但它非常不穩定,所以我想用我現有的 Debian (buster) 安裝來安裝它,這樣我就可以添加 Nonguix 頻道並安裝驅動程序。問題是,我真的不知道怎麼做。

我很確定它包括在 Debian 上安裝 Guix,安裝一些軟體包,以及將 GuixSD 綁定到根目錄(至少,這就是 NixOS 的做法,Guix 的靈感來自於此),或者它包括 chrooting 到 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/"

在 Debian 上安裝

來自 GNU Guix 參考手冊,2 安裝

這是bash在 Debian buster 上安裝 Guix 的單行命令:

bash <(wget -qO- https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh)

Nonguix頻道安裝

改編自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-firmwarelinux-firmware包中。但我想我們需要建構RTW88模組。所以我們需要設置CONFIG_RTW88=mupstream guix gnu/packages/aux-files/linux-libre/5.10-x86_64.conf

$$ Since $$ kernel linux-5.11,這個特定的模組現在應該預設啟用…

引用自:https://unix.stackexchange.com/questions/651673