Gentoo on UEFI-based computer

Gentoo Korea Wiki
Alchemist (토론 | 기여)님의 2013년 3월 29일 (금) 10:38 판
둘러보기로 가기 검색하러 가기

개요

최근, 대부분의 메인보드에는 UEFI(Unified Extensible Firmware Interface)라고 불리는, 기존의 BIOS와는 다른, 펌웨어가 탑재되어 출시된다. UEFI-펌웨어는 직접 OS kernel을 로드할 수 있는 부팅매니저를 포함하고 있다. 따라서, UEFI 기반으로 시스템을 부팅하려고 한다면, 기존의 BIOS 기반으로 제작된 부트로더, 부팅매니저등은 사용할 수 없고, 사용할 필요도 없다. UEFI-펌웨어가 시스템을 부팅하는 구체적인 메커니즘은 다른 페이지를 참고하도록 하고, 여기서는 젠투 리눅스 배포판을 UEFI 기반으로 부팅하기까지 과정을 알아본다.

젠투 리눅스 설치에서 부팅까지

아래 설치 과정을 무작정 따라하기 보다, 아웃라인을 잡고 시작하기를 권장한다. 그러면 이 문서에 나온 시나리오를 개인의 취향에 맞게 개선할 수 있을 것이다. 또한 시작에 앞서 overview를 권고함은 이 문서는 진행과정에서 의도적으로 실수하고 있기 때문이다.

먼저 언제나 그렇듯, gentoo livecd와 stage3 tar ball, 최신 portage tar ball을 미러서버에서 다운받고 시작하도록 한다. 시스템 아키텍쳐별로 livecd, stage3이 같은 디렉토리로 배포되고 있고, portage tar ball은 snapshot이란 디렉토리에서 배포되고 있다.

http://ftp.daum.net/gentoo/releases/

이 문서에서는 Gentoo livecd는 LiveDVD가 아닌 minimal을 사용하였다. 요즘 환경에서 iso를 physical-CD에 굽는 경우는 드물 것이고, 아마도 부팅가능한 USB 플래시 드라이브를 제작하고 싶을 것이다. UNetbootin이라는 툴을 사용하면 iso 이미지를 가지고 간단하게 bootable UFD(USB Flash Drive)를 제작할 수 있다.

http://unetbootin.sourceforge.net/

OSX 환경 사용자는 이 툴을 사용하여도, 제작된 UFD가 정상적으로 부팅되지 않을 수 있다. 그럴 경우는 다음 처리를 해주어야 한다.

osx ~ $ diskutil list # 주의! USB 디스크 번호 확인

osx ~ $ sudo fdisk -e /dev/rdisk1 # /dev/disk1이 아니다

fdisk: 1> p

1: 0B 1023 254 63 - 1023 254 63 [ 2 - 18555416] Win95 FAT-32

fdisk:*1> f 1

fdisk:*1> p

*1: 0B 1023 254 63 - 1023 254 63 [ 2 - 18555416] Win95 FAT-32

fdisk:*1> w

fdisk: 1> exit

젠투 livecd로 부팅을 하게 되면 dmesg, lspcils* 유틸리티를 비롯하여,

livecd ~ # more /proc/cpuinfo

등을 통해 시스템의 하드웨어 정보를 얻을 수 있다.

Alt+F2 혹은 Alt+방향키 등으로 여러개의 프레임 버퍼를 띄워두고 작업을 진행 할 수 있다.

콘솔작업보다는 ssh 접속을 통한 터미널작업을 추천한다.

livecd ~ # ifconfig

livecd ~ # # ip 주소가 잡혀있지 않은 경우에는 `net-setup' 스크립트로 네트워크를 설정한다.

livecd ~ # # net-setup eth0 && ifconfig

livecd ~ # # LAN 환경에 dhcp 서버가 있다면 `dhcpcd eth0'을 명령하면 쉽게 ip를 발급받을 수 있다.

livecd ~ # ping -c3 www.gentoo.org

livecd ~ # /etc/init.d/sshd start && passwd

나는 콘솔에서 모든 것을 끝내버리겠다(?) 하는 분들은, CapsLock키를 Ctrl키로 매핑하여 사용하는 것이 도움이 될 것이다.

livecd ~ # emacs /etc/conf.d/keymaps
...
keymap="emacs"
...

livecd ~ # /etc/init.d/keymaps restart

위와 같이 설정하면, CapsLock키를 Ctrl키로 사용할 수 있을 것이다. 참고로 C-a/e, C-f/b, M-f/b, C-t, C-p/n등, 다양한 이맥스 키바인딩은 bash, csh와 같은 표준적인 쉘에서 여전히 유효하다.

다음으로 할 작업은 디스크 편집과정이다. 따라서 데이터 유실과 같은 사항은 각별히 유의하여야 한다. 본 문서에서는 시스템 운용에 두 개의 블록 디스크 장치를 사용하여, 하나는 젠투의 root가 설치되고, 나머지 하나는 /home에 마운트 될 것이다. 이 때, UEFI 기반에서 젠투를 부팅하려 한다면, 반드시 ESP(EFI System Partition)가 하나 이상의 디스크에 존재해야 한다. 또 반드시 ESP는 파티션 테이블 상에서 첫번째 파티션이어야 한다.

livecd ~ # parted -l

livecd ~ # parted /dev/sda # gentoo root가 설치될 디스크

(parted) mklabel gpt

(parted) mkpart EFI fat32 0% 210m # help 메세지에는 PART-TYPE으로 3가지 중 하나만 쓰라고 했지만, 이는 partition table의 name 컬럼에 불과하다.

(parted) mkpart primary linux-swap 210m 710m

(parted) mkpart primary xfs 710m 100%

(parted) set 1 boot on # 1st partition을 ESP로 지정. fdisk의 boot flag와는 다르고, gdisk에서의 part-type code `EF00'와 같다.

(parted) print

(parted) select /dev/sdb

(parted) mklabel gpt

(parted) mkpart primary xfs 0% 100%

(parted) print

(parted) quit

livecd ~ # mkfs.vfat -n"efi" -F32 /dev/sda1

livecd ~ # mkswap -L"swap" /dev/sda2 && swapon LABEL=swap

livecd ~ # mkfs.xfs -L"gentoo" -f /dev/sda3

livecd ~ # mkfs.xfs -L"home" -f /dev/sdb1 #