하드 드라이브에서 RAM으로 맞춤형 CentOS 7 Live ISO 부팅

하드 드라이브에서 RAM으로 맞춤형 CentOS 7 Live ISO 부팅

가상화되지 않은 서버의 내부 하드 드라이브에 배치하고 UEFI 환경에서 부트로더(예: grub)를 사용하여 RAM으로 부팅할 수 있는 CentOS 7의 사용자 정의 패키지를 생성하려고 합니다.

요점은 하드 디스크에서 RAM으로 부팅할 수 있는 단일 패키지(예: ISO, initramfs 등)를 생성하여 모든 부팅이 보장된다는 것입니다.사전 정의된 운영 체제로드됩니다. 이는 하드 드라이브로 리디렉션되는 로그 파일을 제외하고는 수정된 설정이나 파일이 (영구적으로) 저장되지 않음을 의미합니다. RAM의 양은 문제가 되지 않습니다.

필요하다:1) OS는 Rhel/Fedora/CentOS입니다. 2) OS는 하드 드라이브에 설치되지 않고 RAM에 로드됩니다(예: tmpfs). 3) OS는 부팅 시 단일 파일/패키지에서 시작됩니다.

내가 지금까지 시도한 것 : VMware 가상 머신을 사용하여 CentOS 7의 최소 사용자 정의 Live ISO 이미지를 만들었습니다.시작 스크립트이미지의 설정과 내용을 정의하고 사용하세요.livecd-크리에이터실제 Live ISO를 만듭니다.

또한 하드 드라이브에서 부팅할 CentOS 기반 라이브 ISO를 얻을 수 있는지 확인하기 위해 테스트하기 위해 공식 CentOS-7-x86_64-LiveKDE-1810 ISO를 다운로드했습니다.

이 두 ISO설치 후 작업일반적인 서버 하드웨어는 물론 VMware 가상 머신의 CD/DVD 드라이브에서도 부팅할 수 있습니다.

내가 겪은 오류: 다양한 커널 매개변수를 사용하여 다양한 유형의 grub 메뉴 항목을 시도한 후에도 이러한 ISO 중 하나를 내부 하드 드라이브에서 부팅하지 못했습니다. 문제가 ISO 파일에 있는지, grub 메뉴 항목의 커널 매개변수에 있는지, 아니면 둘 다에 있는지 모르겠습니다.

내가 시도한 메뉴 항목의 예와 해당 항목을 찾은 URL은 다음과 같습니다.

http://man7.org/linux/man-pages/man7/dracut.cmdline.7.html

#iso-scan/filename
#Using iso-scan/filename with a Fedora/Red Hat/CentOS Live iso should
#just work by copying the original kernel cmdline parameters

menuentry 'Custom Centos7 {
 insmod iso9660
 insmod loopback               
 set isolabel='live_ks-x86-201902131038'
 set isofile='livecd-live_ks-201902131038.iso'
 loopback loop (hd0,gpt3)/images/$isofile
 linuxefi (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel rd.live.image 
 initrdefi (loop)/isolinux/initrd0.img
}

위 메뉴 항목을 사용하면 부팅 시 다음 메시지가 표시됩니다. "dracut-initqueue[409]: /sbin/iso-scan: line 37: rmdir: command not find. 이것이 무엇을 의미하는지 잘 모르겠습니다..

예를 들어 다음을 변경하여 LiveKDE ISO를 사용하여 위의 작업을 시도하면:

set isolabel='CentOS-7-x86_64-LiveKDE-1810' set isofile='CentOS-7-x86_64-LiveKDE-1810.iso'

오류가 발생합니다: "dracut-initqueue[749]: 마운트: 파일 시스템 유형을 지정해야 합니다." 이 상황은 rootfstype을 사용하여 파일 시스템 유형을 지정하더라도 지속됩니다. 예를 들면 다음과 같습니다.

linuxefi (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel rd.live.image rootfstype=auto

나는 또한 여기에서 다른 항목을 시도했습니다. https://gist.github.com/Pysis868/27203177bdef15fbb70c

menuentry "CentOS 7 test" {
set isolabel='live_ks-x86-201902131038'
set isofile="/images/livecd-live_ks-201902131038.iso"
loopback loop (hd0,gpt3)$isofile
linuxefi (loop)/isolinux/vmlinuz0 noeject inst.stage2=hd:LABEL=UNJEB:$isolabel
initrdefi (loop)/isolinux/initrd0.img  

또한 위의 작업을 시도했습니다. linuxefi (loop)/isolinux/vmlinuz0 noeject inst.stage2=hd:LABEL=UNJEB:/$isofile

그러나 둘 다 다음과 같은 실패 문으로 끝납니다. "루트를 전환할 수 없습니다. 지정된 스위치 루트 경로 /sysroot가 운영 체제 트리로 나타나지 않으며 운영 체제 릴리스 파일이 누락되었습니다." 이것이 무엇을 말하는지 잘 모르겠으므로 os-release 파일을 어디에서 확인할지 잘 모르겠습니다.

라벨링 오류가 매우 흔하다는 것을 읽었으므로 ISO 라벨이 올바른지 확인하기 위해 losstup 및 blkid를 사용했습니다. 예를 들면 다음과 같습니다.

sudo losetup loop8 /boot/images/livecd-live_ks-201902131038.iso
sudo blkid /dev/loop8

내가 확인한 다른 게시물:

하드 드라이브에 저장된 ISO 파일로 부팅하는 방법은 무엇입니까?

https://www.centos.org/forums/viewtopic.php?t=55412

질문: 문제는 문제가 ISO, 커널 매개변수 또는 둘 다에 있는지 확실하지 않다는 것입니다. 테스트하고 재현할 수 있는 CentOS 7 Live ISO에 대해 작동하는 커널 매개변수를 갖고 있는 사람이 있습니까? 아니면 initrd0.img 파일에서 확인하거나 수정할 수 있는 것이 있나요?

또한 livecd-creator가 isolinux를 ISO용 부트로더로 사용한다는 사실을 알고 syslinux와 같은 다른 부트로더를 사용해볼까 생각했지만 아직 테스트할 시간이 없었습니다.

아니면 initramfs에 필요한 모든 패키지를 추가하고 이를 사용하거나 squashfs 등을 시작하는 등 목표를 달성하기 위한 다른 방법을 시도하는 것이 더 나을까요?

관련 정보