GRUB 및 내부 HDD를 사용하여 iso 파일에서 부팅하는 방법(외부 USB/CD 없이)

3855 단어 bootisolinuxgrub
새 System76의 Lemp11 pro를 방금 받았고 Pop!_OS를 좋아하지만 Arch(btw)를 선호하지만… 저를 설치 미디어로 사용할 외부 USB 드라이브가 없었기 때문에…

파티션 생성



내부 하드 드라이브가 2개 있고 보조 드라이브를 축소하여 새 파티션에 더 많은 공간을 할당할 것입니다. 사용 가능한 메모리가 있는 경우 이 단계를 건너뛸 수 있습니다.

디스크를 열고 파티션 크기를 조정하십시오.


내부 파티션을 32GB로 남겨둡니다.



여유 공간에 새 파일ext4을 만들고 원하는 이름을 지정하세요 :)

ISO 파일 복사



1단계, iso 파일을 방금 만든 새 디스크에 복사합니다.
2단계, 없음.

데이터 준비



다음 및 마지막 단계에서는 grub을 구성해야 하며 이를 위해 몇 가지 데이터를 수집해야 합니다.
  • .iso 파일 hdd 번호:lsblk | grep disk를 실행하여 하드 드라이브를 나열할 수 있습니다:

  • /dev/hda refers to the first IDE hard drive
    /dev/sda refers to the first SCSI or SATA hard drive.
     If you use a NMVe SSD, it might be named as /dev/nvme0n1, /dev/nvme1n1 and so on.
    But in GRUB, the first hard drive is always referred to as hd0, no matter what the interface type is


  • .iso 파일 파티션 번호:
    다음 명령sudo parted -l을 실행하고 iso의 파일 파티션 번호
  • 를 찾을 수 있습니다.
  • 설정의 .efi 파일
    .iso 파일을 찾아보고(iso를 마운트하거나 아카이브 관리자를 열면 됨) 원하는 linuz .efi 파일 및 이미지 파일을 찾습니다.
    예를 들어:
    우분투 설정:/casper/vmlinuz/casper/initrd아치 설정/arch/boot/x86_64/vmlinuz-linux/arch/boot/x86_64/initramfs-linux

  • GRUB 구성



    즐겨 사용하는 텍스트 편집기를 사용하여 다음 행을 추가하십시오.

    사용자 지정 구성 파일:sudo vi /etc/grub.d/40_custom(파일이 존재하지 않는 경우/etc/grub.d/40_custom
    update-grub 실행 파일 설치, grub-disk를 설치하십시오)

    다음 줄을 추가합니다.

    menuentry "{{menu entry name}}" {
      insmod ext2
      set isopartition=hd{{hdd number}},{{partition number}}
      set isofile="{{iso file path (relative to hdd)}}"
      loopback loop (hd{{hdd number}},{{partition number}})$isofile
      linux (loop){{iso's vm linuz efi file path}} img_dev=/dev/disk/by-uuid/$isouuid img_loop=$isofile
      initrd (loop){{iso's ram memory image file path}}
    }
    


    작업 예제(아치 리눅스)

    menuentry "archlinux-2022.07.01-x86_64.iso" {
      insmod ext2
      set isopartition=hd1,2
      set isofile="/iso/archlinux-2022.07.01-x86_64.iso"
      loopback loop (hd1,2)$isofile
      linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=/dev/disk/by-uuid/$isouuid img_loop=$isofile
      initrd (loop)/arch/boot/x86_64/initramfs-linux.img
    }
    


    우분투:

    menuentry "ubuntu-20.04.2.0-desktop-amd64.iso" {
      insmod ext2
      set isofile="/iso/ubuntu-20.04.2.0-desktop-amd64.iso"
      loopback loop (hd1,2)$isofile
      linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash
      initrd (loop)/casper/initrd
    }
    


    menuentry: GRUB2 메뉴 항목, 원하는 대로 이름을 지정합니다.
    insmod: 모듈을 삽입합니다. ISO 파일은 ext4 파티션에 저장되어 있으므로 ext2 모듈이 필요합니다.
    set isofile: ISO 이미지 파일의 경로를 지정합니다.
    루프백: ISO 파일을 마운트합니다. hd0은 컴퓨터의 첫 번째 하드 드라이브를 의미하고 5는 ISO 파일이 5번째 디스크 파티션에 저장됨을 의미합니다.
    linux 명령은 지정된 경로에서 Linux 커널을 로드합니다. casper/vmlinuz.efi는 Ubuntu ISO 이미지 내부의 Linux 커널입니다.
    initrd: initrd 명령은 지정된 경로에서 초기 ramdisk를 로드합니다. linux 명령이 실행된 후에만 사용할 수 있습니다. 초기 램디스크는 RAM에 마운트된 최소 루트 파일 시스템입니다. casper/initrd.lz는 Ubuntu ISO 이미지 내부의 initrd 파일입니다.

    다음으로 해야 할 일은 다음 명령sudo update-grub을 실행하고 재부팅하는 것입니다.

    모두 완료:)

    좋은 웹페이지 즐겨찾기