SOS:Centosから/boot署名を削除すると、オペレーティングシステムをどのように復元できますか?

SOS:Centosから/boot署名を削除すると、オペレーティングシステムをどのように復元できますか?

/boot今日私はcentosサーバーでディレクトリを拡張したいと思います。

これを行う前に3つの部分があります。

オペレーティングシステムがオンになっており、/dev/nvme1パーティションは次のとおりです。

/bootに含まれる/dev/nvme1p1

/boot/efiに含まれる/dev/nvme1p2

/homeに含まれる/dev/nvme1p3

/ bootディレクトリをバックアップしてから、nvme1p1.nvme1p2を削除してから、新しいパーティション ""を追加しました( ""と ""nvme1p1のスペースをマージしました)。nvme1p1nvme1p2

この 2 つの古いパーティションを削除すると、警告メッセージが表示されます。Do you want to remove the signature? [Y]es/[N]o:

その後、入力yesしてディスクに書き込みます。その後、新しいファイルをインストールnvmep1/boot、バックアップしたファイルをこの新しいファイルにコピーしました。/boot

その後、再起動しましたが、OSを見つけることができます。

助けてもらえますか?復元できますか?

答え1

「シグネチャ」はブートプロセスと直接関係がありません。単に他のソフトウェアがパーティションに既存のファイルシステムが含まれていることを認識できるようにするため、管理者が強制的に上書きしない限り上書きしないでください。署名を再生成しmkfs/dev/nvme1p1場合、またはそれを実行した分割ツールを使用した場合は、とにかく新しい署名を生成しました。

/boot/efi過去に存在していたという事実として、システムは明らかにUEFIスタイルで起動します。 UEFIモードでも起動できる外部起動可能メディアが必要です。リカバリブートメディアがレガシーBIOSモードで起動すると、ブートローダの再インストールフェーズでいくつかの問題が発生する可能性があります。

まず、外部メディアからシステムを起動し、破損したオペレーティングシステムのルートファイルシステムをマウントしてから(同じディスク上にありますか、それとも別の場所にありますか?)、そのシステムにchrootする必要があります。 CentOSインストールメディアの「回復モード」はこれを自動的に実行できます。他の Linux ライブ CD/DVD/USB を使用している場合、プロセスは似ています。

mount /dev/something /mnt      # mount the root filesystem to /mnt
mount -o rbind /dev /mnt/dev   # then supply it with /dev, /proc and /sys
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
chroot /mnt /bin/bash          # finally switch to it

この時点から、このシェルセッションのすべてのコマンドは、破損したCentOSインストールのルートファイルシステム(ライブブートメディアの実際のルートファイルシステムではなく)を表示します/

その後、mkfsパーティションを分割したので、新しいファイルシステムUUIDを使用するか、見つけて更新する/boot必要があります。その後、簡単な操作で適切な場所にマウントできます。blkidlsblk -o +uuid/etc/fstabmount /boot

次に、元の.efiシステムパーティションを再作成する必要があります/dev/nvme1p2。これはまったく新しいパーティションであり、ディスクの先頭にある必要はありませんが、システムファームウェアのアクセス方法を知っているどこかに存在する必要があります。パーティションタイプを「EFIシステムパーティション」または縮小してESPに設定する必要があります。

(技術的にGPTパーティションを使用している場合、ESPにはパーティションタイプGUIDが必要ですが、誰もその数値C12A7328-F81F-11D2-BA4B-00A0C93EC93B文字列を処理しようとしないため、パーティショナーはユーザーフレンドリーなさまざまな方法でパーティションタイプを設定します。MBRパーティションを使用する場合はESPパーティションタイプは0xefでなければなりません。

ESPはFAT32ファイルシステムで初期化され、にマウントする必要があります/boot/efimkfs.vfat -F 32 ...に初期化したら、再利用するか、blkid新しいlsblk -o +uuidUUIDを見つけて編集して/etc/fstab古いUUIDを置き換える必要があります。/boot/efiそれでは簡単なmount /boot/efiインストールで十分です。

次の手順は、GRUB ブートローダをディスクに再インストールすることです。 CentOSパッケージリポジトリにアクセスできるyum場合、またはキャッシュにGRUB .rpmファイルがまだある場合は、yum reinstall grub2-efiこれがおそらく最も簡単な方法です。これが不可能な場合も使用できますgrub-install

通常、ESPを含むディスク装置全体の名前grub-installだけが引数として必要です。これは、正しいパーティションがマウントされ、ブートローダファイルがここに書き込まれるというgrub2-install事実に依存します。/boot/efiまた、ブートローダをファームウェア設定に登録します。

shimx64.efiシステムでセキュアブートを使用している場合は、セキュアブートブートローダを再インストールする1つの手順をさらに実行する必要があります。このyum reinstall shimコマンドでこの問題を処理する必要があります。または、少なくともセキュアブートパッドを再インストールできるまで、BIOS設定でセキュアブートを無効にすることもできます。

新しいESPのPARTUUIDを確認(または使用)して、このコマンドを使用して現在のUEFIファームウェア起動設定を確認できます。blkid正しいPARTUUIDを含む行はアクティブブートエントリでなければなりません。lsblk -o +partuuidefibootmgr -v

efibootmgr別のPARTUUIDを持つCentOSに関する別のエントリがある場合は、削除した以前のESP(現在は役に立たない)を参照でき、将来の混乱を避けるために適切なオプションを使用して削除する必要があるかもしれません。

関連情報