하드 드라이브에 설치된 GRUB2에서 CentOS 7 ISO(하드 드라이브에 있음)를 부팅할 수 없습니다.
나는 다음 단계를 시도했다이 기사
내 요구 사항은 VMWare VM 내부의 가상 하드 드라이브에서 CentOS ISO(즉, 부팅 가능한 .vmdk)를 부팅하는 것입니다. 이는 요구 사항이며 대안은 현재 내가 찾고 있는 것이 아닙니다.
가상 하드 디스크에 grub2를 설치하고 이 ISO를 부팅하도록 grub 구성을 수정하려고 했습니다.
최신 CentOS Gnome Live ISO로 부팅된 VM에서 두 활동을 모두 수행합니다(이것이 제가 사용하는 프로세스입니다).
4GB 가상 하드 디스크(vmdk)를 사용하여 새 VM(VMDK_Stager라고 함)을 생성합니다.
설치 및 실행CentOS-Live-GNOME.iso
터미널을 열고 명령을 실행하세요
루트 디렉터리 가져오기
su
다음 명령을 실행하여 드라이브를 준비하고, grub을 설치하고, 파티션을 생성하세요.
fdisk /dev/sda
n (for new partition, then select all defaults for blocks/sizing/etc.)
a (to activate)
w (to write changes and quit fdisk)
파티션 포맷
mkfs.ext4 /dev/sda1
마운트 파티션
mount /dev/sda1
관련된 설치 패키지 업데이트
yum install livecd-tools
yum upgrade grub2
yum upgrade dracut
디스크/파티션에 Grub을 설치합니다. (이렇게 하면 /mnt/boot/grub2
)
grub2-install /dev/sda --boot-directory=/mnt/boot
/mnt/boot/iso
ISO 파일을 저장하기 위해 생성됨
mkdir /mnt/boot/iso
cd /mnt/boot/iso
복사 CentOS-7-x86_64-GNOME-1603-02.iso
(CentOS 이미지에서 다운로드)를 /mnt/boot/iso
("알려진 좋은" ISO를 테스트하기 위해 이 작업을 수행했습니다)
맞춤 만들기grub.cfg
#Begin /boot/grub2/grub.cfg
set default=0
set timeout=10
set root=(hd0,1)
menuentry 'CentOS-Live-GNOME' {
set isolabel=CentOS-7-x86_64-GNOME-1603-02
set isofile='/boot/iso/CentOS-7-x86_64-GNOME-1603-02.iso'
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=$isofile root=live:CDLABEL=$isolabel ro rd.live.image quiet rhgb
initrd (loop)/isolinux/initrd0.img
}
이 준비된 vmdk를 다른 VM에서 사용할 수 있도록 호스트의 다른 디렉터리에 복사합니다(VMDK_ISO_Booter라고 함). VM을 생성하고 이 vmdk를 유일한 하드 드라이브로 사용합니다.
dracut 프롬프트로 끝나고 /dev/disk/by-label
찾을 수 없다는 메시지가 나타납니다.
답변1
문제는 거의 확실하게 약간 잘못된 CDLABEL 사용, grub이 iso를 마운트할 수 없음, 커널 매개변수가 이미지에 사용된 것과 일치하지 않거나 ISO의 일부 불규칙성이 결합된 것입니다. 저는 미러에서 그것을 보지 않았습니다. 특정한.
iso의 isolinux.cfg 파일에서 정확한 태그를 가져와야 합니다.
CentOS-7-x86_64-LiveGNOME-1603-02.iso가 있는 경우 파일의 줄은 다음과 같습니다.
append initrd=initrd0.img root=live:CDLABEL=CentOS-7-x86_64-GNOME-1603-02 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
다음은 시도해 볼 수정된 grub.cfg입니다(내가 가지고 있는 ISO를 기반으로 합니다. 귀하의 ISO는 약간 다를 수 있습니다. 분명히 이름의 "Live" 부분을 제거했거나 귀하가 제거했습니다.
menuentry "CentOS-Live-GNOME" {
set isolabel="CentOS-7-x86_64-GNOME-1603-02"
set isofile="/boot/iso/CentOS-7-x86_64-LiveGNOME-1603-02.iso"
insmod iso9660
loopback loop ${isofile}
linux (loop)/isolinux/vmlinuz0 root=live:CDLABEL=CentOS-7-x86_64-GNOME-1603-02 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0 iso-scan/filename=${isofile}
initrd (loop)/isolinux/initrd0.img
}
이는 있는 그대로 작동할 수 있지만 isolinux.cfg 항목에 대해 레이블과 나머지 커널 매개변수를 다시 확인하십시오.
dracut 프롬프트가 나타나면 sosreport.txt 파일에서 "loop"라는 단어를 찾으십시오. 그러면 iso에 표시된 실제 이름이 제공되어야 합니다. 또한 /dev의 장치를 살펴보세요. /dev/disk/... by-id .. by-label .. by-uuid 등에서 iso "장치"를 찾을 수 있습니까? 이러한 참조는 모두 작동합니다. 완벽하게 일치해야 합니다.무엇이 평가되고 있는가그리고 당신이 겪고있는 오류는 어디에서 오는가?
나는 당신이 했던 것과 거의 똑같이 했지만 얼마 전에 Fedora를 사용하고 있었고(fedora 19?) 작동하기 전에 몇 가지 조정이 필요했습니다.
다음 링크에서는 이 작업을 수동으로(일종의) 수행하는 방법을 보여 주므로 다시 빌드하고, 다시 시작하고, 반복하는 고통스러운 주기를 거치지 않고 단계별로 수행할 수 있습니다.
답변2
왜 이것이 당신에게 그렇게 많은 문제를 야기하는지 이해할 수 없습니다. 당신의 예는 또 다른 예인 것 같습니다XY 문제. 더 간단한 해결책은 다음과 같습니다.
CentOS iso를 다음에서 다운로드하세요.여기;
새 가상 머신의 iso에서 CentOS를 설치하면 거의 모든 하이퍼바이저에 설치할 수 있습니다. 예를 들어 방금 VirtualBox를 사용했습니다(
vdmk
새 가상 머신을 생성할 때 디스크 형식을 선택해야 하며, 가상 머신을 다시 시작해야 합니다). 전체 설치 프로세스를 완료하려면 최소 두 번 기계를 작동하십시오. CentOS 가상 머신을 종료합니다.
완료되었습니다. vmdk
모든 작업을 올바르게 수행했다면 CentOS를 설치한 디스크에 이미 부팅 플래그가 설정된 파티션이 포함되어 있는 것입니다. 이제 두 번째 VM에 새로 생성된 vmdk
디스크를 SATA 컨트롤러가 있는 하드 드라이브로 탑재할 수 있습니다. 어쩌면 다른 하이퍼바이저(VMWare, Xen 등 이름 지정)에 탑재할 수도 있습니다. 두 번째 가상 머신의 CentOS 디스크에서 부팅하려면 부팅 순서에 따라 부팅이 가능한지 확인하세요.첫 번째새 디스크에서,즉CentOS에서 생성되었습니다.
답변3
나는 보통 qemu/virsh VM에 대해 자체 XML을 작성하지만 가상 BIOS에 ISO에서 부팅하도록 지시하는 것이 아이디어입니다. 그렇죠? 따라서 가상 머신을 설정할 때 ISO가 CD-ROM이라고 말하고, 마운트할 하드 드라이브 역할을 할 호스트 머신에 빈 파일을 제공하고, 하드 드라이브를 사용해 볼 수 있도록 부팅 순서를 설정한 다음 CD. 그런 다음 가상 머신을 시작하고 화면의 지시에 따라 일반 설치를 진행합니다.
설치 프로그램은 가상 하드 디스크에 grub을 배치합니다.
IMHO, VMware는 필요 이상으로 일을 더 신비롭게 만들고 있습니다.