たびとの旅路 ~電脳砂漠の冒険譚~

フロッピー頼りに歩き、クラウドの地平を見つめる今日まで。見つけたオアシス、迷い込んだ砂の迷宮、全てこの羊皮紙に。

失われし精霊との契約 ~かつて我らは、genieと共にsystemdを呼び覚ました~

旅の途中、ふと、かつて栄えたオアシスの跡地を見つけた。忘れないうちに、この羊皮紙にその記憶を記しておくとしよう。

今や、WSL2(Windows上のLinux環境)という大地でsystemd(システム管理デーモン)という名の心臓を鼓動させるのは、いとも簡単なことだ。wsl.conf(WSL設定ファイル)という契約書に、たった一行systemd=trueと記すだけでいい。しかし、ほんの少し昔まで、我々冒険者は、そんな簡単な魔法を知らなかった。

かつて、この大地でsystemdを呼び覚ますには、「genie」(systemd起動支援ツール)という名の、得体の知れない精霊と契約を結ぶという、禁断の儀式が必要だったのだ。それは、成功すれば絶大な力を、しかし一歩間違えれば全てを破壊しかねない、危険な賭けだった。 これは、もはや歴史の砂に埋もれつつある、古の冒険者たちが挑んだ、危険で、面倒で、しかしどこかロマンのあった、失われし儀式の記録である。

この羊皮紙のあらまし

この羊皮紙が導く者

  • かつて、genieと共にsystemdを呼び覚まそうと奮闘した者
  • WSL2の黎明期に、どんな冒険があったのかを知りたい者
  • 失われた古代魔法の記録に、興味を抱く全ての考古学者
  • 技術の進化の歴史を学びたい開発者

砂漠の道標

  • WSL2 - Windows Subsystem for Linux 2の略。Windows上でLinux環境を動作させる仮想化技術。
  • systemd - 多くのLinuxディストリビューションで採用されているシステム・サービス管理デーモン。
  • genie - WSL2でsystemdを動作させるための非公式ツール。現在は非推奨(公式機能で代替可能)。
  • wsl.conf - WSLの動作設定を記述する設定ファイル。
  • AlmaLinux - Red Hat Enterprise Linuxのクローンディストリビューション。CentOSの後継の一つ。
  • EPEL - Extra Packages for Enterprise Linuxの略。追加パッケージリポジトリ。
  • daemonize - プログラムをバックグラウンドで動作させるためのツール。
  • systemctl - systemdを制御するコマンドラインツール。サービスの起動・停止・状態確認などに使用。
  • PID 1 - プロセスID 1。システム起動時に最初に実行されるプロセス。通常はinitまたはsystemdが担う。

古の儀式:genieとの契約

かつて、この儀式は、AlmaLinux 8(Red Hat系Linuxディストリビューション)という大地でのみ成功が確認されていた。(AlmaLinux 9では、daemonize(デーモン化ツール)という名の触媒が不足しており、儀式は失敗する)

触媒の準備

まずは、EPEL(Extra Packages for Enterprise Linux:追加パッケージリポジトリ)という、エンタープライズLinux用の拡張パッケージ庫を導入する。

$ sudo dnf update
$ sudo dnf install epel-release

精霊の召喚

次に、genieという名の精霊そのものを、古文書の宝庫(GitHub:ソースコード共有サイト)からrpm(Red Hat系パッケージ形式)という形で授かり、インストールする。この時、daemonize(デーモン化ツール)をはじめとする、数多の眷属たちも同時に召喚される。

$ wget https://github.com/arkane-systems/genie/releases/download/v2.3/genie-2.3-1.fc34.x86_64.rpm
$ sudo dnf install genie-2.3-1.fc34.x86_64.rpm

当時、最新のgenie v2.5を召喚しようとすると、Python 3.7(プログラミング言語)という、この大地には存在しない魔法体系を要求され、儀式は失敗に終わったものだ。

儀式の仕上げ

genie v2.3は、強制的に古いPython 3.6を呼び出してしまうため、我々の手でPython 3.9へと道を繋ぎ直す必要があった。

$ sudo dnf install python39
$ sudo ln -sf /usr/bin/python3.9 /usr/bin/python3
$ sudo python3 -m pip install psutil

儀式の核心:精霊の瓶(ボトル)に入る

儀式の準備は、まだ終わらない。 未来の自分が、再びこの大地を訪れた時に、毎回この面倒な儀式を繰り返さぬよう、.bashrc(Bashシェル起動時実行スクリプト)という名の羊皮紙に、自動で精霊を呼び出す呪文を刻み込む。

# .bashrc の最終行に以下を追記
pid=`ps -eo pid,cmd|grep -e '^ *[0-9]* systemd$'|sed -e 's/^[ ]*\([0-9]*\).*/\1/'`
if [ "$pid" != "1" ]; then
       echo 'Starting genie:'
       /usr/bin/genie -s
fi

そして、新たにコンソールを開き直す。すると、genie -sの呪文が自動で唱えられ、我々は「精霊の瓶(ボトル:genie専用の名前空間)」の中へと誘われる。この瓶の中で初めて、我々はsystemctl(systemd制御コマンド)という、真の力を手にすることができたのだ。

瓶の中からsystemctl status(システム状態確認)を唱えれば、この大地でsystemdという心臓が力強く鼓動していることが、はっきりと示された。

$ systemctl status
● Amaterasu-wsl
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Sun 2022-10-30 21:56:01 JST; ...
   CGroup: /
           ├─init.scope
           │ └─1 systemd
           └─system.slice
             ├─systemd-journald.service
             ... (以下、数多の魂が鼓動している)

PID 1(プロセスID 1:システム最初のプロセス)としてsystemdが君臨している。これこそが、精霊の力が大地を支配した、何よりの証拠だ。

羊皮紙を巻く前に

今となっては、信じがたいほど面倒な儀式だ。wsl.confに一行書き加えるだけで済む現代から見れば、笑い話にさえ聞こえるかもしれない。

しかし、我々はこの苦難の時代を、確かに生きていた。一つの力を手に入れるために、いくつもの古文書を読み解き、得体の知れない精霊とさえ契約を結んだ。その試行錯誤の全てが、今の便利な世界を築く、礎となっているのだ。

genieが教えてくれた技術進化の本質

  1. 困難な道のりこそが、次世代の礎となる - 精霊との契約という複雑な儀式が、公式機能の実装を促した
  2. 過去の苦労は、今の便利さの証明である - 一行で済む現代の方法は、先人の試行錯誤の結晶だ
  3. 失われた技術にも、学ぶべき価値がある - 古の儀式を知ることで、技術の本質的な理解が深まる

現代の簡単な方法

今この記事を読んでいるあんたは、以下の手順で済む:

  1. /etc/wsl.confを作成し、[boot]セクションにsystemd=trueを記述
  2. WSLを再起動する

たったこれだけだ。genieという精霊も、複雑な依存関係解決も、Python環境の調整も、一切不要。

まとめ

技術の進化とは、かくも素晴らしいものだ。この羊皮紙が、快適な旅しか知らない若い冒険者たちへ、我々先達が歩んだ、泥臭くも熱い道のりを伝える、ささやかな語り草となることを願う。そして、いつの日か、今の「当たり前」もまた、未来の冒険者たちに笑われる日が来るのだろう。それもまた、技術という名の旅の、美しい循環なのだ。

おっと、どうやら相棒が腹を空かせたようだ。今日はこのへんで筆を置くとしよう。

砂漠で見つけた魔法のランプ

ラクダの独り言

ご主人が「昔は大変だったんだぞう」とか言って、やけに得意げに古い冒険譚を語っている。なんでも、心臓を動かすのに、変な精霊の助けが必要だったらしい。俺に言わせりゃ、昔の苦労話なんぞ、酒の肴にすりゃいいんだ。今が楽なら、それで万々歳じゃねえか。ただまあ、あの頃の泥臭い戦いがあったからこそ、今こうして楽できるってのも事実なんだろうな。まったく、人間ってのは、終わった話が好きなもんだ。やれやれだぜ。