alpでfirewalldをpodmanで動かしてみる

By Syuta Hashimoto @ 2023-12-12 22:22

ALP (Adaptive Linux Platform)は、SUSEとopenSUSEで開発している次世代OSのベースです。イミュータブルで軽量な仕様となっています。

この冬発売のGeeko MagazineにインストールとCockpitというブラウザから管理できるアプリの体験記を書いていますので、ぜひ皆さん試してみてください。

さて、今日は公式ドキュメントにある、firewolldをpodmanで動かす手順をやってみようと思います。

まず、alpにログインし、alp用のfirewalldのコンテナを特定します。

# podman search firewalld

そうすると、ドキュメントにも乗っているalp用ワークロードが搭載された registry.opensuse.org/suse/alp/workloads/tumbleweed_images/suse/alp/workloads/firewalld のイメージが見つかります。

次に、手順の通り、alpからパッケージとしてのfirewalldを削除します。alpはイミュータブルなため、通常のzypperコマンドではなく、専用のtransactional-updateコマンドで暫定的な削除を行い、リブートすることでそれがシステムに適用されます。

# transactional-update pkg remove firewalld
# reboot

では、イメージのワークロードを実行します。

# podman container runlabel install \
registry.opensuse.org/suse/alp/workloads/tumbleweed_images/suse/alp/workloads/firewalld

他のイメージの実行時にも触れましたが、podmanは実行コマンドにラベルを貼ることができ、runlabel コマンドでそのラベルを指定して実行することができます。一連のalpワークロード用イメージは、installといったラベルにホストの設定などの処理を持たせています。

ドキュメントによると、firewalldはpolkitやsystemdなどの準備をしてくれているようです。

そう言えば、冒頭にdbusとpolkitの設定ファイルが必要、と書いてあったのですが、特に用意はせず、、、さて、どうなるでしょうか。

インストールが終わったので実行します。

# podman container runlabel run \
registry.opensuse.org/suse/alp/workloads/tumbleweed_images/suse/alp/workloads/firewalld

コンテナが実行されました。ではコンテナ経由でfirewall-cmdを実行してみます。

# podman exec firewalld firewall-cmd --list-all-zones

すると、zoneが表示され、firewall-cmdが実行可能なことがわかりました。

なお、firewalldのコンテナはホストを制御する関係上、privilegedで動いています。また、podmanを使っている場合、systemdとも統合されていて、systemctlコマンドで制御することが可能です。例えば、コンテナの起動は以下のコマンドで代替できます。

# systemctl start firewalld

なお、firewalldやfirewall-cmdのマニュアルをコンテナ経由で見る方法もドキュメントに書かれていました。

firewalldならば、

# podman run -i --rm \
registry.opensuse.org/suse/alp/workloads/tumbleweed_images/suse/alp/workloads/firewalld \
man firewalld

firewall-cmdならば、

# podman run -i --rm \
registry.opensuse.org/suse/alp/workloads/tumbleweed_images/suse/alp/workloads/firewalld \
man firewall-cmd

で参照可能です。 manコマンドをコンテナの中で呼び出しているわけですね。

個人的に、firewalldをコンテナで実行する利点欠点が見えていない所があり、そのあたりも追って調査考察してみたいと思います。

この投稿は openSUSE Advent Calendar の 11日目です。そろそろ折返しです。

まれにスクリーンロックが固まってしまい、パスワードの入力画面が表示されいことがあります。このようなときに、ロックを解除する方法があります。使用するのは systemd に含まれているコマンド、loginctl です。

ロック画面が固まってしまったら、まず行うのが仮想コンソールでのログインです。Ctrl+Alt+F1を押すとログインプロンプトが表示されるので、ユーザー名とパスワードを入力してログインしてください。

つぎに、loginctl を実行すると、セッションの一覧が表示されます。

$ loginctl
SESSION  UID USER  SEAT  TTY
     22 1000 geeko seat0 tty1
      3 1000 geeko seat0 

2 sessions listed.

セッション 22 は、TTY が tty1 なので、現在操作している仮想コンソールです。固まっているのはセッション 3 です。

ロックを解除するには、以下のコマンドを実行します:

$ loginctl unlock-session 3

これでロックが解除できました。操作している仮想コンソールを Ctrl+D で抜けて、Ctrl+Alt+F7 を押すと、デスクトップに戻ることができます。

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

前回の記事 で、omegat-textra-plugin の最新版(v2022.2.2)が動かない、と詳解したのですが、実は、omegat-textra-plugin の公式サイトは github から codeberg に引っ越していたのでした。そちらの方では引き続き開発が行われていて、最新版は v2023.2.0 になっていたのでした。このバージョンをインストールすると正常に動きました。

coreberg への引越は、少なくとも2022年7月以降と思われます。そのため、各所に散在している omegat-textra-plugin の説明資料には古い開発サイトへのリンクしかないので、新しいサイトがあることに気がつきませんでした。

この記事は openSUSE Advent Calendar 2023 の5日目です。

openSUSE 15.6 にむけて、packaeges-i18n の翻訳を始めています。翻訳は Weblate を使うのですが、対話的にWebベースで作業をすると結構手間がかかります。量が多い場合は、翻訳対象データをダウンロードし、ローカルで作業した方が速くなります。
ローカルで作業するときには、オープンソースの翻訳支援ツール OmegaT を使うのが便利です。さらに、NICT が開発した機械翻訳システム textra を併用すると翻訳効率が大幅に向上します。そのために、OmegaT 用のプラグインも用意されています。

openSUSE の packages-i10n の翻訳は、しばらく前から上記の組み合わせで作業を行っていました。Weblateから未翻訳分の行を gettext po 形式でダウンロードして OmegaT で翻訳、仕上がったら po ファイルをアップロードすれば作業は終わります。textra がかなりきれいに訳してくれるので、1日あれば数百行の翻訳をこなす事ができます。今これを書いている時点でも、カテゴリ x (先頭が x で始まるパッケージ群) の追加翻訳数百行をだいたい1日で終えています。

しかし、環境を最新のWindows11にするため、OmegaTとプラグインも最新にした所、動作エラーとなり、原因を捜すのに苦労しました。結論から言うと、OmegaT用のプラグイン最新版(v2022.2.2) では Windows10/11 環境での OmegaT では動作しません。一つ前のバージョン v2022.2.1 では動きます。もしも、他の翻訳に OmegaT+textra を使う事を考えているのであれば注意してください。

ALPでYaSTを使ってみる (X版)

By Syuta Hashimoto @ 2023-12-04 08:00

ALP (Adaptive Linux Platform)は、SUSEとopenSUSEで開発している次世代OSのベースです。イミュータブルで軽量な仕様となっています。

この冬発売のGeeko MagazineにインストールとCockpitというブラウザから管理できるアプリの体験記を書いていますので、ぜひ皆さん試してみてください。

さて、今日は昨日の続きでALPの上でYaSTを動かしてみます。今日はX版です。方法はこちらに書いてあるのでその通り行っていきます。

X版の画面表示は、SSHのXフォワーディングでSSH接続元に表示する方法です。

まず、ALPにSSH Xフォワーディング用のパッケージを入れます。

ALPはイミュータブルのため、通常のzypperコマンドではなく、transactional-updateコマンドでパッケージを一時領域にインストールし、その後、リブートして有効化します。

# transactional-update pkg install xauth && reboot

次にALPにログインするときに、Xフォワードのオプションをつけます。

ssh -X syuta@192.168.122.114

yastはroot権限が必要なため、suを行います。

su -

そして、実行するコンテナを特定します。

# podman search yast-mgmt-qt

ドキュメントにあるイメージを見つけます。

registry.opensuse.org/suse/alp/workloads/tumbleweed_containerfiles/suse/alp/workloads/yast-mgmt-qt

ではこのイメージを実行しましょう。完了するとSSH接続元にYaSTの画面が表示されます。

# podman container runlabel run registry.opensuse.org/suse/alp/workloads/tumbleweed_containerfiles/suse/alp/workloads/yast-mgmt-qt

無事表示されました。各メニューへもアクセスできます。またALPの制御が楽になりましたね。

背景のコンソールがALPにログインしている状態、手前のYaSTがホストPCに表示されているウィンドウです

openSUSE 15.5 で試したのですが、GlusterFS の中の glusterd は peer との通信にデフォルトで IPv6 で通信しています。 /etc/hosts に IPv4 アドレスでホスト名を指定してもそこを見ません。
IPv4 で通信させるためには、 /etc/glusterfs/glsuterd.vol に

option transport.listen-backlog 1024

と言う行を追加する必要があります。

openSUSE にログインする時は、ほとんどWindows マシンから Teraterm を使っています。編集はほとんど emacs です。しかし、ある日から突然、emacs の編集ができなくなってしまいました。 Ctrl+Space を入力しても set-mark-command が聞かなくなってしまったのです。
いろいろ調べて見たら原因が分かりました。最近バージョンアップした powertoys 0.70.0 が Ctrl+Space を横取りしていたのですね。

幸いにも、このキーバインディングは変更可能でした。そこで、まず使わないであろう、Windows+Space に変更することで難を逃れました。