ubuntu에서 grub를 통한 ISO 부팅

ubuntu를 설치할 경우가 있다. 특히 처음 설치가 필요하거나 재설치가 필요한 경우에 간단하게 ISO 파일만으로
재설치해보고 싶은 경우도 있다. 이런 경우 iso를 다운 받아서 해당 iso를 grub와 적절히 설정해주면 부팅 시
설정된 ISO를 통해 부팅이 가능하다.

이런 경우 하드웨어 및 Linux에 대해서 좀 알 필요가 있는데, 일반적으로 아래와 같은 예제로 하면 된다.

 

디스크 구성 현황

/dev/nvme0n1          - OS 디스크
  - /dev/nvme0n1p1    - OS 설치 파티션

/dev/sda              - 데이터 저장
  - /dev/sda1         - GPT 파티션 (/data)

/dev/sda              - 데이터 저장
  - /dev/sdb1         - GPT 파티션 (/data1)

 

1. OS 설치를 위한 ISO파일을 /data/iso-boot 디렉토리에 다운로드 받는다.

# mkdir /data/iso-boot
# cd /data/iso-boot
# wget https://mirror.kakao.com/ubuntu-releases/focal/ubuntu-20.04.4-live-server-amd64.iso

 

2. grub용 설정 파일 생성

(파일 생성 및 실행 권한 할당)
# touch /etc/grub.d/ubuntu2004-uboot
# chmod 755 /etc/grub.d/ubuntu2004-uboot

(설정 내용 추가)
# vi /etc/grub.d/ubuntu2004-uboot
#!/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 'Ubuntu 20 ISO' {
  set isofile=/iso-boot/ubuntu-20.04.4-live-server-amd64.iso
  loopback loop (hd1,gpt1)$isofile
  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile ---
  initrd (loop)/casper/initrd
}

 

이중 가장 중요한 부분은 "(hd1,gpt1)"로 hd1 디스크의 gpt로 구성된 1번째 파티션이라는 의미다.
몇 번째 디스크를 사용하는지, 몇번째 파티션을 사용하는지, 왜 이렇게 번호가 붙여주는지는 가르쳐 주지 않는다.
(공부하자!!!)

 

일단 위와 같이 설정 후, grub를 업데이트해준다.

# update-grub

 

부팅후, 해당 메뉴가 있는지 확인하고 ISO 파일로 OS를 설치해본다.