我想与其他一些发行版一起安装 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
,这个特定的模块现在应该默认启用......