2021-11-06

Fedora Silverblue はデスクトップ Linux の未来か?

Fedora Silverblue はデスクトップ用途の immutable(不変)な OS です。Atomic Host Workstation → Fedora Atomic Workstation と名前を変え、Fedora 29 から Silverblue にブランド名が変更されました。OS は、rpm-ostree で生成されたイメージを使用しています。一方、GUI を伴うデスクトップアプリケーションの管理には Flatpak が採用されています。

Fedora Silverblue が静かに進化を続けています。本ブログでは Fedora Silverblue について何回も記事を掲載していますが、あらためて、その特徴をまとめました。

Immutable(イミュータブル)ってなんだ?

Merriam-Webster オンライン辞書のサービスによると、immutable は unable to change すなわち「変えることができない」という意味を表す形容詞です。日本語では「不変」という訳語が当てられています。「不変」とは「変わらないこと」を意味するので、「変えることができない」とは若干ニュアンスが違う気がしますが、どちらも結局は変わらない、と言う点では同じです。

Fedora Silverblue の immutable とは?

Fedora Silverblue(以下、単に Silverblue と書きます)において、immutable な部分は OS そのものです。つまり、OS 領域は基本的に読み取り専用になっています。読み取り専用というとなにも変更できませんが、読み書きできる領域は確保されています。

Silverblue のファイルシステム階層は、Fedora Workstation と同じですが、いくつかのディレクトリがシンボリックリンクになっています。ファイルの読み書きができるのは /etc/var 内だけです

bin    -> usr/bin  (Fedora Workstation と同じ)
├ boot
├ dev
├ etchome   -> var/home
├ lib    -> usr/lib  (Fedora Workstation と同じ)lib64  -> usr/lib64(Fedora Workstation と同じ)media  -> run/media
├ mnt    -> var/mnt
├ opt    -> var/opt
├ ostree -> sysroot/ostree
├ proc
├ root   -> var/roothome
├ run
├ sbin   -> usr/sbin (Fedora Workstation と同じ)srv    -> var/srv
├ sys
├ sysroot
├ tmp
├ usr
└ var

判りやすいようにリンクの表記を実ディレクトリに置き換えると以下のようになります。

├ boot
├ dev
├ etc
├ proc
├ run
│ └ media
├ sys
├ sysroot
│ └ ostree
├ tmp
├ usr
│ ├ bin
│ ├ lib
│ ├ lib64
│ └ sbin
└ var
   ├ home
   ├ mnt
   ├ opt
   ├ roothome
   └ srv

左記、読み取り専用の部分の OS 領域は、OSTree で管理されています。

OSTree は、OS をファイルシステムツリーまるごと管理するシステムです。ファイルシステムツリーのイメージはブート可能で immutable、そしてイメージのバージョンを Git のように管理することができます。

OSTree で作成された OS イメージは、ユーザー側でパッケージを追加したり削除することができません。

そこで Silverblue では、OSTree と rpm パッケージを組み合わせて利用できるように、OSTree のライブラリ libostree と、rpm パッケージを扱う dnf コマンドのコアライブラリである libdnf を利用した rpm-ostree が採用されています。

そのため、rpm-ostree コマンドで rpm パッケージを追加あるいは削除して、カスタマイズした新しい OS イメージを簡単に作成することができます。immutable なので使用中の OS イメージは変更できないのです。新しく作成した OS イメージを利用するには、それが些細な変更であっても別のイメージなので、再起動が必要になります。なお、元にイメージに戻す(ロールバック)こともコマンドでできます。

このように rpm-ostree は、OSTree による OS イメージの管理と rpm によるパッケージ管理の特徴を併せ持っているので、ハイブリッドシステムと呼ばれています。

Fedora Silverblue の構成

OS は上述のように、rpm-ostree を活用して生成されたイメージを使用していますが、GUI を伴うデスクトップアプリケーションの管理には Flatpak が採用されています。Flatpak もまた、OSTree の技術 (libostree) を利用しています [4]

Flatpak は、Linux デスクトップ向けのソフトウェアデプロイメント・パッケージ管理・アプリケーション仮想化を行うユーティリティソフトウェアです。ユーザーがアプリケーションとシステムを分離して実行することができるサンドボックスを提供しています(Wikipedia より引用)。

予期しない改変を防ぐために OS を(ほぼ)読み込み専用にしてしまうことは究極の対策になります。その反面、アプリ開発に不便を強いることにもなります。この不便を解消するために Toolbox というプライベートな使い捨てのコンテナ環境が利用できます。Toolbox を活用すれば、OSTree の OS とは別にソフトウェアの開発環境を用意することができます。

つまり、Fedora Silverblue は rpm-ostree と Flatpak で構成されているデスクトップ用の OS で、必要に応じてアプリ開発用にプライベート・コンテナ Toolbox を利用できる、という造りになっています。

Fedora Silverblue 35 を使ってみる

11 月 2 日にリリースされた Fedora Silverblue 35 をテスト機にインストールしてみました。

Fedora Silverblue 35 のデスクトップ

インストール後に利用できるデスクトップアプリケーションはごく僅かです。

ソフトウェア (gnome-software)

アプリのインストール・アンインストールを管理する「ソフトウェア (gnome-software)」は、Flatpak のアプリだけでなく、システムの更新の面倒も見てくれます。(自分の場合)Silverblue でない Fedora Linux では、端末エミュレータ上で dnf コマンドでインストールや更新をすることが多いのですが、Silverblue では、そもそも dnf コマンドを利用できないので、この「ソフトウェア」を利用することが多くなります。

ソフトウェア (gnome-software)

Silverblue をインストールした後の最初の起動で、サードパーティのレポジトリを有効にしておけば、Fedora が提供する Flatpak パッケージのレポジトリの他に Flathub のレポジトリも利用できるようになります。ただし、Fedora プロジェクトは公開するパッケージを管理 (curate) しています(フィルターがかけられている)ので、Flathub のアプリ全てをインストールできるわけではありません [5]

Google Chrome などのインストール

サードパーティのレポジトリには Google Chrome や PyCharm(Python の IDE)のレポジトリも含まれています(どちらも rpm-ostree のレポジトリ)。残念ながら自分の環境では Google CHrome や PyCharm を「ソフトウェア」で検索できなかったので、rpm-ostree コマンドでインストールしました。もしかすると、「ソフトウェア」に反映されるのに時間が掛かり、気が短かっただけなのかもしれませんが、参考までに rpm-ostree コマンドでインストールした例を紹介します。

Google Chrome のインストール
[bitwalk@debian ~]$ rpm-ostree install google-chrome-stable
Checking out tree 93b4e79... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora phracek-PyCharm google-chrome rpmfusion-nonfree-nvidia-driver rpmfusion-nonfree-steam updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-09-21T18:07:30Z solvables: 4
rpm-md repo 'updates' (cached); generated: 2021-11-04T01:32:06Z solvables: 7556
rpm-md repo 'fedora' (cached); generated: 2021-10-29T10:17:40Z solvables: 65732
rpm-md repo 'phracek-PyCharm' (cached); generated: 2021-10-25T07:33:06Z solvables: 20
rpm-md repo 'google-chrome' (cached); generated: 2021-11-02T17:38:14Z solvables: 3
rpm-md repo 'rpmfusion-nonfree-nvidia-driver' (cached); generated: 2021-11-02T16:10:46Z solvables: 29
rpm-md repo 'rpmfusion-nonfree-steam' (cached); generated: 2021-08-14T13:52:52Z solvables: 2
rpm-md repo 'updates-archive' (cached); generated: 2021-11-04T02:41:25Z solvables: 5980
Resolving dependencies... done
Will download: 1 package (89.5 MB)
Downloading from 'google-chrome'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 53.2 MB (pkgcache branches: 0)
Added:
  google-chrome-stable-95.0.4638.69-1.x86_64
  liberation-fonts-1:2.1.5-1.fc35.noarch
Changes queued for next boot. Run "systemctl reboot" to start a reboot
[bitwalk@debian ~]$ 

systemctl reboot で再起動します。

PyCharm のインストール
[bitwalk@debian ~]$ rpm-ostree install pycharm-community
Checking out tree 93b4e79... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora phracek-PyCharm google-chrome rpmfusion-nonfree-nvidia-driver rpmfusion-nonfree-steam updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-09-21T18:07:30Z solvables: 4
rpm-md repo 'updates' (cached); generated: 2021-11-04T01:32:06Z solvables: 7556
rpm-md repo 'fedora' (cached); generated: 2021-10-29T10:17:40Z solvables: 65732
rpm-md repo 'phracek-PyCharm' (cached); generated: 2021-10-25T07:33:06Z solvables: 20
rpm-md repo 'google-chrome' (cached); generated: 2021-11-02T17:38:14Z solvables: 3
rpm-md repo 'rpmfusion-nonfree-nvidia-driver' (cached); generated: 2021-11-02T16:10:46Z solvables: 29
rpm-md repo 'rpmfusion-nonfree-steam' (cached); generated: 2021-08-14T13:52:52Z solvables: 2
rpm-md repo 'updates-archive' (cached); generated: 2021-11-04T02:41:25Z solvables: 5980
Resolving dependencies... done
Will download: 6 packages (358.0 MB)
Downloading from 'fedora'... done
Downloading from 'phracek-PyCharm'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 328.6 MB (pkgcache branches: 1)
Added:
  glibc-2.34-7.fc35.i686
  glibc-gconv-extra-2.34-7.fc35.i686
  javapackages-filesystem-6.0.0-1.fc35.noarch
  libgcc-11.2.1-1.fc35.i686
  libstdc++-11.2.1-1.fc35.i686
  pycharm-community-2021.2.3-1.fc35.x86_64
Changes queued for next boot. Run "systemctl reboot" to start a reboot
[bitwalk@debian ~]$ 

なお、rpm-ostree コマンドでパッケージをインストールする際にルート権限は必要ありません。複数のパッケージ名をスペースを開けて並べて一緒にインストールができます。ちょっと不便なのは、rpm-ostree コマンドにパッケージの検索機能がないことです [6]。rpm のパッケージ名は Fedora のディストリビューションで同じですので、よくわからない時にはインターネットなどで調べなければなりません。

接続 (gnome-connections) を使ってみる

GNOME 41 では、VNCRDP を使ってリモート・デスクトップ接続をする 「接続 (Connections)」アプリが導入されました。この機能は GNOME Boxes アプリの一部でしたが分離されたようです [5]

接続 (gnome-connections) で RHEL の xrdp サーバに接続した例

試しに RHEL の xrdp サーバに接続してみました。なんなく接続されて喜んだのもつかの間、キーボードの入力を反映されないことが判りました。フツーの Fedora Linux 35 でも試しましたが同じ症状でした。ただ、試す対象がこの RHEL しかなく、Windows の RDP サーバで同じ症状がでるかどうか確認できません。

Fedora Silverblue はデスクトップ Linux の未来か?

デスクトップ PC が OSTree (rpm-ostree) と Flatpak で構成される、というのが当たり前になる日がやってくるのでしょうか?

Immutable な OS は、コンピュータウィルスの侵入リスクを低減できます。OSTree や Flatpak のレポジトリを IT 部門で用意すれば、多くのユーザが使うデスクトップ PC を一元管理できそうです。OS のアップグレードも簡単です。しかし、実際に管理するとすればどのようになるか評価でしてみる必要はもちろんあります。

一方、ユーザー側でも許可されたアプリであれば管理者権限なしにインストールできるので、自由度はそんなに悪くありません。

あとは脱 Microsoft Windows いや、Microsoft Office を越える、Linux でも使えるキラー・ビジネスアプリの登場を待つしかないのでしょうか。Microsoft 社が Linux 版の Office をリリースしないのは、ビジネス的には正解なのでしょう。😃

WPS Office など Microsoft Office との互換を謳うアプリはありますが、なかなかそのために Linux に切り替えるまではしないですよね。

一方、Linux ディストロを見ると、OSTree / Flatpak を利用した構成のディストロは、他に Endless OS などありますが、主流のディストロまでは成長していません。一方、OSTree / Flatpak は、主要な Linux ディストロでも利用できます。

immutable のありがたさが、パッケージ単位で管理する現状の便利さを上回るような事件でもない限り、残念ながら、デスクトップ用途で OStree / Flatpak の使い方が従来のパッケージ単位の管理を凌いで一般的にはならないでしょう。immutable な用途、たぶんそれはビジネス用途にあるので、草の根の活動のような Linux ディストロを開発するプロジェクトにはあまりありがたみがありません。一方、デスクトップ用途と限定しなければ、ビジネスユースで Linux は広く利用されているので、その中で特定のデスクトップ用途のディストロがパッケージ管理を越えた方向に変貌していくことでしょう。Linux は多様性を許容して、その中で発展していくはずです。

個人的には、Linux のアップグレードの手間が減ることのメリットは大きいと思っています [9]。OSTree の場合、OS のメジャーアップグレードは、レポジトリが変わることを除けば、通常のアップグレードとほとんど同じレベルの作業になります。自分の場合、Fedora Linux のような更新頻度が高いディストロをメインに使っているという事情があるからです。デスクトップを KDE Plasma に変えた Silverblue のスピン Fedora Kinoite 35 もリリースされ、Silverblue のリリースは今後も安定して続きそうですので、普段使っているノート PC の OS を Fedora Linux から Silverblue に乗り換えてしまおうか思案しています。

参考サイト

  1. レッドハットが買収したCoreOSの今後の行方 - ZDNet Japan [2018-05-15]
  2. What is Silverblue? - Fedora Magazine [2019-07-12]
  3. GitHub - ostreedev/ostree: Operating system and container binary deployment and upgrades
  4. Under the Hood — Flatpak documentation
  5. What's new in Fedora Workstation 35 - Fedora Magazine [2021-11-02]
  6. Add feature to search for packages · Issue #1877 · coreos/rpm-ostree
  7. Usage Statistics and Market Share of Linux for Websites, November 2021
  8. Keyboard not working (#83) · Issues · GNOME / Connections · GitLab [2020-11-05]
  9. bitWalk's: 【備忘録】Fedora Silverblue のアップグレード [2020-10-28]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: