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를 설치해본다.

 

추가 boot device 찾는 방법

(hd1,gpt1) 디스크에서 파일 찾는 방법을 의외로 모르시는 분들이 많아 추가로 정리합니다.

 

위와 같이 grub 화면이 나올 때 키보드로 "c"를 눌러 grub shell로 진입 

"ls" 명령어를 실행해서 부팅이 가능한 디바이스 인지 확인합니다.

만약 디바이스가 보이지 않는다면 bios에서 iso 파일이 있는 디스크를 부팅가능한 디스크로 추가해 줍니다.

위와 같이 결과가 나올때, OS 및 디스크 구성으로 예상해볼 때 , (hd1,gpt1)에 있을 것 같이면 ls (hd1,gpt1)/ 명령어를 실행해서 해당 디바이스의 데이터를 확인합니다.

iso 파일 위치가 "(hd1,gpt1)/iso-boot/ubuntu-20.04.4-live-server-amd64.iso 와 같습니다.

ls (hd1,gpt1)/iso-boot/ 명령어를 실행해서 iso 파일이 있는지 확인합니다.

위와 같이 파일이 발견된다면, 부팅할 iso 파일 위치를 grub 설정 파일과 정확하게 일치하는지 확인합니다.