Open10

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

yasuaki640yasuaki640

/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
yasuaki640yasuaki640

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

yasuaki640yasuaki640

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

yasuaki640yasuaki640

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

yasuaki640yasuaki640

ブートローダーってもんがあるのか

とりあえずubuntuでlsしてみる

root@DESKTOP-POP2BKM:/boot# ls
root@DESKTOP-POP2BKM:/boot#

あれ、何にも出ない

これが参考になりそうだがよくわからんので飛ばす

https://superuser.com/questions/517330/why-my-linux-startup-fine-with-nothing-in-the-boot-folder

ブートローダーがカーネルのイメージファイルをメモリーに読み込んで実行する

自己伸長圧縮形式?

https://e-words.jp/w/自己解凍形式.html

yasuaki640yasuaki640

/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  ................

ちなみにバイナリファイルの最初を見ればファイルタイプが大体わかるらしいぞ、、、

https://www.webimpact.co.jp/banchoblog/?p=1055

yasuaki640yasuaki640

ディスクイメージには起動に必要な/rootファイルシステムの一部が含まれている場合があるんかあああ

メモリーファイルシステム??RAMとなにが違うんだ???

https://linuc.org/study/knowledge/441/

tmpfsは、RAMディスクと異なり、1つのファイルシステムとして認識されます。