Fedoraの変更点シリーズ
過去リリース分の記事は、以下のリンクを参照してください。
お伝えしたいこと
Fedora36のリリースノートを読んで、個人的に気になった項目をまとめます。
公式情報の見方
Fedora 36の変更点は、以下のリンクに載っています。
概要はリリースノートに、詳細情報はChange Setsのページに書いてあります。
Change Setの各サブタイトルのリンクから詳細情報に飛べるようになっています (下図赤枠部)。
詳細を知りたい時に便利なので、こちらも活用ください。
Fedora36の既知の問題は、以下にまとめられています。
他バージョンのFedoraについて知りたい場合は、以下のリンクを参照してください。
- Fedora Docs - Home → 該当バージョンを選択してRelease Notesのリンクに移動
- Fedora Wiki - Changes
Release Notes & Changes
remove-retired-packagesコマンドがインストール可能に
- Fedora 36 Release Notes - #New script for removing retired packages
- Fedora Wiki - Changes/RetiredPackages
Fedora公式リポジトリでremove-retired-packages
というパッケージの配布が開始されました。
remove-retired-packages
コマンドを使うと、その名の通りretired packagesを自動的に検出してアンインストールを提案してくれます。
retired packagesとは、Fedora公式リポジトリで配布されなくなったパッケージのことです。
retired packagesになる主な理由は、アップストリームの更新が停止したことが挙げられます。
デフォルトでは1世代前のFedoraバージョンからretired packagesを検出して、対象のパッケージに対してdnf remove
を実行します。
remove-retired-packages 34
のように引数を指定することで、検索範囲を広げてくれます。
更新が停止したパッケージを残しておくとセキュリティリスクがありますので、Fedoraをバージョンアップするたびにこのコマンドを実行することが推奨されます。
過去記事のFedoraのOSバージョンアップ手順にremove-retired-packages
の使い方を追記しましたので、詳細はこちらをご覧ください。
/etc/sysconfig/network-scripts/ifcfg-* がデフォルト無効に
- Fedora 36 Release Notes - #No ifcfg by default in new installations
- Fedora Wiki - Changes/NoIfcfgFiles
Fedora36以降、NetworkManagerはデフォルトで/etc/sysconfig/network-scripts/ifcfg-*
ファイルを一切使わなくなります。
それどころか、/etc/sysconfig/network-scripts/
フォルダ自体存在しなくなります。
追加のRPMパッケージをインストールすれば従来の構成に戻すことは可能ですが、ifcfg-*
は今後なくなっていく流れですので、それに逆行することは推奨しません。
Connectionの定義ファイルを直接見ることがない方にとっては、この変更点はほぼ影響ありません。
例えば、普段nmcli
を使っている方に取ってはあまり気にならないと思います。
もしもifcfg-*
ファイルを編集してnmcli reload
やsystemctl restart NetworkManager.service
などで設定を再読込する運用をしている方がいれば、今回の変更は重要なものになります。
少数派だと思いますが...。
では、詳細に移ります。
この先は興味のある方のみお読みください。
全体像を理解するために、今までのLinuxのネットワーク設定変更の主だった動きを追ってみます。
私の知識の偏りにより、RHELとFedoraが混在した時系列になっていますがご了承ください。
RHEL6の頃、ネットワーク設定変更といえば以下の流れが主流でした。
/etc/sysconfig/network-scripts/ifcfg-*
ファイルを編集するservice network restart
によって反映する
RHEL7以降は、NetworkManagerを常時有効化することが主流となりました。
NetworkManager利用した設定変更の方法は複数ありますが、nmcli
コマンドによる変更が最も基本的だと思います。
NetworkManagerには、/etc/NetworkManager/NetworkManager.conf
という設定ファイルがあります。
この設定ファイルにはplugins
という設定項目があり、デフォルトではコメントアウトされています。
#plugins=keyfile,ifcfg-rh
nmcli
などで変更したconnection設定はOS再起動後ももちろん残ります。
その裏では、NetworkManagerが設定内容をファイルに保存しています。
私はあまりやったことがないのですが、NetworkManagerを使っている環境においてもこの設定ファイルを書き換えて、nmcli connection reload
コマンドによって設定ファイルを再読込させることが可能です。
ファイルを書き換えるよりも、nmcli connection modify
コマンドを使うほうが一般的だと思いますが...。
さて、この「Connection設定が保存されたファイル」がどのような形式で、どういったファイルパスに保存されるかを指定するのが上述のplugins
設定です。
plugins
設定はNetworkManager.conf
で明示的に指定することが可能ですが、コメントアウトされている場合にはディストリビューション固有のデフォルト値を取ります。
pluginsの取りうる値は、man NetworkManager - #PLUGINSに書いてあります。
ここで紹介するplugins
は以下の2つのみです。
plugins | 説明 |
---|---|
keyfile |
|
ifcfg-rh |
|
ここでFedoraバージョン依存の話が出てきます。
Fedoraのバージョンが上がるにつれて、plugins
のデフォルト値は以下のように変遷しました。1
バージョン | plugins のデフォルト値 |
---|---|
Fedora32以前 | ifcfg-rh,keyfile |
Fedora33以降 | keyfile,ifcfg-rh |
ifcfg-rh,keyfile
は、「基本的にifcfg-rh
を優先するが、もしこのPluginが利用不可だった場合にはkeyfile
を使う」という意味です。
keyfile,ifcfg-rh
はその逆で、「keyfile
を優先し、次にifcfg-rh
を使う」という意味になります。
keyfile
Pluginは、NetworkManager
のRPMファイルに必ず同梱されます。
一方で、ifcfg-rh
についてはFedoraのバージョンによって以下のように構成が変わりました。
これがFedora36の差分です。
バージョン | RPMパッケージ |
---|---|
Fedora35以下 |
|
Fedora36以降 |
Fedora36以降は、ifcfg-rh
プラグインがデフォルトでインストールされません。
また、/etc/sysconfig/network-scripts/
ディレクトリもデフォルトで存在しません。
レガシーなifcfg-rh
は今後なくなっていく流れですので、今後はkeyfile
を使うことを前提に考えると良いと思います。
NetworkManager-initscripts-ifcfg-rh
RPMパッケージを導入してifcfg-rh
を使い続けるという選択肢もありますが、恐らくあまり良い選択ではありません。
このパッケージが今後提供されなくなる可能性が少なくないためです。
Bugs
Bugsの中から気になる情報を拾います。
Fedora36にアップデートした後SELinuxの不具合が出る
タイトルのとおりです。
投稿された事例では、dnf upgrade
, flatpak update
, setsebool
などのコマンドを実行した時にWarning
が出たとのことです。
回避策は、Fedoraをバージョンアップする前にsudo dnf upgrade
でパッケージを最新化しておくことです。
これはFedoraバージョンアップの公式手順にも記載されていることですので、マニュアル通りに作業していれば問題ありません。
Fedora36で事象が発生してしまったときのワークアラウンドとしては、以下が紹介されています。
- SELinux関連パッケージを再インストールする
- 1で直らなかった場合は以下を実施
サイト上で紹介されているコマンドは一例です。
環境に応じて実行するコマンドを変更する必要があると思います。
ちなみに、私がもし事象を踏んだときは以下の手順で対処すると思います。
私は事象を踏んでおらず、未検証の手順なのでご参考までに...。
まず、事象を踏んだときのコマンドを覚えておきます (sudo dnf upgrade
など)。
続いて、SELinux関連パッケージを再インストールします。
この時、再インストールすべきパッケージは以下のコマンドで洗い出します (※)。
(※) SELinuxのコアなパッケージはselinux-policy
とselinux-policy-targeted
の2つです。そして、製品に対応したSELinuxの追加ルール (Security Policy) をインストールするパッケージは、製品名-selinux
というパッケージ名であることが多いです。したがって、以下のコマンドで必要なパッケージは一通り洗い出せます
dnf list installed *selinux*
上記を実施後、事象が継続しているかを確認します (例えば、sudo dnf upgrade
を実行し、Warningが発生するかを確認します)。
事象が継続している場合、以下の手順を実施します。
- SELinuxを無効化する (参考手順)
- SELinux関連パッケージを再インストールする (上述と同じ手順)
- SELinuxのrelabelを行う (
sudo fixfiles onboot; sudo reboot
。参考: fixfiles onbootについて)
個人的には、sudo fixfiles onboot
に-F
を指定する必要はないかなと思います。
-F
を指定しても害はありませんが、通常の環境 (targeted policy) では指定してもしなくても差はありません。
まとめ
興味を持ったトピック限定ですが、Fedora36の更新点をまとめました。