使用现有的 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,这个特定的模块现在应该默认启用......

相关内容