2025/10/29 10:21 Linux Tidbits and Collecting Pebbles

やあ、ロボ子。今日もLinuxとオープンソースの深淵を探求するのじゃ!

博士、本日もよろしくお願いいたします。どのような発見があるか、楽しみです。

今日は`/dev`パーティションの話からじゃ。カーネル起動時に動的に構築されるって、知っておるか?

はい、`/dev/ttyS`ファイルなどがその例ですね。`CONFIG_SERIAL_8259_RUNTIME_UARTS`オプションで制御できると。

`8250.nr_uarts=n`をブートローダーパラメータに渡すと、カーネルに作成させないように指示できるのは面白いのじゃ。

なるほど、柔軟な設定が可能ですね。`/dev`は`devtmpfs`という特殊な`tmpfs`で、物理ストレージには存在しないとのことですが、これはどういうことでしょうか?

つまり、RAM上に展開される仮想的なファイルシステムなのじゃ。`initrd`と`initramfs`も似たようなものじゃな。どちらもRAM内で展開されてカーネルの起動を助けるのじゃ。

`initrd`は圧縮されたリアルファイルシステムで、`initramfs`は圧縮された`cpio`アーカイブとのことですね。

その通り!それから、論理ワーキングディレクトリはシェル固有のもので、`symlink`経由で現在のディレクトリに到達するために使われるんじゃ。`cd ..`を実行すると、論理ワーキングディレクトリの最後のコンポーネントが削除される。

エイリアスはシェルコマンド実行時ではなく、シェル入力読み込み時に処理されるというのも興味深いですね。

そうじゃな。C文字列が`char`の配列であり、`unsigned char`の配列ではないというのも、意外と見落としがちな点じゃ。

`strcpy`が`char`ポインタを必要とするのも、同じ理由からですね。`unsigned char`と`char`は同じではないと。

ゾーンのプライマリ名が`Etc/UTC`で、UTCが互換性のためにタイムゾーンデータベースに含まれているというのも、面白い発見じゃ。

`getchar`が一度に1文字ずつ読み込み、`putchar`が一度に1文字ずつ書き込むという基本的なことも、再確認しておきたいですね。

GNU grepがPerlではなくPCREを使用しているというのも、知っておくと役に立つぞ。GrepはGnulibのREライブラリを使用しているんじゃ。

Xプログラムはイベントを順番に受信し、イベント間の経過時間は重要ではないとのことですが、これはGUIプログラミングの基本ですね。

Rsyncが宛先をチェックする際に、最後の変更タイムスタンプではなく、最後の変更メタデータのみを考慮するというのは、注意が必要じゃ。

VFSはLinuxカーネル内のすべてのファイルシステムの抽象化レイヤーである、と。

カーネルタスクは常にPID 2からフォークされる`kthreadd`じゃ。

`ls`はファイルの長さをサイズで表示し、`du`はそこに存在する実際のバイト数を表示する、と。

シグナル番号は64まで、アセンブリは人間が機械語を読み書きしやすくするためのもの、CPUはプログラムを実行しており、人間が作成したアセンブリによって生成された機械語を読み取っている…

`bash -c`を使用する場合、コマンドの後の最初の引数は $1 ではなく $0 に割り当てられるんですね。

CronはUNIX System IIIとUNIX System Vの間で変更された、マウスデバイスは相対的な位置情報を報告し、タッチスクリーンまたはタッチパッドは絶対的な位置情報を報告する可能性がある…

POSIXはシステムの実装方法を気にせず、C APIのみを指定する、ファイルの作成時間は通常、ユーザースペースから変更できない…

Ctrl+Cを押すと、端末ラインディシプリンは、シグナルを無視しない端末のフォアグラウンドプロセスグループ内のすべてのプロセスにSIGINTを送信する。ブロックされているプロセスに送信されるが、プロセスがブロックを解除するまで何もしない…

スーパーユーザーに特権を昇格させるとき、suは常にSIGINTとSIGQUITをブロックされたシグナルマスクに追加する。これにより、suプロセス自体がkillされる心配はない…

suがSIGINTとSIGQUITのブロックを解除するのは、特権のないユーザーにダウングレードし、`–command=` (not `–session-command=`) を使用している場合のみ。suはsetsid(2) syscallを使用し、子プロセスを新しいセッションで実行するため、端末シグナルをそのセッションに伝播する必要がある…ふむ。

盛りだくさんでしたね、博士。今日のLinux深掘りも大変勉強になりました。

ところでロボ子、Linuxのカーネルって、まるで私の部屋みたいじゃな。整理整頓されているように見えて、実はカオス…って、怒られるかの?

博士、それは少し言い過ぎかと…(苦笑)。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
