試行錯誤の結果、コンソールから startx による X サーバー起動については、小さい問題はあるが Weston + Xwayland を X サーバーとして使うことに成功した。 気づいた問題は今のところマウスの 3 ボタンエミュレーションがなぜか無効になっているということのみ。 iMac 2014 に関してはこれがなぜか X.org のサーバーよりもまともに動く。
そこで LightDM からこれを起動するように設定したかったが、それはうまくいかなかった。 残念。
起動方法は、Weston から Xwayland を起動するシェルスクリプトと config.ini を生成して Weston を起動するシェルスクリプトを作成し (???)、これを X コマンドの代わりに使おうというもの。 起動する側は X サーバーだと思って立ち上げるだけだけど、そこに実は Weston と Xwayland の組み合わせが動き出す。 そういう構成だから、Wayland 関係の環境変数は Xwayland にしか見えていなくて、他はすべてただの X サーバーだと思って動き出す。
その、作成したシェル (bash) スクリプトはこれ。 LightDM チャレンジの中でいくつか tty 関連の引数を取り除いたり weston の引数に変換したりするようにして、見た目はちゃんとやったつもりなんだけど、LightDM では画面真っ黒のまま何も映らない状態。
いろいろあるらしいけれど、cage っていうのが weston 同様に X 上でも動いて、引数に指定したアプリケーションがウインドウの中で立ち上がるだけという、とてもシンプルな使い勝手で感心した。 Xwayland も入っていて X アプリケーションも動く。 DPI 設定ができないので端末系は字が小さくて困るけど、それこそ GNOME 上海なんかはこれで立ち上げるだけで iMac での表示崩れが回避できる。
systemd は登場してからだいぶ経った。 自宅サーバー PC とバックアップ用 PC は sysvinit のまま使っているけど、それ以外はデスクトップ環境とのかねあいで systemd で使っている。 未だにサービス停止がトラブルを起こしてシャットダウンに 90 秒待たされることがたまにある。
X サーバーを Wayland に移行させたディストリビューションは Ubuntu や Fedora が有名で、Debian はどうなっているのか知らないが、とにかく GNOME や KDE はもう今は Wayland でいけるぞ、というそんな状況。 自宅では iMac やノートパソコンで MATE デスクトップ、Ryzen PC は Window Maker (笑)、自宅サーバー PC では IceWm を使っていて、いずれも今のところ Wayland 非対応。 MATE は取り組んでいる人達がいるが、Window Maker や IceWm が Wayland に対応することはおそらくないだろう。
他に PulseAudio も PipeWire に置き換えられつつある。 こっちは Debian もそうで、去年トラブってしまって PipeWire を消して対処している。
で。 PipeWire に関しては、PulseAudio と同じリモート接続がいけるなら移行は可能だろうと思っているんだけど、面倒くさくて調べていない。 自宅サーバー PC に USB でミニコンポをつないであるので、現状は自宅サーバー PC で PulseAudio サーバーを立ち上げてあり、Ryzen PC での動画視聴時はネットワーク経由で接続して音を出している。 これはめちゃくちゃ頻繁に使うので、無いと困る。
Wayland については... 気になるのは X に依存したもの。
systemd については、別に移行の必要もないだろうし! X プロトコルは複雑で厄介者扱いだったところがあって Wayland で今時の環境に合わせて最適化っていうのでその意義は理解できるが、systemd に関しては、シンプルだった sysvinit を今時の環境に合わせて複雑にしたやつってところ。 systemd が実現したかったこと自体は理解できるけど、作りが気に入らない。 もうちょっとカーネル側の仕事を増やしてユーザーランドをシンプルにとどめる手法はあったんじゃないかって、今でも思っている。
雨がざーっと降ったり、ぱっとやんだりの繰り返し。 湿度は高いが温度としては涼しい日。
F2 イタリア race 2、F2 はどうにもこういろいろアクシデントが... 柔らかいタイヤでスタートした組の多くがピットインしたぐらいのタイミングで 1 コーナーでとまったのがいて、まだピットインしていなかった組が大もうけ。 宮田はリプレイが出なかったが何かの接触で 10 秒ペナルティをもらっていた。 さらにシケインショートカットの違反で 5 秒ペナルティもついて、まるでだめだな。 それでも硬いタイヤスタート組よりは上に。 本当にセーフティカーのタイミングが硬いタイヤスタート組には不運だったな。 そしてボルトレートの勝利だったが、なんと予選でミスってグラベルにはまって赤旗を出してしまい、アタックラップが一周もできていなくてレースは最後尾スタートだったらしい! インタビュアーが最後尾からの優勝は F2 では史上初みたいなことを言っていた気がする。
F1 イタリア GP 決勝。 きのうのアンセーフリリースはマクラーレンには罰金が科されてグリッド降格無し。 サインツは罰金も無し? さすがイタリアだな! ノリスはスタート、1 コーナーはよかったけど、1 周目の途中のシケインでピアストリがオーバーテイク! あそこで決めるとは! 角田は序盤にヒュルケンベルグに突っ込まれてペースダウン、そのままリタイア。 さて、これは 2 ストップだな、という流れの中フェラーリが 1 ストップ作戦を敢行、しかもルクレールの作戦が大成功でフェラーリが地元で勝利となった。 ピアストリ、ノリスが続いて、ノリスがファステスト取れたかな、なのでマクラーレンとしてはまあまあ成功の部類だろうけれども。 4 位からサインツ、ハミルトン、フェルスタッペン、ラッセル、ペレスの順。 レッドブルは今回は特にさえない感じだった。 さてマグヌッセンが接触で 10 秒ペナルティをかされており、これもしかしてペナルティポイントつくんじゃないのー!? と思ったらさっそくレース後に出ていた。 史上初のペナルティポイントによる次戦出場停止じゃないか。 次回ハースでのベアマンの走りが見られるかも知れないな!
晴れ。 暑い日。 きのうまでの雨の影響で部屋の湿度がぐんとあがるのでエアコンは除湿運転で。
そういえば、テレビアニメ『伊藤潤二『コレクション』』は全 12 話見終わった。 まぁ、ホラーなので... なお、関係ないけど、夏の怪談といえば稲川淳二である。 じゅんじつながり。 伊藤潤二は漫画家で、楳図かずおの影響を受けているらしい。
新潟米の「こしいぶき」。 去年のだけど、まぁ、いいんじゃないか。 んで、ファンケルの発芽米というのも開けてしまったし、なんだかもったいないので混ぜて炊いている。 発芽米はおいしいか? って言われると白米に比べるとちょっとアレだけど、きっと健康にいいんだろうし、おかずが足りないのを補えるかも知れない? 炊飯はいつも通り浸水待ちなしで加圧、火を止めてからいつも 10 分待つところを少し伸ばしたほうがいいかも。 普通に 10 分であけたら発芽米だけちょっと芯が残っているような気がした。
曇り時々雨。
今日は、高校の同級生がその兄とともに某坂道アイドルグループのコンサートを見に東京に来ていて、東京観光をしようぜということだったので都心へ。 ...まぁ、去年のそれにもう一人加わった形である。 残念ながら今日の天気予報はきのうまで大雨予報、今日になって少し雨量が減ったがまだ雨予報、念のため車で秋葉原へ。 御徒町でおちあい、新橋から台場。
24 年ぶりのフジテレビ訪問。 確かメインの階段とエスカレーターこれだったよな、と思ったがエスカレーターは節電で止まっているし誰もいない。 笑う。 階段をのぼっていくと『ぽかぽか』という昼の番組の生放送が始まる頃で、7 階のスタジオ前に人が集まっていたものの、たいした人数ではない。 ショップを覗くと、24 年前にも見たようなめざましテレビのグッズから、ちいかわなんかの今時のやつまでいろいろ。 天気も悪いしということで展望室には行かず。
歩いてダイバーシティーだか何かのほうに行くとガンダムのデカいやつがあって、ガンダムショップも。 自分はガンダムは全然見て来なかったから一人ではまず来ないところだな。 自分の世代はビクトリーガンダムらしい。 へぇー。 なんかいろいろ種類があって、二代目の何とか将軍だの何だの、さっぱりわからん。 好きな人は本当に好きだよね。 でも外のでっかいガンダムはさ、何も知らなくても単純にすげぇなって思えるんだよね、とにかくでっかいし、背中についているエンジンみたいなところもちゃんと作られている感じがするし。
豊洲市場へ。 初めての豊洲市場。 豊洲場外 江戸前市場なるところに店がたくさんあって、天気が良ければ持ち帰り系を外で食べる手もあるかも。 ちょうど雨が降っていたので外はいまいちだなってことで、フードコートのほうに行って、マグロのご馳走様ねばとろ丼なるものを食べた。 嫌いなわさびも入っていなくて美味かったが、2000 円かー。 これでも安いほうなのだ、フードコートで... イオンやイトーヨーカドーのフードコートとはまるで違う、不思議な世界。
六本木へ。 ここは去年も来たところ、去年たまたま臨時休館していたてっぺんの展望台はなんとなくなってしまっていた。 ひとつかふたつか下の展望室はあったが、天気が悪いしいいか、ということで行かず。 テレビ朝日のショップに寄って... 戻ってスターバックスで休憩。
雨が上がっていたため、乃木坂・乃木公園・乃木神社へ。 このコースも去年も通ったな。 今年もコンサートの日なわけだけど空いていた。 天気のせいか、あるいはコンサートの時間が近かったからか。
去年は会場は東京ドーム、今回は神宮球場 (明治神宮野球場) らしい。 神宮球場なら乃木神社から歩いていけるね (!?) ってことで歩いてそっち方面へ。 途中、青山のホンダの前を通った。 なんかイベントをやっていることがあるというのはここなのか。 そして神宮球場、人が多い! そりゃそうだ!! その隣の国立競技場へ。 オリンピック用に新しくなった国立競技場だ。 人が多くてイベントでもやっているのかと思った。 どうもコンサート前の時間つぶしに使われているのか。
んで千駄ヶ谷駅まで歩いて... そこにも何か人がいっぱい... 東京体育館っていうのが駅前にあって、ACTORS★LEAGUE in Basketball 2024 というイベントをやっていたらしい。
秋葉原駅でお別れ。 雨が上がってよかったな。 一般道でトコトコ帰った。
歩数は 22000 歩! 去年は皇居から東京駅、有楽町駅、警視庁、国会議事堂、日比谷公園なんかをあっちこっちと歩き回ったから歩数が増えるよなと思ったけど、今回はそんなに歩いたつもりはなかった。
昔テレビ宮崎が入るって話ありましたよねと聞くと、どうも○丁目の一部だけノイズがのるけど入るみたいな感じだったらしいとの話を聞いた。 そういう感じだったのかぁ。 とにかく読売系が開局するまではテレビ宮崎が見られる人だけ少し早く見られるみたいなそういうのがあったんだ。 読売系が開局しちゃってからはすっかり聞かなくなり、いやそもそも宮崎のほうが民放が少ないからな。
なお、朝の移動も一般道経由だったが、それは首都高の渋滞情報がひどそうだったから。 電光掲示板の表示で一般道と首都高の時間差が 5 分しかないの (35 分と 30 分みたいな)、さすがに一般道でいいな、となる。 甲州街道もさすがに初台あたりまではスムーズな車線の選択が難しく時間がかかった。 新宿駅の先は Google Maps が左折して右折して靖国通りに入れというのでその通りに行った。 この前通った津の守坂通りも結局靖国通りに出るんだがそれを明治通りから行った形。 靖国通りは途中で分岐するが分岐にいかずに御茶ノ水駅方向 (外堀通り) に進むのも同じ。
帰りは Google Maps も見ずに適当に靖国通りから内堀通りを通って、新宿通り・甲州街道、さらには東八道路経由で帰宅。
通りの名前を見たければ OpenStreetMap がいいな。 Google Maps なんかよりたくさん通りの名前を表示してくれて楽しい。
晴れ。 ちょっとは涼しくなってきた。
スクーターの排気音はやっぱりうるさくなっているぞ... 浮いているせいなのか、他に何か取れちゃっているのかな。
きのうの筋肉痛はやばかった。 右足のふくらはぎがめちゃ痛くて、寝るときも痛くて、まぁ攣っているわけじゃなかったのはよかったんだけど、とにかく痛かった。 階段の上り下りも右足は伸ばしたまま左足だけでやらないとつらい感じだった。 今朝はちょっとマシになっていて、夕方にはかなりよくなっていた。 急速に回復!
そういえばきのうは久しぶりに道というか駅を聞かれる事案が発生したんだった。 英語で。 残念ながら都心の地下鉄を知らないので適当にわかんないけどたぶんみたいな風に答えておいた。 英語よく聞き取れたな、って同級生に言われると何とも... いやどうなんだろう、高校の修学旅行先でもあのくらいは聞き取れていたような気もするし、大学生活の間にずいぶんと慣れたとも言えるし...
まぁしかし最近普段鉄道を使わないせいでそういう事象に遭遇しないのか、いや、そもそも外国人観光客が多いエリアに行かないからか。 都心の鉄道網は複雑で、慣れていないところに行くと東京都民でも間違えるんだから、観光客が頭を抱えるのはわからないでもない。 下手をすると Google Maps を見てもわからないんだよなぁw きのうも、りんかい線? いや、違うぞ、歩けって言っているぞ! みたいになっていたw
六本木から乃木坂もね、大江戸線が近いところを通っているけど通り過ぎちゃうし... 千駄ヶ谷まで来ると、中央総武線だから! ここならわかる! って感じだったけど、あの駅は発車メロディーじゃなくて発車ベルなので思わず笑ってしまった。 そっか、千駄ヶ谷は新宿御苑も近いんだな。 もう歩く元気はなかったがw
きのうの帰りはなぁ、UDX 駐車場を出てすぐの、秋葉原練塀公園っていうところで何か音楽を鳴らして何かやっていたんだ。 それで左折で帰ったんだけど、信号のない横断歩道がだいぶ待つんだよね、平日だからマシだけど、それでも中央通りなので人が多い。 その秋葉原練塀公園の横の道でいけば、信号のある交差点を曲がっていけるのでそのほうが待ちが短い。 線路沿いをまっすぐ行く手もあるけどちょっと狭くてなぁ。
んで中央通りに出て、前に例の無差別のアレがあった交差点を右折すると、また信号のない横断歩道トラップがある。 たまに白バイがいる時もある。 なので直進して万世橋を渡ったんだけど、そうすると靖国通りに出るわけで。 橋の手前で右折して御茶ノ水方向に行くほうがスムーズかも知れないが、わからんな。
マフラーの排気漏れ。 エンジン始動してみてもどこから漏れているのかわからんなー、と思って、とりあえずアルミ板がカタカタするところの隙間にガンガムバンテージを切って押し込んで、アルミ針金を少しずらしてカタカタしにくくなるようにした。 それでもう一度始動して手を近づけてみると、後方の側面から車体左側に向かってぽこぽこと漏れているのに気づいた。
全体的にサビサビで、新たな穴が開いたのか、それとも、アルミ板を下半分だけ覆うようにしたので横から漏れているのかは把握できなかったが、とにかくそこから漏れるんだな!! ってことで、マフラーパテをそのへんに盛っておいた。 ついでにアルミ板の地面側両端にも塗って。 乾燥 24 時間待ち。 でもこれ新たな穴だとしたらだいぶアレだな、こうしてふさいでいくとまたどこかに新たな穴が開くのかもw
後ろ側のアルミ板はカタカタしないで割とちゃんと固定できている感じなんだけど、アルミ板からはみ出した部分の縁のガンガムバンテージはボロッと取れる状態になっている。 ということはアルミ板を剥がすとボロッボロのガンガムバンテージが山盛り出てくる状態かも知れない。
晴れ。 明け方は涼しかったが、昼は暑くなって、んで明日は暑いらしい。 はぁー。
午後出社した。
ボトルガムがほぼ切れるところだったのでスーパー K に行ったら、なかった... なんでだ... なんでボトルガム 8 種類以上くらい並べているのにいつも買っているやつだけないんだよ... 仕方がないので帰ってからバイクを出して片道 9 km 以上も先のスーパー S に行ったら、あった。 ヨシ! 3 つ帰って、帰りに途中のドンキホーテに寄ったら、ここにもあった... ひとつだけだったけど。
PulseAudio の後継とされる PipeWire。
すでに職場のパソコンではいつの間にか PipeWire に移行していて普通に音は鳴るし、pw-
で始まるコマンドの他、互換性があるようで PulseAudio のコマンド pactl
も使える。
でも pacmd
は使えない。
はて。
pactl
と pacmd
ってそんなに違うものだっけ?
最近調べていた Weston の新しいバージョンには pipewire というバックエンドがある。
Ubuntu 24.04 のバージョンにも入っている。
何だこれ!
バックエンド固有のオプションは画面サイズのみ。
PipeWire って言うのに音じゃないんかい!
試しに起動して pw-cli
とか pw-dump
とかのコマンドで覗いてみると何やらノードができているらしいことはわかった。
それを GStreamer の pipewiresrc に食わせることができるらしいという情報を見かけたんだが、どうにもうまくいかない。
わからん。
--cap-add=
ってオプションで個別で権限を付与したり、--privileged
ってオプションで全権限を付与したり、このへんは rootless でも使えるらしい。
デフォルトでは不必要な権限はいろいろ落としてあるみたいだ。
--privileged
は全部なので割と自由度高くて、rootless でも tap が作れて iptables が使えて tcpdump も WireGuard もいける。
NET_ADMIN
とか NET_RAW
とか個別で指定してもいいんだけど、tap は何かな、デバイスファイルが見えないんだよな。
--device=/dev/net/tun
とすればいいのか。
Linux KVM を使いたければ --device=/dev/kvm
でいける。
podman unshare --rootless-netns
って普通に試すと独立したネットワークになるだけで何がいいのやらと思っていたら、--net=
をつけて起動した container が動いている状態で使うと、そのネットワークも全部見える状態になる。
なるほど便利。
しかもそこに見えるインターフェイスはそのネットワークのデフォルトゲートウェイのアドレスになっていて、iptables を見ると MASQUERADE が設定されている。
つまりネットワークを指定しても slirp4netns はいつも同じアドレスで立ち上がっていて、Linux の MASQUERADE と合わせて 2 段 NAPT の形になっているらしい。
podman unshare
はその内部のネットワークを全部見せるよというわけだ。
ほーん。
ホストのコマンドが使えるから、データベースなり web なり、container 上の各サービスの状況を確認するのに便利だ。
--net=
をつけていない rootless container はそれぞれで slirp4netns が動くから、それは podman unshare
を使っても見えない。
ping コマンド。
もちろん slirp4netns は ICMP を扱えないので、外部への ping は失敗するが、ゲートウェイ宛には使えるはず。
alpine の image の ping (busybox ping) は root で実行する必要はあるが NET_RAW
なしでも使える。
debian の image の busybox だと使えない。
なぜか?
strace で見ると、alpine のでは以下のように出る:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) = -1 EPERM (Operation not permitted)
socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) = 3
debian の busybox だと SOCK_RAW
が失敗したら諦める。
へぇ。
debian の inetutils-ping の ping も strace で見ると alpine のと同様の動きで、SOCK_RAW
が失敗した後 SOCK_DGRAM
で動作する。
この ping は setuid root されている。
debian の iputils-ping の ping は getcap で見ると cap_net_raw=ep
が付けられていて、NET_RAW
なしでは実行ができないが、この属性を外してしまえば使える。
この ping はそもそも SOCK_RAW
を使わない。
かといって cap_net_raw=ep
なしで一般ユーザーで使えるわけではなく、以下のようになる:
socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) = -1 EACCES (許可がありません)
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) = -1 EPERM (許可されていない操作です)
socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6) = -1 EACCES (許可がありません)
socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6) = -1 EPERM (許可されていない操作です)
なんかちょっと複雑な話になっている。 適当に手元の環境をチェックすると iputils-ping のほうが入っていた。 iputils-ping のほうが setuid root じゃないので狙われにくいし、Ctrl-C の後も改行してくれるので見た目もいい。
晴れ。 暑い日。
/dev/kvm は何で kvm ユーザーじゃなくても使えるんだっけ、と調べたら getfacl なるコマンドが出てきた。 udev の uaccess というのでコンソールからのログインユーザーだけ使えるみたいな設定ができるらしい。 へぇー。 NTFS みたいになってきたな。 昔 mtools を使うのにパーミッション全開にしていたみたいな問題はこうして解決されているんだね。
テレビでやってた映画『ベイマックス』(原題: Big Hero 6)。 2014 年のアメリカ映画。
ubi8-init は init (systemd) 付きの環境だが、普通の debian image にも init を入れれば動くはず! sysvinit を入れて /sbin/init で起動したら確かに init は動いたが、いろいろ問題がある。 inittab を書き換えて getty を動かなくするのはいいとしても、shutdown がうまく動かないので面倒くさすぎる。 そうだなぁ、PID 1 には KILL シグナルを送ったところで終了してくれないよな。 うん。
まぁでもシェルにアクセスするのに podman exec を使えばだいたい使えるので、物は試しで openrc を入れてみた。
依存関係で sysv-rc が消される。
パッケージを入れたときに invoke-rc.d: policy-rc.d denied execution of start.
が出て自動でサービスが開始しないけど。
これは policy-rc.d
っていうスクリプトが container image に入っているからだな。
晴れ。 このところ熱帯夜こそギリギリ回避しているが、今日は猛暑日だった。
泌尿器科。 いつもの。 それなりにトイレに行きたい状態で到着、尿量は 210 mL を少し超えたくらい。 残尿は 14 mL ぐらいと言っていたっけ。
靴を買った。 今の靴は 3 年近く使った。 前回はプーマのアヴィエート、今回はプーマの SOFTRIDE フレックス。 やっぱり店の人からすると 27.5 cm を試したくなるやつ。 27.5 cm もそれなりにぴったりくるんだけど、なぜか左足は良くて右足は親指の付け根あたりがきつく感じる。 へぇ。 でもプーマのこのクラスのスニーカーは甲が当たる問題は全然無くて一発でしっくり来るのが良い。 左足がわずかに小さいっぽいので、古い中敷きが余っているなら鋏で切って、左足の指先のほうの中敷きの下に足しておくといいかもという、おもしろいアドバイスを頂いた。 紐がぼろぼろになったんですよという話をしたら、手前でクイッと引っ張って締めていたら手前のところが何度もこすれて痛むんですよ、と言っていたが、まぁ、2 年以上も使えば寿命だなw
『はれときどきぶた』、図書館で読んできた。 1980 年の本なのに、1993 年あたりの 91 刷だったか、すごいね! そんなに売れる本がこの世に存在するんだ。 内容は、一通り読むと見覚えはあるんだけど、独特な絵、挿絵の部分と「日記」の部分のほうが記憶にある。 細かい言い回しを理解できる年頃ではなかったような気がする。
国領のラーメン屋で晩飯。 18 時以降はしょうゆラーメンのみ、というので、しょうゆラーメンで。 野菜が多めでそんなに濃ゆくない醤油ラーメン。 結構よかったけど最後にスープだけ飲んでいると単なる中華スープのように思えてきてウーン? まぁ麺とチャーシューと野菜はちゃんとスープと合っていたから良いラーメンってことで。 これを食べた結果、ひょっとするといつも行く弁当屋の近くの中華料理屋のラーメンも意外といけるのでは、という気になってきた。 (その店ではいつも豚丼しか食べていない。)
泌尿器科と靴屋に行ったときは駐輪場の関係で原付で。 図書館とラーメン屋はスクーターで。 スクーターの排気漏れは一応おさまっているように見える。 そして排気漏れがなおった時に毎回あるやつで、またプルプル何かが共振しているような音がする。 やっぱり、横向きに漏れていたのがうるさかった原因か? これでまた違うところに穴が開いたら笑う。
ABEMA 将棋、本戦トーナメント。 チーム豊島 VS チーム稲葉。 いきなり 0-3。 次がリーダー対決、稲葉九段はたっぷり時間を余らせて、豊島九段が勝って 1-3。 穴熊に組んだ豊島九段が冷静に厳しい手を指しまくって追い込んでいく様が見事だった。 大石七段が上野四段に負けて 1-4。 糸谷八段が藤本五段に負けて 1-5、終了。 残るは決勝か。 前回チーム藤井を倒したチーム永瀬と、今回のチーム稲葉だ。
以下のような雑な手順で /bin/busybox と /bin/sh だけが含まれた container image foo を作成:
apt download busybox-static
dpkg-deb -x busybox-static_1%3a1.35.0-4+b3_amd64.deb foo
cd foo/bin
ln -s busybox sh
cd ..
tar cf - bin | podman image import - foo
これを使って container を起動:
$ podman run -it --rm foo sh
BusyBox v1.35.0 (Debian 1:1.35.0-4+b3) built-in shell (ash)
Enter 'help' for a list of built-in commands.
/ # env
HOSTNAME=65d639d4e0dc
SHLVL=1
HOME=/
container=podman
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
/ # ls
bin dev etc proc run sys
へぇー! このように /bin しか含まれていない image でも、実際には /etc, /sys, /dev, /run, /proc が作成され、/etc と /run にはファイルも作成され、残りは mount される。 df には各ファイルも tmpfs として見えるのでファイルが作られていないようにも思えるが、mount point が必要なので、/ を別のディレクトリに bind mount しても、ディレクトリとシンボリックリンクと、0 バイトの各ファイルが見える。 各ファイルに tmpfs が mount されてそこに中身が書き込まれている。
上のやり方だと自分のユーザー ID が埋め込まれてしまう。 fakeroot なりなんなりで tar を実行すればちゃんと root ユーザーになるだろう。
podman には import export だけでなく load save もある。 import export は上のようにファイルシステムまるまる扱うタイプのコマンドで、import は image import だけど export は container export だ。 load save はどちらも image のコマンドで、layers を扱えるらしい。 container 系コマンドは動作中でも使える。 export はまとめて tar ball にし、commit は layers をそのままに image 化する。
busybox --install
をやったらおもしろいことが起きた。
busybox のバイナリだけ inode が違うのに、リンク数は全部同じになっている。
はて?
たぶんこれは overlay による副作用かな。
tar もこれはハードリンクと検出できないらしく、export すると別のファイルとして出力される。
この前 LightDM から Xwayland を立ち上げるハックを試みたがうまくいかなかった。
これは display manager が動かないのか?
と思ったが、ちょうど Podman で遊んでいたので、物は試しで twm, wdm, xterm などをインストールして、ホスト側の weston に飛ばして wdm から Xwayland を立ち上げてみることにした。
weston に --use-pixman
を付ける必要があったが、Xwayland と wdm の組み合わせは動いた。
こんな感じで何とも不思議な感じになる。
WAYLAND_DISPLAY
環境変数には絶対パスを書いてもいいみたいだ。
面倒なので container の /way
というところに見せて WAYLAND_DISPLAY=/way
としたが問題なく動作している。
なぜか wdm を入れるときに openrc が systemd に置き換わってしまったが (自宅サーバー PC では sysvinit で wdm を動かしているので systemd 依存はないはず)、ま、いいか、と思って systemd で立ち上げたら /dev/console にちゃんとログインメッセージが出てきたし、halt したら最後に Exiting container.
と出て終了もした。
へぇ。
動画視聴に使っている Ryzen PC で以下のような X 依存コマンドを使っていて...
alias SCALE1='DISPLAY=:0 xrandr --output VGA-0 --scale 1x1 --panning 1024x768+0+0'
alias SCALE43='DISPLAY=:0 xrandr --output VGA-0 --scale 0.75x0.75 --panning 1024x768+128+96'
16:9 で配信される 4:3 動画を 4:3 ディスプレイ上でフルスクリーンに拡大表示するための荒技で、『シティーハンター』とか『ドラゴンボール』とかみたいななつかし映像作品を鑑賞する時にめちゃくちゃ使いまくっていて、Wayland になったらどうなるんだろうな、これ。 ま、X Window のまま使えばいいか。
自宅サーバー PC を PulseAudio の tcp サーバーにしているの、どうやったのかすっかりわすれて設定ファイルを探した。
.gconf/system/pulseaudio/modules/remote-access/%gconf.xml
というところに、module-native-protocol-tcp
が見つかった。
GUI か!
クライアントはコマンドラインで設定して、サーバーが GUI 設定なの謎すぎるw
このへんの情報によれば PipeWire でのネットワーク経由のオーディオは PulseAudio の仕様をそのまま引き継いだ pipewire-pulse というのを使って、PulseAudio のコマンドを使って実現できるようだ。 設定ファイルは別なので作らないといけないが、cookie は調べてみると .config/pulse/cookie をそのまま使うらしい。
PulseAudio のネットワークプロトコルは良くできていて、latency も管理されていて動画視聴での音ズレもなく快適に使える。 よく知らなかったけど Windows で受信するプログラムも存在するらしい。
そんなわけでまずは iMac を PipeWire に移行してみた。 pipewire パッケージをインストールして pulseaudio パッケージをアンインストール、再ログインしたらオーディオが出てこなかったので再起動したら鳴るようになった。 それからリモート接続をテスト、最初鳴らないなと思ったんだけど、端末のベルみたいな短い音の鳴り方がおかしいようだ。 音楽を再生してみると一応それなりに聞こえたけど、やや音が不安定だな。 ちょっとぷつぷつ言うような... ウーン? PulseAudio に戻してみたらめちゃ安定している。 PipeWire だめだな。 ちゃんと動くように設定された PulseAudio にはかなわないということか。 やっぱり PulseAudio でいいや!
晴れ。 気象庁アメダスによれば東京・府中は最低気温 24.9 度に最高気温 35.0 度 (13:00 時点のデータ) なので、やっぱり熱帯夜をギリギリ回避しつつ猛暑日だった。 (きのうはそれぞれ 24.8 度と 35.0 度。)
SARS-CoV-2 ワクチン接種から 16 日。 そろそろ抗体はいい感じな頃だろうか。 ま、流行の型とは違うので予防効果はそこまではないだろうけど。
新しい靴は靴ひもを通すところが穴じゃなくて、少し幅があるベルトループみたいな感じで縦に通すデザインになっている。 少し締まり方が緩いような気もするが、脱ぐときに紐をほどくだけでスコッと脱げるのは良い。
Windows や macOS 用に仮想マシンを作って podman を走らせる仕組みがあって、それが Linux 上でも使えるようになっている。
しかし podman machine init
まではいいが podman machine start
をすると gvproxy
っていうのがないぞと怒られる。
これは https://github.com/containers/gvisor-tap-vsock.git を clone して make するとできるんだが Debian の golang パッケージが古すぎてビルドできない (笑)
そこで docker.io/golang を走らせてビルドして、できたバイナリを /usr/local/lib/podman/ に入れると動くようになる。
最初の podman machine start
は何分か待たされる。
2 度目の podman machine start
で謎の Error: exit status 255
が出たが使える...
podman machine start
した後も単に podman run
をやると普通の container が動く。
仮想マシン上で走らせるには、CONTAINER_CONNECTION=podman-machine-default
環境変数をセットするか、共通オプションの -r
を指定するだけでもいいみたいだ。
まぁ、Linux 上で使う意味はあまりないんだけど、仮想マシンは Fedora のようなので、より新しいカーネルで使える、とか、サービスとカーネルに脆弱性があっても QEMU や Linux KVM になければ乗っ取られない、とか、そのくらいの意味はある。
QEMU の user network かと思いきや、TCP 接続を張ってどのプロセスのソケットか見てみると gvproxy になっていた。
QEMU の引数は -netdev socket,id=vlan,fd=3
ってなっていた。
ってぇことはやっぱり gvproxy 側に slirp 相当の何かが入っている?
どうもそうみたいだ。
へぇ。
QEMU では別に標準の user network でもいいような気がするけど、もしかして、Windows や macOS では QEMU 以外の実装を使うからってことなのかな。
そうなのかも知れない。
晴れ。 またしてもギリギリ... 猛暑日は回避。 一部で雨が降ったらしい。
朝、冷蔵庫の扉がきちんと閉まっていなかったことに気づいた。 あああ。 中の飲み物もややぬるい気がするし... まぁしかし、牛乳はだめだろうなと思って、残っていた 500 mL ぐらいを処分したものの、それだけ。 卵は火を通せば問題ないでしょ、そもそもスーパーで常温で置かれていたやつだからな。 ペットボトル麦茶は未開封のやつだからこれも OK。 醤油類も念のため冷蔵庫に入れているけどそこまでシビアじゃないだろう、ってことで。 他には何もないタイミングだったのでよかった。
会社の ThinkPad の一台の画面がたまにしかまともに映らなくなり、どこかの接触不良のようで、ぐりぐりおさえると映るみたいなことを繰り返していたらそのうち画面に筋が出てきて、これはもう寿命だな。 (10 年目。) ってことで午後出社して別のパソコンをさが... もっと古いのが出てきたw ま、でもいいか、画面がまともに映らないよりは。 どうも一時期の ThinkPad が微妙に壊れやすい疑惑がある。 バッテリーはいいんだけどね、画面が...