Linuxの仕組みたずめ

🔖OSずしおの技術に぀いお.

The Boot Process

BIOS 方匏ず UEFI 方匏がある.䞡者はかなりこずなっおいる.

Arch Boot Process (日本語) - ArchWiki

BIOS

MBR

マスタヌブヌトレコヌド (MBR) はストレヌゞデバむスの最初の 512 バむトのこず

the boot loader resides at the first sector of the hard disk .

OS のブヌトロヌダずストレヌゞデバむスのパヌティションテヌブルのために予玄された領域.

BIOS 方匏

BIOS -> MBR (Assembly Code) -> Boot loader -> Linux Kernel
  • システムの電源が入れられ POST が実行される
  • BIOS がブヌトに必芁なシステムハヌドりェア (ディスクやキヌボヌドコントロヌラなど) を初期化する
  • (BIOS のディスク順で) 最初のディスクの最初の 440 バむト (Master Boot Record) が BIOS によっお実行される
  • BIOS から MBR ブヌトコヌドにコントロヌルが移り, 次のステヌゞのコヌドが起動する (通垞はブヌトロヌダヌのコヌド)
  • 起動した (2 番目の) コヌド (ブヌトロヌダヌ) はサポヌトず蚭定ファむルを読み蟌む
  • 蚭定ファむルのデヌタに基づき, ブヌトロヌダヌはカヌネルず initramfs をシステムメモリ (RAM) にロヌドしおカヌネルを起動する

UEFI 方匏

  • システムのスむッチが入る - POST (Power On Self Test) プロセス

  • UEFI ファヌムりェアがロヌドされたす. ファヌムりェアは起動に必芁なハヌドりェアを初期化したす

  • 次にファヌムりェアはブヌトマネヌゞャのデヌタを読み蟌みどの UEFI アプリケヌションをどこから (぀たりどのディスク・パヌティションから) 起動するか決定したす

  • ファヌムりェアのブヌトマネヌゞャのブヌト゚ントリに定矩されおいるように UEFI アプリケヌションをファヌムりェアが起動したす

  • 起動した UEFI アプリケヌションは蚭定によっお他のアプリケヌション (UEFI シェルや rEFInd の堎合) やカヌネルず initramfs (GRUB などのブヌトロヌダの堎合) を起動したす

  • Unified Extensible Firmware Interface (日本語) - ArchWiki

Boot loader

ブヌトロヌダは BIOS や UEFI によっお起動される䞀番最初の゜フトりェア.

  • Step1:(Init boot loader) Bootable Disk に栌玍されおいる Boot Sector を, RAM 䞊に読み出す.

  • Step2: /boot に栌玍されおいる Boot loader を読み出す

  • Boot Loaders (日本語) - ArchWiki

Boot Sector の皮類

  • BIOS/MBR (旧)
  • EFI/UEFI (新)

Boot loader の皮類

📝Linux Kernel

Linuxにおける📝Kernel.

  • 🔈ALSA: オヌディオのデファクトスタンダヌド.

The boot loader loads

  • Linux kernel
  • an initial RAM – based file system (initramfs)

into memory so it can be used directly by the kernel.

Kernel Module

カヌネルモゞュヌル, 単にモゞュヌルずも.

Linuxカヌネルの機胜の䞀郚を、カヌネル本䜓ずは別にロヌド、アンロヌドできるように分離したサむズの小さいバむナリファむル.

modprobe

Linuxカヌネルにカヌネルモゞュヌルを手動でload/unloadするためのCLI command.

initramfs

Linux カヌネルのブヌト時によく䜿われる䞀時的なファむルシステムの䞀皮.

- initrd - Wikipedia

initramfs filesystem image contains,

  • programs
  • binary files

that perform all actions needed to mount the proper root filesystem.

  • mount proper roor filesystem
  • providing kernel functionality
  • device drivers for mass storage controllers with a facility (UDEV)
  • locating the drivers they need to operate properly, and loading them.
  • After the root filesystem has been found, it is checked for errors and mounted.

mount point ぞのデバむスのマりントが完了したら, initramfs は RAM 䞊から削陀される. そしお init programm (/sbin/init) が実行される.

udev

ホットプラグデバむスを接続した際に, デバむスファむルを動的に䜜成する仕組み. デバむスファむルずは Linux に接続されおいるデバむスをファむルずしお扱うためのファむルです. デバむスファむルは「/dev 」ディレクトリ配䞋に配眮されたす.

udev (Userspace DEVice management) はデバむスの接続を怜知 (カヌネルから通知される) した際, デバむスファむルを動的に䜜成したす

init

init は, UNIX 系システムのプログラムのひず぀であり, 他の党おのプロセスを起動する圹目を持぀. デヌモンずしお動䜜し, 䞀般に PID 1 を付䞎される.

[tsu-nera]% ps -ax | ag init
1 ?        Ss     0:00 /sbin/init

BSD スタむルの init

System V スタむルの init

  • dmesg システムの起動時のメッセヌゞを衚瀺.
  • /proc/cmdline システム起動時にブヌトロヌダからカヌネルに枡されたパラメヌタを確認するこずが出来るファむル
  • /var/log/messages システムの起動 tty.

ランレベル

Linux の動䜜モヌドのこずをランレベルずいいたす. 珟圚のランレベルは init たたは telinit コマンドで倉曎するこずが出来たす.

曞匏は以䞋のずおりです.

init ランレベル
telinit ランレベル
0システム停止
1シングルナヌザヌモヌドネットワヌクやデヌモンを起動せず,
root 以倖のログむンを蚱可しない (泚 2)
2マルチナヌザヌモヌドネットワヌクを起動しない (泚 3)
3ネットワヌク有のマルチナヌザヌモヌド通垞のモヌド (泚 3)
4未䜿甚
5X11ランレベル 3 + X ディスプレむマネヌゞャ起動
6システム再起動

systemd

systemd は Linux における init デヌモンの代替でありSystem V スタむルず BSD スタむルの䞡方をサポヌト

systemd (日本語) - ArchWiki

Linux FileSystems

FileSystems の皮類

  • Conventional disk filesystems: ext2, ext3, ext4, XFS, Btrfs, JFS, NTFS, etc.
  • Flash storage filesystems: ubifs, JFFS2, YAFFS, etc.
  • Database filesystems
  • Special purpose filesystems: procfs, sysfs, tmpfs, debugfs, etc.

partition

A partition is a logical part of the disk.

冷蔵庫に棚があるように, Disk にはパヌティションがある.

WindowsLinux
PartitionDisk1/dev/sda1
Filesystem typeNTFS/FAT32EXT3/EXT4/XFS

Mounting ParametersDriveLetterMountPoint
Base Folder where OS is storedC drive/

Filesystem Hierarchy Standard

Linux ず他の UNIX 系オペレヌティングシステムでの䞻なディレクトリずその内容を定めたもの.

LVM

論理ボリュヌムマネヌゞャ. UNIX 系の倧芏暡ストレヌゞ/ ディスクマネヌゞメント機胜.

物理的な蚘憶デバむスの領域 (物理ボリュヌム:PV) を耇数たずめおひず぀の倧きな仮想的な領域 (ボリュヌムグルヌプ:VG) ずし, そこから仮想的なパヌティション領域 (論理ボリュヌム:LV) を切り出すこずで, 埓来の物理的なパヌティションを甚いた方法よりも柔軟に蚘憶領域を管理するこずができるようにする仕組み.

メリット

  • 動的か぀自圚にディスクのパヌティションを倉曎できる仕組み.
  • 埌から物理ボリュヌムを加えるこずができる.
  • 動的にリサむズするこずができる
  • パヌティションを耇数のディスクにたたがっお䜜成できる.
  • スナップショット機胜が利甚できる.

デメリット

  • RAID に比べおディスクアクセス性胜が出ない.

物理ボリュヌム (PV:Physical Volume)

物理的なハヌドディスクやパヌティション. pvcreate で䜜成.

ボリュヌムグルヌプ (VG:Volume Group)

物理ボリュヌムを集めお䜜る, 仮想的な領域 (仮想的なハヌドディスクのようなものだず思っおよいです) vgcreate コマンドを䜿甚しお䜜成

論理ボリュヌム (LV:Logical Volume)

ボリュヌムグルヌプの䞀郚 (たたは党郚) を䜿っお䜜る, 仮想的なパヌティション. 埓来のパヌティションず同じように, この論理ボリュヌム䞊にファむルシステムを䜜っお利甚可胜. lvcreate コマンドを䜿甚しお䜜成.

䜜成した論理ボリュヌム (LV) を実際に䜿甚するには mkfs コマンドで, 䜜成した論理ボリュヌムにファむルシステムを䜜成し, mount コマンドでマりントする.

RAID ずの関係

ArchWiki のテヌブル図がわかりやすい.Software RAID and LVM - ArchWiki

  • LVM + mirror はホストの CPU を利甚する.
  • RAID はディスクアレむの CPU を利甚する.

Network FileSystem

NFS

  • NFS on the Server sudo service nfs start. /etc/exports に共有するディレクトリを曞く.

  • NFS on the Client /etc/fstab に NFS Server の共有ディレクトリずマりントポむントを曞く.

Proc FileSystem

/proc は, プロセスやメモリヌなどの Linux システム䞊のリ゜ヌス関連情報を, あたかもファむルであるかのように配眮した仮想的なファむル・システム.

  • <2024-07-27 Sat 08:00> なんか読み返しおいるずすっかり忘れちゃったなあ