레이블이 live인 게시물을 표시합니다. 모든 게시물 표시
레이블이 live인 게시물을 표시합니다. 모든 게시물 표시

2014/09/25

하드디스크의 우분투 설치 iso로 우분투 설치


(2014/10/29 오류 수정)

Facebook 우분투사용자모임에 USB 플래시 메모리 없이 하드디스크(HDD)로 우분투를 재설치 할 수 없느냐는 질문이 있어서 겸사겸사 정리해 보기로 했다. 이미 우분투가 설치되어 있는데 우분투를 업그레이드 하기 위해 Clean Install 하고자 한다면 굳이 USB를 사용하지 않아도 되기 때문에 매우 편리한 우분투 설치 방법이다.

우분투 설치를 USB를 사용하지 않고 하드디스크를 이용해서 설치하는 것은 우분투 설치 USB 만들기를 응용하면 쉽게 할 수 있다. 하드디스크를 USB라고 생각하면 되기 때문이다. 다만, 하드디스크에 Grub이 설치되어 있지 않다면 USB가 반드시 필요하기는 하다. 여기서는 우분투가 이미 설치되어 있는 경우에 하드디스크에 저장된 우분투 설치 iso로 우분투를 재설치하는 방법이다. Grub이 당연히 설치되어 있기 때문이다.

우분투를 재설치하려면 우분투 홈페이지에서 내려 받은 우분투 설치 iso 파일은 우분투를 새로 설치할 파티션과는 다른 파티션에 있는 것이 좋다. 평소에 OS와 데이터 파티션을 분리해서 사용하는 것은 여러모로 장점이 많다. Windows를 같이 사용하고 있다면 Windows 파티션에 iso 파일을 복사해서 사용해도 된다. 파티션이 하나 밖에 없다면 parted로 파티션을 분리하는 것이 좋고, 그게 어려우면 iso 폴더를 만들어서 우분투 설치 시에 덮어쓰기로 설치할 수도 있기는 하다.

우분투 설치 iso 파일 위치 확인

기존에 데이터 파티션은 /home에 마운트해서 사용하고 있고 aaa라는 사용자의 Downloads 폴더에 우분투 설치 iso를 내려 받았다고 가정한다. 향후에도 우분투 iso 이미지를 가지고 하드디스크에서 부팅해서 설치할 경우를 대비해서 아래와 같이 /home/boot-isos 폴더를 만들고 사용자 권한을 부여해 두면 좋다. 내려 받은 iso 이미지들은 모두 /home/boot-isos 폴더로 몰아 넣는다.

$ sudo mkdir /home/boot-isos
$ sudo chown aaa:aaa /home/boot-isos
$ mv ~/Downloads/*.iso /home/boot-isos

이제, /home이 어느 파티션인지 알아야 한다. 아래와 같이 /dev/sda9 파티션임을 알 수 있다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda8        92G   22G   65G  26% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           793M  1.4M  791M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G   17M  3.9G   1% /run/shm
none            100M   76K  100M   1% /run/user
/dev/sda11      145G  129G  8.7G  94% /opt
/dev/sda9        92G   29G   59G  34% /home
/dev/sda1       197M   48M  150M  25% /boot/efi

우분투 설치 iso 파일에 대한 Grub boot menu entry 등록

Grub에서 우분투 설치 iso로 부팅하려면 Grub boot entry를 새로 추가하되, 하드디스크 파티션 정보와 파일 경로를 지정해 주어야 한다. 위에서 /dev/sda9 파티션이니까 디스크의 9번째 파티션이다. 디스크는 첫번째 하드디스크이다. 즉, 아래 menu entry의 (hd0,9)에 해당한다. USB 메모리로 부팅할 경우에도 USB 메모리가 첫번째 디스크가 되므로 hd0이다. 또한, iso 파일 경로는 파티션을 기준으로 하기 때문에 /home/boot-isos/...가 아니라 /boot-isos/ubuntu-14.04.1-desktop-amd64.iso가 됨에 유의할 필요가 있다.
menuentry "HDD Ubuntu 64-bit iso" {
   set isofile="/boot-isos/ubuntu-14.04.1-desktop-amd64.iso"
   loopback loop (hd0,9)$isofile
   linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}
위의 내용을 nano등의 편집기를 사용하여 /etc/grub.d/40_custom 파일 맨 끝에 추가한다.

$ sudo nano /etc/grub.d/40_custom

/boot/grub/grub.cfg를 새로 생성하기 위해서는,

$ sudo update-grub

이제 재부팅 해서 Grub 메뉴 중 위에 만든 "HDD Ubuntu 64-bit iso" 메뉴를 선택한 후, 다시 "Try Ubuntu without installing" 메뉴를 선택해서 우분투 live CD 환경으로 부팅하면 iso 이미지로 부팅해서 우분투를 설치할 수 있게 된다.

$ sudo reboot

우분투 설치 iso로 재부팅 후 우분투 설치전에 해야 할 일

우분투 14.10을 이 게시물 대로 하드디스크의 iso 이미지로 설치하다가 뭔가 빠졌음을 알게 되었다. 우분투 설치 파일을 마구 복사하면서 빨리 설치가 진행되어야 하는데  File System을 인식하지 못해 설치가 진행되지 않고 계속 멈춰 있는 증상이다.

설치 중에 파티션 테이블을 건드리는데 하드디스크의 iso 이미지를 사용하기 위해 하드디스크를 mount 상태로 두고 있으니 파티션 테이블을 수정할 수 없게 된다. 물론 설치 과정 중에 unmount 할지 물어보고 yes라고 해도 root 권한이 없으니 unmount가 안된다.

우분투 설치 icon을 click 하기 전에 <Ctrl>+<Alt>+<t>로 터미널을 띄워서 아래와 같이 umount 해주면 된다.

$ sudo umount -l /isodevice

2014/08/18

Ubuntu UEFI 모드 설치 USB 만들기


제목을 "Ubuntu UEFI 모드 설치 USB 만들기"로 달았지만, 이 글은 사실, "UEFI와 BIOS를 모두 지원하는 우분투 설치 USB 만들기"가 정확할 것이다.

우분투 설치 USB 만들기에 대한 글은 사실 널려 있다. 그리고, 우분투 한국 커뮤니티에도 "Super Grub2 Disk를 이용한 우분투 Live/설치 USB 만들기"를 올린 적이 있다. 따라해 보라고 알려 줘도 당장 설치하고자 하는 마음이 앞서기 때문에 빠른 방법을 찾는 듯하다. 즉, 간단히 Rufus나 UNetbootin, Universal USB Installer 등과 같은 USB 굽기 Tool을 사용하면 된다. 또, 버그가 있었지만 우분투가 기본으로 제공하는 Startup Disk Creator도 있다. 다만, 굳이 이런 Tool을 사용하고 싶다면 Rufus가 좋다. Rufus는 BIOS와 UEFI 방식을 모두 지원한다.

물론, 위의 글이 갖는 한계도 있다. Windows 사용자가 처음 리눅스를 설치하고자 한다면 우분투 환경이 없기 때문에 불가능한 방법이다(사실, 이 경우라면 Virtual Box에 우분투 설치해서 먼저 써 보는게 좋고, 자연스레 우분투 환경이 만들어 진다). 그리고, 우분투 사용자라고 하더라도 Super Grub2 Disk라는 생소한 Tool을 또 배워야 한다는 부담감이 있다(배우는데 30분이면 족하지만).

사실, 편하기로 따지자면 앞서의 Super Grub2 Disk를 이용한 USB 만들기를 사용할 것을 권하고 싶다. 왜냐하면 Super Grub2는 단순히 Grub2 Script를 이용해서 Grub2의 기능을 100% 이상 활용하기 때문이다. 결과적으로는 PC에서 부팅할 수 있는 Windows, Mac OSX, 온갖 Linux 배포판, FreeBSD 등을 포함한 대부분의 OS와 iso 이미지, 커널, (U)EFI/BIOS boot loader 등 대부분의 부팅 방식 들을 지원하기 때문이다. OS가 설치됐지만 갑자기 부팅이 안될 때 Super Grub2는 매우 유용하다.


여기서는, 우분투 환경이 있어야 한다는 제약은 있지만, Super Grub2를 사용하지 않고 순수하게 우분투 기본 환경에서 우분투 설치 USB를 만드는 법을 정리한다. 이 방법의 장점은,
  • 우분투 사용자 입장에서 별도의 Tool이 불필요
  • 매번 USB 굽기에 따른 USB 데이터 손실이 없음: 즉, USB 고유의 Data 보관기능 유지
  • iso 이미지 파일만 교체 또는 추가하면되므로 우분투 버전업이 용이함
  • BIOS 방식과 UEFI 방식을 모두 지원함
  • 32-bit와 64-bit iso 이미지 모두 지원함
  • Apple Mac H/W에 우분투 설치시 별개의 복잡한 USB 만들기 절차 불필요
별도의 Tool이 불필요한 점을 제외하면, Super Grub2를 이용한 USB 만들기 방법이 장점이 더 많다는 점을 한번 더 강조하고 싶다. 그리고, 이 방법이 기존의 iso 이미지를 굽지 않는 방법과 다른 점은 최신 Window 8/8.1이 설치된 PC 들이 대부분 UEFI 방식으로 부팅하기 때문에 UEFI 방식을 지원한다는 점이다.

1. 1GB 이상의 빈 USB를 준비하여 gparted를 이용, GPT 파티션 생성

여기서는 3개의 파티션을 사용하고, 1번은 ESP(EFI System Partition, 200MiB), 2번은 BIOS Grub 용(1MiB), 3번은 iso 이미지 용(나머지 USB 용량) 할당한다. USB 용량이 8GB 이상이면 파티션 수를 많이 늘려서 여러가지 목적으로 활용 가능하다. GPT 파티션은 기본적으로 128개 까지 Primary Partition을 만들 수 있다.

$ sudo gparted /dev/sdb

먼저, Partition Table을 msdos가 아닌 gpt로 구성하고, 아래의 parted 실행 결과처럼 파티션을 나눈 후 gparted에서 빠져 나온다. 참고로, 아래의 2번 파티션은 gparted에서 unformatted 상태로 bios_grub Flag를 설정한 것임에 유의한다. 사실, 3번 파티션은 ext2가 아닌 아무 파일 시스템이나 상관없다. bios_grub 파티션은 GPT 파티션에 BIOS Grub을 설치하기 위해 필요하다.

$ sudo parted /dev/sdb print
Model:  USB DISK 2.0 (scsi)
Disk /dev/sdb: 3880MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
1      1049kB  211MB   210MB   fat32              msftdata
2      211MB   212MB   1049kB                     bios_grub
3      212MB   3880MB  3668MB  ext2
참고로, 리눅스 설치 만이 목적이라면 굳이 GPT 파티션을 사용할 필요가 없고, 파티션도 1개로 해도 된다. 즉, MBR (gparted의 msdos) 파티션을 사용하고 1개의 fat32 파티션을 사용해도 우분투는 BIOS와 UEFI 모드로 모두 설치할 수 있다.

2. Ubuntu 사이트에서 우분투 설치 iso 파일을 내려 받아 기본 EFI boot loader 복사

참고로 32-bit PC일 지라도 64-bit PC에서도 부팅할 수 있도록 아래의 과정을 해 두자. 그리고, 이 과정에서 현재 버전을 사용하지만, 한번만 해두면 이후엔 최신 버전으로 교체할 필요는 없다.

$ sudo mkdir /tmp/mnt
$ sudo mount -o loop ~/Downloads/ubuntu-14.04.1-desktop-amd64.iso /tmp/mnt

$ sudo mount /dev/sdb1 /mnt
$ sudo cp -R /tmp/mnt/EFI /mnt
$ sudo cp -R /tmp/mnt/boot /mnt/

3. Ubuntu 사이트에서 내려 받은 우분투 설치 iso 파일들을 3번 ext2 파티션에 복사

여기서는 실제 설치할 우분투 버전의 iso를 사용한다. 즉, 32-bit PC 라면 32-bit iso 파일을 사용해야 한다. iso 파일들은 USB 3번 파티션의 /boot-isos 폴더에 복사함에 유의한다. 또한, USB 용량이 넉넉하다면 여러 개의 iso 파일을 복사해서 나중에 선택해서 부팅 가능하다. 우분투 설치 iso 용량이 늘어나는 추세이고 USB에 복사하는 것이라 시간이 많이 걸린다.

$ sudo umount /mnt
$ sudo mount /dev/sdb3 /mnt
$ sudo mkdir /mnt/boot-isos

$ sudo cp ~/Downloads/ubuntu-14.04.1-desktop-amd64.iso /mnt/boot-isos
$ sudo cp ~/Downloads/ubuntu-14.04.1-desktop-i386.iso /mnt/boot-isos
$ sudo sync

4. USB의 grub.cfg 파일에 부팅 메뉴 생성

$ sudo umount /mnt
$ sudo mount /dev/sdb1 /mnt
$ sudo nano /mnt/boot/grub/grub.cfg

nano 등의 편집기를 이용해서 USB의 /boot/grub/grub.cfg 파일에 아래의 내용을 추가하되, 기존의 파일 내용은 모두 지우는 게 나중에 부팅시 혼란스럽지 않다. 아래의 내용 중에 중요한 것은, 위의 3번에서 지정한 USB의 파티션과 iso 파일명/파일 경로가 일치해야 한다는 점이다. 참고로, 64-bit의 경우 우분투 12.04.2 이후 UEFI를 지원하면서 iso 파일 내의 리눅스 커널명이 "vmlinuz.efi"가 되었다. 그 전에는 "vmlinuz"를 사용했었다.

menuentry "USB Ubuntu 64-bit" {
   set isofile="/boot-isos/ubuntu-14.04.1-desktop-amd64.iso"
   loopback loop (hd0,3)$isofile
   linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}

menuentry "USB Ubuntu 32-bit" {
   set isofile="/boot-isos/ubuntu-14.04.1-desktop-i386.iso"
   loopback loop (hd0,3)$isofile
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}

5. BIOS 모드로 부팅된 PC에서 BIOS Grub(grub-pc) 설치

현재 PC가 BIOS 모드로 부팅한 것인지 EFI 모드로 부팅한 것인지 알 필요가 있다.

$ ls -CF /sys/firmware

실행 결과 efi/ 폴더가 없으면 BIOS 모드, efi/ 폴더가 보이면 EFI 모드로 부팅한 것이다. BIOS 모드로 우분투를 설치하면 grub-pc 패키지가 설치되고, EFI 모드로 설치하면 grub-efi 패키지가 설치 됨에 유의한다.

따라서, 현재 PC가 EFI 모드로 부팅했다면 BIOS Grub을 설치하기 위해서는 반드시 BIOS Grub이 설치된 PC가 필요하다. 즉, BIOS 모드로 부팅할 PC가 없다면 아래의 과정은 불필요하다. 참고로, Virtual Box로 우분투를 설치하면 기본적으로 BIOS 환경이 된다. EFI를 지원하는 PC에서 Virtual Box는 EFI 모드도 지원한다.

$ sudo umount /mnt
$ sudo mount /dev/sdb1 /mnt
$ sudo grub-install --recheck --boot-directory=/mnt/boot /dev/sdb


우분투 설치 USB의 활용

향후에 우분투 새 버전을 설치하고자 할 때에는 USB에 복사할 iso 파일명이 달라질 것이고, 이에 따라 USB의 grub.cfg 파일에서 iso 파일명을 수정해 주어야 한다. 즉, 위의 3번과 4번 과정만 반복하면 된다.

이제 이렇게 만들어진 우분투 설치 USB는 Mac을 포함한 아무 PC 에서나 우분투를 설치할 수 있다. 더구나, 우분투 설치 iso는 Live 기능이 있으므로 굳이 우분투를 설치하지 않아도 USB로 부팅해서 현재 우분투 버전이 내 PC H/W에서 잘 동작하는지 확인해 볼 수 있다. 또한, 이 USB를 이용하여 부팅이 안되는 PC를 복구하거나 Data를 백업 받을 수도 있다.

추가적으로, 이 글의 방법대로 만든 USB를 활용하면 1개의 USB로 우분투 설치는 물론이고, UEFI 모드의 Windows와 Mac OSX 설치까지 가능한 Triple-OS USB Installer도 만들 수 있다.