SOS: Centos에서 /boot 서명을 삭제하면 운영 체제를 어떻게 복원합니까?

SOS: Centos에서 /boot 서명을 삭제하면 운영 체제를 어떻게 복원합니까?

/boot오늘 저는 centos 서버에서 디렉토리를 확장하고 싶습니다 .

이 작업을 수행하기 전에 세 부분이 있습니다.

운영 체제가 켜져 있고 /dev/nvme1파티션은 다음과 같습니다.

/boot에 포함/dev/nvme1p1

/boot/efi에 포함/dev/nvme1p2

/home에 포함/dev/nvme1p3

/boot 디렉토리를 백업한 다음 nvme1p1nvme1p2.을 삭제한 다음 새 파티션 " "을 추가했습니다 (" "과 " " nvme1p1의 공간을 병합했습니다 ).nvme1p1nvme1p2

이 두 개의 오래된 파티션을 삭제하면 경고 메시지가 나타납니다.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/efi. mkfs.vfat -F 32 ...로 초기화한 후에는 다시 사용하거나 blkidlsblk -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시스템에서 보안 부팅을 사용하는 경우 보안 부팅 부트로더를 다시 설치하는 한 가지 단계를 더 수행해야 합니다 . 이 yum reinstall shim명령으로 이 문제를 처리해야 합니다. 또는 적어도 보안 부팅 패드를 다시 설치할 수 있을 때까지 BIOS 설정에서 보안 부팅을 비활성화할 수 있습니다.

새 ESP의 PARTUUID를 확인하고( 또는 사용) 이 명령을 사용하여 현재 UEFI 펌웨어 부팅 설정을 확인할 수 있습니다 . blkid올바른 PARTUUID가 포함된 줄이 활성 부팅 항목이어야 합니다.lsblk -o +partuuidefibootmgr -v

efibootmgr다른 PARTUUID를 가진 CentOS에 대한 또 다른 항목이 있는 경우 제거한 이전 ESP(현재는 쓸모 없음)를 참조할 수 있으며 향후 혼란을 피하기 위해 적절한 옵션을 사용하여 제거 해야 할 수도 있습니다 .

관련 정보