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 の種類

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

Filesystem Hierarchy Standard

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

GParted

定番ツール.

LVM

論理ボリュームマネージャ. UNIX 系の大規模ストレージ/ ディスクマネージメント機能.

論理ボリュームマネージャ - Wikipedia

物理的な記憶デバイスの領域 (物理ボリューム: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> なんか読み返しているとすっかり忘れちゃったなあ…