~taiju/libre.taiju.info

ea7358c97bbc3e5b12e7e3b2d96f9671ede61e0e — Taiju HIGASHI 4 months ago 5355a14
article: Add using-gnome-boxes-in-guix.
1 files changed, 131 insertions(+), 0 deletions(-)

A content/2022/05/06/using-gnome-boxes-in-guix.md
A content/2022/05/06/using-gnome-boxes-in-guix.md => content/2022/05/06/using-gnome-boxes-in-guix.md +131 -0
@@ 0,0 1,131 @@
title: GNU Guix で GNOME Boxes を使う
date: 2022-05-06
slug: using-gnome-boxes-in-guix

## GNU Guix で GNOME Boxes を使う

**TL;DR**: Guix で GNOME Boxes を使いたい場合は `libvirt` サービスと `virtlog` サービスを有効にする必要がある。

### 背景

現在、私が使用しているスマホは Google Pixel 3a だ。

先日、Pixel 3a の最後のアップデートが 2022 年 7 月までに提供されるというアナウンスがあった。

いよいよサポートが終ってしまうようだ。

[Google releasing one last Pixel 3a and 3a XL update in July - 9to5Google](https://9to5google.com/2022/05/02/pixel-3a-last-update/)

新しい端末を購入することも検討はしているが、デバイスに不具合はなく、大きな不満もない。

ただ単に、メーカーの都合でアップデートが提供されなくなるだけなので、別の OS に変更して延命措置を取ることを検討している。

別の OS に変更することは、かねてより考えてはいたので、良い機会だと思った。[^1]

LineageOS、GrapheneOS、CalyxOS などが変更先候補になるが、GrapheneOS への変更を考えている。[^2]

GrapheneOS のインストール方法は公式サイトに詳細な手順が掲載されている。

[Install | GrapheneOS](https://grapheneos.org/install/)

しかし、Guix は GrapheneOS のインストール作業で使用する OS としてはサポートされていなかった。当然と言えば当然なのだが。

私はスマホの OS を変更作業はこれまでにやったことはない。

この作業はスマホを文鎮 (Brick) 化するリスクもあるデリケートな作業だ。

Guix でも頑張ればインストール作業ができるのかもしれないが、トラブルが発生した時に自分で問題を解決できない可能性があるので、やめておくのが無難だと思った。

### Guix で GNOME Boxes を使うには

ここで本題に戻る。

上記の作業のために Guix で Ubuntu を使用することを検討している。

Guix で GNOME デスクトップを選択すると、GNOME Boxes が最初から入っているため、それを使ってみることにした。

ただ、実際に仮想マシンを作ってみようとしたところ、作成画面の途中で先に進めなくなってしまった。

GNOME Boxes は Guix でパッケージ単体としても提供されているため、パッケージの説明文を読んでみたところ、解決のヒントを得ることができた。

```shell
$ guix package --show=gnome-boxes | recsel -P description
GNOME Boxes is a simple application to view, access, and manage
remote and virtual systems.  Note that this application requires the `libvirt' and
`virtlog' daemons to run.  Use the command `info '(guix) Virtualization Services''
to learn how to configure these services on the Guix System.
```

「[GNU Guix で Docker を使う](https://libre.taiju.info/2022/04/10/docker-with-guix.html)」の時と同様に、アプリケーションを使用するには、動作に必要なサービスを起動しなければならないようだ。

具体的には `libvirt` と `virtlog` サービスを起動する必要がある。

パッケージの説明文に記載のあるとおり、以下のドキュメンテーションを読めば設定内容は把握できた。

[Virtualization Services (GNU Guix Reference Manual)](https://guix.gnu.org/manual/en/html_node/Virtualization-Services.html)

ただ、ドキュメントどおり設定してもうまくいかないところがあったため、`"libvirt-service-type"` という検索語で GitHub でソースコード検索して、実際の使用例の確認をする必要もあった。[^3]

最終的には下記の変更で GNOME Boxes を使用できるようになった。

```diff
index e509a4a..b4d1bc2 100644
--- a/guix-config/system-config.scm
+++ b/guix-config/system-config.scm
@@ -6,7 +6,12 @@
              (nongnu packages linux)
              (nongnu system linux-initrd))

-(use-service-modules desktop networking ssh xorg docker)
+(use-service-modules desktop
+                     networking
+                     ssh
+                     xorg
+                     docker
+                     virtualization)

 (operating-system
   (kernel linux)
@@ -26,7 +31,7 @@
                  (group "users")
                  (home-directory "/home/taiju")
                  (supplementary-groups
-                  '("wheel" "netdev" "audio" "video" "docker")))
+                  '("wheel" "netdev" "audio" "video" "docker" "kvm" "libvirt")))
                 %base-user-accounts))
   (packages
    (append
@@ -47,6 +52,10 @@
                                       Option \"Tapping\" \"on\"
                               EndSection"))))
              (service docker-service-type)
+             (service libvirt-service-type
+                      (libvirt-configuration
+                       (unix-sock-group "libvirt")))
+             (service virtlog-service-type)
              (extra-special-file "/var/lib/gdm/.config/fontconfig/fonts.conf"
                                  (plain-file "gdm-fonts.conf"
                                              "<?xml version='1.0'?>
```

最新のコンフィグは [Sourcehut](https://sr.ht/~taiju/Taix/) で入手できる。

ドキュメントを読んでも、`kvm` グループにユーザーを追加する必要があることには気付けなかった。

ここが私にとっての一番の落し穴だった。

何はともあれ、上記の変更で Guix 上で Ubuntu が使用できるようになった。

USB のリダイレクションもできたので、GrapheneOS のインストール作業もできそうだ。

GrapheneOS への変更が完了したら、このブログでもレポートしたいと思う。

### 宣伝

「[GNU Guix の日本語コミュニティができた](https://libre.taiju.info/2022/04/13/guix-jp.html)」という記事で書いたとおり、[Guix-jp](https://join.slack.com/t/guix-jp/shared_invite/zt-17aoza5yo-KAVDj5aPPwsJ9X7e4lJteg) という Slack スペースがある。Guix に興味のある方はぜひ遊びにきて欲しい。

以上。

[^1]: メインで使用しているアプリのほとんどは F-Droid で提供されているアプリなので、Android にこだわる必要はあまりないのだが、仕事の業務でもスマホを使用していることがネックとなっている。
[^2]: Mastodon で様々なアドバイスをいただいたが、GrapheneOS を勧める声が多かった。実際に GrapheneOS を一番オススメする記事も多い。
[^3]: Guix の設定で困った時は、対象のコンフィグ名などで GitHub でソースコード検索すると解決のヒントを得られることが多い。