openSUSE Leap 16.0をインストール #10 - SELinux2026/01/04 08:40

長期休暇だったので、セキュリティモジュールをAppArmorからSELinuxへ移行したが、苦戦した。

今回の教訓

1. 素性の良いソフトを使い、標準ポリシーに任せる

  • モダンなMTAとしてOpenSMTPDを使っていたが、SELinuxから激しくdenyされたので、 標準ポリシーとの親和性が高いPostfixに移行した。
  • Webサーバは、httpd_tの枠組みの中で 各リソースに適切なラベルを貼り、最小権限を設定した。

2. Leapの作り込みが甘く、過度の期待は禁物

  • freshclamが書き込む「ログへの書き込み権限」がなかった。
  • clamdではユーザのホームディレクトリをスキャンしたら拒否された。

3. 対応してないソフトの保護は大変

  • 標準ポリシーが存在しないため、プロセスドメインからデータ領域のラベルまで、副操縦士に相談しながらすべて手作業で定義した。
  • 当初は一日に数百件ものアクセス拒否に対応することになり、心が折れそうになった。Auditログは難解で、解析を副操縦士に助けてもらった。

4. バックアップ時にはSELinuxラベルの保持を忘れずに

  • Wikiの操作を間違えてtarファイルからリストアしたら、ラベルが変わってサービスがファイルを読めずエラーになった。

と個人が運用するサーバ管理には、SELinuxは導入ハードルが高すぎると思った。

それから、libapparmorのパッケージを削除するとphp-fpmが自動削除されるのでwiki利用者は注意が必要です。

本日の衛星: RS-44で交信。ArcticSat-1, UmKA-1のSSTVを受像。

openSUSE Leap 16.0をインストール #9 - QEMU2025/12/26 19:29

Leap 16.0ではVirtualBoxが利用できない状態なのでQEMUに移行した。

VirtualBoxのVDI形式のディスクをQCOW2形式に変換して、仮想NAT環境でOSが正常に立ち上がることを確認。

VMをLAN内のセグメントに組み込むため、物理NIC(eth0)をブリッジ(br0)に組み込んだ。 libvirt XML定義ファイルは副操縦士に作成してもらい、virsh defineでVMを登録したが、 シャットダウンが正常に機能しなかったので、ACPIを明示的に有効にした。 また最初に使ったマシンタイプ「i440fx」はVNC解像度に制限があったので、 最新の「q35」に構成変更してます。

仮想マシンの操作はCockpitから操作すれば簡単!だった。実行/シャットダウンだけではなく、コンソール操作やVMのインポート,共有ディレクトリーの設定などの管理もできて便利です。

本日の衛星: ArcticSat-1を受像。

openBCMユニットファイルのモダナイズ2025/12/23 13:28

bcmの起動には、公式マニュアルにある"昔ながらのinitスクリプト"をsystemdで動かすユニットファイルを使用してきた。 中身はスクリプト/bcm/startbcmを起動するだけと非常にシンプルだったので、systemdの機能をフル活用したユニットファイルに変更してみた。

  • bcm本体を直接起動+実行時のカレントディレクトリを固定して、startbcmを廃止
  • ログはjournalctlに統合(/dev/tty8を使わない)
  • 「ネットが本当に使える状態」まで待つnetwork-online.targetに変更して、起動順序を保証
  • プロセスが落ちたら自動再起動(Restart=on-failure)を追加

本日の衛星: ArcticSat-1を受像。あのNGHamプロトコルを採用したFloripaSat-2A/2Bは打ち上げ失敗で残念。

gr-satellitesを仮想環境にインストール2025/12/10 16:48

Pi4(Bookworm)で、新たにgr-satellites 5.8.0用のPython仮想環境を作成した。 以前に設定したgrsat 5.7.0環境で使うPYTHONPATHが設定されたままだったので、新仮想環境内でpip installしてないのにgrsat 5.7.0環境のライブラリが混ざって見えた。 これは、仮想環境の独立性を崩すPYTHONPATHの落とし穴だった。

環境変数PYHONPATHをリセットし、 システムにインストール済みのパッケージ(apt経由のGNU Radioなど)が新規作成する仮想環境から見えるようにし、 cmake時にインストール先を仮想環境に指定・pythonバインディング生成時に新仮想環境内のpythonを使用するよう指定して、makeし直した (その手順はgistに記載)。

これによりPYTHONPATH+LD_LIBRARY_PATHの指定が不要となり、仮想環境内でのライブラリの依存関係が適切になったハズ(だと思いたい)。

いまは、この新しいgrsat環境がsatnogs-client 2.1で問題なく動作するかを確認してます。

本日の衛星:TUBINをデコード。Mobitex-NX framingをGRC 3.10な環境で処理できて感動してます。

openSUSE Leap 16.0をインストール #82025/12/04 15:47

Leap 16.0にバージョンアップしてから2ヶ月経ったが、調整作業が細々と続いてます。

  • パッケージ更新はCockpitから不定期にマニュアル操作で実施するルーチンが身についた。
  • ネットワーク管理ツールをwickedからNetworkManagerに切り替えた。CockpitからもGUIで操作できるようになった。
  • IMEはkkcからAnthyに乗り換えた。中点の入力に難儀したので。
  • php-fpmが不定期に停止すると思ったら、自動起動の有効化を忘れてた💦。

本日の衛星: ArcticSat-1のSSTVを受像。