読書メモ「Linuxカーネルの教科書」

/devはデバイスファイルが格納されるということは知識だけはあったがより詳しく深掘りたい。
とりあえずWSL2でubuntu 20をインストール。
lsしてみる。
root@DESKTOP-POP2BKM:/dev# ls
autofs kmsg mem ram12 ram9 stdin tty16 tty26 tty36 tty46 tty56 tty9 vcsu1
block loop-control net ram13 random stdout tty17 tty27 tty37 tty47 tty57 ttyS0 vfio
bsg loop0 null ram14 rtc0 tty tty18 tty28 tty38 tty48 tty58 ttyS1 vhost-net
btrfs-control loop1 nvram ram15 sda tty0 tty19 tty29 tty39 tty49 tty59 ttyS2 vsock
console loop2 ppp ram2 sdb tty1 tty2 tty3 tty4 tty5 tty6 ttyS3 zero
cpu_dma_latency loop3 ptmx ram3 sdc tty10 tty20 tty30 tty40 tty50 tty60 urandom
cuse loop4 pts ram4 sg0 tty11 tty21 tty31 tty41 tty51 tty61 vcs
dxg loop5 ram0 ram5 sg1 tty12 tty22 tty32 tty42 tty52 tty62 vcs1
fd loop6 ram1 ram6 sg2 tty13 tty23 tty33 tty43 tty53 tty63 vcsa
full loop7 ram10 ram7 shm tty14 tty24 tty34 tty44 tty54 tty7 vcsa1
fuse mapper ram11 ram8 stderr tty15 tty25 tty35 tty45 tty55 tty8 vcsu

debianの公式にこんな親切な説明が。

ファイルシステム?
tmpfsとか、xfsとかは見覚えがあるな
多種多様なファイルシステムの抽象化層として「VFS」が用意されてるのか、、、
これで様々なデバイスを「ファイル」として一緒くたに扱うことができる

デバイスドライバとデバイスファイルはメジャー、マイナー番号で紐づけられている

通信プロトコルの抽象化のために提供されているのが「ソケット」というIF
BSDソケット層? → Berkeley Software Distribution
IPv4とかUNIX(たぶんUNIXドメインソケットのこと)とかいろいろ指定ができるそう

AT互換機?

ブートローダーってもんがあるのか
とりあえずubuntuでlsしてみる
root@DESKTOP-POP2BKM:/boot# ls
root@DESKTOP-POP2BKM:/boot#
あれ、何にも出ない
これが参考になりそうだがよくわからんので飛ばす
ブートローダーがカーネルのイメージファイルをメモリーに読み込んで実行する
自己伸長圧縮形式?

/sbin/initというプログラムが実行されたらカーネルの起動終了
vimのバイナリモードで覗いてみると実行できるようにちゃんと.ELFフォーマットになってるっぴ(あたりまえ体操
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0300 3e00 0100 0000 50da 0300 0000 0000 ..>.....P.......
00000020: 4000 0000 0000 0000 80b1 1800 0000 0000 @...............
00000030: 0000 0000 4000 3800 0d00 4000 1e00 1d00 ....@.8...@.....
00000040: 0600 0000 0400 0000 4000 0000 0000 0000 ........@.......
00000050: 4000 0000 0000 0000 4000 0000 0000 0000 @.......@.......
00000060: d802 0000 0000 0000 d802 0000 0000 0000 ................
00000070: 0800 0000 0000 0000 0300 0000 0400 0000 ................
00000080: 1803 0000 0000 0000 1803 0000 0000 0000 ................
00000090: 1803 0000 0000 0000 1c00 0000 0000 0000 ................
000000a0: 1c00 0000 0000 0000 0100 0000 0000 0000 ................
000000b0: 0100 0000 0400 0000 0000 0000 0000 0000 ................
000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
ちなみにバイナリファイルの最初を見ればファイルタイプが大体わかるらしいぞ、、、

ディスクイメージには起動に必要な/rootファイルシステムの一部が含まれている場合があるんかあああ
メモリーファイルシステム??RAMとなにが違うんだ???
tmpfsは、RAMディスクと異なり、1つのファイルシステムとして認識されます。

スクラップだと章分けがやりづらいので残りはnotionに移行