ホームページ >運用・保守 >Linuxの運用と保守 >Linux システム障害のトラブルシューティングと修復方法に関するヒント
[はじめに] Linux システムの起動プロセス中にいくつかの障害が発生し、システムが正常に起動できないことがわかりました。ここでは、シングルユーザー モード、GRUB コマンド操作、および Linux を適用したいくつかの障害修復ケースを書きました。レスキューモードは、誰もがこれを理解できるようにするためのものです。 (1) シングルユーザー モード Linux システムは
を提供します。Linux システムの起動プロセス中にいくつかの障害が発生し、システムが正常に起動できないことがわかりました。ここにいくつかのアプリケーションを書きました: シングルユーザー モード、GRUB コマンド。障害修復のケースは、そのような問題の解決方法を誰もが理解するのに役立ちます。
(1) シングルユーザーモード
Linux システムには、最小限の環境でシステムメンテナンスを行うことができるシングルユーザーモード (Windows のセーフモードと同様) が用意されています。シングルユーザー モード (ランレベル 1) では、Linux はルート シェルで起動し、ネットワークは無効になり、少数のプロセスのみが実行されます。シングルユーザー モードは、ファイル システムの損傷の修正、構成ファイルの復元、ユーザー データの移動などに使用できます。
以下は、シングルユーザー モードでシステム障害を修復する典型的なケースです:
ケース 1: root パスワードを忘れた場合
シングルユーザー モードでは、Linux は root パスワードを必要としません (Red Hat システムは必要ありません) root パスワードが必要ですが、SuSe が必要であり、Linux システムによって若干異なります。この記事では例として Fedora Core 6 を使用します)。これにより、root パスワードの変更が非常に簡単になります。システムがマルチユーザー モードで起動できない場合に、シングルユーザー モードに入る方法を理解することが重要です。
1. システムの起動プロセス中に、任意のキーを押して GRUB メニュー オプションに入ります。
今後このプロンプトを回避したい場合は、GRUB メニュー オプションに直接移動し、設定ファイル grub.conf 内の「hiddenmenu」項目を削除してください。
2. 「e」キーを押して GRUB ブート メニュー オプションを編集し、「e」キーを押した後の GRUB 画面を編集します。矢印キーを使用してカーネル行まで移動し、「e」キーを押します。
3. 最後の行カーソルに単一を追加し、Enter キーを押して前の画面に戻り、「b」キーを押します。ブートすると、システムは自動的にシングル ユーザー モードに入ります。root パスワードを変更したい場合は、次のコマンドを実行します: sh-3.1# passwd root
変更が成功したら、exit コマンドを実行して終了し、再起動します。
シングルユーザー モードでのシステムの正常な起動を妨げる多くの問題を修正できます。
1. システム動作を中断する可能性のあるサービスを無効にします。たとえば、Samba サービスを無効にする場合は、次のコマンドを実行します。 3.1# chkconfig smb off next time system ブート中に Samba サービスは開始されません。
2. X Window が起動できない場合、または失敗する場合は、/etc/inittab ファイルを編集し、テキスト モードを使用してログインし、initdefault ブート レベルを 3: id: 3: initdefault: に変更します。
ケース 2: ハードドライブのセクター障害
起動プロセス中に発生する最も一般的な問題は、ハードドライブに不良セクターまたは障害セクター (データ損傷) がある可能性があることです。この状況は、多くの場合、異常な停電または異常によって引き起こされます。シャットダウン。この種の問題が発生した場合、システムの起動時に画面が表示されます:
root パスワードまたは Ctrl+D を押します: この時点で root パスワードを入力すると、システムは自動的にシングルユーザー モードに入ります。「fsck -」と入力します。 y /dev/hda6" (fsck はファイル システムの検出および修復コマンドです。「-y」はエラーが検出されたときに自動的に修復されるように設定します。/dev/hda6 はエラーが発生したハードディスク パーティションです。これを変更してください特定の状況に応じてパラメータを変更してください)、システムの修復が完了したら、「reboot」コマンドを使用して再起動します。
ケース 3、GRUB オプション設定エラー
「エラー 15」は、システムが grub.conf で指定されたカーネルを見つけられないことを示します。 GRUB ブート エラー メッセージ。入力ミスにより、カーネル ファイル内の「vmlinuz」が「vmlinux」と入力されていたため、システムがカーネル実行可能ファイルを見つけることができませんでした。任意のキーを押して GRUB 編集インターフェイスに戻り、このエラーを変更できます。Enter キーを押して保存し、「b」キーを押して通常どおり起動します。もちろん、その後 grub.conf ファイル内のエラーを変更することを忘れないでください。システムに入る。これは、多くの初心者 Linux ユーザーが GRUB 設定を変更するときに犯しやすい間違いです。この黒い画面プロンプトが表示されたら、エラー メッセージに注意してください。それに応じて修正できます。
(2) GRUB ブートのトラブルシューティング
Linux の起動後、GRUB コマンド ライン インターフェイスが直接表示されることがあります (現時点では、多くのユーザーが再インストールを選択します)。 GRUB をインストールするか、システムを再インストールします。実際、一般的に、この失敗の最も一般的な理由は 2 つあります。1 つは、GRUB 構成ファイルのオプション設定が間違っていることです。もう 1 つは、GRUB 構成ファイルの損失です (カーネルなどのいくつかの理由もあります)。ファイルまたはイメージ ファイルの破損または欠落、/boot ディレクトリの誤った削除など)、最初のケースの場合は、まず GRUB コマンドを使用してシステムを起動し、2 番目のケースの場合は修復する必要があります。 Linux レスキュー モードを使用して修復します (この記事で後述します)。
まず、GRUB ブート システムのブート プロセスを理解する必要があります。grub.conf ファイルの主な構成オプションは次のとおりです (GRUB 構成ファイルは /boot/grub/grub.conf、/ であることに注意してください)。 etc/grub.conf はソフトリンクのみです):
title Fedora Core (2.6.18-1.2798.fc6)root (hd0,0)kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.18-1.2798.fc6.img
「title」セクションは、GRUB によってブートされるシステムを指定します。「root」セクションは、/boot パーティションの場所を指定します。「kernel」セクションは、カーネルがロードされるときのカーネル ファイルの場所を指定します。読み取り専用 (「ro」) で、ルート パーティションの場所を指定します (root=LABEL=/)。 initrd はイメージ ファイルの場所を指定します。したがって、GRUB が起動するときは、最初に /boot パーティションがロードされ、次にカーネル ファイルとイメージ ファイルが順番にロードされます。
ケース: 「title Fedora Core (2.6.18-1.2798.fc6)」セクションが誤って削除されました
このとき、システムは起動後に自動的に「GRUB>」コマンドラインに入ります。次の操作を順番に行うことができます:
1. /boot/grub/grub.conf ファイルが存在するパーティションを見つけます
2.エラー用の grub.conf ファイル GRUB>cat (hd0, 0)/boot/grub/grub.conf システムをインストールしてセットアップした後、grub.conf ファイルがある場合はバックアップすることをお勧めします。 grub.conf.bak などのバックアップ ファイルを作成すると、この時点でバックアップ ファイルを表示して、現在のファイルと比較できます。エラー: GRUB>cat (hd0, 0)/boot/grub/grub.conf.bak
3エラーを確認したら、まずコマンド ラインから GRUB ブートを完了し、システムに入った後に grub.conf ファイルを修復します。 エラー: 1) /boot パーティション ルート (hd0, 0) を指定します
2) kernel reading kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb Quiet 3) イメージファイルの場所を指定 initrd /boot/ initrd-2.6.18-1.2798.fc6.img
ヒント: GRUB はタブ キー コマンド補完機能をサポートします
4. /boot パーティション (hd0, 0) からブートを開始します
コマンド ライン モードは GRUB メニュー モードで渡すことができます。「c」キーを押して呼び出します。また、新しくコンパイルされたカーネルをテストするために使用することもできます (カーネルをセットアップし、新しいカーネルとイメージ ファイルをブートするための initrd)。 GRUB ブートと Linux システムブートに関する知識を深めれば、この種の問題のトラブルシューティングに大いに役立ちます。
(3) Linux レスキュー モード アプリケーション
システムがシングルユーザー モードにさえ入ることができない場合、または GRUB コマンド ラインでは解決できないブート問題がある場合、Linux レスキュー モードを使用する必要があります。トラブルシューティング。手順は次のとおりです:
1. Linux インストール CD (CD を使用する場合は、最初の起動 CD) を CD-ROM ドライブに挿入し、Linux インストール時にファームウェア CMOS/BIOS が CD から起動するように設定します。画面が表示されたら、「boot:」プロンプトで「linuxrescue」と入力し、Enterを押してレスキューモードに入ります。 (レスキュー モードについて詳しく知りたい場合は、F5 キーを押して表示することもできます)
2. システムがハードウェアを検出し、CD 上の Linux 環境を起動し、言語を選択するように求められます。レスキュー モードで使用します (デフォルトの英語を選択することをお勧めします。著者のテストによると、一部の Linux システムでは中国語を選択すると文字化けが発生します)。キーボードのネットワーク設定はデフォルトの「us」を使用する必要があります。ほとんどの障害修復にはネットワーク接続は必要ありません。この設定を行って「いいえ」を選択することはできません。
3. 次に、システムはルート パーティションの検索を試み、マウント プロンプトが表示されます。デフォルト設定では、ハードディスクのルート パーティションが /mnt/sysimage ディレクトリにマウントされます。 CD-ROM Linux 環境。デフォルトのオプション「続行」は、ダウンロード許可が読み取りおよび書き込みを意味します。「読み取り専用」は読み取り専用を意味します。検出が失敗した場合は、「スキップ」を選択できます。ここでは、システムを修復する必要があるため、読み取りおよび書き込み権限が必要です。通常は、デフォルトのオプション「続行」が選択されています。
次のステップに入ると、システムは「chroot /mnt/sysimage」コマンドを実行して、ルート ディレクトリをハードディスク システムのルート ディレクトリにマウントするように求めます。
ケース 1: デュアル システム起動の修復
デュアル システム環境をインストールする場合、最初に Linux をインストールしてから Windows をインストールします。または、デュアル システム環境にインストールされている Windows が破損しているため、Windows を再インストールした後、GRUB を保存します。 MBR (マスター ブート レコード (マスター ブート レコード) は Windows システム ブートローダー NTLDR によって上書きされ、Linux システムが起動できなくなります。
1. デュアルシステムブートを復元したい場合は、まず上記の方法でレスキューモードに入り、次のように chroot コマンドを実行します:
sh-3.1# chroot /mnt/sysimage
2. ルートディレクトリをハードディスクシステムのルートディレクトリに切り替えます。次に grub-install コマンドを実行して GRUB を再インストールします:
sh-3.1# grub-install /dev/hda
"/dev/hda" はハードディスクの名前です。SCSI ハードディスクを使用している場合、または Linux が 2 番目の IDE ハードディスクにインストールされている場合、この設定が必要です。それに応じて調整されます。
3. 次に、exit コマンドを順番に実行して、chroot モードとレスキュー モードを終了します (exit コマンドを 2 回実行します):
sh-3.1# exit
システムが再起動すると、GRUB ブートによるデュアル システムの起動が復元されます。
ケース 2: システム構成ファイルの損失の修復
システムの起動中、非常に重要なプロセスは、init プロセスが構成ファイル /etc/inittab を読み取り、システムの基本サービス プログラムとデフォルトのランレベル サービス プログラムを開始することです。システムの起動中に、/etc/inittab が誤って削除されたり、誤って変更されたりした場合、図 7 に示すように、Linux は正常に起動しません。現時点では、このような問題はレスキュー モードでのみ解決できます。
/etc/inittab ファイルが見つからないブートエラーの例
1、有备份文件的恢复办法进入救援模式,执行chroot命令后,如果有此文件的备份(强烈建议系统中的重要数据目录,如/etc、/boot等要进行备份),直接将备份文件拷贝回去,退出重启即可。如果是配置文件修改错误,如比较典型的/boot/grub/grub.conf及/etc/passwd的文件修改错误,也可以直接修正恢复。假设有备份文件/etc/inittab.bak,则在救援模式下执行:
sh-3.1# chroot /mnt/sysimagesh-3.1# cp /etc/inittab.bak /etc/inittab
2、没有备份文件的恢复办法如果一些配置文件丢失或软件误删除,且无备份,可以通过重新安装软件包来恢复,首先查找到/etc/inittab属于哪一个RPM包(即便文件丢失,因为存在RPM数据库,一样可以查找到结果):sh-3.1# chroot /mnt/sysimage sh-3.1# rpm -qf /etc/inittab initscripts-8.45.3-1
退出chroot模式:
sh-3.1# exit
挂载存放RPM包的安装光盘(在救援模式下,光盘通常挂载在/mnt/source目录下):
sh-3.1# mount /dev/hdc /mnt/source
Fedora系统的RPM包存放在光盘Fedora/RPMS目录下,其他Linux存放位置大同小异,我在这里不一一列举;另外,因为要修复的硬盘系统的根目录在/mnt/sysimage下,需要使用——root选项指定其位置。覆盖安装/etc/inittab文件所在的RPM包:
sh-3.1# rpm -ivh ——replacepkgs ——root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm
其中的rpm命令选项“——replacepkgs”表示覆盖安装,执行完成后,即已经恢复了此文件。
如果想只提取RPM包中的/etc/inittab文件进行恢复,可以在进入救援模式后,执行命令:
sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittabsh-3.1# cp etc/inittab /mnt/sysimage/etc
注意此命令执行时不能将文件直接恢复至/etc目录,只能提取到当前目录下,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的/mnt/sysimage目录下相应位置即可。
救援模式是维护Linux的有力武器,本文以上述两个例子讲解了它的应用方法,希望能够给读者一点启示。解决Linux系统启动的故障,必须充分理解Linux的引导过程,才能够对故障进行有效的判断和处理。
以上がLinux システム障害のトラブルシューティングと修復方法に関するヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。