Linuxをシングルユーザーモードで起動する|CentOS 6 / RHEL 9世代別のレスキューモード手順とパスワード復旧

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, インストール, 起動 > Linuxをシングルユーザーモードで起動する|CentOS 6 / RHEL 9世代別のレスキューモード手順とパスワード復旧

この記事のポイント

・シングルユーザーモードはrootで自動ログイン・最小デーモンの障害復旧用モード
・GRUB起動メニューでカーネル行を編集して single もしくは systemd.unit=rescue.target を渡す
・パスワード忘れ復旧・fsck手動実行・破損ファイル修復が主な用途
・CentOS 6 / RHEL 7 / Rocky Linux 9 で起動手順が違うので世代別に押さえる

「rootパスワードを忘れた」「起動途中で止まってログインできない」
こんな緊急事態のとき、最後の頼みの綱になるのがシングルユーザーモードです。最小限のデーモンだけを起動し、rootアカウントでパスワードなしにシステムへ入れるレスキューモードで、Linuxサーバー管理者が必ず一度は使う機能です。

この記事では、Linuxをシングルユーザーモードで起動する方法を、CentOS 6世代の操作手順(既存資産)に加え、RHEL 7以降のsystemd時代のrescue.target / emergency.targetの操作も含めて解説します。

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

シングルユーザーモードとは何か(背景・原理)

シングルユーザーモードは、必要最小限のデーモンを起動し、パスワード入力することなくrootアカウントでログインするモードです。

主にメンテンスや、障害時の調査に使用するモードになります。
※例ではCentOS6.3を使用しています。

このモードの特徴は3つあります。

ネットワーク・X Window・大半のサービスが起動しない:余計なプロセスが動かないので、ファイルシステムの修復やパッケージ破損の復旧に向いています
パスワード入力なしでrootシェルが開く:rootパスワードを忘れたときの最後の救済手段になります
ローカルコンソール限定:SSHは動かないため、サーバーの物理コンソール(または仮想化ホストの仮想コンソール)からの操作が前提です

このセキュリティ特性のため、本番サーバーではBIOS/GRUBにパスワードを設定して、物理アクセス権のない人がシングルユーザーモードを使えないようにする運用が標準です。

シングルユーザーモードで起動する基本的な使い方(CentOS 6 / GRUB Legacy)

GRUB Legacy(CentOS 6世代)でのシングルユーザーモード起動手順は、起動メニュー画面でカーネル行を編集し、末尾に「single」を追加するだけです。元記事の手順を以下にそのまま残します。

1.「Press any key・・・」の画面で「ESC」キーを押下します

linux_single_user_mode001.jpg

2.「CentOS・・・」と表示されるので、そのまま「e」キーを押下します

linux_single_user_mode002.jpg

3.「kernel・・・」で始まる行にカーソルを合わせ、「e」キーを押下します

linux_single_user_mode003.jpg

4. 行末に「single」を追記して、「Enter」キーを押下します

linux_single_user_mode004.jpg

5. 画面が戻るので、ここで「b」キーを押下します

linux_single_user_mode005.jpg

6. コマンドプロンプトが表示されればシングルユーザーモードで起動しています

linux_single_user_mode006.jpg シングルユーザーモードを終了する場合は、rebootコマンドでシステムを再起動します。

RHEL 7 / 8 / 9系(systemd時代)でシングルユーザーモードを起動する

RHEL 7以降ではinit→systemdへ移行したため、「single」キーワードの代わりに「systemd.unit=rescue.target」「systemd.unit=emergency.target」を渡す方式に変わりました。GRUB 2のメニュー編集手順は以下です。

1. GRUBメニューで対象カーネル行にカーソルを合わせ「e」キーを押す

GRUB 2の起動メニュー表示中にカーソル移動で対象カーネルを選び、「e」キーで編集モードに入ります。CentOS 6のように途中で「ESC」を押す必要はありません。

2.「linux16」または「linux」で始まる行末に rescue.target を追記する

編集画面で「linux16」または「linux」で始まる行を探し、行末に systemd.unit=rescue.target を追加します。

# RHEL 7 / 8 / 9 / Rocky 9 / AlmaLinux 9 共通の編集例 linux ($root)/vmlinuz-... root=/dev/mapper/rhel-root ro crashkernel=auto rhgb quiet systemd.unit=rescue.target

追記したら「Ctrl + X」または「F10」でブートします。

3. rootパスワード入力後、シングルユーザーシェルへ入る

RHEL 7以降のrescue.targetでは、rootパスワードの入力が求められます。これは2001年初期世代と違うので注意が必要です。

Give root password for maintenance (or press Control-D to continue):

パスワードを入力するとレスキューシェルが開きます。終了時はexitまたはCtrl+Dで通常モードへ復帰、rebootでシステム再起動します。

シングルユーザーモード操作 早見表

やりたいことコマンド / 手順
CentOS 6でシングルユーザーモード起動GRUB編集で kernel 行末に single 追記
RHEL 7以降でレスキューモード起動GRUB編集で linux 行末に systemd.unit=rescue.target 追記
RHEL 7以降で緊急モード起動GRUB編集で linux 行末に systemd.unit=emergency.target 追記
シングルユーザーモードから通常起動へ復帰reboot
レスキュー中にルートをrw再マウントmount -o remount,rw /
rootパスワードを変更passwd root
fsckでファイルシステムをチェックfsck -y /dev/sda1
コマンド単独形式で覚えておけば、コンソール画面のテキストUIでも迷いません。

応用・実務Tips

1. rootパスワードを忘れた時のリセット手順

シングルユーザーモードの最頻出用途がrootパスワードリセットです。RHEL 7以降では以下の手順を取ります。

# GRUBで linux 行末に rd.break enforcing=0 を追加してブート # initramfsのemergencyシェルに入る switch_root:/# mount -o remount,rw /sysroot switch_root:/# chroot /sysroot sh-4.4# passwd root 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 sh-4.4# exit switch_root:/# exit

rd.break は initramfs の終わり際でブレークするオプションで、SELinux環境でも安全にパスワード変更できます。enforcing=0 は変更後にSELinuxラベル再付与で詰まらないための保険です。

2. fsckでファイルシステムを手動修復する

壊れたファイルシステムを修復するとき、対象パーティションをアンマウントした状態でfsckを流す必要があります。rootパーティション本体に対しては、シングルユーザーモード+リードオンリーマウントが必須です。

# レスキューモードでリードオンリー再マウント → fsck [root@Tiger ~]# mount -o remount,ro / [root@Tiger ~]# fsck -y /dev/sda1 fsck from util-linux 2.37.4 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure ... /dev/sda1: 12345/65536 files (0.1% non-contiguous), 234567/1048576 blocks

-y オプションで全部のリペアに自動でYESを答えます。本番では結果ログを必ず保存してから reboot します。

3. GRUBにパスワードを設定してシングルユーザーモード乱用を防ぐ

シングルユーザーモードはrootシェルへ無条件で到達できるため、物理アクセス権のある人なら誰でもサーバーを乗っ取れる経路になります。本番サーバーではGRUBパスワードを設定して、起動メニュー編集自体を制限します。

# RHEL 7以降のGRUBパスワード設定 [root@Tiger ~]# grub2-setpassword 新しいパスワード: 新しいパスワードを再入力: [root@Tiger ~]# ls /boot/grub2/user.cfg /boot/grub2/user.cfg

これでGRUB編集時にユーザ名「root」とパスワードが要求されるようになります。物理セキュリティとセットで運用するのが鉄則です。

「Welcome to emergency mode」が出た時の対処法

予期せぬ起動失敗で勝手にemergency modeへ落ちることがあります。原因の8割はfstabの記述ミスです。

Welcome to emergency mode! After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot into default mode. Give root password for maintenance (or press Control-D to continue):

ログイン後はjournalctl -xbで起動ログを確認します。よく見つかる原因と対処は以下です。

fstabの誤記:mount -o remount,rw / で書き込み可にしてから vi /etc/fstab で修正
削除済みディスクUUIDの残存:旧UUIDを fstab から削除
SELinuxラベル不整合:touch /.autorelabel して再起動でラベル再構築

原因を1つずつ潰してから systemctl default で通常モードに戻します。

本記事のまとめ

Linuxをシングルユーザーモードで起動する手順は、サーバー管理者の必須スキルです。

CentOS 6世代:GRUB Legacyでkernel行末に single 追記
RHEL 7 / 8 / 9系:GRUB 2でlinux行末に systemd.unit=rescue.target 追記
rootパスワード復旧:rd.break で initramfs シェルへ入り passwd root
緊急モード:systemd.unit=emergency.target で最小限のシェルへ

障害復旧の現場では「ssh越しに直そうとして余計に壊す」事故が多いです。シングルユーザーモードで切り離してから慎重に修復する習慣をつけると、本番事故時のダメージを最小化できます。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。