/boot/efi에서 non boot/efi로 변경

/boot/efi에서 non boot/efi로 변경

주어진 파티션이 있는 Debian 서버 A lsblk와 루트 파티션이 있는 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 이전에 인텔은 2020년부터 레거시 BIOS 호환성 지원을 제거할 계획이었지만 해당 계획을 연기한 것으로 보입니다.

Intel 또는 일부 다른 칩셋 제조업체가 물리적 주소 공간의 처음 1MiB 내에서 부팅하는 데 필요한 인터페이스를 더 이상 제공하지 않는 향후 x86 칩셋을 출시하는 경우 클래식 16비트 BIOS 코드를 구현하는 것이 어렵거나 불가능할 수 있습니다. 칩셋은 기본적으로 UEFI 전용입니다.

시장에는 이미 UEFI 전용 서버 모델이 있으며, 시간이 지남에 따라 UEFI 전용 서버 모델이 점점 더 많아질 것입니다. 따라서 통합을 위해 서버 A를 레거시로 변환하면 다음 하드웨어 업데이트 시 하나만이 아니라 둘 다 UEFI로 변환해야 할 수도 있습니다. 나는 이것이 좋은 생각이라고 생각하지 않습니다.


하지만 정말로 이 작업을 수행하려면 반드시 가동 중지 시간이 필요합니다.

  • 안전을 위해 모든 사용자 데이터와 구성을 백업하세요.
  • 시스템을 다시 시작하고 펌웨어 설정(BIOS 설정)으로 들어갑니다.
  • 보안 부팅을 비활성화하고, 가능한 경우 레거시 호환성 지원 모듈(CSM)을 활성화하고, 부팅되도록 시스템을 구성합니다.기존 모드만 해당오류를 방지하기 위해
  • 일부 라이브 Linux 미디어에서 부팅하고 이를 사용하여 각 파티션의 정확한 시작/끝/길이 블록 값을 기록합니다.
  • gdisk전문가 명령 zap(즉, x) 를 사용하여 zGPT 파티션 테이블과 해당 백업을 0으로 만든 다음 이전에 기록된 정보를 사용하여 유지하려는 파티션을 정확하게 복사하여 새 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

이 시점에서 변환 중인 시스템으로 부팅한 것처럼 명령을 실행할 수 있습니다.

관련 정보