Open3

archinstall で ArchLinux インストールバトルをする

usagigausagiga

近年の ArchLinux では、 archinstall というコマンドが Live ISO にバンドルされており、インストーラによるインストールが可能になっています。

これを使って、適当なマシンの環境を構築してみます。

操作方法

archinstall を実行する

  • Live ISO をダウンロードし、適当な USB に焼く
  • UEFI でセキュアブートを切って、Live ISO を起動
  • archinstall を実行
    • 要ネットワーク接続。公式の Live イメージはデフォルトで DHCP が有効になっているので、有線だったら差すだけで、無線だったら iwctl で適当な AP につなぐだけで外に出られる

archinstall を実行すると、このようなウィザードが出てきます。
適宜操作していきましょう。

archinstall-wizard.png

いくつか補足しておきます。

  • Mirrors
    • インストーラまかせでもとりあえずは動くとおもうけど、自分で設定するのがおすすめ

インストーラに任せたら、10MiB/s 程度しか出ないミラーが選択されていました。というわけで、自分で適当に選ぶといいと思います。

速度、安定性、ミラー頻度が高いところでいくと、JAIST、筑波大学の WIDE プロジェクト、 cat.net あたりのミラーがよいでしょうか。これらは HTTP/S や IPv6 にも対応していてすてきです。

  • Locales
    • en_US.UTF-8ja_JP.UTF-8 を選ぶ
    • ja_JP にする場合、コマンドや GNOME、DE が作る /home 下のディレクトリ(e.g. デスクトップピクチャ)が日本語になる。操作性の観点や、状況によっては豆腐文字になってしまうことなどから、en_US がおすすめ
  • Disk configuration
    • best-effort default partition layout だと /boot (536MB) と / (21GB, ext4) と /home (残りすべて, ext4) で切られるので、お好みでレイアウトやファイルシステムを変える
  • Profile
    • ここでは GNOME、KDE、i3-wmなど、主要な DE / WM を指定することができる
  • Optional Repositories
    • Wine などを使う予定があるなら multilib を追加しておく

自分は以下の通りに設定しました。

user_configuration.json
user_configuration.json
{
    "additional-repositories": [],
    "archinstall-language": "English",
    "audio_config": {
        "audio": "pipewire"
    },
    "bootloader": "Systemd-boot",
    "config_version": "2.7.1",
    "debug": false,
    "disk_config": {
        "config_type": "manual_partitioning",
        "device_modifications": [
            {
                "device": "/dev/sda",
                "partitions": [
                    {
                        "btrfs": [],
                        "dev_path": "/dev/sda1",
                        "flags": [
                            "Boot",
                            "ESP"
                        ],
                        "fs_type": "fat32",
                        "mount_options": [],
                        "mountpoint": "/boot",
                        "obj_id": "********",
                        "size": {
                            "sector_size": {
                                "unit": "B",
                                "value": 512
                            },
                            "unit": "B",
                            "value": 536870912
                        },
                        "start": {
                            "sector_size": {
                                "unit": "B",
                                "value": 512
                            },
                            "unit": "sectors",
                            "value": 2048
                        },
                        "status": "existing",
                        "type": "primary"
                    },
                    {
                        "btrfs": [],
                        "dev_path": "/dev/sda2",
                        "flags": [],
                        "fs_type": "ext4",
                        "mount_options": [],
                        "mountpoint": "/",
                        "obj_id": "********",
                        "size": {
                            "sector_size": {
                                "unit": "B",
                                "value": 512
                            },
                            "unit": "B",
                            "value": 254986420224
                        },
                        "start": {
                            "sector_size": {
                                "unit": "B",
                                "value": 512
                            },
                            "unit": "sectors",
                            "value": 2097152
                        },
                        "status": "existing",
                        "type": "primary"
                    }
                ],
                "wipe": false
            }
        ]
    },
    "disk_encryption": null,
    "hostname": "kandy",
    "kernels": [
        "linux-zen"
    ],
    "locale_config": {
        "kb_layout": "us",
        "sys_enc": "UTF-8",
        "sys_lang": "ja_JP.UTF-8"
    },
    "mirror_config": {
        "custom_mirrors": [],
        "mirror_regions": {
            "Japan": [
                "https://mirrors.cat.net/archlinux/$repo/os/$arch",
                "https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch",
                "http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch",
            ]
        }
    },
    "network_config": {
        "type": "nm"
    },
    "no_pkg_lookups": false,
    "ntp": true,
    "offline": false,
    "packages": [
        "vim",
        "fish",
        "git"
    ],
    "parallel downloads": 0,
    "profile_config": {
        "gfx_driver": "All open-source",
        "greeter": "gdm",
        "profile": {
            "custom_settings": {
                "Gnome": {}
            },
            "details": [
                "Gnome"
            ],
            "main": "Desktop"
        }
    },
    "script": "guided",
    "silent": false,
    "skip_ntp": false,
    "skip_version_check": false,
    "swap": true,
    "timezone": "Asia/Tokyo",
    "uki": false,
    "version": "2.7.1"
}

一通り設定を終えたら、コンフィグを書き出してインストールを実行します。
このコンフィグは Live 環境が作成してくれる一時的なファイルシステム上に保存されているので、インストール完了後にディスクかなにかにコピーしておくといいでしょう。このコンフィグを使えば、将来 archinstall を実行することになったとき、コンフィグを指定するだけでインストールの実行ができて便利です。また、 /var/log/archinstall あたりに実行ログが吐き出されるので、これもディスクに書き出しておくとよいでしょう。

その後の設定

archinstall の実行が終わったら、再起動しましょう。
これで DE/WM/DM が起動してくれるはずです。

日本語フォントの導入

archinstall は、ロケールが日本であっても日本語フォントを導入してくれません。

archinstall-tofu.png

たとえば、GNOME を ja_JP.UTF-8 で導入すると豆腐文字だらけたいへんです。

そこで、日本語を含む幅広い言語に対応した Noto Sans / Serif / Mono を導入します。

https://archlinux.org/packages/extra/any/noto-fonts/

$ sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

noto-fonts-cjk というパッケージが、中国語・日本語・韓国語用フォントにあたります。ついででウェイト違いや絵文字なんかも使えたほうがべんりなので、noto-fonts とその Optional Dependencies すべてを導入しています。

フォントの設定は環境ごとに異なると思うので割愛します。

AUR ヘルパーの導入

今回は paru を導入します。

https://github.com/Morganamilo/paru

paru は yay の作者が作った Rust 製の AUR ヘルパーで、pacman と操作感が似ています。普段遣いにべんりです。

$ git clone https://github.com/Morganamilo/paru.git
$ cd paru
$ sudo makepkg -si

日本語 IME の導入

日本語フォント同様、IME も導入されていないので、自分で作業する必要があります。
好みや環境の差異があると思うので、お好みのものを適宜導入してください。

自分が使っている GNOME には IBus がバンドルされているので、ibus-mozc を使うことにしました。

https://aur.archlinux.org/packages/ibus-mozc

参考までに作業手順を書いておきます。

$ paru -S ibus-mozc
$ ibus-setup

ibus-setup でお好みの設定にできます。GNOMEのキーボード設定と一部重複している部分があるので、自分はこんなふうに、GNOMEとMozcの設定を干渉しないようにしています(よく内部の仕組みを知らないのでひどいことになってしまっている……)。

archinstall-gnome-input.png
archinstall-mozc-1.png
archinstall-mozc-2.png
archinstall-mozc-3.png

(Optional) Control と Super の位置を入れ替える

Mac を使っているユーザーだと、Control、Alt、Super の位置が入れ替えたほうが自然に操作できるだろう。

よくある環境では xmodmap を使って入れ替えるのが定番ではあるが、
GNOME では xmodmap など各種設定の統一的なフロントエンドである GNOME Tweaks を使って設定するとコンフリクトしづらく設定できる。

archinstall-xmodmap.png

ここはお好みで設定してもらえばよい。

usagigausagiga

archinstall をつかってみて

かんたん。

5分もウィザードを操作すれば、あとは待つだけでインストールが終わるのはありがたかった。
それのみならず、設定可能な項目もわりあい充実している。

一方、どんな設定を行われるかはインストーラ次第なところがあるので、シンプルさは一定損なわれる。それでも Ubuntu や Debian、CentOS 、Manjaro ほどの過保護さはないから、カジュアルに ArchLinux を使っていきたいときには archinstall はいいな、と思った。

あと、じぶんは GNOME ユーザーなので特に困っていないけれど、i3-wm のようなカスタマイズが前提の WM ユーザーだと自分好みでない設定を取り除く作業が必要なわけで、また違った感想を抱きそうだな、と思った。

なにがうれしいか

  • GNOME や i3-wm など、よく使う DE/WM を勝手にいれてくれる
  • Zen Kernel のような、カスタマイズされたカーネルの利用もできる
  • Pipewire のような、モダンなオーディオサーバーを設定してくれる

なにがうれしくないか

インストーラに頼る時点でしかたないところがあるけれど……

  • 自分好みの設定で Arch を使い始めることができない
    • パーティションの最適化
    • ネットワーク周り(systemd-networkdを使うとか)
    • パッケージの選択
    • GNOME の最小限インストール

こうした些細な悩みごとは、あとからどうとでもできるわけだけれど、前もって細かく設定するつもりがあるなら手でインストールするのがもっともシンプルでかんたんだというのは変わらないとおもう。

  • Linux や計算機自体のお勉強があんまりできない

ここが一番重要だと思う。

個人的には、Arch や Gentoo なんかのインストールバトルはLinux や計算機の入門にぴったりだと思っている。適度な抽象化レイヤーの上で、比較的低レイヤーな作業ができるからだ。それができないのはすごくすごくもったいないとおもう。

usagigausagiga

(Optional) GNOME でリモートデスクトップ

需要があるかはわからないですけれど、リモートデスクトップ環境を構築したのでそれもメモしておきます。

いずれもたいていの GNOME 環境に標準で備わっているものを使うことにします。
簡単であるため、また、現代の GNOME が動いている wayland が前提の実装を使うためです。

ホスト側の設定

GNOME の WM である mutter は既定でリモートデスクトップ機能が有効化された状態でコンパイルされているほか、設定画面の「共有(Share)」から、ホスト側の設定をすることも可能です。

一応、公式ドキュメントはこれになります。

https://wiki.gnome.org/Projects/Mutter/RemoteDesktop

archinstall-gnome-remote-01.png
archinstall-gnome-remote-02.png

設定画面をポチポチすればそれで動きます。
このとき、ホスト側のIPアドレスとユーザー名・パスワードを控えておきましょう。

クライアント側の設定

リモートデスクトップクライアントには、今回は gnome-connections を使うことにします。

gnome-connections は RDP と VNC 両方に対応したリモートデスクトップクライアントです。

今回は RDP を使って接続してみます。
さきほど控えておいた、IPアドレス、ユーザー名、パスワードを入力すれば、ホスト側のマシンをリモートで操作することができるようになるはずです。

archinstall-gnome-remote-03.png

archinstall-gnome-remote-04.png

なお、今回はテストのために適当に動作させていますが、本来ならばセキュリティのために SSH でトンネルを掘るであるとか、FWを設定しておくであるとかするとよいでしょう。