축소된 RAID1 디스크에 GRUB2를 설치하는 방법은 무엇입니까?

축소된 RAID1 디스크에 GRUB2를 설치하는 방법은 무엇입니까?

간단히 말해서: RAID1의 블록 장치에 GRUB2를 설치해 보십시오. 부트로더 설치가 중단되었습니다.

표적

HDD를 더 작은 SSD로 교체하세요. 제가 취한 단계는 다음과 같습니다.

# Booted into rescue mode 
# failed and removed the partition from md array
mdadm --manage /dev/md1 -f /dev/sdb2
mdadm --manage /dev/md1 -r /dev/sdb2

# took out the HDD
# shrunk the filesystem and then the md
resize2fs -f /dev/md1 85G
mdadm --grow /dev/md1 -z 88G

# md1 mounted fine, no issues there. Didn't try to mount /dev/sdd2, as it's Linux RAID type
# recreated partitions on SSD as they are on HDD

# added to array
mdadm --add /dev/md1 /dev/sdb2

# waited for the sync to finish.
# recreated partitions on second SSD
# removed remaining HDD once synced, added SSD to array

gdisk -l

Partition table scan:
  MBR: protective
  GPT: present

Disk label type: GPT
#    Start          End    Size          Type
1     2048         6143      2M      Linux fs
2     6144    195371534   93.2G    Linux RAID

질문

SSD-s에 부트로더를 설치하는 방법은 무엇입니까? 내가 겪고 있는 오류:

grub2-install --directory /mnt/sysimage/boot/grub2/i386-pc /dev/sdd
Installing for i386-pc platform.
grub2-install error: cannot open `/mnt/sysimage/boot/grub2/i386-pc/kernel.img': No such file or directory.

안경

  • 운영체제 7
  • mdadm v4.1
  • LVM 없음

편집하다:gdisk -l트림 출력 추가

업데이트 #1

mount --bind-ing /{proc,dev,sys}하고 실행하면 grub2-install다음 오류가 발생합니다. 어쩌면 내가 잘못 구성한 걸까요?

grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image.. (2x)
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be psosible.
grub2-install: error: embedding is not possible, but this is rquired for RAID and LVM install.

업데이트 #2

상담 후수동 grub2-install성공!

미래 세대를 위해 내가 한 일:

gdisk /dev/sdd
# t - changed partition 1 type to ef02 -- BIOS boot partition
chroot /mnt/sysimage/
grub2-install /dev/sdd
# grub2-install warned about not finding physical volume `(null)' but installation finished without any errors.
# added to md, failed, removed the other disk, repeated grub2-install

서버가 시작됩니다! @telcoM님, 시간을 내어 안내해 주셔서 감사합니다!

이제 모든 것이 괜찮은지 확인해야 합니다 :)

답변1

--directory옵션은 grub2-installGRUB 구성 요소 파일의 위치를 ​​정의합니다.~에서, --boot-directory배치 위치를 정의하는 동안도착하다.

복구 chroot를 설정하는 것은 복구 환경에서 직접 실행하는 데 필요한 모든 긴 경로 이름을 입력하는 것보다 훨씬 쉽습니다. 추가로 , 및 grub2-install를 지정해야 할 수도 있습니다 . 그래서:--grub-setup--grub-mkrelpath--grub-probe--directory--boot-directory

mount --rbind /dev /mnt/sysimage/dev
mount -t proc none /mnt/sysimage/proc
mount -t sysfs none /mnt/sysimage/sys
chroot /mnt/sysimage /bin/bash
grub2-install /dev/sdd

그러나 자신만의 방식으로 수행하려면 다음을 수행하십시오. ( \가독성을 위해 줄 분할이 표시됨)

grub2-install --directory=/mnt/sysimage/usr/lib/grub/i386-pc \
    --grub-setup=/mnt/sysimage/usr/bin/grub2-setup \
    --grub-mkrelpath=/mnt/sysimage/usr/bin/grub2-mkrelpath \
    --grub-probe=/mnt/sysimage/usr/sbin/grub2-probe \
    --boot-directory=/mnt/sysimage/boot \
    /dev/sdd

관련 정보