見出し画像

ロールバックがこんなに簡単とは! ~ AerynOSに見るLinuxの未来③

1.はじめに

 前回はAerynOSの動作速度を評価しました。起動時間はCachyOSよりも短く、Solus並でした。Speedometerで計測した通常時の動作速度は、Firefoxを使用した場合はCachyOSよりも遅かったです。しかし、KDE PlasmaとGNOME上のGoogle Chromeでは、若干ですがCachyOSより速いという結果になりました。

 起動が速いのはSystemd-bootを採用しているから、通常時の動作速度がそれなりに速いのは、Rustで記述されているからのようです。これからの大規模システムは、Rustで記述されるようになるのでしょう。

 さて、AerynOSはローリングリリースということで、システムのアップデートが準備ができた端から提供されます。今回はこのシステムのアップデートと、それを元に戻すロールバックにトライしました。

 色々と試行錯誤しましたが、AerynOSではロールバックが簡単にできることがわかり、驚きました。AerynOSが目指すアトミックがどのようなものかも、わかってきたような気がします。このあたりをご紹介していきたいと思います。


2.システムのアップデート

 AerynOSのホームページのHow do I make my system check for updates and install them?によると、システムのアップデートは端末から「sudo moss sync -u」を実行すれば良いようです。

 そいうえば、「まずはインストール ~ AerynOSに見るLinuxの未来①」からmossを使っていましたが、mossがどのようなものかはまだご紹介していませんでした。

 AerynOSのホームページのmossの説明によると、mossは一見するとDebianやubuntuのapt、Fedoraであればdnf、Archではpacmanにあたるパッケージマネージャーですが、実はオペレーティングシステム全体を管理するツールなんだそうです。このあたりは後で詳しくご説明します。

 システムのアップデートをする前に、AerynOS、GNOME、KDE Plasma、Cosmicのバージョンを、Geminiに教えてもらった以下のコマンドで確認しました。

 AerynOS:cat /etc/os-release
 GNOME:gnome-shell --version
 KDE Plasma:plasmashell --version
 Cosmic:moss info cosmic-session

 そして、システムアップデート後にも、同様にして確認しました。その結果、GNOMEが49.2のままでしたが、その他は以下のように更新されていることが確認できました。

 AerynOS Ver. 2025.12 ⇒ 2026.01
 KDE plasma 6.5.4 ⇒ 6.5.5
 Cosmic 1.0.1 ⇒ 1.0.6

 Cosmicはそれなりにアップデートがあったようなので、もしかしてFcitx5+Mozcも使えるようになっているかもと期待して試しましたが、ダメでした。しかし、スクリーンショットは動作するようになっていましたので、Cosmicのデスクトップを冒頭に載せました。AerynOSを日常使いにするならCosmicの世界観がいいなあと思っていますので、早くFcitx5+Mozcが使えるようになって欲しいです。

3.システムのロールバック

(1) ブートメニューからのロールバック

 AerynOSのブログの記載によると、ブートローダーから5つ以前の状態のいずれかに手動で戻すことができるとあります。色々なソフトやシステムをインストールしたりして試す場合、失敗した時に元に戻せる機能は便利です。そこで、AerynOS Ver. 2025.12に戻せるか、試してみることにしました。

 今まではあまり意識していなかったのですが、再起動して起動時のメニュー画面を見ても、それらしきメニューがありません。マウスでそこかしこクリックしたりドラッグしたりしてみましたが、何も出てきません。これはどういうことなのでしょう?

 これはAerynOSの問題というより、Systemd-bootの使い方ということかもしれないと思い、Systemd-bootでのロールバック方法を調べてみると、スペースキーを連打しながらの起動でメニューが現れるとのことでした。

 実際にやってみると、テキストベースの簡単なメニューでしたが、ちゃんと以前の状態が5つリストアップされてきました。その中からAerynOSのVer.が2025.12となっているものを選んで起動することで、アップデートする前の状態に戻すことができました。

 しかし、再起動すると、一番最新の状態に戻ってしまいます。どうすればロールバックした状態を、最新の状態として認識させることができるのでしょうか?CachyOSでプレインストールされるBtrfs Assistantのようなソフトはありませんし、Geminiに聞いても対処方法はわかりませんでした。

 ここで頭に浮かんだのが、AerynOSのホームページでmossがシステム全体の管理ツールと記載されていたことです。それでmossに何かコマンドがあるかもと思い、「moss -h」で調べてみたところ、bootというコマンドのがあるのがわかりました。

 さらに「moss boot -h」とすると、syncというSynchronize boot configurationという機能のコマンドのあることがわかりました。これが現在の状態を、最新の状態として認識させるものでした。端末から「sudo moss boot sync」を実行することで、次の起動時にシャットダウンしたときと同じ環境で立ち上げることができました。

 実はこれ、見逃す可能性がありました。AerynOS ver. 2025.12のmossはver. 0.25.6で、これにはbootにsyncというコマンドはありませんでした。それがAerynOS ver. 2026.01のmossはver. 0.26.1には追加されていたのです。再起動して新しいバージョンで立ち上がってからも、何かないかなあと探したので気が付きましたが、古いバージョンで探し続けていたら気づかないところでした。

 もしかしたら、このコマンドが作成される前は、エディタでシステムの定義ファイルを編集しないといけなかったのかもしれませんが、このコマンドがあれば簡単です。mossが日々進化していることを実感しました。

(2) mossを使ってのロールバック

 色々と調べているうちに、Manage Moss State and Packagesの説明に、Check the current stateとActivate a different stateという項目のあることに気づきました。

 端末で「moss state active」を実行することで現在のstateがわかり、「moss state list」で保存されている過去のstateのリストが表示されます。そして、例えばlistの中の128とナンバリングされているstateに戻したいときは、「sudo moss state activate 128」を実行すれば良いということです。

 私のAerynOSで「moss state list」を実行すると、以下のように18のStateがありました。そして、「sudo moss state activate 1」で、一番最初の状態にもロールバックすることができました。

「moss state list」の実行結果例

 ただし、ホームページには記載されていませんでしたが、「sudo moss boot sync」を実行して再起動する必要がありました。これを実行しないで再起動すると、デスクトップ環境が立ち上がらず、コマンドモードで起動されるようです。

 その場合でも、焦らず「sudo moss state activate 戻したいstateの番号」と「sudo moss boot sync」を実行し、「reboot」することで、指定したstateで起動することができました。

 驚きなのは、128番目のstateに戻す例が示されていたように、おそらくAerynOSをインストールした時からのアップデートやソフトのインストールが全て保存しており、そのどれにでもロールバックできるらしい点です。

 これはシステムのコピーをスナップショット(実体)として保管しているのではなく、システムのstate、すなわちどんなアトムから構成されているかだけを記録していることからできることではないかと推測しました。

 アトムって何?ということになりますが、システムがアトムで構成されるのがアトミックの意味かもしれないと思い至りましたので、次にそれを具体的にご説明します。

4.アトミックはどのようなものなのか?

 アトムは一般的には原子のことで、物質を構成する最小単位です。Linxでのアトムは、自己完結している最小のプログラム単位(一つのフォルダに収まっている収まっている)のことです。人間の体が炭素、水素、酸素、窒素、カルシウムなどのアトムの組み合わせで構成されているように、AerynOSも、例えばA、B、C、D、Eという複数のアトムから構成されます。ソフトは一つのアトムとして、システムに追加されていきます。

 アトムは自己完結しているので、Bをアップデートする時に、その他のA、C、D、Eは変更する必要はありません。新たに作成したB'をディスクにインストールし、システムの定義ファイルからB削除し、B'を登録します。この時、Bの実体はディスクから削除されません。私の理解したところでは、このようなシステム構成、システムのアップデート方法がアトミックです。

 現在の私のAerynOSのState18は、「moss state list」の実行結果からは1057個のPackages(自己完結したアトムと言えるもの)から構成されているようですし、mossの説明からもStateの定義ファイルがそれなりに複雑なものであることがわかるのですが、mossによるアトミックなシステム管理のコンセプトの理解のため、一連の流れをものすごく簡単に書くとと、以下のようになりそうです。

State1:A, B, C, D, E(AerynOSインストール直後)
State2:A, B, C, D, E, F(ソフトFをインストール直後)
State3:A, B, C, D, E, F, G(ソフトGをインストール直後)
State4:A, B, C, D, E, G(ソフトFをアンインストール直後)
 ※定義ファイルからFは削除されるが、ディスク上の実体は削除されない
State5:A, B', C, D, E, G(システムBのB'へのアップデート後)
 ※定義ファイルからBは削除され、B'が登録される。
  しかし、ディスク上のBの実体は削除されない 

 各Stateの定義ファイルが保存されており、アトムが自己完結したものであること、及び、アトムを定義ファイルから削除しても実体は削除されないことから、どのStateにでも簡単にロールバックできるのだと思います。

 AerynOSのホームページのmossの説明の終わりには、「we think we’ve done a pretty good job ・・・ providing next generation features like atomic updates and content addressable storage, natively.」というコメントが記載されていましたが、これは本当にpretty good jobで、すごいことだと思いました。

5.終わりに

 AerynOSはローリングリリースということで、今回はこのシステムのアップデートとそれを元に戻すロールバックにトライしました。この作業を通し、今まで漠然としていたアトミックのコンセプトがわかってきました。

 さらに理解を深めるためには、Stateの定義ファイルを探し出し、それを眺めながらmossの説明文を読むと良いかもしれません。このあたりは別の機会に探検していきたいと思います。

 次回はAerynOSのファイヤーウォールなどのセキュリティ対策を探検して、Linuxの未来を感じてみたいと思います。




いいなと思ったら応援しよう!