CentOS7でシングルユーザモードに移行する方法です。
CentOS7での変更点
CentOS6までは「init 1」とかでシングルユーザモードに移行できましたが、CentOS7からは移行方法が変更になっています。
これはCentOS6まではOSがSystem V系だったのでランレベルという形で動作モードを管理していましたが、CentOS7からはSystemdでの管理がメインとなりランレベルでの管理からターゲットという管理方法に変更となっています。
ランレベルとターゲットの対応表
ランレベルとの対応は下記の通りとなり、CentOS7ではシングルユーザモードに相当するターゲットは「rescue.target」(またはrunlevel1.target)ということになります。
動作内容 | ランレベル | ターゲット |
---|---|---|
システム停止 | 0 | poweroff.target runlevel0.target |
シングルユーザモード | 1 | rescue.target runlevel1.target |
マルチユーザモード (ネットワークOFF) |
2 | multi-user.target runlevel3.target |
マルチユーザモード (ネットワークON) |
3 | multi-user.target runlevel3.target |
未使用 | 4 | multi-user.target runlevel4.target |
GUIログイン | 5 | graphical.target runlevel5.target |
再起動 | 6 | reboot.target runlevel6.target |
緊急モード | 対応無し | emergency.target |
ランレベル2,3,4について
CentOS7ではランレベル2、3、4に相当するターゲットは「multi-user.target」となり区別がなくなっています。
「runleve2.target」「runleve3.target」「runleve4.target」については「multi-user.target」へのシンボリックリンクとなっています。
# cd /usr/lib/systemd/system # ls -l runlevel{2..4}.target lrwxrwxrwx 1 root root 17 5月 2 04:39 runlevel2.target -> multi-user.target lrwxrwxrwx 1 root root 17 5月 2 04:39 runlevel3.target -> multi-user.target lrwxrwxrwx 1 root root 17 5月 2 04:39 runlevel4.target -> multi-user.target
「emergency.target」について
CentOS7から追加になった「emergency.target」は「rescue.target」でもシステムにログインできない場合などに使用するためのターゲットです。
作業前の注意点
シングルユーザモードになるとネットワークが切断されてしまうので、作業を行う場合は直接サーバにアクセスできるコンソール等から作業してください。
遠隔地のサーバをssh等でリモートから接続している場合は、シングルモードにしたとたんサーバにアクセス出来なくなってしまいますので、十分に注意してください。
シングルユーザモードへの移行方法
CentOS7では「systemctl isolate」コマンドでターゲットの変更を行います。
# systemctl isolate ターゲット
CentOS6までのシングルユーザモードに相当するターゲットは「rescue.target」となるため、下記コマンドを実行することでモードを変更することが出来ます。
# systemctl isolate rescue.target
コマンドを実行した後には「root」ユーザのパスワードを入力する必要があります。
initコマンドも使えます
「systemctl」コマンドを使用してターゲット変更する以外にも、従来の「init」コマンドを使用してもターゲットを変更することが出来ます。
この「init」コマンドは「/lib/systemd/systemd」へのシンボリックリンクとなっていて、実際には「systemd」コマンドを実行する形となっています。
# ls -l /sbin/init lrwxrwxrwx 1 root root 22 5月 2 04:39 /sbin/init -> ../lib/systemd/systemd
「init」コマンドで「rescue.target」に移行する場合は従来通り「init 1」で変更することが出来ます。
# init 1
現在のターゲット確認方法
現在のsysytemdターゲットは下記コマンドで確認することが出来ます。
# systemctl list-units --type target
シングルユーザモード(resucue.target)の場合はこのように表示されます。
ちなみにマルチユーザモード(multi-user.target)の場合はこんな感じになります。
runlevelコマンドも使えます
従来の「runlevel」コマンドでも現在の状態を確認することが出来ます。
左から「変更前」「変更後」の状態がターゲットに相当するランレベルで表示されます。
今回の場合はランレベル「3」(multi-user.target)から「1」(rescue.target)に変更されていることが確認できます。
ちなみに、CentOS7の「runlevel」コマンドは、実際には「/bin/systemctl」へのリンボリックリンクとなっています。
# ls -l /sbin/runlevel lrwxrwxrwx 1 root root 16 5月 2 04:39 /sbin/runlevel -> ../bin/systemctl
コメント