UEFI 시스템에서 grub2를 사용하여 드라이브에서 ISO 파일을 어떻게 부팅합니까? ISO 파일이

GParted , CloneZilla , Boot-Repair , Ubuntu 14.04 32 bit … 와 같은 라이브 ISO 파일이 많이 있습니다 . … /opt이전 BIOS 시스템 에서 다운로드 한 다음 grub 메뉴에 추가하고 부팅 할 수있었습니다. . 🙂

이제 UEFI 시스템이 있으며 찾을 수있는 모든 정보는 BIOS 시스템에 대한 것입니다.

grub에서 이러한 ISO 파일을 부팅하는 단계는 무엇입니까?

나는 단지 내가 필요로하는 막대기를 결코 찾을 수 없기 때문에 나는 항상 USB 막대기에 이것들을 “굽는”것에 질려서 피곤하다. 반면 내 컴퓨터 자체는 내 주위의 혼란에 빠지기 훨씬 힘들다면 … ) 🙁



답변

grub 2.04 에는 버그 가 있으므로 이전 버전 이상이 있는지 확인하십시오.

grub에 ISO 파일을 추가하는 기본 사항은 UEFI에서 BIOS 시스템과 동일합니다. 파일을 편집 /etc/grub.d/40_custom하고 menuentry파일 맨 아래에 항목 (이 예에서는 GParted가 사용됨)을 추가합니다.

menuentry "GParted Live ISO" {
}

이제 ISO를 저장 한 디렉토리를 포함하는 변수를 추가 할 것입니다 (지금까지는 BIOS 시스템과 아무런 차이가 없음).

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}

나는 /opt내 컴퓨터의 루트에 디렉토리를 만드는 것을 싫어하고 선택적 소프트웨어가 있어야하는 Linux 파일 시스템 계층 에 따라 디렉토리를 저장 하는 데 사용 하고 있습니다 .

loopback변수 를 추가하기 전에 파일이 저장된 하드 디스크를 찾아야하므로 a :를 수행하고 df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1내 컴퓨터의 출력 은 다음 과 같습니다 /dev/sdb2.

그러나 용도 (GRUB hdX,Y) 표기법을하고 UEFI와 BIOS 기계의 차이는 어디에서 오는 것입니다! 이제 컴퓨터를 재부팅 하고 grub 메뉴로 이동하여 다음 을 누르십시오 C. 이렇게하면 다른 명령 을 사용하여 grub 명령 프롬프트가 표시 되지만 필요한 유일한 명령 은 다음과 같습니다 ls..

내 컴퓨터에서 출력은 다음과 같습니다.

(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...

응? 4 개의 드라이브? 나는 단지 3을 가지고있다! 그리고 그것은 (hd1,4)BIOS가 아니라 (hd1,gpt3)UEFI에 있으며 (hd0)파티션이 전혀 없습니다!

NVRAM의 일부가 스토리지로 사용될 (hd0) 때 드라이브 번호를 1에서 시작해야 할 때 나타납니다 .   ISO 파일 부팅에 대한 모든 정보는 0부터 번호를 시작해야한다고 말하지만 (BIOS 머신에서는 항상 사실이지만 , 일부 UEFI 머신에서는 반드시 그런 것은 아닙니다 !)

의 값이 그래서 loopback하게 (hd2,gpt2)$GPartedISOFile내 컴퓨터에서 ISO 파일로했다 /dev/sdb2(두 번째 드라이브 hd2, 두 번째 파티션 gpt2) :

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
}

또 다른 차이점은 것입니다 linuxinitrdBIOS 시스템에서가 호출 linuxefi하고 linuxefi우리에게 우리의 최종 결과를 제공 UEFI 시스템에 :

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
  initrdefi (loop)/live/initrd.img
}

이제 해당 파일을 저장하고 다음을 사용하여 grub을 업데이트하십시오.

update-grub

위의 모든 작업을 마친 후 재부팅 하고 grub 메뉴로 이동하여 선택 GParted Live ISO하면 USB 스틱을 다시 찾지 않고도 ISO를 쉽게 부팅 할 수 있습니다!

🙂

CloneZilla Live 예제 ( 이 질문에 대한 )

menuentry "CloneZilla ISO" {
  set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
  loopback loop (hd2,gpt2)$ISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
  initrdefi (loop)/live/initrd.img
}


답변

대안은 다음과 같이 구성 파일을 40_custom에 추가하는 것입니다.

menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
}

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
}

ISO를 업데이트 할 때 항상 실행하는 것을 잊어 버립니다 sudo update-grub. 위의 항목은 변경할 필요가 없으며 40_custom과 동일한 형식이지만 헤더 행이없는 livecdimage.cfg를 편집 할 수 있으며 ISO 파티션의 / ISO 폴더에 있습니다.

다른 부트 매개 변수로 toram을 추가하고 Nvidia add nomodeset 부팅 매개 변수가있는 시스템에서 toram을 추가합니다. 그러나 여전히 / isodevice를 마운트 해제해야합니다.

isodevice를 마운트 해제 할 수 없습니다. ISO 마운트 해제
https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

sudo umount -l -r -f /isodevice

그리고 이것은 내 livecdimage.cfg 파일의 일부입니다

# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#}
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root=
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}


답변

mkusb 멀티 부팅 해킹

Mkusb는 BIOS와 UEFI 기능을 모두 갖춘 맞춤형 부팅 드라이브 프로젝트를위한 훌륭한 기반을 제공합니다.

이 핵은 Windows 설치 프로그램을 포함하여 여러 ISO 파일을 부팅하며 grub2 메뉴가 있습니다.

대부분의 OS에 대한 Grub2 메뉴 항목은 Google 검색을 통해 사용할 수 있으며이 답변 범위를 벗어납니다.

mkusb 기본값

영구 USB 드라이브를 작성할 때 mkusb 기본값을 사용하십시오.

mkusb는 기본값을 다시 사용합니다

확실하지 않으면 파티션 크기를 나중에 조정할 수 있지만 시간이 걸리는 경우 mkusb 지속성 기본값을 사용하십시오.

DUS 콘솔

설치 후 DUS 콘솔.

GParted Before

파티션 수정 전 GParted.

이후에 갈라짐

수정 후 구분-지속성 파일 용 FAT32 파티션으로 sdb4, ISO9660 OS 파티션 및 sdb5, ext2 casper-rw 파티션을 덮어 씁니다.

지속성 파티션

지속성 파티션-각 OS에 대해 고유 한 이름의 폴더를 만듭니다 (지속성이 필요함)

지속성 폴더

지속성 폴더-casper-rw 파일 및 선택적 home-rw 파일을 각 지속성 폴더에 추가하십시오. casper-rw 파일의 이름을 바꾸어 home-rw 파일을 만들 수 있습니다. home-rw 파일은 전체 설치시 별도의 홈 파티션과 같으며 버전 업그레이드 후 재사용 할 수 있습니다.

ISO 폴더

NTFS usbdata 파티션에 ISO 파일 용 폴더를 만듭니다.

ISO 폴더 내용

ISO 폴더에 ISO를 추가하십시오.

GRUB 위치

grub.cfg 위치

grub.cfg

ISO 파일을 루프 마운트하려면 grub.cfg를 편집하십시오. persistent persistent-path=/<persistent-folder-name>/지속성을 원한다면 포함하십시오 .

편집 18.04+ grub에서 vmlinuz가 아닌 vmlinuz.efi를 지정 하고 initrd가 initd가 아닌 initrd를 지정하십시오.

sudo parted -ls / dev / sdb

sudo parted -ls / dev / sdb

sudo lsblk -f / dev / sdb

sudo lsblk -f / dev / sdb

Windows 설치 프로그램이 필요한 경우 mkusb “Windows 설치 프로그램 추출”기능으로 시작하는 것이 가장 쉽습니다 (Windows ISO를 TAR로 수동으로 추출해야 함).

mkusb Windows 설치 프로그램

설치 후 ISO 폴더를 작성하고 필요한 경우 지속성을위한 폴더를 작성하십시오 (위의 절차와 유사).

mkusb 윈도우 그럽

/boot/grub/grub.cfg를 편집하여 ISO를 루프 마운트하고 지속성 폴더를 지정하십시오.

(Windows ISO 파일을 루프 마운트하는 방법을 찾지 못했습니다).

위의 내용을 USB 스틱으로 사용하면 Windows 전용 컴퓨터에 저장된 ISO를 부팅하는 데 사용할 수 있습니다. 내장 드라이브에는 그럽이 필요하지 않습니다.


답변

쉬운 3 단계

grub 메뉴에 ISO를 추가하고 부팅합니다.

먼저 설치 grml-rescueboot

터미널을 열고 다음을 입력하십시오.

sudo apt install grml-rescueboot

둘째, iso 파일을 /boot/grml/

동일한 터미널에서 다음을 입력하십시오.

sudo mv ~/Downloads/<filename.iso> /boot/grml/

셋째, 그룹 업데이트

동일한 터미널에서 다음을 입력하십시오.

sudo update-grub

필요에 따라 두 번째 및 세 번째 단계를 반복하십시오.

에서 사용되지 않는 ISO 파일을 삭제하는 것을 잊지 마십시오 /boot/grml.

참조 : Grub2 ISO 부팅에 대한 Ubuntu 도움말

도움이 되었기를 바랍니다


답변

멀티 부트 USB-QEMU

번거롭지 않고 ISO 파일을 부팅하려는 경우 지속성이 필요하지 않은 경우 MultiBootUSB에는 QEMU 옵션이 포함됩니다.

  • MultiBootUSB를 시작하고 Boot ISO / USB 탭을 선택하십시오.

  • 이미지 선택 공간에서 ISO를 끌어다 놓습니다.

  • RAM 크기를 선택하고 Boot ISO 버튼을 누르십시오.

grub.cfg를 편집하거나 로그 아웃 할 필요가 없습니다.

멀티 부트 USB-QEMU


답변

간단한 mkusb ISO 멀티부터

다중 지속성이 필요하지 않은 경우 mkusb 플래시 드라이브에서 운영 체제 ISO를 멀티 부팅하기 쉽습니다.

mkusb를 사용하여 원하는 기본 OS ( https://help.ubuntu.com/community/mkusb)를 사용하여 영구 USB 드라이브를 만드십시오.

usbdata 파티션 sdx1에 ISO라는 이름의 폴더를 만듭니다.

이 폴더에 부팅 할 ISO를 추가하십시오.

ISO를 루프 마운트하려면 /sdx3/boot/grub/grub.cfg에 메뉴 항목을 추가하십시오.

견본:

menuentry "Ubuntu-18.04 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/ubuntu-18.04-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile splash --
        initrd (loop)/casper/initrd.lz
}

menuentry "GParted 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/gparted-live-0.31.0-1-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components noswap noeject toram=filesystem.squashfs ip='' nosplash findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

menuentry "Clonezilla 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/clonezilla-live-2.5.5-38-amd64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live live-config nolocales edd=on nomodeset ocs_live_run=\"ocs-live-general\" ocs_live_extra_param=\"\"   ocs_live_keymap=\"\" ocs_live_batch=\"no\" ocs_lang=\"\" vga=788   ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}


답변