使用現有的 Linux 系統安裝 GuixSD

使用現有的 Linux 系統安裝 GuixSD

我想與其他一些發行版一起安裝 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,這個特定的模組現在應該預設啟用......

相關內容