この記事は openSUSE Advent Calendar 2025 の8日目です。

openSUSE 16.0 から linux-pam のバージョンが1.7.0 になりました。オリジナルサイト

https://github.com/linux-pam/linux-pam

の最新は1.7.0 なので openSUSE は最新に追いついたと言えます。

openSUSE 15.x の pam は 1.3.0 だったのでかなり新しくなります。そのためいくつか違いがあるようです。どう違っているかを調べるため、マニュアル等を見てみることにしたのですが、オリジナルのマニュアルは xml なので、コンパイルして読みやすくしてみることにしました。

環境の準備

ソースを引っ張ってきてコンパイルするだけですので、わざわざそのために新しく環境を作るのは大変です。そこで、Proxmox VE の LXC コンテナを使うことにしました。単純なコンパイルとかはこれで十分です。フットプリントも小さいですし。
そして、とてもありがたいことに、 opensuse-15.6 のテンプレートがあります。それを使えばサクッと LXC 上の環境を作ることができます。
ただ、提供されているテンプレートはとても基本的なものなので、外から入ることができません。そこで、インストール後は zypper update し、さらに openssh-server、git と nano を入れます。また作業用のユーザも作っておきます。

ソースをダウンロード

git clone https://github.com/linux-pam/linux-pam.git

でソースをダウンロードします。

meson を使う

linux-pam のコンパイルには、meson が必要です。以前は autotools だったらしいですが。このため、いろいろ入れないと動きません。最低限コンパイラが必要です。今回は gcc を使います。

% cd linux-pam

で作業ディレクトリに移り、

% meson build

で configure を作り、さらに、

% meson -C build

で一応ビルドはできるようになります。ただし出来るのはバイナリだけ。マニュアルは出てきません。マニュアル作成には結局

libxslt-tools
docbook_5
docbook5-xsl-stylesheets

を追加インストールすることで、できるようになりました。

で、build/modules 配下ににある各モジュールディレクトリ中にマニュアルが、man 形式で生成されます。

ちなみにbuildした時点では、ディスク容量は 884M しか使っていませんでした。コンテナだと本当にフットプリント小さいですね。

この記事は openSUSE Advent Calendar 2025 の1日目です。

openSUSE 15.6 を teraterm から使っているのですが、何かの拍子にカーソルが■からアンダーラインになってしまいました。teraterm 側で端末リセットしてもダメ、コンソール側で clear コマンド叩いてもダメ。視認性が悪くなって困ってしまいました。

しかし、https://infrapod.net/teraterm/manual/4.74/html/usage/tips/vim.html にヒントが。teraterm 側でカーソルのコントロールシーケンスを受ける設定に変更後、
echo -en “\033[0 q”
と入力すれば元に戻りました。

コンソールでトラブったときにお試し下さい。

Windows 10乗り換えセールに乗じて、新しいPCを購入しました。Core Ultra 258V (Lunar Lake) を搭載した dynabook XP です。一応最新、かつ、搭載機種が少ない Lunar Lake ということで、最新の Leap 16.0 でもすんなりは入りませんでした。

Tumbleweed や Slowroll であれば、大丈夫だったかもしれません。

Windows 側でのいろいろ

まずはリカバリーディスクを作ります。32GB のディスクが必要でした。手持ちのメモリーはすべて16GB以下で、なんとか発掘した32GBのmicroSDカードに書き込みました。

次に、「ディスクの管理」でWindowsのパーティションを縮小して、openSUSEをインストールする領域を確保します。細かい説明は省略します。

セキュアブートの設定変更で何度もBitLockerの回復キーを求められたので、準備はしておいたほうがよいでしょう。普通にセットアップすると回復キーはログインしたマイクロソフトアカウントに保存されるそうです。https://aka.ms/myrecoverykey で参照できます。

UEFI の設定

openSUSEのブートローダー、カーネルを署名している鍵を有効化します。まず、UEFIの設定画面で、スーパーバイザーパスワードを設定します。設定すると、追加のメニューが表示されるようになり、「3rd party CA」を Enabled に変更します。

インストール

いろいろ試した結果、なんらかの原因でオンラインリポジトリにアクセスできないようで、ネットワークインストール用のインストーラーが使えませんでした。そのため、オフライン用のISOをダウンロードして、USBメモリーに書き込んでインストールします。

さらに、通常のインストーラーは途中で固まってしまったので、fail safe モードでインストールします。原因は後で分かって、Lunar Lake の GPU (Arc Xe2) にカーネルが対応していないためです。nomodeset を起動オプションに追加すれば、通常のインストーラーも使えます。

Leap 16.0 で導入された Agama インストーラーは Web アプリケーションになっており、fail safe モードの場合は、ネットワーク越しにインストーラーにアクセスして操作を行えます。スクリーンショットはタブレットで操作している様子です。

インストールの詳細は省略しますが、Windowsを残すために、「現在のパーティションを維持する」設定にするのを忘れずに。

UEFI に openSUSEを登録する

本来であれば、インストールが完了すると、GRUB が起動するはずなのですが、Windows が起動する上に、UEFI の設定画面にも Windows しか出てきません。efibootmgr で設定を変更しても、起動順序がもとに戻されてしまうようです。おそろらく UEFI が変えてしまっているのでしょうか。

dynabook の UEFI は efi ファイルを直接指定して UEFI エントリーを追加することができます。この機能で shim.efi (セキュアブート用のプリブートローダー)を指定して起動順序を先頭にしたところ、無事に起動するようになりました。

fail safe から不要なオプションを取り除く

fail safe モードでインストールすると、起動パラメータに問題になりそうな機能を無効にするパラメータが追加されます。これを1つずつ外して、インストーラーが固まった原因を探します。

BOOT_IMAGE=/boot/vmlinuz-6.12.0-160000.5-default root=UUID=c24385d6-faf7-48c7-ade1-906659977d4d ide=nodma apm=off noresume edd=off nomodeset 3 mitigations=auto quiet security=selinux selinux=1

1つずつ外していった結果、nomodeset を外すと途中で固まってしまいました。nomodesetを残した状態でもデスクトップは起動しますが、解像度が 1920×1080 に固定されてしまい、本来は1980×1200なので、縦に間延びした状態になってしまいます。

新しいカーネルを入れる

Lunar Lake の GPU である Intel Arc Xe2 のドライバはどこかのタイミングでカーネルに取り込まれているようなので、最新のカーネルに更新します。最新のカーネルは、OBS の Kernel:stable:Backport から提供されています (記事執筆時は 6.17.3、Leap 標準は 6.12.0 + パッチ)。

以下のコマンドでリポジトリを登録し、カーネルをインストールします。

sudo zypper ar -c https://download.opensuse.org/repositories/Kernel:/stable:/Backport/16.0/Kernel:stable:Backport.repo
sudo zypper in -r Kernel_stable_Backport kernel-default

このリポジトリのカーネルは、OBS の Kernel プロジェクトの鍵で署名されています。セキュアブートが有効なPCで使うには、この鍵を Machine Owner Key (MOK) として UEFI に登録しておかないと、起動させてくれません。

OBS から公開鍵をダウンロードし:
https://build.opensuse.org/projects/Kernel:stable:Backport/signing_keys

以下のコマンドで変換し、再起動時に取り込むように指定します。

openssl x509 -in Kernel_stable_Backport_cert.pem -outform der -out cert.der
sudo mokutil --import cert.der

再起動後にMockManagerが起動し、enroll すれば完了です。

(追記)サウンドカード

残念ながら現時点では動作しません。

[    7.306875] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: hda codecs found, mask 4
[    7.306889] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: NHLT device BT(0) detected, ssp_mask 0x4
[    7.306894] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: BT link detected in NHLT tables: 0x4
[    7.306899] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: DMICs detected in NHLT tables: 2
[    7.311245] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: SOF firmware and/or topology file not found.
[    7.311966] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: Supported default profiles
[    7.311969] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: - ipc type 1 (Requested):
[    7.311971] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3:  Firmware file: intel/sof-ipc4/lnl/sof-lnl.ri
[    7.311976] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3:  Topology file: intel/sof-ipc4-tplg/sof-lnl-rt722-l0-2ch.tplg
[    7.311979] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: Check if you have 'sof-firmware' package installed.
[    7.311980] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: Optionally it can be manually downloaded from:
[    7.311982] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3:    https://github.com/thesofproject/sof-bin/
[    7.316190] [    T110] sof-audio-pci-intel-lnl 0000:00:1f.3: error: sof_probe_work failed err: -2

追記2

ホットキー、バッテリーの充電停止容量の設定も動作していません。旧機種で使われていた toshiba_acpi ではダメなようです。

告知

openSUSE Leap 16.0 のリリースイベントを開催します。新機能や新しいインストーラーについても紹介予定です。

https://opensuseja.connpass.com/event/372009

openSUSE Leap 16.0 では、提供する 32bit パッケージ削減のため、steam パッケージの提供をしないことになりました。代替手段の1つは Flatpak です。

インストール自体は簡単です。

flatpak install com.valvesoftware.Steam

切り替えるときに困るのが、これまでダウンロードしたゲームのデータです。もちろん、再ダウンロードすることもできますが、rpm パッケージ版の Steam から引き継ぐこともできます。ただし、Flatpak のセキュリティで、アクセスできるディレクトリが制限されているため、従来の Steam のディレクトリにアクセスできるようにする必要があります。こちらもやり方は簡単。

flatpak override --user --filesystem=~/.local/share/Steam com.valvesoftware.Steam

あとは Steam の設定を開き、「ストレージ」で「ドライブを追加」し、上記のパスを設定するだけです。

補足: Leap 16 で 32 bit アプリケーションを実行するには

Leap 16 では、デフォルトで32 bitアプリケーションを実行する機能が、カーネルレベルでオフになっています。Steam と配信されているゲームには 32 bit アプリが多くあります。

有効にするには、grub2-compat-ia32 パッケージをインストールするか、起動オプションに ia32_emulation=on を指定する必要があります。

参考: https://lists.opensuse.org/archives/list/users-ja@lists.opensuse.org/thread/PRGTJQYWV6GOKMNIXZ7TFWBV3QB3F2ZY


Geeko Magazine Special Edition 2025 夏

By ftake @ 2025-08-09 12:26

Geeko Magazine Special Edition 2025夏を発行します。初回の頒布は8月17日(日) に東京ビックサイトで開催されるコミックマーケットC106です。スペースは東地区Tブロック-22aです。閉会までいますので、午後からでもお越しください。

openSUSE の Proxmox LXC コンテナで、一般ユーザで ping を使うと、

ping: socktype: SOCK_RAW
ping: socket: Operation not permitted
ping: => missing cap_net_raw+p capability or setuid?

となって、動きません。しかしこれは、https://blog.ssrf.in/post/ping-does-not-require-cap-net-raw-capability/ に書いてあるように、カーネルパラメータを調整することで、通常通り使えるようになります。実際に、

# sysctl -w net.ipv4.ping_group_range="0 65534"

と入力してみたら正しく動くようになりました。
なお、/usr/bin/ping にケーパビリティの設定を
setcap cap_net_raw+p /bin/ping
ですることでも解決します。これは https://hanaokaiwa.hatenablog.jp/entry/2024/06/17/120533 に情報がありました。

Proxmox には openSUSE のLXCコンテナイメージが用意されています。そのイメージを使って openSUSE をインストールしたときには、 aaa_base-extras パッケージを入れてください。そうしないと、既定で用意されているはずの bash の alias などが使えません。
最初、openSUSE LXC コンテナにログインしたとき、ll とかの alias コマンドが使えないのに気がつきました。.bashrc が未設定なのかなと思ったのですが、.bash にも .profile にも alias コマンドの定義がありません。/etc 配下のファイルも同じでした。実際に使える、openSUSE の環境で見てみても同じです。
調べた結果、/etc/profile.d/ 配下にalias 等の定義があったのでした。が、それらは aaa_base-extras でインストールされているのですね。LXC コンテナイメージには aaa_base-extras が入っていなかったために、alias 等の定義が抜けてしまったのでした。
普段特に気にせず使っている alias 定義のコマンド、実は親切にも openSUSE があらかじめ用意していた物だったというのに気がついた次第です。