#norelated Plamo Linuxの作成者、こじまみつひろさんの日記です。
<<
2024.10
>>
[diary/Kojima] |
||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
・kernel 6.1.2 with LLVM
現状(6.1.x)ではrust回りのドキュメントとかKconfigあたりの整備が始まってる程度なものの、 今後、rustのコードがカーネルに採用されるようになったとのことで、泥縄でrust回りの勉強。
どうやら rust のコードを使うには、LLVM が必須らしいので、とりあえず最近のカーネルを LLVM でビルドしてみた。
もっとも、最近のカーネルではLLVMにも十分対応しているので、ビルド時に make -j8 LLVM=1 くらいでビルドできる模様。 細かなビルドオプションは詰めきれてないけど、とりあえず5.15.82あたりの設定を流用した .config を使った感じ、 フルビルドに約50分くらいかかった。
$ uname -a Linux pl80a2 6.1.2-plamo64 #1 SMP PREEMPT_DYNAMIC Tue Jan 3 10:19:42 JST 2023 x86_64 x86_64 x86_64 GNU/Linux
/proc/config.gz には、ビルドしたコンパイラ(LLVM)の情報も記録されている模様
$ zcat /proc/config.gz | head -20 # # Automatically generated file; DO NOT EDIT. # Linux/x86 6.1.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="clang version 13.0.1" CONFIG_GCC_VERSION=0 CONFIG_CC_IS_CLANG=y CONFIG_CLANG_VERSION=130001 CONFIG_AS_IS_LLVM=y CONFIG_AS_VERSION=130001 CONFIG_LD_VERSION=0 CONFIG_LD_IS_LLD=y CONFIG_LLD_VERSION=130001 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y
6.1.2には実際のrustのコードはまだ入っていないみたいだけど、ドキュメントを見てると NVMe あたりのドライバが開発されているようなので、 6.x の LTS くらいには入ってくるかなぁ、、って印象。
rustのコードはいくつか眺めたものの、ちょっと自分で書ける気はしないので、せいぜいrustを使うためのcargoあたりを学ぶくらいかなぁ、、というところ(苦笑
・krita
KDE関連の依存関係が多そうで手を出しかねていたペイントソフトの krita-5.1.1、某 uim の qt 用モジュールを作る際に山のように KF5 関連パッケージをビルドさせられて、この勢いでビルドできるのでは、と試してみたら無事動くようになった(w
ざっと見、KF5(plasma-framework)がらみが30強、krita 自身の依存が5つくらいな感じ。もうちょっと依存関係とか整理しないといけない(sip-6.7.1が手元でビルドしたものは認識されず、pip でインストールしたら認識された、等)けど、忘れないうちに contrib あたりに upload しておこう。
・NHKの聴き逃しサービス
最近のNHKラジオは「らじる★らじる」経由で録音できると共に、全てではないものの「聴き逃し」サービスとして、 過去の番組も一週間ほどは聞けるようになっている。
「らじる★らじる」のタイマー録音用スクリプトと共に、この「聴き逃し」サービスの録音用スクリプトもffmpegを使うように書いたものの、 最近、FMで配信された番組の聴き逃しサービスがうまく録音できなくなっている。
具体的には、FMの番組を聴き逃しサービスのURLからダウンロードしようとすると、
Error applying bitstream filters to an output packet for stream #0:0. Last message repeated 2 times [aac_adtstoasc @ 0x23b07c0] Error parsing ADTS frame header! Error applying bitstream filters to an output packet for stream #0:0. [aac_adtstoasc @ 0x23b07c0] Input packet too small Error applying bitstream filters to an output packet for stream #0:0. Last message repeated 1 times ....
のようなエラーが多発して、5分ほど録音したところで終了してしまう。 R1やR2の番組だと問題ないようなので、FMの番組をエンコードするする際の仕様が、ffmpeg が想定しているものと違っている気配。 ところがffplay を使ってリアルタイムで再生すると、上記のようなエラーは垂れ流しつつも最後まで再生できるのが謎。
一方、VLCの「メディア」=>「変換/保存」の機能を使うと、gnutlsのハンドシェイクエラーが頻発するものの、 特に問題なくFMの番組も録音できる。しかしながら、VLCの場合、従来使っていたスクリプトみたいに保存先のファイル名とかを 設定できないのでちょっと不便。
ソースコードは見てないけど、聴き逃しサービスは「らじる★らじる」のリアルタイム配信同様、 HLS(HTTP Live Streaming)を使っているので、ffmpeg と VLC で実装に違いがあるのだろうか?
とりあえず興味ある人向けに、手元でイジっている「聴き逃し」サービス録音用スクリプト(get_ondemand3.py)を添付しておく。 このページの一番下に「添付ファイル」があるので、そこからダウンロード可能。
使い方は、聴きたい番組のページを開いて、再生ボタンのURLへのリンクを右ボタンクリックでコピー、 javascript:openPlayer('p=0328_01_3804167') みたいなURLが得られるので、このうち 'p=0328_01_3804167' の部分を引数にして、 get_ondemand3.py を起動する。
$ get_ondemand3.py 'p=0328_01_3804167' program:0328 series:01 number:3804167 series_url:https://www.nhk.or.jp/radioondemand/json/0328/bangumi_0328_01.json 3804167 3804167 {'aa_contents_id': '[radio]vod;浪曲十八番\u3000天光軒満月「乃木将軍\u3000' '信州墓参」;r3,130;2022082573217;2022-08-25T11:20:00+09:00_2022-08-25T11:50:00+09:00', 'aa_measurement_id': 'vod', 'aa_vinfo1': '浪曲十八番\u3000天光軒満月「乃木将軍\u3000信州墓参」', 'aa_vinfo2': 'r3,130', 'aa_vinfo3': '2022082573217', 'aa_vinfo4': '2022-08-25T11:20:00+09:00_2022-08-25T11:50:00+09:00', 'close_time': '2022-09-01T11:50:00+09:00', 'file_id': '3804167', ....
ちなみに、これはFMの番組になっているので、5分程度で切れちゃうはず。
・bash スクリプト
某所の原稿で最近のbashの変数展開回りの機能をあれこれ調べてたついでに書いてみた、指定したディレクトリ以下のavifな形式の画像ファイルをjpg形式に変換して、zipファイルに纏めるためのスクリプト。
# 何に使うのかはナイショ(w
#!/bin/bash tdir=$1 pushd "${tdir}" for i in *avif ; do heif-convert $i ${i/avif/jpg} done popd zip -r "${tdir}".zip "${tdir}"/*jpg
以前は、空白文字を含むファイル名やディレクトリ名を処理するためにIFSをイジったりしてたけど、変数名を"..."で括るだけで問題なく処理できるようになったのはちょっとビックリ。
このあたり、bshの仕様でシェルスクリプトを学んだから、未だに文字列の有無のチェックに
if [ "${tst}.x" != ".x" ]; then ...
みたいな書き方をしてしまうあたりから学び直さないといけないなぁ。。
・郵便切手
別にイヤガラセとかの意図はなく、単に古い切手を消費したかっただけ(w
・ガルパンどろソース
関西人(しかも兵庫 :-)なんで、オリバーの「どろソース」は常備しているものの、大洗の方で大人気になっているとは知らなかった(w
・銀河鉄道999ビール
たまたま覗いた近所のスーパー(MaxValue)で、こんなの見つけた(w
メーテルがヴァイツェン、エメラルダスがレッドエール、車掌さんが黒ビールだそうな。
・Linux firmware
最近、周辺機器用のfirmwareはカーネルとは独立したlinux_firmwareパッケージで配布されている。/lib/firmware/ 以下のfirmwareは一つ一つは小さいものの、全部合わせると848MBと結構な規模になる。
最近の大容量なHDDから見ると「848MB」は微々たるものなんだけど、インストーラのようにシステム一式をinitramfsに載せる場合、圧縮した状態で200MBくらいに抑えているのでfirmwareを全部入れるのは難しい。
起動時に、カーネルと共にinitramfsイメージも読み込むのだけど、そこで結構時間がかかっているので、あまりinitramfsを大きくしたくない。
firmwareの多くは無線LANとかGPU、サウンドカード用なので、インストールの際にはあまり必要ないか、と思って省いていたものの、手元のGPU組み込みなRyzen5(AMD Ryzen 5 3400G with Radeon Vega Graphics)で試したところ、/lib/firmware/amdgpu/ 以下の firmware が無いと正しく初期化できないようで、KMSが機能し始めたあたりで動作不能に陥いる(KMSな画面に切り替わらない)。
もちろん、VirtualBoxとかではfirmwareが無くても問題なく表示できるし、VESAなVGAモードを表示するだけならfirmwareは必要なかろう、 と思ってたんだけど、KMSが絡むとそういうわけにもいかないらしい。
仕方ないんで、インストーラに /lib/firmware/amdgpu/ 以下を持ちこんでみると、KMSも無事動作して、実機インストールもできたんだけど、他にも必須もfirmwareがあるんだろうなぁ。。とりあえず intel と nvidia なfirmware はインストーラに持ち込んでおくべきかな。
・イカナゴ その2
明石まで足を延し、1kg700円のイカナゴを5kg買ってきて2度目のイカナゴ炊き。 前から1週間ほど経ってる分、イカナゴもだいぶ大きくなっていた。
・イカナゴ
今年の初炊き。3kgだったかな?
昔は数十kg炊いてあちこちに配ってたんだけど、最近は不漁でずいぶん高くなってしまい寂しい限り。