GPT 디스크에서 UEFI 부팅 파티션을 복구(또는 재설치)하는 방법은 무엇입니까?

GPT 디스크에서 UEFI 부팅 파티션을 복구(또는 재설치)하는 방법은 무엇입니까?

새 하드 드라이브, UEFI 모드, GPT 파티션 디스크에 Debian 11이 새로 설치되었습니다. 문제는 시스템을 부팅할 때 다음 오류가 표시된다는 것입니다.

"내부 하드 드라이브를 찾을 수 없습니다. 이 문제를 해결하려면 드라이브를 재설정해 보십시오. 부팅 가능한 장치가 없습니다. 부팅을 다시 시도하려면 F1을 누르고, 설정 메뉴로 들어가려면 F2를 누르고, PSA로 들어가려면 F5를 누르십시오."

설치는 Live USB에서 이루어졌으며 그 전에는 GParted Live를 사용하여 파티션을 만들었습니다. 가능한 문제는 첫 번째 (부팅) 파티션을 생성했을 때 먼저 레이블 이름을 "efi"로 설정한 다음 이름을 "/boot/efi"로 바꾸려고 했으나 GParted가 즉시 멈추고 응답을 멈췄기 때문이라고 생각합니다. 컴퓨터를 강제 종료하려면 수동으로 전원을 꺼야 합니다. 태그 이름에 있는 두 개의 슬래시 "/"가 문제를 일으킬 수 있지만 확실하지 않습니다.

$ efibootmgr -v
BootCurrent: 000C
Timeout: 1 seconds
BootOrder: 0000,0004,0003,0009,000A,000C
Boot0000* Debian    HD(1,GPT,c906677e-c2c2-42b5-b818-f0b19c046e95,0x800,0xfa000)/File(\EFI\Debian\shimx64.efi)
Boot0003* UEFI OS   HD(2,MBR,0xfcba9dae,0x14000,0x1388000)/File(\EFI\BOOT\BOOTX64.EFI)
Boot0004* UEFI OS   HD(2,MBR,0xb45e11b8,0xaf800,0x600000)/File(\EFI\BOOT\BOOTX64.EFI)
Boot0009* Onboard NIC(IPV4) PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(20474749bc75,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot000A* Onboard NIC(IPV6) PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(20474749bc75,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot000C* UEFI:  USB DISK 2.0 PMAP  PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(3,0)/HD(1,MBR,0xcd9a6b9,0x5d4,0x146a)..BO

편집: blkid 및 fdisk 출력

$ sudo blkid
/dev/sdb1: BLOCK_SIZE="2048" UUID="2021-10-09-12-36-57-00" LABEL="d-live nf 11.1.0 xf amd64" TYPE="iso9660" PTUUID="0cd9a6b9" PTTYPE="dos" PARTUUID="0cd9a6b9-01"
/dev/loop0: TYPE="squashfs"
/dev/sda1: LABEL="BOOT" UUID="2F1D-01E6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c906677e-c2c2-42b5-b818-f0b19c046e95"
/dev/sda2: LABEL="swap" UUID="1274a782-676a-41b0-8509-92f73bd675c3" TYPE="swap" PARTUUID="4a555697-e713-400d-ae9e-613d028c7893"
/dev/sda3: LABEL="root" UUID="13503165-9c5f-498d-ab5f-0c13f11cbaa6" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="5484dedd-6adf-45af-b7b0-ba105d14528b"
/dev/sda4: LABEL="home" UUID="93c98828-5fb8-4c0e-b6bf-de8d13a9d22e" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="ae15bbdb-4e29-4dfa-aa99-b39e5377a098"
/dev/sdb2: SEC_TYPE="msdos" UUID="DEB0-0001" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0cd9a6b9-02"

$ sudo fdisk -l
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: TOSHIBA HDWK105 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0C3CF112-75DD-4197-9A0C-7C92036731C6

Device        Start       End   Sectors   Size Type
/dev/sda1      2048   1026047   1024000   500M EFI System
/dev/sda2   1026048   9414655   8388608     4G Linux swap
/dev/sda3   9414656  61843455  52428800    25G Linux filesystem
/dev/sda4  61843456 976773119 914929664 436.3G Linux filesystem


Disk /dev/sdb: 7.22 GiB, 7747928064 bytes, 15132672 sectors
Disk model: USB DISK 2.0    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0cd9a6b9

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1  *        0 6240351 6240352    3G  0 Empty
/dev/sdb2        1492    6717    5226  2.6M ef EFI (FAT-12/16/32)


Disk /dev/loop0: 2.6 GiB, 2789027840 bytes, 5447320 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

BIOS 메뉴에서: [Debian(드라이브 없음)]

smartctl도구는 디스크가 정상임을 보여줍니다.

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

/etc/fstab 내용:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
UUID=2F1D-01E6                            /boot/efi      vfat    defaults,noatime 0 2
UUID=13503165-9c5f-498d-ab5f-0c13f11cbaa6 /              ext4    defaults,noatime 0 1
UUID=93c98828-5fb8-4c0e-b6bf-de8d13a9d22e /home          ext4    defaults,noatime 0 2

편집: 별도의 오류

root@debian:/# parted /dev/sda1
GNU Parted 3.4
Using /dev/sda1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: Unknown (unknown)
Disk /dev/sda1: 524MB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags: 

Number  Start  End    Size   File system  Flags
 1      0.00B  524MB  524MB  fat32

(parted) help toggle                                                      
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition
        NUMBER

    NUMBER is the partition number used by Linux.  On MS-DOS disk labels,
        the primary partitions number from 1 to 4, logical partitions from 5
        onwards.
        FLAG is one of: boot, root, swap, hidden, raid, lvm, lba, hp-service,
        palo, prep, msftres, bios_grub, atvrecv, diag, legacy_boot, msftdata,
        irst, esp, chromeos_kernel, bls_boot
(parted) toggle 1 esp                                                     
Error: No flags supported
(parted) toggle 1 bios_grub                                               
Error: No flags supported
(parted) quit

답변1

/dev/sda1EFI 시스템 파티션(줄여서 ESP)인 것처럼 보이기 때문에 /boot/efi데비안 설치 프로그램에서 마운트되도록 구성해야 합니다. 설치 프로그램은 일반적으로 /etc/fstab파일 시스템 UUID로 마운트하도록 구성되므로 레이블은 중요하지 않습니다 .

귀하의 경우 /etc/fstab라인은 다음과 같습니다

UUID="2F1D-01E6"    /boot/efi    vfat   umask=0077,tz=UTC,codepage=437,iocharset=iso8859-1 0 1

부트로더가 시스템 NVRAM에 성공적으로 등록된 것 같으므로( 그림 참조 efibootmgr -v) 실제로 디스크에는 아무런 문제가 없을 수 있지만 UEFI 펌웨어는 데이터를 읽으려고 시스템을 부팅하려고 할 때 디스크가 회전할 충분한 시간을 제공하지 못할 수 있습니다. 이로 인해 잘못된 "디스크가 감지되지 않음" 오류 조건이 발생합니다.

이것이 문제인 경우 BIOS 설정에 부팅 프로세스를 몇 초 정도 느리게 하는 옵션이 있는지 확인해야 합니다. 일부 BIOS에는 특히 이러한 목적을 위한 "부팅 지연" 옵션이 있습니다. 조정 가능한 지연이 없는 경우 빠른 부팅 비활성화, 레거시 USB 지원 활성화 등과 같은 다른 대안을 시도해야 할 수도 있습니다. 디스크가 회전하는 데 몇 초의 추가 시간을 제공하는 모든 것입니다.

레거시 모드로 전환하기 전에 "Debian" UEFI 부팅 항목 이전에 네트워크에서 부팅을 시도하도록 시스템을 설정해 볼 수 있습니다. 디스크 회전이 완료되는 데는 확실히 충분한 시간이 걸립니다. efibootmgr이를 수행하려면 다음 명령을 사용할 수 있습니다 .

efibootmgr --bootorder 0009,0000,0004,0003,000A,000C

일반적인 사용에서는 네트워크 부팅이 실패할 때까지 기다리는 것이 짜증스러울 수 있지만, 이 구성에서 디스크가 작동한다면 문제가 느린 부팅 디스크라는 것을 확인할 수 있습니다.

디스크가 새 것이라고 하셨는데, 리뷰에서 시스템이 오래된 Dell 노트북이라고 언급하셨습니다. 이 디스크는 Dell 공식 예비 부품입니까? 방금 범용 2.5인치 SATA 하드 드라이브를 구입한 경우 공식 Dell 예비 부품 디스크에서는 충족되지만 반드시 선택한 교체 디스크에서는 충족되지 않는 숨겨진 요구 사항에 직면했을 수 있습니다. 시스템 디스크, 디스크필요xxx이때 시스템 펌웨어가 디스크를 확인하므로 전원을 켠 후 몇 밀리초 이내에 명령을 받을 준비를 하십시오 .

원래 디스크보다 훨씬 느린 부팅을 선택한 경우 TOSHIBA HDWK105부팅 방법이나 기타 사용 가능한 BIOS 설정을 변경해도 문제가 해결되지 않을 수 있습니다. 디스크가 원본과 동일한 모델인 경우 Dell과 같은 대규모 공급업체에서는 특정 사용 사례에 최적화된 맞춤형 펌웨어가 포함된 디스크를 제공할 수도 있다는 점을 염두에 두십시오.

노트북이 UEFI가 아직 신규였던 2010년 상반기에 제조된 경우 Dell과 같은 공급업체는 여전히 레거시 부팅 모드를 주요 목표로 간주할 수 있으므로 UEFI 부팅 모드는 테스트 대상이 더 적을 수 있습니다. 당시에는 UEFI 구현에 다소 결함이 있는 부분이 많았습니다. (UEFI는 Intel이 클래식 BIOS가 아닌 UEFI와 작동하도록 설계된 Sandy Bridge 칩셋을 출시한 2011년에 주류가 되었습니다.)

부팅 모드를 UEFI에서 레거시 모드로 변경하려면 라이브 미디어에서 부팅하고 HDD 기반 설치로 chroot해야 합니다.

mount /dev/sda3 /mnt
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o rbind,rw /dev /mnt/dev
chroot /mnt /bin/bash
mount -a   # to mount the /home filesystem; not essential for this task

명령을 실행한 후 chroot명령줄 세션은 마치 시스템이 HDD에서 부팅된 것처럼 HDD 기반 설치에 액세스할 수 있어야 합니다. 따라서 일반 패키지 관리 도구를 사용하여 grub-efi-amd64*패키지를 제거하고 설치할 수 있습니다 grub-pc*.

apt remove grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed
apt install grub-pc grub-pc-bin

레거시 부팅 모드에서는 필요하지 않으므로 보안 부팅 심과 관련된 패키지를 제거할 수도 있습니다.

apt remove shim-signed shim-unsigned shim-helpers-amd64-signed shim-signed-common

코어 이미지를 삽입할 위치를 제공하기 위해 grub-pc파티션 유형 /dev/sda1bios_grub. 코어 이미지에는 1MB만 필요하므로 이는 약간 낭비이지만 grub-pc, 필요한 경우 나중에 UEFI 모드로 다시 변환할 수 있습니다.

parted /dev/sda1
(parted) toggle 1 esp
(parted) toggle 1 bios_grub
(parted) quit

그런 다음 파일 시스템의 시작 부분이 BIOS GRUB에 의해 덮어쓰기되므로 해당 /boot/efi행 을 주석 처리 /etc/fstab하고 마운트 해제되었는지 확인하십시오 ./boot/efi

이제 디스크에 GRUB의 BIOS 부팅 가능 버전을 설치할 준비가 되었습니다. 시스템이 현재 UEFI 모드에서 부팅될 수 있으므로 기본적으로 GRUB 대상 아키텍처를 명시적으로 지정해야 하며 grub-install시스템의 현재 부팅 스타일과 일치하는 부트 로더를 설치하려고 시도할 수 있습니다.

grub-install --target=i386-pc /dev/sda

그 후 변환이 완료되어야 합니다. 이제 chroot 프로세스를 실행 취소할 시간입니다.

umount /home # (if you ran "mount -a" after chrooting)
exit   # to pop out of the chrooted shell session
umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt

그런 다음 시스템을 재부팅하고 BIOS로 들어가서 부팅 모드를 레거시로 설정하고 HDD를 부팅 대상으로 설정합니다.

행운을 빌어요! BIOS 설정이 거의 없는 유명 브랜드 노트북을 사용하는 것은 짜증스러울 수 있으며, 버그가 있고 기발한 초기 버전의 UEFI 구현이 있는 시스템도 골치 아픈 일이 될 수 있습니다. 이 두 가지 사실을 결합한 시스템이 있는 것 같습니다.

관련 정보