このウェブサイトのネチズン 墢一雨音の貢献に感謝します
この記事を書いたのには理由があります。完全なサイレント ブートを構成するために、mkinitcpio.conf ファイル内の論理エラーを無視したため、職場のコンピューターで実行されている Linux 上で不適切な mkinitcpio 操作を実行してしまいました。これにより、mkinitcpio は新しいカーネル ファイルを生成しますが、このカーネル ファイルは正しく動作しません。再起動すると、カーネルの起動がパニック状態で中止されます。
通常、新しいカーネルが正しく動作しない場合は、initramfs カーネル ファイルのフォールバック バージョンを使用してシステムを一時的に起動することも、フォールバック バージョンを直接上書きして変更をロールバックすることもできますが、今回は mkinitcpio同時に実行中 vmlinuz カーネル ファイルが変更されており、vmlinuz にはフォールバック バージョンがありません。一般ユーザーの場合、システムを直接再インストールできますが、作成者のワークステーション環境の構成は非常に複雑であるため、作業ファイルが失われる可能性があることに加えて、開発環境の再構成にも多くの余分な時間を費やす必要があります。環境。
注:このチュートリアルの「修復」は「人間による壊滅的な変更のロールバックの試み」を指すため、未知のカーネルクラッシュからの回復には使用できません。
1. LiveCD から起動してディスクを表示します
私は、Linux サーバーの運用保守のアルバイト時代に蓄積した経験に基づいて、カーネルを修復するための一時的な Linux 環境を取得するために、LiveCD を使用してブートできることをすぐに思いつきました。
筆者はArch Linuxの64ビット版を使用しているので、Arch LinuxのLiveCDから起動しました。 LiveCD の組み込み root ユーザーを正しく入力した後、メイン ハードディスクのデバイス名を確認する必要があります。 fdisk -l を実行します。私の場合、メインのハードディスクとルート ディレクトリにマウントされたパーティションに対応するデバイス ファイルは /dev/sdb2 です。
2. ハードディスク上のシステム ルート ディレクトリに chroot します。
ハードディスク上のシステム ルート ディレクトリに chroot し、ハードディスク上のシステム コンポーネントを通常どおり呼び出してハードディスク上のシステムに変更を加えられるようにするには、まずハードディスク上のルート パーティションを手動でマウントする必要があります。 。実行します (デバイス ファイルは /dev/sdb2 です):
マウント /dev/sdb2 /mnt
まだ急がないでください。この時点では、/mnt に chroot することでハードディスク上のメイン システムの bash に入ることができますが、マウントされていない重要なディレクトリがまだいくつかあるため、複雑なタスクを正しく完了することはほとんどできません。 proc ディレクトリ、/sys ディレクトリ、/dev ディレクトリ、および /run ディレクトリをそれぞれマウントする指示を実行します。 /mnt と入力してそれぞれ実行します:
mount -t proc proc proc/
マウント --rbind /sys sys/
マウント --rbind /dev dev/
mount --rbind /run run/
これらのディレクトリの機能は次のとおりです:
proc ディレクトリ : 仮想の Procfs 形式のファイル システム。プロセス ステータス ファイルの保存に使用されます (Linux では、これらのファイルは表面上はテキスト ファイルのように見えますが、実際にはプロセス ステータスのファイル マッピングです)。 );
/sys ディレクトリ : Arch Linux の場合、これは proc ディレクトリに似た Sysfs 形式の仮想ファイル システムで、システムに接続されているデバイス ファイルを保存するために使用されます。従来の Unix および Unix 系の場合は、これはカーネル コード ツリーを指すソフト リンクです;
/dev ディレクトリ : デバイス ファイルを保存します (たとえば、ハード ディスクは /dev/sdXY です)。
/run directory: 前回の起動後のシステム情報の一部を保存します;
これらをマウントした後、メイン ハードディスクのルート ディレクトリに chroot できます:
chroot /mnt
後悔の薬。私の場合、mkinitcpio.conf ファイルを変更し、mkinitcpio 操作を再実行して正しいカーネル ファイルを再生成するだけで済みました。一般に、構成の誤った変更によってカーネル パニックが発生した場合、この環境でほとんどの問題を解決できます。
3. いくつかのスキル
1. 多くの設定ファイルには、LiveCD 内のシステムの正しいバージョンまたはテンプレートが含まれています。通常の構成ファイルがどのようなものであるかを覚えていない場合は、それらを参照できます。2. Arch Linux の場合、pacstrap コマンドを直接使用して、/mnt に chroot せずに /mnt マウント ポイント上のソフトウェア パッケージを管理できます。
3. 2 つの tty で操作できるため、/mnt に chroot した後でも、ファイルを LiveCD ファイル システムから /mnt に転送できます。このチュートリアルはほとんどの Linux ディストリビューションで利用できるはずです。一部の Linux ユーザーにとって役立つことを願っています。
関連提案:
Linux システムでデュアル グラフィックス カードを構成するにはどうすればよいですか?
以上がLinux カーネルパニックに効果的に対処するためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。