既存のLinuxシステムを使用してGuixSDをインストールする

既存のLinuxシステムを使用してGuixSDをインストールする

Guix System Distribution (または GuixSD、あるいは単に Guix) を他のディストリビューションと一緒にインストールしたいのですが、問題は Guix が Realtek ドライバーを認識しないことです。これは非フリーなので、WiFi を使用できません。Guix を Ethernet でインストールすることはできますが、非常に不安定なので、既存の Debian (buster) インストールと一緒にインストールして、Nonguix チャネルを追加し、ドライバーをインストールしたいと思います。問題は、その方法がまったくわからないことです。

これには、Debian に Guix をインストールし、いくつかのパッケージをインストールし、GuixSD をルートに固定すること (少なくとも、Guix は NixOS でこれを実行し、NixOS はこれを参考にしています) が含まれるか、ISO に chroot することが含まれると確信しています。

可能な限りのご協力をいただければ幸いです。

システム情報

# 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 インストール:

注記
この使用をお勧めしますシェルインストーラースクリプト実行中の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)

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 pullNonguix パッケージの説明をダウンロードするには、 を実行する必要があります。この操作を正常に実行するには、USB サムドライブに空き領域が必要です。上記の--image-sizeオプションを使用すると、イメージのサイズを指定し、それに空き領域を割り当てることができます。指定された値は単なる目安であり、サムドライブの容量によって異なります。

次に、生成されたディスク イメージを以下のコマンドで USB サムドライブに書き込むことができます。

注記
この例では、USB メモリが Linux によって として認識されていることを前提としています/dev/sdb
dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync

上記の方法で作成されたインストール メディアでは、チャネル仕様は自動的に構成されません。Guix がNonguix スキーム ライブラリを認識できるようにするに/etc/guix/channels.scmは、Nonguix を「手動で」追加して実行する必要がguix pullあります。以下は、チャネル仕様に 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。[Since] によりkernel linux-5.11、この特定のモジュールはデフォルトで有効になっているはずです...

関連情報