/boot/efiからnon boot/efiに変更

/boot/efiからnon boot/efiに変更

指定されたパーティションを持つDebianサーバーAlsblkとルートパーティションを持つDebianサーバーBがあります。

サーバーAをサーバーBと同じ変換に変換したいです。デフォルトでは、サーバーAにパーティションがあることは望ましくありません/boot/efi。これは本番サーバーであり、ベアメタルなので、一部の専門家が実装方法を案内してもらえますか?

サーバーA

sda 8:0 0 931.5G 0 disk
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 512M 0 part /boot/efi
├─sdb2 8:18 0 9.3G 0 part /
├─sdb3 8:19 0 7.5G 0 part [SWAP]
├─sdb4 8:20 0 18.6G 0 part /home
└─sdb5 8:21 0 55.9G 0 part /var

サーバーB

sda 8:0 0 931.5G 0 disk
sdb 8:16 0 931.5G 0 disk
|-sdb1 8:17 0 9.3G 0 part /
│-sdb2 8:18 0 7.5G 0 part [SWAP]
│-sdb3 8:19 0 1K 0 part
|-sdb5 8:21 0 18.6G 0 part /home
│-sdb6 8:22 0 57.9G 0 part /var

これまで何も試していない

答え1

サーバーAは明らかにUEFIの基本的なブート方法とGPTパーティショニングを使用しています。サーバーAでは、必要に応じて2TiBを超えるシステムディスクを簡単に使用できます。

不在/boot/efi(または同等のパーティション)と1Kサイズsdb3(MBR拡張パーティションである可能性が高い)は、サーバーBがレガシーBIOSブート方法とMBRパーティションを使用していることを示します。 MBRでは、パーティションの最大サイズは2TiBに制限され、開始点はディスクの先頭から最大(2TiB - 512バイト)です(古典的な512バイトブロックサイズを想定)。

UEFIは10年以上サポートされており、コロナ19以前にIntelは2020年からレガシーBIOS互換性サポートを削除する計画でしたが、その計画を延期したようです。

Intelまたは他のチップセットメーカーが物理アドレス空間の最初の1MiB内で起動するために必要なインターフェイスを提供しなくなる将来のx86チップセットをリリースする場合、クラシック16ビットBIOSコードを実装することは困難または不可能になる可能性があります。チップセットはデフォルトでUEFI専用です。

市場にはすでにUEFI専用サーバーモデルがあり、時間が経つにつれてUEFI専用サーバーモデルがますます増えていきます。したがって、統合のためにサーバーAをレガシーに変換すると、次のハードウェア更新時に1つだけではなく、両方ともUEFIに変換する必要があります。私はこれが良いアイデアだとは思わない。


しかし、本当にこれを行うには必ずダウンタイムが必要です。

  • 安全のために、すべてのユーザーデータと設定をバックアップしてください。
  • システムを再起動し、ファームウェア設定(BIOS設定)に入ります。
  • セキュアブートを無効にし、可能であればレガシー互換性サポートモジュール(CSM)を有効にし、起動するようにシステムを設定します。既存モードのみエラーを防ぐために
  • 一部のライブLinuxメディアから起動し、それを使用して各パーティションの正確な開始/終了/長さブロック値を記録します。
  • gdiskエキスパートコマンドzap(つまりx)を使用してzGPTパーティションテーブルとそのバックアップをゼロにし、以前に記録された情報を使用して保持したいパーティションを正確にコピーして新しいMBRパーティションテーブルを作成します。拡張パーティションレコード用のスペースを作成するには、スワップパーティションのサイズを少し小さくする必要があります。
  • カーネルが新しいパーティションテーブルを受け入れたことを確認します。たとえば/proc/partitions、必要に応じて以下を使用partprobeしてカーネルのパーティションの概念を更新します。
  • 変換するシステムディスクにchrootと入力し、すべてのパーティションがエラーなしでMBRパーティションにマウントできることを確認してください。更新する/etc/fstab。スワップパーティションを減らす必要がある場合は、mkswapスワップUUIDのサイズを変更し/etc/fstabてinitramfsを更新する必要があります。
  • chroot の後、すべてのefibootmgrパッケージを削除し、grub-efi-*パッケージをインストールし、grub-pcgrub-pc-binのコマンドを実行してgrub-install --target=i386-pc /dev/sdbGRUB の BIOS バージョンを明示的にインストールします。
  • 再起動してBIOS設定に入り、必要に応じて起動順序を調整します。
  • 完璧

スクリプトで作成されたインストールプロセスがある場合は、完全な再インストールがより速く、エラーの可能性が低い可能性があります。

ライブメディアから変換するシステムディスクにルートを切り替える方法は次のとおりです。

mount /dev/sdb1 /mnt   # the root filesystem under conversion
mount --rbind /dev /mnt/dev
mount --rbind /sys /mnt/sys
mount -t proc /mnt/proc
chroot /mnt /bin/bash
mount /var
mount /home

この時点で、変換中のシステムから起動したかのようにコマンドを実行できます。

関連情報