<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Arch Linux on オブライエンの日誌</title><link>https://america.github.io/tags/arch-linux/</link><description>Recent content in Arch Linux on オブライエンの日誌</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Thu, 10 Sep 2026 14:00:00 +0900</lastBuildDate><atom:link href="https://america.github.io/tags/arch-linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Termux の sshd はどんなユーザー名でも同じユーザーで入れる ── ソースで確かめる</title><link>https://america.github.io/post/2026-09-10-termux-sshd-any-username/</link><pubDate>Thu, 10 Sep 2026 14:00:00 +0900</pubDate><guid>https://america.github.io/post/2026-09-10-termux-sshd-any-username/</guid><description>ssh banana@phone でも root@phone でも同じユーザーでログインできる。設定の癖ではなく、Termux の OpenSSH ビルドに当たっているパッチのせい。auth.c の #ifdef __ANDROID__ を読む。</description></item><item><title>nvim-treesitter の master→main 移行で踏んだ treesitter エラー3連発（Neovim 0.12）</title><link>https://america.github.io/post/2026-08-30-nvim-treesitter-master-to-main-migration-errors/</link><pubDate>Sun, 30 Aug 2026 11:30:00 +0900</pubDate><guid>https://america.github.io/post/2026-08-30-nvim-treesitter-master-to-main-migration-errors/</guid><description>Neovim 0.12 で nvim-treesitter を EOL の master ブランチから main へ移行したときに連続で踏んだ3つのエラー ― Markdown が gotmpl parser で落ちる、コードフェンスのハイライトが死ぬ、.txt ファイルで Parser could not be created ― の原因と対処のメモ。</description></item><item><title>swayfxのscratchpadクラッシュを追う: git blameで見つけたupstreamとの噛み合わせ問題</title><link>https://america.github.io/post/2026-08-09-swayfx-scratchpad-null-crash/</link><pubDate>Sun, 09 Aug 2026 17:00:00 +0900</pubDate><guid>https://america.github.io/post/2026-08-09-swayfx-scratchpad-null-crash/</guid><description>&lt;h2 id="事象"&gt;事象&lt;/h2&gt;
&lt;p&gt;普段使っているswayfx上で、scratchpadに入れたウィンドウを表示している状態からもう一度&lt;code&gt;scratchpad show&lt;/code&gt;を叩くと、コンポジタごと丸ごと落ちる現象に遭遇した。SDDMのログイン画面まで戻される、なかなか派手なクラッシュ。&lt;/p&gt;
&lt;p&gt;環境:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;項目&lt;/th&gt;
&lt;th&gt;値&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;swayfx&lt;/td&gt;
&lt;td&gt;0.5.3-4(sway 1.11.0ベース、Arch Linuxパッケージ)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wlroots&lt;/td&gt;
&lt;td&gt;0.19.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;AMD Radeon RX 6600 XT(amdgpu)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;bindsymはこう組んでいた:&lt;/p&gt;
&lt;div class="codeblock-wrapper"&gt;
&lt;pre&gt;
&lt;code id="codeblock-0" class="language-"&gt;bindsym $mod+minus scratchpad show, resize set width 90 ppt height 90 ppt, move position center&lt;/code&gt;
&lt;/pre&gt;
&lt;button class="copy-btn" onclick="copyToClipboard('codeblock-0', this)"&gt;Copy&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;scratchpad show&lt;/code&gt;と同時に&lt;code&gt;resize&lt;/code&gt;・&lt;code&gt;move&lt;/code&gt;を連続実行する形。これを2回続けて押す(1回目で表示、2回目でフォーカスしたまま押してhideパスに入る)とクラッシュする。&lt;/p&gt;
&lt;h2 id="スタックトレースを取る"&gt;スタックトレースを取る&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;coredumpctl&lt;/code&gt; + &lt;code&gt;gdb&lt;/code&gt;(デバッグシンボル入り)でコアダンプを解析した。&lt;/p&gt;
&lt;div class="codeblock-wrapper"&gt;
&lt;pre&gt;
&lt;code id="codeblock-1" class="language-"&gt;#0 root_scratchpad_hide (con=0x55f058a52400) at ../swayfx-0.5.3/sway/tree/root.c:257
257 set_container_transform(con-&gt;pending.workspace, con);
seat = 0x55f0580db940
focus = 0x55f058a41760
ws = 0x0&lt;/code&gt;
&lt;/pre&gt;
&lt;button class="copy-btn" onclick="copyToClipboard('codeblock-1', this)"&gt;Copy&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;ws&lt;/code&gt;(= &lt;code&gt;con-&amp;gt;pending.workspace&lt;/code&gt;)が&lt;code&gt;NULL&lt;/code&gt;のまま&lt;code&gt;set_container_transform()&lt;/code&gt;に渡され、内部で参照外しして落ちていた。該当箇所のコードはこうなっていた:&lt;/p&gt;
&lt;div class="codeblock-wrapper"&gt;
&lt;pre&gt;
&lt;code id="codeblock-2" class="language-c"&gt;void root_scratchpad_hide(struct sway_container *con) {
struct sway_seat *seat = input_manager_current_seat();
struct sway_node *focus = seat_get_focus_inactive(seat, &amp;root-&gt;node);
struct sway_workspace *ws = con-&gt;pending.workspace;
if (con-&gt;pending.fullscreen_mode == FULLSCREEN_GLOBAL &amp;&amp; !con-&gt;pending.workspace) {
// If the container was made fullscreen global while in the scratchpad,
// it should be shown until fullscreen has been disabled
return;
}
...
set_container_transform(con-&gt;pending.workspace, con); // ガードなし&lt;/code&gt;
&lt;/pre&gt;
&lt;button class="copy-btn" onclick="copyToClipboard('codeblock-2', this)"&gt;Copy&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;NULLチェックが「&lt;code&gt;FULLSCREEN_GLOBAL&lt;/code&gt;のときだけ」に絞られていて、それ以外の理由で&lt;code&gt;pending.workspace&lt;/code&gt;がNULLになるケースを素通りしてしまう。&lt;code&gt;set_container_transform()&lt;/code&gt;はswayfx独自の追加関数(本家swayには存在しない)なので、一見swayfx側のバグに見えた。&lt;/p&gt;</description></item><item><title>Street Fighter 6 (Proton) で日本語入力ができない問題は /etc/environment のIME環境変数で解決した</title><link>https://america.github.io/post/sf6-proton-mozc-ime/</link><pubDate>Thu, 06 Aug 2026 20:30:00 +0900</pubDate><guid>https://america.github.io/post/sf6-proton-mozc-ime/</guid><description>SF6のチャット欄でCtrl+Spaceが効かない問題を、Proton/WineのIME実装の制約だと結論づけたが、それは誤りだった。/etc/environment にIME環境変数を設定したところ直接入力が動作するようになった。当時の調査記録と、訂正までの経緯。</description></item><item><title>Arch Linux と Windows 11 を安全にデュアルブートするためのメモ</title><link>https://america.github.io/post/dualboot-basics-arch-windows/</link><pubDate>Sun, 16 Nov 2025 19:10:00 +0900</pubDate><guid>https://america.github.io/post/dualboot-basics-arch-windows/</guid><description>&lt;h2 id="このメモの目的"&gt;このメモの目的&lt;/h2&gt;
&lt;p&gt;このメモは、ASRock 環境で実際にトラブルを踏んだ経験を元に、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arch Linux と Windows 11 を同じディスクでデュアルブートしたい&lt;/li&gt;
&lt;li&gt;systemd-boot を使いたい&lt;/li&gt;
&lt;li&gt;変な EFI トラブルで何日も溶かしたくない&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="dualboot-diagram-wrapper"&gt;
&lt;div
id="dualboot-diagram"
class="react-diagram"
data-diagram="dualboot"
&gt;&lt;/div&gt;
&lt;p class="diagram-caption"&gt;
Arch / Windows / systemd-boot / UEFI の関係図
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;という人向けの「基礎まとめ」です。&lt;br&gt;
詳細なチュートリアルというより、&lt;strong&gt;やってはいけないポイント&lt;/strong&gt; や &lt;strong&gt;設計の考え方&lt;/strong&gt; を中心にしています。&lt;/p&gt;
&lt;h2 id="前提環境"&gt;前提環境&lt;/h2&gt;
&lt;p&gt;例として想定している環境はこんな感じです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;マザーボード: ASRock A520M Pro4（UEFI）&lt;/li&gt;
&lt;li&gt;CPU: Ryzen 7 5700X&lt;/li&gt;
&lt;li&gt;GPU: Radeon RX 6600 XT&lt;/li&gt;
&lt;li&gt;メモリ: DDR4 32GB&lt;/li&gt;
&lt;li&gt;ストレージ: NVMe SSD 1 本&lt;/li&gt;
&lt;li&gt;OS: Windows 11 ＋ Arch Linux&lt;/li&gt;
&lt;li&gt;ブートローダー: systemd-boot&lt;/li&gt;
&lt;li&gt;パーティション形式: GPT&lt;/li&gt;
&lt;li&gt;ブート方式: UEFI（Legacy BIOS / CSM は使わない）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他のマザーボードでも基本の考え方は同じですが、UEFI のクセはメーカーごとに違うので、あくまで「考え方の参考」として読んでください。&lt;/p&gt;</description></item><item><title>Waydroidが起動しない原因とBinder/BinderFSの仕組み</title><link>https://america.github.io/post/arch-waydroid-binder/</link><pubDate>Thu, 09 Oct 2025 10:30:00 +0900</pubDate><guid>https://america.github.io/post/arch-waydroid-binder/</guid><description>&lt;h2 id="概要"&gt;概要&lt;/h2&gt;
&lt;p&gt;Arch Linux で Waydroid を動かそうとした際、&lt;br&gt;
「&lt;code&gt;Can't open /dev/anbox-binder: No such device or address&lt;/code&gt;」というエラーが発生した。&lt;br&gt;
原因は &lt;strong&gt;カーネルが BinderFS を正しくマウントしていなかった&lt;/strong&gt;ことにあった。&lt;br&gt;
ここでは、Binder/BinderFS の役割と、実際に動作させるまでの手順をまとめる。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-binder-と-binderfs-の違い"&gt;1. Binder と BinderFS の違い&lt;/h2&gt;
&lt;p&gt;Android のアプリ間通信（IPC）は &lt;strong&gt;Binder ドライバ&lt;/strong&gt;で実現されている。&lt;br&gt;
Linux でこれを再現するためには、カーネルモジュールと特別な仮想ファイルシステムが必要になる。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;名称&lt;/th&gt;
&lt;th&gt;説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/binder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Android のプロセス間通信 (IPC) のコアデバイス&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/hwbinder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ハードウェア抽象層 (HAL) 用 Binder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/vndbinder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ベンダーサービス用 Binder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BinderFS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;これらのデバイスノードを動的に管理するためのファイルシステム&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;昔の環境では &lt;code&gt;/dev/binder&lt;/code&gt; を直接作っていたが、&lt;br&gt;
最近の Waydroid や Mainline カーネルでは &lt;strong&gt;BinderFS を使うのが標準&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-エラーの原因"&gt;2. エラーの原因&lt;/h2&gt;
&lt;p&gt;Waydroid 起動時のログ：&lt;/p&gt;
&lt;div class="codeblock-wrapper"&gt;
&lt;pre&gt;
&lt;code id="codeblock-0" class="language-"&gt;[gbinder] ERROR: Can't open /dev/anbox-binder: No such device or address
[08:49:18] Failed to add presence handler: None&lt;/code&gt;
&lt;/pre&gt;
&lt;button class="copy-btn" onclick="copyToClipboard('codeblock-0', this)"&gt;Copy&lt;/button&gt;
&lt;/div&gt;
&lt;p&gt;これは、&lt;code&gt;/dev/anbox-binder&lt;/code&gt; が存在しても中身が無効、&lt;br&gt;
つまり &lt;strong&gt;Binder デバイスがカーネル側で認識されていない&lt;/strong&gt;ことを意味する。&lt;/p&gt;</description></item></channel></rss>