Я хочу установить Guix System Distribution (или GuixSD, или просто Guix) вместе с некоторыми другими дистрибутивами. Проблема в том, что Guix не распознает драйверы Realtek, которые не являются свободными, поэтому я не могу использовать WiFi. Я могу установить Guix с Ethernet, но он очень нестабилен, поэтому я хочу установить его с моей существующей установкой 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 Установка:
Примечание Мы рекомендуем использовать этоскрипт установщика оболочкидля установки Guix поверх работающей системы GNU/Linux, впоследствии называемойзарубежный дистрибутив. Скрипт автоматизирует загрузку, установку и начальную настройку Guix. Его следует запускать от имени пользователя root.
Вот bash
однострочная команда для установки Guix на Debian Buster:
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 System со стандартным ядром 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-накопителя.
Затем вы можете записать созданный образ диска на 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. Ниже приведен код схемы Guile для включения Nonguix в спецификацию каналов.
(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
этот конкретный модуль теперь должен быть включен по умолчанию...