tanish-kr's learning log

Learning output log

LPIC

1. システムアーキテクチャ

1.1 ハードウェアの基礎知識と設定

1.1.1 基本的なシステムハードウェア

  • CPU

    Intel系 x86等, 組み込み系 ARM等

  • メモリ

    多ければ多いほど、多くのアプリケーションが動作

  • ハードディスク

    HDDからより高速な読み書き可能なSSD

  • 入力装置
  • 拡張カード

    NIC、サウンドカード, SCSIカード等。コールドフラグ

  • USB機器

    ホットフラグ

1.1.2 BIOS/UEFI

BIOS(Basic Input Output System)の役割

  • OSが気動するためのプログラムをディスクから読み込んで実行する
  • デバイスの動作を確認する
  • 基本的な入出力を制御する

UEFI(Unified Extensible Firmware Interface) <- BIOSの後継

BIOSセッティング画面を表示するには一般的にはF1F2Deleteキーなどを起動画面で押す

セットアップで設定可能な項目

  • 日付や時刻(ハードウェアクロック)
  • ディスクドライブや各種デバイスのパラメータ
  • キーボードの使用/不使用
  • 電源管理
  • 起動ドライブの順序
  • デバイスへのIRQ(Interrput Request: 割り込み要求)の割り当て
  • 各種デバイスの使用/不使用

1.1.3 デバイス情報の確認

デバイスファイル確認

$ ls /dev

デバイスに関する情報

  • CPU情報
$ cat /proc/cpuinfo
  • IRQ情報
$ cat /proc/interrupts
  • I/Oアドレス情報
$ cat /proc/ioports
  • メモリ情報
$ cat /proc/meminfo
  • USBデバイス情報
$ cat /proc/bus/usb/*
$ lsusb -v
  • PCIデバイス情報
$ cat /proc/bus/pci/*
$ lspci -vv

1.1.4 USBデバイス

  • 最大127台までのUSBデバイスを接続可能
  • さまざまなUSBデバイスを同一のコネクタで接続可能
  • 電源を入れたままでの接続・取り外しに対応(ホットプラグ)
  • プラグ&プレイをサポート
  • USBポートからUSBデバイスに電源を供給可能

USBのバージョン

バージョン 最大データ転送速度
USB 1.0 12Mビット/秒
USB 1.1 12Mビット/秒
USB 2.0 480Mビット/秒
USB 3.0 5Gビット/秒
USB 3.1 10Gビット/秒

1.1.5 udev(Userspace DEVice management)

デバイスが接続されると、カーネルがそれを検知し、/sysディレクトリ以下にデバイス情報を作成する。 udevデーモンは、そのデバイス情報を参照して、/devディレクトリ以下にデバイスファイルを作成する。その際に/etc/udev/rules.dディレクトリ以下の設定ファイルが読み込まれる。

1.1.6 デバイスドライバのロード

デバイスを利用するために必要な制御プログラムを_デバイスドライバ_という。

  • カーネルモジュールの確認
$ lsmod
  • 手動でデバイスドライバをロードする
# modprobe e1000


1.2 Linuxの起動とシャットダウン

1.2.1 システムが気動するまでの流れ

* コンピューターのアーキテクチャによって異なる

  1. BIOS/UEFI
  2. ブートローダー
  3. カーネル
  4. init/systemd

1.2.2 起動時のイベント確認

$ dmesg

ログ

以下のログでも確認できる

  • /var/log/messages
  • /var/log/dmesg
  • /var/log/booot.log

1.2.3 システムのシャットダウンと再起動

shutdownコマンド

オプション 説明
-h 時間を指定してシャットダウン
-r 再起動
-f 次回起動時にfsckをスキップする
-F 次回起動時にfsckを必ず実行
-k 実際にシャットダウンをせず、警告メッセージを通知
-c 現在実行中のシャットダウンをキャンセルする

すぐにシャットダウン/再起動する

# shutdown -h now
# shutdown -r now

他のシャットダウンコマンド

# halt
# poweroff

他の再起動コマンド

# reboot


1.3 SysVinit(System Five Init)

現在ではsystemdが主流

1.3.1 SysVinitによる起動

  1. initが/etc/inittabファイルを読み込む
  2. initが/etc/rc.sysinitスクリプトを読み込む
  3. initが/etc/rcスクリプトを実行する
  4. /etc/rcスクリプトが/ect/rc<ランレベル>.dディレクトリ以下のスクリプトを実行する

1.3.2 ランレベル

Red Hat, CentOS, Fedoraのランレベル

ランレベル 説明
0 停止
1 シングルユーザモード
2 マルチユーザモード(テキストログイン、NFSサーバは停止)
3 マルチユーザモード(テキストログイン)
4 未使用
5 マルチユーザモード(グラフィカルログイン)
6 再起動
Sまたはs シングルユーザモード

Ubuntu, Debian, GNU/Linuxのランレベル

ランレベル 説明
0 停止
1 シングルユーザモード
2 マルチユーザモード
3 マルチユーザモード
4 マルチユーザモード
5 マルチユーザモード
6 再起動
Sまたはs シングルユーザモード

シングルユーザモードはrootだけが利用できる

1.3.3 ランレベルの確認、変更

  • 現在のランレベルを表示
# runlevel
  • ランレベルを変更
# init 1
# tellinit 1
  • ユーザの端末にメッセージを送る
$ wall "message"

1.3.4 起動スクリプトによるサービスの管理

例) httpdサービスの開始と終了

# /etc/init.d/httpd start
Starting httpd:

# /etc/init.d/httpd stop
Stopping httpd:

1.3.5 デフォルトのランレベルの設定

デフォルトのランレベルは/etc/inittabに記述されている

例) デフォルトのランレベルを5に変更する

id:5initdefault:


1.4 systemd

1.4.1 systemdの概要

systemd関連の主なデーモンプロセス

プロセス 説明
systemd systemdのメインプロセス
systemd-journald ジャーナル(ログ)管理プロセス
systemd-logind ログイン処理プロセス
systemd-udevd デバイス動作検知プロセス

systemdでは、システムの起動処理は多数のUnitと呼ばれる処理単位に分かれている。拡張子で区別できる。

Unitの主な種類

拡張子 説明
service 各種サービスを気動する
device 各種デバイスを表す
mount ファイルシステムをマウントする
swap スワップ領域を有効にする
target 複数のUnitをグループ化する

1.4.2 systemdの起動手順

ランレベルとターゲットの対応

ランレベル ターゲット
0 poweroff.target
1 rescue.target
2,3,4 multi-user.target
5 graphical.target
6 reboot.target

1.4.3 systemctlによるサービスの管理

# systemctl <サブコマンド> [Unit名] [-t 種類]

systemctlコマンドの主なサブコマンド

サブコマンド 説明
start サービスを気動する
stop サービスを終了する
restart サービスを再起動する
reload サービスの稼働状況を表示する
status サービスの稼働状況を表示する
is-active サービスが稼働しているかどうかを確認する
enable システム起動時にサービスを自動起動する
disable システム起動時にサービスを自動起動しない
list-unit-files すべてのUnitを表示する
reboot システムを再起動する
poweroff システムをシャットダウンする