2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【検証】reboot.targetをブートターゲットにする

Posted at

こんにちは。

現在、Linux技術者認定試験のLinuCレベル1を勉強中のエンジニアです。

LinuC試験項目の「ブートターゲット」の科目勉強中、

「デフォルトのターゲットをrebootにしたらどうなるか」

が気になったことがあったので試してみました。

ブートターゲットとは

ブートターゲットは、簡単に言うとLinux起動時にCUI(コンソール)モードで起動するかGUI(デスクトップ)モードで起動するかを指定するモードです。

具体的には以下のモードがあります。

ターゲット 内容 対応ランレベル
multi-user.target CUIログイン 3
graphical.target グラフィカルログイン 5
poweroff.target システム終了 0
rescue.target レスキュー(シングルユーザーモード) 1
reboot.target システム再起動 6

systemctl get-defaultコマンドでデフォルトの起動ターゲットを調べることができます

$ systemctl get-default 
graphical.target

また、systemctl isolateコマンドでコマンド実行直後にターゲットを実行することができます。

systemctl isolateコマンドは実行時にroot権限が必須です。

CUIモードに切り替える
# systemctl isolate multi-user.target

スクリーンショット 2024-03-16 14.31.45.png

GUIモードに切り替える
# systemctl isolate multi-user.target

スクリーンショット 2024-03-16 14.32.19.png

再起動する

# systemctl isolate reboot.target

コマンド実行後、再起動します。

デフォルトのターゲットを変更する

デフォルトのターゲットを変更するには、systemctl set-defaultコマンドを用います。

systemctl set-defaultコマンドは実行時にroot権限が必須です。

デフォルトのターゲットをCUIモードにする
$ sudo systemctl set-default multi-user.target 
Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
デフォルトのターゲットをGUIモードにする
$ sudo systemctl set-default graphical.target 
Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/graphical.target.

/lib/systemd/system/ディレクトリ以下のターゲットが/etc/systemd/system/default.targetにリンクされます。

$ ls /lib/systemd/system/default.target -l
lrwxrwxrwx 1 root root 16  1月 27 06:48 /lib/systemd/system/default.target -> graphical.target

$ systemctl get-defaultでもデフォルトのターゲットを確認できます。

$ systemctl get-default 
graphical.target

【危険】デフォルトのターゲットをreboot(再起動)にする

さて、本題ですが、デフォルトのターゲットをreboot.targetにしたらどうなるか試してみます。

起動直後に無限に再起動を繰り返すため、実行しないでください。

デフォルトのターゲットを「再起動」にする
$ sudo systemctl set-default reboot.target
Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/reboot.target.

この時点ではシンボリックリンクが作成されるだけです。

$ ls /etc/systemd/system/default.target -l
lrwxrwxrwx 1 root root 33  3月 16 15:06 /etc/systemd/system/default.target -> /lib/systemd/system/reboot.target
$ systemctl get-default 
reboot.target

再起動します。

無限に再起動を繰り返し起動不能になるため、絶対に再起動しないでください。
実行される際は自己責任でお願いします。

$ reboot

結果

無事(?)、起動直後に再起動を繰り返し、無限ループに陥ることを確認しました。
コマンドを何も受け付けないため、物理的に電源を切るしかないです。

復旧させるには、/etc/systemd/system/default.targetのシンボリックリンク先を/lib/systemd/system/multi-user.target若しくは/lib/systemd/system/graphical.targetに変える必要があります。(未検証)

起動時のgrub画面で復旧できるかもしれませんが未検証です。

まとめ

そもそも危険な操作をさせないようにする、「フールプルーフ」の考えがとても大事だと感じました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?