grub2 다시 설치

grub2 다시 설치

CentOS 8을 듀얼 부팅한 Windows 7이 설치된 오래된 노트북이 있습니다.

처음 재부팅할 때 GRUB는 Linux용 항목만 표시합니다. 그래서 나는 사용했다부팅 복구 디스크, 하지만 이제 노트북이 Windows로 직접 부팅되기 때문에 어떻게든 GRUB를 설치할 수 없습니다.

디스크 파티션은 다음과 같습니다(Boot-Repair-Disk를 통해 확인).

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048     3,074,047     3,072,000  27 Hidden NTFS (Recovery Environment)
/dev/sda2    *      3,074,048   629,905,407   626,831,360   7 NTFS / exFAT / HPFS
/dev/sda3         629,905,408   632,002,559     2,097,152  83 Linux
/dev/sda4         632,002,560   976,773,119   344,770,560   5 Extended
/dev/sda5         632,004,608   975,978,495   343,973,888  8e Linux LVM

대략적인 크기와 용도는 다음과 같습니다.

/dev/sda1     1.5 Gb     Windows recovery partition
/dev/sda2     300 Gb     Windows 7 partition
/dev/sda3       1 Gb     Linux /boot partition 
/dev/sda4     164 Gb     Extended partition containing /dev/sda5
/dev/sda5     4 Gb /swap, 130 Gb /, 30 Gb /home, all LVM and LUKS-encrypted

/dev/sda4Windows에서는 이를 기본(비확장) 파티션으로 처리한다는 점에 주목할 필요가 있습니다 .

이것은 Boot-Repair-Disk 출력의 일부입니다.

Is there RAID on this computer? no
File descriptor 8 (/proc/17432/mountinfo) leaked on lvs invocation. Parent PID 19248: /bin/sh
Error: /dev/mapper/cl-00: unrecognised disk label
Error: /dev/mapper/cl-01: unrecognised disk label
Error: /dev/mapper/cl-02: unrecognised disk label
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
Error: Invalid partition table - recursive partition on /dev/sr0.
boot-repair is executed in live-session (Boot-Repair-Disk 64bit 1oct2017, zesty, Ubuntu, x86_64)
CPU op-mode(s):      32-bit, 64-bit
file=/cdrom/preseed/lubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
ls: cannot access '/home/usr/.config': No such file or directory
Set sda as corresponding disk of mapper/cl-00
Set sda as corresponding disk of mapper/cl-01
Set sda as corresponding disk of mapper/cl-02
mount: /mnt/boot-sav/mapper/cl-00: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-00 : Error code 32
mount -r /dev/mapper/cl-00 /mnt/boot-sav/mapper/cl-00
mount: /mnt/boot-sav/mapper/cl-00: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-00 : Error code 32
mount: /mnt/boot-sav/mapper/cl-01: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-01 : Error code 32
mount -r /dev/mapper/cl-01 /mnt/boot-sav/mapper/cl-01
mount: /mnt/boot-sav/mapper/cl-01: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-01 : Error code 32
mount: /mnt/boot-sav/mapper/cl-02: unknown filesystem type 'crypto_LUKS'.
mount /dev/mapper/cl-02 : Error code 32
mount -r /dev/mapper/cl-02 /mnt/boot-sav/mapper/cl-02
mount: /mnt/boot-sav/mapper/cl-02: unknown filesystem type 'crypto_LUKS'.
mount -r /dev/mapper/cl-02 : Error code 32

=================== os-prober:
/dev/sda1:Windows 7:Windows:chain
/dev/sda2:Windows 7:Windows1:chain

=================== blkid:
/dev/sda1: LABEL="System" UUID="FC30DADA30DA9B4A" TYPE="ntfs" PARTUUID="e7d2fa64-01"
/dev/sda2: LABEL="Main disk" UUID="E6C200E1C200B837" TYPE="ntfs" PARTUUID="e7d2fa64-02"
/dev/sda3: UUID="b43f57d3-c143-47b0-ad99-a5b12a0416be" TYPE="ext4" PARTUUID="e7d2fa64-03"
/dev/sr0: UUID="2017-10-29-00-56-18-00" LABEL="Boot-Repair-Disk 64bit" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/loop0: TYPE="squashfs"
/dev/sda5: UUID="sWZAY3-8hDE-wcdv-rEsu-pTcr-9lPV-QEfxlo" TYPE="LVM2_member" PARTUUID="e7d2fa64-05"
/dev/zram0: UUID="462ef96d-8ed3-405e-92c4-043654187abd" TYPE="swap"
/dev/zram1: UUID="df6b8b51-4029-4d37-86ec-d70532265f9b" TYPE="swap"
/dev/zram2: UUID="9d842b41-46c1-4ed3-aefb-447d99a6321f" TYPE="swap"
/dev/zram3: UUID="65d9a196-c801-4e87-9283-314b665108d6" TYPE="swap"
/dev/zram4: UUID="b2cb39b0-9fe1-4485-b044-7d408527117f" TYPE="swap"
/dev/zram5: UUID="f6b1cecd-603e-40a3-8eb3-2bc1ddaca8c1" TYPE="swap"
/dev/zram6: UUID="2fc865d0-0b3b-4d11-bb8d-c272a21e5c39" TYPE="swap"
/dev/zram7: UUID="5be79bcf-4b46-4d62-81b2-952b79e0ecda" TYPE="swap"
/dev/mapper/cl-00: UUID="6eac3a8f-7854-40c7-ae94-c1d288a60698" TYPE="crypto_LUKS"
/dev/mapper/cl-01: UUID="d0e378ae-9140-4335-94e6-2d73a3cb7bd1" TYPE="crypto_LUKS"
/dev/mapper/cl-02: UUID="00e698ad-ac0b-4e27-9bc7-bdcb524ce4ba" TYPE="crypto_LUKS"  

1 disks with OS, 2 OS : 0 Linux, 0 MacOS, 2 Windows, 0 unknown type OS.

GRUB를 다시 설치하기 전에 LUKS LVM 파티션의 암호를 해독해야 합니까?


편집: 댓글의 질문에 답하려면 다음을 수행하세요.

출력 fdisk -l /dev/sda:

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Seagate ST950056
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: 0xe7d2fa64

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            2048   3074047   3072000   1.5G 27 Hidden NTFS WinRE
/dev/sda2  *      3074048 629905407 626831360 298.9G  7 HPFS/NTFS/exFAT
/dev/sda3       629905408 632002559   2097152     1G 83 Linux
/dev/sda4       632002560 976773119 344770560 164.4G  5 Extended
/dev/sda5       632004608 975978495 343973888   164G 8e Linux LVM
  • CentOS 8에서는 기본 GRUB인 GRUB2를 사용합니다.

  • LVM 파티션은 CentOS 설치 프로그램에서 직접 생성됩니다.

  • 10년 가까이 된 노트북은 UEFI가 아닌 BIOS를 사용합니다.

  • 설치 프로그램은 GRUB를 어디에 넣을지 묻지 않았으며 자동으로 묻었습니다.

답변1

Boot-Repair-Disk가 파티션 테이블 오류를 보고하는 이유나 Windows에서 이것이 /dev/sda4기본 파티션이라고 생각하는 이유를 설명할 수 없습니다. fdisk의 출력에서는 MBR 파티션 테이블에 오류가 없으며 여전히 읽을 수 있다고 보고합니다 /dev/sda5.

따라서 우리가 해야 할 일은 다음과 같습니다.

  • 첫 번째 grub2 설치에 대한 액세스 복원(또는 새 grub2 설치)
  • Windows를 시작하는 데 필요한 chainload 명령 설정땅벌레에서.

grub2 다시 설치

Grub2는 MBR 다음 섹터(2048 섹터 이전)에 설치됩니다. 디스크의 grub2에는 /boot/grub하드코딩된 디렉터리 주소가 있습니다. 안타깝게도 의 내용은 /boot/grub모두 LVM에 있으며LUKS로 인코딩됨. 그럽에는 다음이 필요합니다:

  • LVM 디스크 내부를 읽습니다. 이는 lvm.mod 모듈을 통해 수행됩니다.
  • LUKS 디스크의 암호를 해독합니다. 이는 luks.mod 모듈을 통해 수행됩니다.

이 두 모듈은 내부에도 상주합니다 /boot/grub. 이로 인해 Catch-22 상황이 발생하고 열쇠가 차 안에 있습니다.

해결책은 일부 모듈을 고정 디스크 섹터에 쓰고 부팅 시 로드하는 것입니다. 그런 다음 LUKS 비밀번호를 요청하고, 디렉터리의 암호를 해독하고 /boot/grub, 더 많은 모듈을 로드하고, 마지막으로 로드 /boot/grub/grub.cfg해야 할 다른 모듈이 무엇인지 알아보기 위해 로드하고, 사용자에게 운영 체제 선택 목록을 제공합니다.

그러나 디스크에 써야 하는 모듈은 내부 모듈입니다 /usr/lib/grub/i386-pc/lvm.mod(예:). 예, grub은 여러 아키텍처에서 사용할 수 있습니다. 또한 이를 설치한 시스템에서도 암호화됩니다.

따라서 유일한 해결책은 다음과 같습니다.

  1. 일부 라이브 ISO로 부팅합니다(현재 모든 grub 파일 포함 /usr/lib).
  2. 모든(암호화 및 시스템) 디스크를 올바른 위치에 마운트합니다.
  3. chroot디스크의 "실제" 시스템으로 전환하는 데 사용됩니다 .
  4. grub-installGrub을 디스크로 재배치하는 데 사용됩니다 .

CentOS를 구출하는 방법에 대한 가이드는 다음과 같습니다.당신은 따라야합니다. 단순화되었지만 불행히도 LVM-LUKS 암호화 파티션을 해독하는 부분은 또 다른 반전을 추가합니다.

이 작업이 완료되고 시스템이 grub을 통해 CentOS로 부팅되면 grub.cfg 파일에 몇 가지 항목을 추가해야 합니다(Windows가 grub-install을 통해 자동으로 감지하지 못한 경우).이 페이지의 항목 사용

관련된:

관련 정보