16:01:42 # Life Raspberry pi OSってアップデートどうなっているのかなとおもって見た。 OSのページにある内容をみるかぎり最後のアップデートが5月で、リリースノートみてもBullseyeにはなってない感じ。Busterへのアップデートは一方で2019年6月にやっていてそれはBusterが公式にリリースするより前だったみたい。 公式リリースより早くリリースするのはやりすぎだったとしても今回はどうなるのかな。
16:52:03 # Life USB HDDからSMARTをとるメモ。 smartctlコマンドでデバイスをしていするとデフォルトでパスからタイプを検出するらしいがそれだとUSB HDDだとうまくいかない。 -dオプションでデバイスの通信方法を切り替えるようなので試行錯誤してみた。 -d testで検出結果を出力させてみるとscsiというのだがデータがとれない。 インターネット検索の結果だとどうもsatでよさそう。
$ sudo smartctl /dev/sda1 -d test # SCSIだと主張する。 $ sudo smartctl --all /dev/sda1 -d sat -s on # satだとちゃんと出力。
17:17:29 # Life 今月読んだ本の読書メモ。
13:46:30 # Life podmanいじってたらなんかRootless overlayとかいうのがあるらしい。 記事が出てた。 どうもカーネルのOverlayfsがuser namespaceで使えるってことなのかな。 fuse-overlayfsそれなりに頑張っていたような気がするんだけどカーネル側でサポートされるならそれでいいんだろうか。 ovl: unprivieged mountsで実現したっぽい。git describeによるとv5.10-rc1-17-g459c7c565ac3か。
14:21:10 # Life 5ヶ月ぶりに見たらgithubとcloud buildの連携で設定していた認証が動かなくなっていた。 うーん、何の認証が失敗しているのか。gcr.ioにアップロードしようとして失敗しているっぽい。 これかなぁ。よくわからない。 こっちが本番かな。 そしてこれが修正でまだリリースされていないと。
17:26:15 # Life tzdataの設定。なんかシステムのタイムゾーンの設定がいまいち簡単ではない気がしたので調べた。 基本的にはインストール後にはすでに設定されている値が利用されてしまうので Debconfの設定が反映されないっぽい。 Dockerfileで自動化するにはなんか面倒な。 Preseedに突っ込むと/etc/localtimeと/etc/timezoneを両方消さないと設定が反映されないので 結局/etc/localtimeを消して/etc/timezoneファイルに設定したい内容をいれてその値を拾ってもらうことにした。 ちょっと複雑すぎないかな。tzconfigコマンドとかで設定できるとよいんだが。
RUN echo Asia/Tokyo > /etc/timezone && \ rm -f /etc/localtime && \ dpkg-reconfigure tzdata -f noninteractive && \
17:15:32 # Life 手元の開発環境をPodmanベースに移行してみた。 Dockerの代替でデーモン必要ないときいて使ってみることにしたのだが、まぁよい。 lxcとpbuilderを使っていた用途を順番に置き換えている。 使い方としてはビルド時にだけインスタンスを起動して終了したら捨てる感じ。 たとえばBookwormのClangが使いたい場合はDockerfileとして用意しているのは
FROM debian:bookworm RUN apt-get clean && apt-get update && apt-get dist-upgrade -yq && apt-get install -yq \ clang \ make \ && apt-get clean
そしてスクリプトをPodmanを実行するように変更。カレントディレ クトリをバインドマウントして起動するのがポイント。一般ユーザ 権限で実行するとデフォルトでuser namespace で実行してくれて 中ではRootなのが外側では自分のユーザ権限に見えるように。それ がよい。ビルドは外側のカレントディレクトリに反映して、終了したらインスタンスが終了。
$ podman build . -t project-name $ podman run -it --rm -v $(pwd):$(pwd):rw -w $(pwd) project-name \ bash -c "make clean && make -j$(($(nproc) * 2)) -k"
EmacsのショートカットでMakeを実行するようにしているので Makefileのデフォルトのターゲットをpodman実行するようにしてし まった。
invoke-podman: docker-built-stamp podman run -it --rm -v $(shell pwd):$(shell pwd):rw -w $(shell pwd) cxx20 \ bash -c "make -j$(shell nproc) -k all" docker-built-stamp: Dockerfile podman build . -t cxx20 touch docker-built-stamp .PHONY: invoke-podman
Renameの挙動がおかしいとかいろいろあるんだけどまぁ満足。 Overlayfsの挙動が気に食わないのでCOWベースのファイルシステム使ってほしいところだが。
11:37:22 # Life podman system prune。 4GB開放されたが20GB開放したって出力された。なんでだろ。
17:00:36 # Life X11を強制。 wayland だとChrome Browserから画面キャプチャーできないのでX11を使いたいのだが アプリケーションによってそのためのオプションが違うのが辛い。
GDK_BACKEND=x11 audacity