2020/4/28 Fedora 32 がリリースされたため、自宅のデスクトップPC の OS をアップグレードした。本稿ではその作業メモを掲載する。

Fedora32 Desktop

Fedora は Red Hat 社が支援する Fedora Project コミュニティによって開発されている Linux ディストリビューションである。 Fedora には Workstation, Server, CoreOS, Silverblue, IoT といったエディションが存在しているが、うちで使っているのは Fedora Workstation である。

Fedora 32 is officially here! - Fedora Magazine

今回のアップグレードも特に大きな問題も無く平和に完了した。 Fedora OS のアップグレードも随分と安定しており、ここ数回は PC が起動しなくなったり、画面が崩壊したり、デバイスが操作不能になどといったトラブルに遭うことなく、まったりと成功している。品質の高いソフトウェアを提供する Fedora 開発陣には感謝の念が絶えない。

しかしあまりに平和では刺激が少なくやや物足りない気もする。最近は作業メモさえ残していなかったが、今回は気が向いたので書いてみた。一応、いくら安定しているとは言っても、メイン PC の OS バージョンアップは、失敗すると当面の作業ができなくなったり、最悪データが飛ぶような、生活や精神に支障を来たす危険があるイベントである、重大な祭りであることには変わりない。

過去の記録は下記の通り:

1. Fedora 32 の変更点

Fedora 32 における変更点も Fedora Magazine に書かれている。 ここで紹介しなくとも日本語の記事も多く存在するため、項目だけ並べるだけに留めることにする。

What’s new in Fedora 32 Workstation - Fedora Magazine

Gnome 3.36 へのアップグレード:

  • Redesigned Lock Screen
  • New Extensions Application
  • Reorganized Settings
  • Redesigned Notifications / Calendar popover
  • Redesigned Clocks Application

This release features GNOME 3.36, which has plenty of great improvements as usual. My favorite is the new lock screen!

プログラミング言語バージョンの更新:

  • GCC 10
  • Ruby 2.7
  • Python 3.8

Following our “First” foundation, we’ve updated key programming language and system library packages, including GCC 10, Ruby 2.7, and Python 3.8. Of course, with Python 2 past end-of-life, we’ve removed most Python 2 packages from Fedora. A legacy python27 package is provided for developers and users who still need it.

EarlyOOM 関連:

  • Improved Out of Memory handling

EarlyOOM サービスが初期状態で有効になったことで、利用可能なメモリ量が少ない時に UI が操作不能になっても、素早く復帰することができるという。

In Fedora Workstation, we’ve enabled the EarlyOOM service by default to improve the user experience in low-memory situations.

2. Fedora 32 へのアップグレード手順

これまでの OS バージョンは Fedora 31 であった。

Linux fg-ryz 5.6.8-200.fc31.x86_64 #1 SMP Wed Apr 29 19:10:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

アップグレード手順は Fedora Magazine で説明された通りにコマンドを実行するだけである。いつもの手順と特に変わりなく淡々と執り行うのみである。

Upgrading Fedora 31 to Fedora 32 - Fedora Magazine

まず PC にインストールされた各種パッケージを全て最新化する。 OS アップグレードの成功確率を高める重要な手順である。

sudo dnf update --refresh

次にアップグレードツールをインストールする。大体すでに持っているため何も起きない。

sudo dnf install dnf-plugin-system-upgrade

Fedora 32 をダウンロードする。

sudo dnf system-upgrade download --releasever=32

最後に次のコマンドを実行すると、PC が再起動し、OS アップグレード本番が自動的に開始する。

sudo dnf system-upgrade reboot

Fedora32 Upgrading

うまくいけばただ待っているだけで全て完了し、最終的には見慣れた画面が表示される。

起動後、ターミナルから uname -a コマンドを実行すると Fedora 32 にアップグレードされたことが確認できた。

Linux fg-ryz 5.6.11-300.fc32.x86_64 #1 SMP Wed May 6 19:12:19 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

3. Fedora 32 へのアップグレード後

3.1. Mozc の設定

キーの入力ソフトには iBus + Mozc を使っているが、アップグレード後キーボード設定が US レイアウトになってしまった。これまでに何回も遭遇したもので、いつも通り対処した。

JP106 レイアウトに直すために、下記のように Mozc の設定ファイルを変更する。

$ sudo vim /usr/share/ibus/component/mozc.xml
$ grep -A3 -B8 layout /usr/share/ibus/component/mozc.xml
<engine>
  <description>Mozc (Japanese Input Method)</description>
  <language>ja</language>
  <symbol>&#x3042;</symbol>
  <rank>80</rank>
  <icon_prop_key>InputMode</icon_prop_key>
  <icon>/usr/share/ibus-mozc/product_icon.png</icon>
  <setup>/usr/libexec/mozc/mozc_tool --mode=config_dialog</setup>
  <layout>jp</layout>
  <name>mozc-jp</name>
  <longname>Mozc</longname>
</engine>

ファイル編集後、Gnome に再ログインすれば変更が反映される。

3.2. Gnome の設定

今回のアップデートにより、Gnome 3.36 に更新された。

何やら Gnome Shell エクステンションの管理 UI が追加されたらしい。 これまでは Gnome Tweaks を開くと下の方にあったが、今回から日本語設定の場合「拡張機能」というアプリがあって、少し手軽にエクステンションを管理できるようになった。

初期状態ではインストールされていないため、次のコマンドで導入する。

sudo dnf install gnome-extensions-app

特に感動はしなかった。

エクステンション関係では、他に gTile が動作しなくなってしまった。 どうも Gnome Shell 3.36 で廃止された API を使っていたようである。

これは一旦 gTile を削除したあと、 GitHub から最新のソースコードを持ってきて、Gnome Shell エクステンションのディレクトリに置いてあげたところ直った。置いたあとは Gnome の再ログイン等が必要である。

git clone https://github.com/gTile/gTile.git ~/.local/share/gnome-shell/extensions/gTile@vibou

GNOME Shell 3.36 support · Issue #118 · gTile/gTile

3.3. Docker コンテナから DNS の名前解決ができない

Docker 周りだけは OS アップグレードのたびに毎回少しずつ変な動きをするので、少し楽しい。今度は Docker コンテナで DNS の名前解決ができなくなってしまった。

これは Firewalld の設定で docker0 のゾーンを trusted にしたり試していたところ解決した。もう少し理解したらコメントにでも追記する。

これは現時点でイケてる対処方法が出ていないが、 他に Docker のオプションで解決する方法もあり、以下のようにするが、これは Docker の使い方としていまいち良くないためお勧めしない。

Docker コンテナ起動時に --network=host というオプションを追加してあげるという暫定対処が発見されている。Docker compose の場合には、下記のように network_mode: "host" を設定すればよい。なお link と一緒に使う場合には工夫が必要そうなので注意。-

version: "3.7"
services:
  proxy:
    image: sameersbn/squid:3.5.27-2
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
      - ./root:/root
    ports:
      - "3128:3128"
    tty: true
    network_mode: "host"

3.4. ブランクスクリーンで Emacs が落ちる

直し方がわからないのでブランクスクリーンを無効にして当面を凌ぐこととした。 journalctl -xe には以下のように出力されていた。

 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: X protocol error: BadWindow (invalid Window parameter) on protocol request 25
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: When compiled with GTK, Emacs cannot recover from X disconnects.
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: This is a GTK bug: https://gitlab.gnome.org/GNOME/gtk/issues/221
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: For details, see etc/PROBLEMS.
 5月 20 00:58:00 fg-ryz audit[95761]: ANOM_ABEND auid=1000 uid=1000 gid=1000 ses=3 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 pid=95761 comm="emacs" exe="/usr/bin/emacs-26.3" sig=6 res=1
 5月 20 00:58:00 fg-ryz gnome-terminal-[2117]: gnome-terminal-server has no capability of surrounding-text feature
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: Backtrace:
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x51fc08]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x504931]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x51fd19]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4ce963]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4d06ba]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4d074d]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(_XError+0xfb)[0x7f844e44b5cb]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x46337)[0x7f844e448337]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x463d5)[0x7f844e4483d5]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(_XEventsQueued+0x52)[0x7f844e448d22]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(XFlush+0x1e)[0x7f844e42a0ce]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x664c6)[0x7f844e4684c6]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(XDestroyIC+0x16)[0x7f844e456386]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4e7230]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4dd2ec]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4dd9df]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x42f534]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4ce8f3]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4d06ba]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4d074d]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(_XError+0xfb)[0x7f844e44b5cb]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x46337)[0x7f844e448337]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x463d5)[0x7f844e4483d5]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(_XReadEvents+0x81)[0x7f844e448e51]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(XIfEvent+0x8d)[0x7f844e42ff9d]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x7792f)[0x7f844e47992f]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x78682)[0x7f844e47a682]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(_XimRead+0x50)[0x7f844e47a910]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(+0x66cfb)[0x7f844e468cfb]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libX11.so.6(XSetICValues+0x109)[0x7f844e456639]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4e7327]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x46a60d]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x46aa56]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4741de]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x474465]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4dabc3]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: emacs[0x4dc378]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libgdk-3.so.0(+0x7183f)[0x7f844ec2083f]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libgdk-3.so.0(+0x71b72)[0x7f844ec20b72]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libgdk-3.so.0(gdk_display_get_event+0x44)[0x7f844ebe7114]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: /lib64/libgdk-3.so.0(+0x718d6)[0x7f844ec208d6]
 5月 20 00:58:00 fg-ryz emacs.desktop[95761]: ...

applications - How to get GNU Emacs work on elementary OS? - elementary OS Stack Exchange