/boot
今日私はcentosサーバーでディレクトリを拡張したいと思います。
これを行う前に3つの部分があります。
オペレーティングシステムがオンになっており、/dev/nvme1
パーティションは次のとおりです。
/boot
に含まれる/dev/nvme1p1
/boot/efi
に含まれる/dev/nvme1p2
/home
に含まれる/dev/nvme1p3
/ bootディレクトリをバックアップしてから、nvme1p1
.nvme1p2
を削除してから、新しいパーティション ""を追加しました( ""と ""nvme1p1
のスペースをマージしました)。nvme1p1
nvme1p2
この 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
必要があります。その後、簡単な操作で適切な場所にマウントできます。blkid
lsblk -o +uuid
/etc/fstab
mount /boot
次に、元の.efiシステムパーティションを再作成する必要があります/dev/nvme1p2
。これはまったく新しいパーティションであり、ディスクの先頭にある必要はありませんが、システムファームウェアのアクセス方法を知っているどこかに存在する必要があります。パーティションタイプを「EFIシステムパーティション」または縮小してESPに設定する必要があります。
(技術的にGPTパーティションを使用している場合、ESPにはパーティションタイプGUIDが必要ですが、誰もその数値C12A7328-F81F-11D2-BA4B-00A0C93EC93B
文字列を処理しようとしないため、パーティショナーはユーザーフレンドリーなさまざまな方法でパーティションタイプを設定します。MBRパーティションを使用する場合はESPパーティションタイプは0xefでなければなりません。
ESPはFAT32ファイルシステムで初期化され、にマウントする必要があります/boot/efi
。mkfs.vfat -F 32 ...
に初期化したら、再利用するか、blkid
新しいlsblk -o +uuid
UUIDを見つけて編集して/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 +partuuid
efibootmgr -v
efibootmgr
別のPARTUUIDを持つCentOSに関する別のエントリがある場合は、削除した以前のESP(現在は役に立たない)を参照でき、将来の混乱を避けるために適切なオプションを使用して削除する必要があるかもしれません。