Open6

システム起動周りメモ

haseyuyhaseyuy

systemctl

  • 各サービスの稼働状況を管理する
サブコマンド 用途
disable サービスの自動起動を無効にする
enable サービスの自動起動を有効にする
get-default 次回起動時のターゲットを表示する
halt システムを停止しhalt状態にする
is-active サービスが稼働しているかを表示する
list-unit-files すべてのUnit定義ファイル一覧表示する
set-default 次回起動時のターゲットを設定する
poweroff システムを停止し電源を切断する

journalcttl

  • systemdの動作するシステムでsystemd-journaldデーモンを動作させ、ログに一元管理を行う
  • kオプションで、dmesgコマンドと同じ情報が出力される
  • --dmesgオプションで、dmesgコマンドと同じ情報が出力される
haseyuyhaseyuy

一般的なLinuxの起動順序

  1. BIOS/UFFI
  2. ブートローダ
     - カーネルと初期RAMディスクの内容をメモリ上に展開する
    • カーネルイメージと、カーネルバージョンに対応する初期RAMディスクは/boot ディレクトリに格納する
  3. カーネル
    • 高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化を行う
    • /sbin/initを起動する
  4. init
  • ブートローダからカーネルに渡されたパラメータは/proc/cmdlineファイルで確認できる

https://www.infraeye.com/study/linuxz2.html

UEFIの特徴

  • GUIで操作可能
  • GPTというパーティション形式に対応している
  • ESPはUEFIシステムにおいて、物理的なマシンを起動し、ファームウェアが読み込まれた後、その後の起動シーケンスで最初にアクセスされる領域、ESPは/boot/efiにマウントされる

init

  • initはカーネルによって最初に起動されるプロセスで、PIDは1
  • initプロセスは全てのプロセスの先祖
  • SysVinitと呼ばれる従来のinitプログラムを採用しているシステムは、/sbin/initを起動する
  • initは起動されると/etc/inittabの記述に基づいて、自動起動すべきプロセスを立ち上げる

SysVinit/Upstart/systemd

  • SysVinit(1988年頃) -> Upstart(2006年頃) - > systemd(2011年〜)

SysVinit

  • initプロセスは、/etc/inittabに記述されたプロセスを順に起動する
  • 前のプロセスの終了を待って次のプロセスを起動するので、起動遅延が発生しやすい
  • 各ランレベルに応じたスクリプトは/etc/rc[0-6].dに入っている

Upstart

  • SysVinitとは違い、プロセスを並列で起動することができる
  • イベント駆動型(initデーモンがイベントを検知すると、イベントに対応するジョブを実行する)
  • /etc/event.dに置かれたジョブ定義ファイルで実行される

systemd

  • initプロセスではなく、systemdプロセスが起動してサービスを管理する
  • systemdプロセスが起動すると、default.targetというUnitが起動される
  • Upstartと比べて高速起動
  • システム起動のための処理をUnitという単位で管理する
  • cgroups というLinuxカーネルの機能によってプロセスリソースを管理する
起動プロセス 特徴
SysVinit initプロセス /etc/inittabのプロセスを順に起動
Upstart initプロセス イベント駆動, /etc/event.d or /etc/initにジョブ定義ファイルがある
systemd systemdプロセス Unit単位での管理, /etc/systemd/system/default.targetが起動時にターゲット
利用できるユニット一覧表示
$ systemctl list-unit-files
UNIT FILE                                                                     STATE
proc-sys-fs-binfmt_misc.automount                                             static
-.mount                                                                       generated
boot.mount                                                                    generated
dev-hugepages.mount                                                           static
dev-mqueue.mount                                                              static
proc-sys-fs-binfmt_misc.mount                                                 static
sys-fs-fuse-connections.mount                                                 static
sys-kernel-config.mount                                                       static
sys-kernel-debug.mount                                                        static
tmp.mount                                                                     disabled
.
.
.
haseyuyhaseyuy

dmesg

  • カーネルが出力するメッセージが格納されているリングバッファ
  • dmesg --clearで手動でリングバッファの内容をクリアできる
haseyuyhaseyuy

ランレベル

  • ランレベルとはLinuxの動作モードのこと
ランレベル 説明
0 システム停止
1/s/S シングルユーザモード
2 マルチユーザモード(テキストログイン, NFS(ファイル共有)なし)
3 マルチユーザモード(テキストログイン)
4 未使用
5 マルチユーザモード(GUIログイン)
6 システム再起動
現状のランレベルの確認
$  systemctl get-default
multi-user.target

$  cd /etc/systemd/system/
$ ls- l default.target
lrwxrwxrwx 1 root root 41  123 16:29 default.target -> /usr/lib/systemd/system/multi-user.target

$ runlevel
N 3
ランレベルの変更
$ set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
runrevelとの対比
$ ls -al /lib/systemd/system/runlevel*target
lrwxrwxrwx. 1 root root 15 119 23:34 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 119 23:34 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 119 23:34 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 119 23:34 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 119 23:34 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 119 23:34 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 119 23:34 /lib/systemd/system/runlevel6.target -> reboot.target
haseyuyhaseyuy

システム再起動

  • rebootコマンドを実行
  • init 6またはtelinit 6コマンドを実行
  • shutdownコマンドを実行
オプション 説明
-h システム停止
-r システム再起動
-k シャットダウンは行わず、ログイン中の全ユーザにメッセージを送る
-c 実行中のシャットダウンをキャンセル

時間は以下のように指定

  • HH:MM HH時MM分に実行
  • +M M分後に実行
  • now 今すぐに実行
haseyuyhaseyuy

acpid(Advanced Configuration and Power Interface)

  • コンピュータの電源管理や構成に関する規格