Open6
システム起動周りメモ
systemctl
- 各サービスの稼働状況を管理する
サブコマンド | 用途 |
---|---|
disable | サービスの自動起動を無効にする |
enable | サービスの自動起動を有効にする |
get-default | 次回起動時のターゲットを表示する |
halt | システムを停止しhalt状態にする |
is-active | サービスが稼働しているかを表示する |
list-unit-files | すべてのUnit定義ファイル一覧表示する |
set-default | 次回起動時のターゲットを設定する |
poweroff | システムを停止し電源を切断する |
journalcttl
- systemdの動作するシステムでsystemd-journaldデーモンを動作させ、ログに一元管理を行う
-
k
オプションで、dmesgコマンドと同じ情報が出力される -
--dmesg
オプションで、dmesgコマンドと同じ情報が出力される
一般的なLinuxの起動順序
- BIOS/UFFI
- ブートローダ
- カーネルと初期RAMディスクの内容をメモリ上に展開する- カーネルイメージと、カーネルバージョンに対応する初期RAMディスクは
/boot
ディレクトリに格納する
- カーネルイメージと、カーネルバージョンに対応する初期RAMディスクは
- カーネル
- 高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化を行う
- /sbin/initを起動する
- init
- ブートローダからカーネルに渡されたパラメータは
/proc/cmdline
ファイルで確認できる
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
.
.
.
dmesg
- カーネルが出力するメッセージが格納されているリングバッファ
-
dmesg --clear
で手動でリングバッファの内容をクリアできる
ランレベル
- ランレベルとは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 1月 23 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 11月 9 23:34 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 11月 9 23:34 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 11月 9 23:34 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 11月 9 23:34 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 11月 9 23:34 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 11月 9 23:34 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 11月 9 23:34 /lib/systemd/system/runlevel6.target -> reboot.target
システム再起動
-
reboot
コマンドを実行 -
init 6
またはtelinit 6
コマンドを実行 -
shutdown
コマンドを実行
オプション | 説明 |
---|---|
-h | システム停止 |
-r | システム再起動 |
-k | シャットダウンは行わず、ログイン中の全ユーザにメッセージを送る |
-c | 実行中のシャットダウンをキャンセル |
時間は以下のように指定
- HH:MM HH時MM分に実行
- +M M分後に実行
- now 今すぐに実行
acpid(Advanced Configuration and Power Interface)
- コンピュータの電源管理や構成に関する規格