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

systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、bluetoothctl を紹介します。

コマンド名: bluetoothctl
パッケージ: bluez-5.55-150300.3.11.1.x86_64
動作: ○

詳細:
bluetooth の制御をするためのコマンドです。初っ端からですが、systemd とは無関係です。動作には、bluethoothd が必要です。
手持ちの、openSUSE が動く物理マシンでは、bluetooth 機能が標準で入っていなかったので、USB 接続の、バッファローの USB アダプタを使って検証してみました。

まずは、systemd で bluetoothd を起動しておきます。
続いて、USB アダプタを差し込み、bluetoothctl を起動します。
起動すると、プロンプトが表示されるので、デバイスのスキャンをするため、スキャンコマンドを入力すると、エラーになってしまいます。

# bluetoothctl
Agent registered
[CHG] Controller 00:1B:DC:F3:8B:51 Pairable: yes
[bluetooth]# scan on
Failed to start discovery: org.bluez.Error.NotReady
[bluetooth]#

これは、USB Bluetooth アダプタを差し込んだだけでは、まだ機能が動いていないためです。まずは、Bluetooth アダプタの機能を有効にするため、power on と入力します。すると、今度は見えるようになりました。

# power on
[CHG] Controller 00:1B:DC:F3:8B:51 Class: 0x00000104
Changing power on succeeded
[CHG] Controller 00:1B:DC:F3:8B:51 Powered: yes
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1B:DC:F3:8B:51 Discovering: yes
[NEW] Device 77:6C:E6:94:2A:38 77-6C-E6-94-2A-38
[NEW] Device 7E:4D:FE:CB:CC:D9 7E-4D-FE-CB-CC-D9
[CHG] Device 77:6C:E6:94:2A:38 RSSI: -73
[NEW] Device 4C:FD:32:93:41:95 4C-FD-32-93-41-95
[CHG] Device 77:6C:E6:94:2A:38 RSSI: -65
[NEW] Device 46:D9:DC:39:CC:E8 46-D9-DC-39-CC-E8
[NEW] Device 8C:DE:52:B8:AB:EA SRS-X33
[CHG] Device 77:6C:E6:94:2A:38 RSSI: -73
[CHG] Device 77:6C:E6:94:2A:38 RSSI: -65
[bluetooth]#

ここで、pair コマンドを入力すると

# pair 8C:DE:52:B8:AB:EA
Attempting to pair with 8C:DE:52:B8:AB:EA
[CHG] Device 8C:DE:52:B8:AB:EA Connected: yes
[CHG] Device 8C:DE:52:B8:AB:EA Modalias: bluetooth:v0039p1582d2110
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 8C:DE:52:B8:AB:EA ServicesResolved: yes
[CHG] Device 8C:DE:52:B8:AB:EA Paired: yes
Pairing successful
[bluetooth]#

となり、ペアリングが出来るようになりました。

この先は試してみていませんが、デバイスの削除とか情報の取得とか色々できるようです。
GUI な環境が無い状況での bluetooth 利用には使えると思います。

tftp を使う時に xinetd は不要だった

By ribbon @ 2022-11-14 09:37

ネットワークブートなどを行う時、tftp を起動させるために xinetd を使うことがあります。Cent OSだとバージョン7くらいまではそうなってました。しかし、openSUSE Leap 15.4 の /etc/xinetd.d を見ると、tftp の記述がありません。いろいろ調べて見ると、

systemctl enable tftp
systemctl start tftp

で出来てしまうのですね。
サービスの類いはすべて systemd で、という流れなのでしょう。
15.4 では、/etc/xinetd.d/ には、chargen,daytime,discard,echor,servers,services,time しか残っていませんでした。

はじめに

先日、C100 と Geeko Magazine の告知を出した際、geeko.jp のウェブサーバーが落ちてしまいました。普段は全然問題ないのですが、512 MB の VPS のため、ほんの少しアクセスが増えるとメモリーを使い果たしてしまうようです。

openSUSE の Web サーバーは 2009 年頃から使い続けていることもあって Apache で、しかも MPM (Multi-processing modules) は prefork です。複数のアクセスに対してプロセスを作成して対応するので、メモリー使用量やプロセスの生成コストが課題です。設定変更前のメモリー使用量を見ると次のような状態で、1プロセスあたり 30 MB 前後使っています。とりあえずの対策としては、プロセスの最大数を抑えればよいのですが、メモリー使用量削減のため、これを機に MPM を event にすることにしました。

# smem -U wwwrun -k
  PID User     Command                         Swap      USS      PSS      RSS 
26053 wwwrun   /usr/sbin/httpd-prefork -DS    24.2M   576.0K     1.3M     9.5M 
23952 wwwrun   /usr/sbin/httpd-prefork -DS    14.5M    20.8M    21.7M    30.4M 
26051 wwwrun   /usr/sbin/httpd-prefork -DS     5.6M    23.5M    24.4M    32.9M 
23953 wwwrun   /usr/sbin/httpd-prefork -DS     6.3M    23.7M    24.4M    31.8M 
 2023 wwwrun   /usr/sbin/httpd-prefork -DS     5.4M    24.0M    24.8M    32.7M 
 7054 wwwrun   /usr/sbin/httpd-prefork -DS     7.5M    26.0M    26.8M    35.0M 
23955 wwwrun   /usr/sbin/httpd-prefork -DS     5.0M    32.6M    33.6M    42.2M 
23956 wwwrun   /usr/sbin/httpd-prefork -DS     5.5M    34.2M    34.9M    43.1M 
23959 wwwrun   /usr/sbin/httpd-prefork -DS     5.5M    34.4M    35.3M    43.8M 
 2022 wwwrun   /usr/sbin/httpd-prefork -DS     6.0M    34.7M    35.6M    43.6M

少し前までの Apache の MPM といえば worker で、スレッドを使って並列処理をします。私の知識もここで止まっていました。event は新しい MPM で、今どきのイベント駆動で実装されています。ワーカースレッド内で受信待ちやソケット書き込み待ちをせずに、パケット到着や書き込み可能になったイベントを受けてスレッドに処理を割り当てるようです。

MPM を prefork から event にするために必要なことは、次の通りです。

  • event MPM をインストールする
  • PHP を mod_php による実行から mod_proxy_fcgi + php_fpm (FastCGI) による実行に変える
  • php_fpm で Web アプリを実行できるように AppArmor のプロファイルを設定する

結構面倒くさいですね。

openSUSE のバージョンは Leap 15.4 です。

event MPM をインストールする

これは簡単で apache2-event をインストールするだけです。apache2-prefork もインストールされいる環境では、apache2-event が優先されます。

zypper in apache2-event

mod_proxy_fcgi + php_fpm への変更

これまでは mod_php でこの Word Press などを実行してきました。mod_php の場合、PHP のスクリプトは Apache のプロセスで実行されていました。マルチスレッドに対応していない mod_php は event や worker では使用できません。php_fpm で PHP を別プロセスで起動しておき、リクエスト時にこの PHP プロセスに処理を依頼する形に変更する必要があります。

セットアップ手順は以下の通りです。php7-fpm をインストールして、パッケージに含まれるデフォルトの設定を有効化します。

zypper in php7-fpm

cd /etc/php7/fpm
mv php-fpm.conf.default php-fpm.conf
cd php-fpm.d
mv www.conf.default www.conf

systemctl enable php-fpm
systemctl start php-fpm

Apache 側の設定を変えます。openSUSE では Apache で使用するモジュールは /etc/sysconfig/apache2 で有効化します。php7 を削除し、proxy と proxy_fcgi を追加します。

APACHE_MODULES="(省略)proxy proxy_fcgi"

次に、php ファイルのハンドリングを mod_php から php_fpm に切り替えます。/etc/apache2/conf.d/ に以下のファイルを作成します。openSUSE のデフォルト設定では php7_fpm は 9000 で待ち受けていますので、php へのアクセスを 127.0.0.1:9000 に転送するようにします。

ProxyErrorOverride on は php_fpm がエラーを返した場合に、php_fpm のエラーメッセージをそのままブラウザに返すのではなく、Apache 側で設定したエラー画面を表示するための設定です。


SetHandler "proxy:fcgi://127.0.0.1:9000"


SetHandler application/x-httpd-php-source

DirectoryIndex index.php4
DirectoryIndex index.php5
DirectoryIndex index.php7
DirectoryIndex index.php
ProxyErrorOverride on

AppArmor の設定変更

openSUSE Leap 15.4 では php_fpm 用の AppArmor プロファイルが含まれており、php_fpm が行える操作に制限がかかっています。そのため、何も設定しないと、php-fpm が php ファイルにアクセスできません。/var/log/audit/ に次のようなログが出力され、403 が返ります。

type=AVC msg=audit(1661003085.840:89050): apparmor="DENIED" operation="open" profile="php-fpm" name="/srv/www/htdocs/index.php" pid=20329 comm="php-fpm" requested_mask="r" denied_mask="r" fsuid=498 ouid=498

php_fpm のプロファイルを調整するには、/etc/apparmor.d/php-fpm.d/ に次のような設定ファイルを作成し、php-fpm がアクセスできるディレクトリを設定します。

  # tmp へのアクセス
  include 
  # htdocs への読み書き
  # 読み取りだけであれば  もあり
  owner /srv/www/htdocs/** rw,

結果

設定後にメモリー使用量を見てみます。

  PID User     Command                         Swap      USS      PSS      RSS
29193 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K   804.0K     1.3M     4.9M
29195 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     1.6M     2.8M    11.0M
29194 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     1.6M     2.8M    11.1M
29196 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     2.2M     3.4M    11.6M
29278 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     3.2M     4.4M    12.7M
29094 wwwrun   php-fpm: pool www             208.0K    25.3M    30.3M    47.1M
29306 wwwrun   php-fpm: pool www             208.0K    33.8M    38.4M    54.5M
29337 wwwrun   php-fpm: pool www             208.0K    35.6M    39.5M    54.0M

php-fpm のプロセスが増えましたが、Apache のプロセスのメモリー使用量はぐっと小さくなりました。Apache と php-fpm の初期プロセス数、最大プロセス数はこれから調整したいと思います。

Geeko Magazine 2022 夏

By ftake @ 2022-08-07 21:45

今年の夏も Geeko Magazine を発行します。最初の頒布はコミックマーケット C100 1日目 8月13日(土)西2ホール す19b です。事前に入場券の購入が必要になりますので、ご注意ください。

openSUSE.Asia Summit 2022 ロゴ募集

By Syuta Hashimoto @ 2022-07-19 21:15

※訳者コメント:去年のロゴはHaruo Yoshino さんの作品が採用されました。ロゴ応募はサミットに参加する形の一つだと思いますので、ぜひご応募ください。

私達はopenSUSE.Asia Summit 2022のロゴコンテストを開始します。ロゴはサミットの成功に必要不可欠な要素です。ご存知の通り、過去のopenSUSE.Asia Summitには、サミットが開催された地域・コミュニティを反映したユニークなロゴがあります。今年も前例に習って今年のサミットに相応しいロゴを集めるためにロゴコンテストを開催します。注意して頂きたいこととして、今年のサミットは2つのパートにわかれています。1つはバーチャルオンラインカンファレンスで行うアジアサミットメイントラック、もう1つは各地域で開催されるローカルパートです。このロゴはアジアサミットメイントラック用になります。ですので、このロゴはアジアを表現するものとなります。

コンテストは現在開催されていて、2022年7月23日が締切となります。最優秀作品の作者には運営委員から感謝の気持ちとして「Geeko Mystery Box(なにが入っているかはお楽しみ)」を送らせて頂きます。

締切:2022年7月23日
最優秀作品発表:8月14日の週

ロゴコンテスト募集要項:

  • ロゴは CC-BY-SA 4.0 ライセンスに準拠する事とします。また、openSUSE.Asia Summit 2018においてあなたの作品をロゴとして使用する場合、帰属【attribution(BY)-著作権者の表示】なく使用出来る事とします。帰属(著作権者の表示)はサミットのウェブサイトで行います。
  • ロゴはオリジナルである事とし、第三者の制作物を含む等、上記の著作権者の表示の特別条項付きCC-BY-SA 4.0 に抵触してはいけません。
  • モノクロとカラーフォーマットの両方を必ず提出してください。
  • SVGフォーマットで提出してください。
  • デザインはアジアのopenSUSEコミュニティを反映するものにしてください。
  • ロゴは以下の項目を避けるよう、厳重な注意を払って下さい。
    • 何れかのブランド名や商標、及びそれらを連想させるもの
    • 不適切な表現、攻撃的な表現、ヘイト表現、苦痛を与える表現、中傷的な表現、他人の名誉を毀損するような表現
    • 性別を限定した表現、および性別に対して挑発的な表現
    • 暴力や武器を連想させるような表現
    • アルコール、煙草、ドラッグの使用を連想させるような表現
    • 人種、ジェンダー、信仰、国籍、身体障害、性的指向、年齢に関する差別表現
    • グループや個人に対する、偏見、人種差別、中傷、及び何らかの害を与えるような表現
    • 宗教、信条、国家主義を連想させるような表現
  • ロゴは、「openSUSEプロジェクトトレードマークガイドライン」に従ってください。
  • ブランディングガイドライン はロゴのデザインに役立ちます(オプション)。

提出方法:以下の内容と共にデザインをopensuseasia-summit@googlegroups.comに送信してください

  • 件名:openSUSE.Asia Summit 2022 Logo Design – [お名前]
  • 連絡先のお名前とメールアドレス
  • 設計の理念に関する文書(txtまたはpdf)
  • SVGフォーマットのベクターファイル(SVGフォーマットであることを確認してください)
  • 添付のビットマップ サイズ:256×256 px以上、PNGフォーマット
  • ファイルサイズ 512 KB未満

openSUSE.Asia Summit 実行委員は、ロゴがすべての要件を満たしていることを条件として、ロゴを決定します。最終的な決定はopenSUSE.Asia Summit 実行委員が行い、それは最高スコアのデザインではない場合もあります。作成者には、Inkscape を使用することをお勧めします。Inkscapeは、あらゆる種類のデザインのための、強力でフリーでオープンソースのベクトルグラフィックツールです。

openSUSE.Asia Summit 2022 発表提案募集

By Syuta Hashimoto @ 2022-07-19 21:00

※訳者注:セッションは英語での発表となります。また、英語版の告知より数日経っています。

本日、openSUSE.Asia Summit 2022 メイントラックの発表提案募集を告知できることをうれしく思います。openSUSE.Asia Summitの実行委員では、様々な活動背景や様々なオープンソースソフトウェアの推進者のスピーカーを探しています。 openSUSE.Asia Summitは毎年アジアでオープンソースソフトウェアを使うことを推進するために企画されており、openSUSEコミュニティ(コントリビューターとユーザーの両方)にその価値を認められているイベントです。昨年のインドチームによって開催されたバーチャルサミットに引き続き、8回目の開催となる openSUSE.Asia Summit 2022 は openSUSEオンラインボランティアチームによって、9月末に開催されます。過去のAsia Summitはインドネシア、中国、台湾、日本、韓国、インドなどから多くの方が参加しました。

今年のイベントは2パートから成ります:Asia Summit メイントラックと、それぞれのアジアの国/地域で開催される、オンラインやオフラインのローカルパートです。今回の募集はAsia Summitのメイントラックになります。Asia Summitメイントラックはオンラインカンファレンスツールを使ったオンラインでの開催のみとなります。トークは基本的にライブ中継になります。しかし、あらかじめ録画しておいたビデオを流す事も出来ます。

トピック

openSUSE.Asia Summit 2022は、openSUSEに関連するトピックや、次のようなトピックを募集しますークラウド、仮想化、コンテナ、コンテナオーケストレーション、Linuxデスクトップ環境やソフトウェアなど。なぜならopenSUSEは様々なFLOSSプロダクトを集めたものだからです。トピックの例は次のようなものですが、これらに限らなくても大丈夫です。

  • openSUSE(Leap、Tumbleweed、Open Build Service、openQA、YaST)
  • openSUSE Kubic & MicroOS、クラウド、仮想化、コンテテやコンテナオーケストレーション
  • 組み込みやIoT
  • セキュリティ(アクセス制御、暗号化、脆弱性マネジメント)
  • デスクトップ環境やソフトウェア(GNOME、KDE、XFCE)
  • オフィススイート、グラフィックスソフト、マルチメディア(LibreOffice、Calligra、GIMP、Inkscape)
  • 多言語対応(インプットメソッド、翻訳)
  • openSUSEで動いているその他のソフトウェア

技術的では無いトピックを歓迎していることにも注目してください。例えば以下のようなトピックです。

  • FLOSS技術の解説
  • 開発、品質保証、翻訳
  • Tips & Tricks、体験談(成功、失敗問わず)、ベストプラクティス
  • マーケティング、コミュニティマネジメント
  • 教育

セッションの種類

これらの2種類の発表提案を募集しています。

  • プレゼンテーションを使った、基調講演かロングトーク(30分+Q&A)
  • プレゼンテーション有り/無しどちらでもよしとする、ショートトーク(15分+Q&A)

オンラインセッションは聞き手が注意力を保つのが難しい為、トークは短く魅力的なものを心がけて下さい。

スケジュール

  • 締切:2022年7月31日
  • 採用通知:8月15日週
  • カンファレンス:
    • 9/30日(金) 10:00 UTC – 15:00 UTC(日本時間 19:00 – 24:00)
    • 10/1日(土) 4:00 UTC – 7:00 UTC(日本時間 13:00 – 16:00)

発表提案の登録方法

イベントページにご登録下さい。

  • 発表提案は英語で書いて下さい。また、適切なタイトルと共に、150〜500字の長さでお願いします。
  • 発表とスライドは英語でお願いします。
  • 登録前にスペルチェックや文法チェックを行うようお願いします。 LibreOffice Extensions Languagetool や、grammarly が使えます。
  • プロフィールの経歴も評価対象になります。ご自身の活動状態・背景を忘れずに記載して下さい。
  • openSUSE Conference code of Conduct に従って下さい。発表提案の登録成功後、詳細を入力するフォームのリンクが送付されます。

プロポーザル作成ガイド

発表提案がトピックに関するものや関連するものであることを明確にしてください

例えば、セキュリティやデスクトップアプリケーションに関するトークの場合、アプリケーションのインストールから始まると良いでしょう。

発表提案がそうである理由を含めて下さい

理由として次のようなものが含まれるでしょう

  • アプリケーション/技術/ソリューションに必要とされている
  • 提案されているソリューションの機能の展望
  • 想定聴者(初心者、貢献者)の学習

もし発表提案の書き方やプレゼンテーションの準備に不明な所や確認したい所があれば、お気軽にソーシャルメディアでローカルチームに連絡したり、運営委員に質問したりしてください。

運営委員連絡先

プログラムに関するご質問などは次のメールアドレスにお問い合わせ下さい。
opensuseasia-summit@googlegroups.com

それでは、openSUSE.Asia Summit 2022でお会いできることを楽しみにしています。

kkc.el はどんなものなのか

By ribbon @ 2022-06-19 22:36

Emacs で日本語テキストを入力する場合、通常は Windows 上のかな漢字変換システムを使っています(Teraterm からつなぎ込んで作業をすることが大半なので)。ATOK 、Google日本語入力、MS-IME(どうしても、という場合)のどれかを使うのですが、コンソールのみで漢字変換が出来ればもう少し楽になります。
色々調べたところ、Ctrl+\ でかな漢字変換モードになる事が分かりました。かな漢字変換モードになると、Emacs 内部でかな漢字変換が出来るようになります。しかし、かな漢字変換のための変換サーバやライブラリをインストールした覚えはありません。しかも、その手のソフトを全く入れていない、FreeBSD でもかな漢字変換モードが動いてしまうのですね。そこで、一体どうやっているのかを探ってみました。

Ctrl+\ でかな漢字変換モードになると、kkc-なんとか というコマンドが使えるようになります。ただ、一覧を出してみても、バージョン情報等はでてきませんでした。そこで、emacs のソースを展開し、kkc というキーワードで展開してみると、 kkc.el というのが見つかりました。中身をみると、この emacs lisp 自体でかな漢字変換作業をしているようです。コメント欄には AIST が作ったと書いてありました。AIST から GNU に寄贈され、GNU Emacs の一部になっていることのようです。ソースは

http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/international/kinsoku.el?h=emacs-28

にありました。

確かに、他のかな漢字変換システムを使わなくとも、Emacs だけでかな漢字変換作業が出来るのは便利なのですが、機能がちょっと低すぎます。最低限のことしか出来ません。また、カスタマイズも出来ません。どちらかというと、他のかな漢字変換システムが動いていないときの非常用、という感じがします。