This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
젠투 베이스 시스템 설치
루트 변경
선택: 미러 선택
배포판 파일
소스코드를 빨리 다운로드 하려면 빠른 미러를 선택하시는 것이 좋습니다. 포티지는 make.conf 파일의 GENTOO_MIRRORS 변수에서 미러를 찾아보며 해당 변수에 들어간 미러를 활용합니다 젠투 미러 목록 및 시스템에서 물리적으로 가까운(대부분 이런 미러가 빠름) 미러(또는 복수의 미러) 를 검색할 수 있습니다. 그러나 우리에겐 필요한 미러를 선택할 때 멋진 인터페이스를 제공해 주는 mirrorselect 도구가 있습니다. 선택할 미러를 찾아보고 하나 이상의 미러를 Spacebar 키로 선택하면 됩니다.
root #
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
젠투 이빌드 저장소
미러를 선택하는데 있어 두번째로 중요한 단계는 /etc/portage/repos.conf/gentoo.conf 파일의 젠투 이빌드 저장소 설정입니다. 이 파일에는 꾸러미 저장소(포티지에서 프로그램 꾸러미를 다운로드하고 설치할 때 필요한 모든 정보가 들어있는 관련 파일 및 이빌드 모음)를 업데이트 하는데 필요한 동기화 정보가 들어있습니다.
저장소 설정은 몇 가지 단순한 과정을 거칩니다. 우선 repos.conf 디렉터리가 없다면 만드십시오:
root #
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
다음, 포티지에서 제공하는 젠투 저장소 설정 파일을 (새로 만든) repos.conf 디렉터리에 복사하십시오:
root #
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
텍스트 편집기를 골라 쓰든지 cat 명령을 사용하십시오. 해당 파일은 다음과 같이 .ini 파일 형식으로 되어 있습니다.
[DEFAULT] main-repo = gentoo [gentoo] location = /usr/portage sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage auto-sync = yes sync-rsync-verify-jobs = 1 sync-rsync-verify-metamanifest = yes sync-rsync-verify-max-age = 24 sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc sync-openpgp-key-refresh-retry-count = 40 sync-openpgp-key-refresh-retry-overall-timeout = 1200 sync-openpgp-key-refresh-retry-delay-exp-base = 2 sync-openpgp-key-refresh-retry-delay-max = 60 sync-openpgp-key-refresh-retry-delay-mult = 4 # for daily squashfs snapshots #sync-type = squashdelta #sync-uri = mirror://gentoo/../snapshots/squashfs
sync-uri 변수 기본값은 위에 언급한 바와 같이 전환 기반 미러 위치를 결정합니다. 젠투의 운영기반 시스템의 과부하를 완화하는데 도움을 주며 특정 미러가 깨졌을 경우 우회하는 수단을 제공합니다. 자체 로컬 포티지 미러를 사용하기
전에는 기본 URI 설정을 그대로 두는 것이 좋습니다.
이 부분에 관심있다면 포티지 플러그인 동기화 API에 대한 공식 사양을 동기화 문서en에서 찾을 수 있습니다.
DNS 정보 복사
새 환경에 들어가기 전 아직 남은 하나는 /etc/resolv.conf의 DNS 정보를 복사하는 일입니다. 새 환경에 들어가고 나서 네트워크가 그대로 동작할 수 있게 하려면 꼭 필요합니다. /etc/resolv.conf 파일에는 네트워크를 사용할 때 활용하는 네임 서버 주소가 들어있습니다.
이 정보를 복사하려면 cp 명령에 --dereference
옵션을 전달하는게 좋습니다. /etc/resolv.conf 파일이 심볼릭 링크라면 심볼릭 링크가 아니라 링크의 대상 파일 그 자체를 찾아서 복사합니다. 그렇지 않으면 새 환경에서 심볼릭 링크로 남아있으며(링크 대상은 새 환경에 존재하지 않습니다), 실제 존재하지 않는 파일을 참조합니다.
root #
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
필요한 파일 시스템 마운트
잠시 동안, 리눅스 루트는 새 위치로 바뀝니다. 새 환경이 제대로 동작하는지 보려면 각각의 파일 시스템을 활성화해야 합니다.
활성화해야 할 파일 시스템은 다음과 같습니다:
- 리눅스 커널에서 환경에 공개하려는 정보가 만든 의사 파일 시스템(일반 파일 같지만, 실제로는 동적으로 생성하는 파일 시스템) /proc/
- /proc/보다 구조가 잘 갖춰져있어 대체 용도로 쓸 수 있는 의사 파일 시스템 /sys/
- 리눅스 장치 관리자(보통 udev)가 일부 관리하는 일반 파일 시스템이며, 모든 장치 파일이 들어있는 /dev/
다른 두개의 파일 시스템은 바인드 마운트를 하는데 반해 /proc/ 위치는 /mnt/gentoo/proc/에 마운트합니다. 후자의 경우, /mnt/gentoo/proc/는 (말 그대로) 파일 시스템에 대한 새 마운트지만, /mnt/gentoo/sys/는 실제로 /sys/(동일한 파일 시스템에 대한 두번째 마운트 지점)이 된다는 의미입니다.
root #
mount --types proc /proc /mnt/gentoo/proc
root #
mount --rbind /sys /mnt/gentoo/sys
root #
mount --make-rslave /mnt/gentoo/sys
root #
mount --rbind /dev /mnt/gentoo/dev
root #
mount --make-rslave /mnt/gentoo/dev
--make-rslave
동작은 설치 과정에서 나중에 systemd 지원 기능에 필요합니다.When using non-Gentoo installation media, this might not be sufficient. Some distributions make /dev/shm a symbolic link to /run/shm/ which, after the chroot, becomes invalid. Making /dev/shm/ a proper tmpfs mount up front can fix this:
root #
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
1777 모드를 설정했는지 확인하십시오:
root #
chmod 1777 /dev/shm
새 환경으로 진입
모든 파티션을 초기화 하고 기반 환경을 설치했으니, 새 설치 환경에 chroot로 들어갈 차례입니다. 현재 설치 환경의 세션의 루트(접근할 수 있는 최상위 환경)를 설치 시스템의 루트(초기화한 파티션)로 바꾼다는 의미입니다. 그래서 이름이 change root 또는 chroot라고 합니다.
루트 위치 전환은 세 단계로 처리합니다:
- chroot를 사용하여 루트 위치를 (설치 매체의)/에서 (파티션의) /mnt/gentoo/로 바꿉니다
- 몇가지 설정(/etc/profile에 있음)을
source
명령으로 메모리에 다시 불러옵니다 - chroot로 바꾼 환경임을 인지하기 위해 초기 프롬프트를 바꿉니다.
root #
chroot /mnt/gentoo /bin/bash
root #
source /etc/profile
root #
export PS1="(chroot) ${PS1}"
이 때, 모든 동작을 새 젠투 리눅스 환경에서 바로 처리할 수 있습니다. 물론 끝나려면 한참 멀었지만, 설치 절이 여전히 아직도 남아있는 이유입니다!
젠투 설치가 여기 어디에선가 멈췄다면 이 단계에서 설치를 '재개'할 수 있"어야"합니다. 디스크 영역을 다시 분할할 필요가 없습니다! 간단하게 루트 분할 영역 마운트 를 진행하고, 작업 환경에 다시 들어오기 전 DNS 정보 복사로 위 단계 진행을 시작하십시오. 이 방법은 부트로더 문제를 해결할 때도 쓸만합니다. 더 많은 내용은 chroot 게시글에서 찾아보실 수 있습니다.
부팅 분할 영역 마운트
이제 새 환경에 들어왔으니, /boot 분할 영역을 만들어야 합니다. 커널을
컴파일하고 부트로더를 설치할 때 중요한 부분입니다:
root #
mkdir /boot
root #
mount /dev/sda2 /boot
포티지 설정
웹에서 이빌드 저장소 스냅샷 가져와서 설치하기
다음은 이빌드 저장소 스냅샷을 설치할 차례입니다. 이 스냅샷에는 사용할 수 있는 프로그램 (설치) 이름, 시스템 관리자가 선택할 수 있는 프로파일, 꾸러미, 프로파일별 소식 항목 등이 들어있습니다.
제한적인 방화벽 환경에 있어 네트워크 대역폭 활용을 아낄 분들은 (스냅샷을 다운로드할 때 HTTP/FTP를 활용하므로) emerge-webrsync 사용을 권장합니다. 네트워크 또는 대역폭 제한이 없는 독자분들은 다음으로 신나게(!) 건너 뛸 수 있습니다.
이 과정을 통해 젠투 미러 중 한 곳에서 (매일 최신 내용으로 바뀌는) 최신 스냅샷을 가져와서 시스템에 설치합니다:
root #
emerge-webrsync
설치 과정 중 emerge-webrsync에서 /usr/portage/ 위치가 없는 문제를 보고합니다. 당연한 결과이며 걱정할 필요가 없습니다. 도구에서 해당 위치를 만듭니다.
이 시점부터는 포티지에서 각각의 추천 업데이트를 실행하라고 알려줍니다. 스테이지 파일을 통해 설치한 시스템 꾸러미는 새 버전이 존재하며, 저장소 스냅샷을 새로 설치하여 포티지가 새 꾸러미를 인식하기 때문입니다. 지금은 꾸러미 업데이트를 안전하게 무시할 수 있으며, 젠투 설치가 끝나고 나면 업데이트를 실행할 수 있습니다.
선택: 젠투 이빌드 저장소 업데이트
젠투 이빌드 저장소를 최신 버전으로 업데이트할 수 있습니다. 이전에 emerge-webrsync 명령은 상당히 최근의 포티지 스냅샷(보통 최근 24시간 까지)을 설치하기 때문에 분명히 말하자면 선택적인 동작입니다.
최근 꾸러미 업데이트(최대 한시간 동안)가 필요하다면, emerge --sync 명령을 사용하십시오. 이 명령은 젠투 이빌드 저장소(이전에 emerge-webrsync 명령으로 가져옴)를 최신 상태로 업데이트하는데 rsync 프로토콜을 사용합니다.
root #
emerge --sync
몇가지 프레임 버퍼와 직렬 콘솔 같은 느린 터미널에서는, 처리 과정의 속도를 높이기 위해 --quiet
옵션을 사용하시는 것이 좋습니다:
root #
emerge --sync --quiet
뉴스 항목 보기
젠투 이빌드 저장소를 시스템과 동기화 하면, 포티지에서 다음과 같은 메시지로 사용자에게 경고합니다:
* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.
뉴스 항목은 rsync 트리로 사용자에게 중요한 메시지를 강제로 전달하는 통신 매체를 제공하려 만들었습니다. 뉴스 항목을 관리하려면 eselect news를 사용하십시오. eselect 프로그램은 시스템에서 바뀐 항목 또는 시스템 전반 설정을 처리하는 일반 관리 인터페이스입니다. 이 경우 eselect는 news
모듈 사용을 요청합니다.
news
모듈에서 다음 동작을 주로 사용합니다:
list
명령으로 표시할 뉴스 목록의 개요를 표시합니다read
명령으로 읽을 수 있는 뉴스 항목을 표시합니다purge
명령으로 이미 읽어서 더 이상 읽을 일이 없는 뉴스 항목을 제거할 수 있습니다
root #
eselect news list
root #
eselect news read
뉴스 리더에서 사용할 수 있는 기능이 무엇인지 더 살펴보려면 설명서 페이지를 참고하십시오:
root #
man news.eselect
적절한 프로파일 선택
17.1 뉴스 항목의 내용을 확인하기 전에는 어떤 17.1 프로파일도 선택하지 마십시오. 이 프로파일은 아직 시험중이며 별도의 이전 절차가 필요합니다.
프로파일이란 젠투 시스템의 구성요소입니다. USE, CFLAGS 등 중요한 변수 값의 기본값만을 지정하는 것이 아니라 꾸러미 버전 범위를 시스템에 고정합니다. 이 설정 데이터는 젠투 포티지 개발자가 관리합니다.
현재 시스템에서 활용하는 프로파일을 eselect로 볼 수 있으며, 이제 profile
모듈을 사용해보면:
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde
명령 출력 결과는 예제일 뿐이며, 언제든 바뀝니다.
보신 바와 같이, 몇가지 데스크톱에 대한 데스크톱 하위 프로파일이 있습니다.
프로파일 업그레이드를 가벼이 여기면 안됩니다. 초기 프로파일을 선택할 때, 스테이지3에서 처음 사용하는 동일한 버전(이를테면 13.0)에 해당하는 프로파일을 활용하는지 확인하십시오. 각 새 프로파일 버전은 이전 절차 내용을 담은 뉴스 항목으로 공지합니다. 새 프로파일로 전환하기 전에 해당 내용을 반드시 확인하고 따르십시오.
amd64 아키텍처에서 존재하는 프로파일을 확인한 후 사용자는 시스템의 다른 프로파일을 선택할 수 있습니다:
root #
eselect profile set 2
No-multilib
32비트 프로그램 또는 라이브러리를 뺀 순수한 64비트 환경을 선택하려면, no-multilib 프로파일을 활용하십시오:
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 * [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde [5] default/linux/amd64/13.0/no-multilib
다음 no-multilib 프로파일을 선택하십시오:
root #
eselect profile set 5
root #
eselect profile list
Available profile symlink targets: [1] default/linux/amd64/13.0 [2] default/linux/amd64/13.0/desktop [3] default/linux/amd64/13.0/desktop/gnome [4] default/linux/amd64/13.0/desktop/kde [5] default/linux/amd64/13.0/no-multilib *
systemd
systemd를 init 시스템으로 활용할 사용자는 프로파일 이름에 systemd
가 있는 프로파일을 선택해야합니다:
root #
eselect profile set default/linux/amd64/13.0/systemd
root #
eselect profile list
Available profile symlink targets: [10] default/linux/amd64/13.0/developer [11] default/linux/amd64/13.0/no-multilib [12] default/linux/amd64/13.0/systemd * [13] default/linux/amd64/13.0/x32 [14] hardened/linux/amd64
보신 바와 같이, 프로파일 관련 숫자 값 대신 전체 프로파일 이름을 활용할 수 있습니다.
developer
하위 프로파일은 젠투 리눅스 개발 용도로 사용하며, 일반 사용자가 사용한다는 의미가 아닙니다.@world 세트 업데이트
이제 시스템의 @world 세트를 업데이트하면 베이스를 갖출 수 있습니다.
This following step is necessary so the system can apply any updates or USE flag changes which have appeared since the stage3 was built and from any profile selection:
root #
emerge --ask --verbose --update --deep --newuse @world
완전한 구성을 갖춘 데스크톱 환경 프로파일을 선택하면 설치 과정에 필요한 시간은 상당히 늘어날 수 있습니다. 진행 과정의 일은 '과정상 경험' 으로 처리할 수 있습니다. 짧은 프로파일 이름을 지닌, 드문 경우의 시스템 @world 세트가 있는데 이 프로파일은 시스템에 필요한 꾸러미 수가 적습니다. 다시 말해서:
default/linux/amd64/13.0
을 선택하면 상당히 적은 꾸러미를 최신으로 유지합니다만,default/linux/amd64/13.0/desktop/gnome/systemd
는 OpenRC에서 Systemd로, 그놈 데스크톱 환경 프레임워크를 설치한 만큼 상당한 꾸러미를 설치해야합니다.
USE 변수 설정
USE는 젠투가 사용자에게 제공하는 가장 강력한 변수중 하나입니다. 여러 프로그램 각 항목을 추가로 지원하든 안하든 컴파일할 수 있습니다. 예를 들어 어떤 프로그램은 GTK+ 지원 또는 Qt 지원을 넣고 컴파일할 수 있습니다. 다른 프로그램은 SSL 지원을 빼고 컴파일할 수 있습니다. 어떤 프로그램은 X11 지원(X-서버) 대신 프레임버퍼 지원(svgalib)을 빼고도 컴파일할 수 있습니다.
대부분의 배포판에서는 가능한한 최대한의 지원을 포함하여 꾸러미를 컴파일합니다. 상당한 양의 의존성에 상관 없이 프로그램의 크기와 시작 시간이 늘어납니다. 젠투 사용자는 컴파일할 때 어떤 옵션을 넣을지 지정할 수 있습니다. 이것이 바로 USE 변수가 동작하는 위치입니다.
USE 변수에는 컴파일 옵션에 매핑할 키워드가 들어있습니다. 예를 들어 ssl
은 SSL 지원을 프로그램에 넣어 프로그램에서 SSL 기능이 동작하도록 컴파일합니다. -X
는 X 서버 지원을 제거합닏(앞에 음수부호가 들어감에 주목). gnome gtk -kde -qt4 -qt5
는 시스템을 GNOME(아키텍처에서 지원한다면)에 완전히 맞추려 그놈(및 GTK+) 지원을 넣고 KDE(및 Qt) 지원을 뺍니다.
기본 USE 설정은 시스템에서 사용하는 젠투 프로파일의 make.defaults 파일에 있습니다. 젠투에서는 프로파일의 (복잡한) 계층 시스템을 사용하는데, 이 단계로는 깊이 들어가지 않겠습니다. 현재 활성화한 USE 설정을 확인하는 가장 쉬운 방법은 emerge --info를 실행하고 "USE"로 시작하는 줄을 선택해서 확인하는 방법입니다:
root #
emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
위 예제는 잘렸으며, 실제 USE 값 설정 목록은 엄청 큽니다.
시스템에서 사용할 수 있는 USE 플래그의 전체 설명은 /usr/portage/profiles/use.desc에 있습니다.
root #
less /usr/portage/profiles/use.desc
less 명령에서는 ↑, ↓키로 스크롤할 수 있고, q를 눌러 빠져나갈 수 있습니다.
예제를 통해 DVD, ALSA, CD 기록 기능을 지원하는 KDE 기반 시스템의 USE 플래그 설정을 보여드리겠습니다:
root #
nano -w /etc/portage/make.conf
USE="-gtk -gnome qt4 qt5 kde dvd alsa cdr"
/etc/portage/make.conf에서 USE를 정의할 때, 기본 목록에서 추가 (또는 USE 플래그가 - 부호로 시작하는경우 삭제)됩니다. 기본 USE 설정을 무시하고 자체적으로 관리하려는 사용자는 make.conf의 USE 정의 앞부분에 -*
를 넣으십시오:
USE="-* X acl alsa"
(위 설정과 마찬가지로)
-*
설정이 가능하다 하더라도, 기본 USE 플래그는 일부 이빌드의 설정 충돌을 막고 다른 오류가 일어나지 않게 심혈을 기울여 설정했으므로 권장하지 않습니다.선택: systemd를 초기화 시스템으로 사용
젠투 핸드북의 나머지 부분은 기본 기본 초기화 지원 시스템인 OpenRC(기존 젠투 초기화 시스템)에 집중합니다. 대신 systemd를 원하거나 GNOME 3.8 이상(systemd가 필요함)의 버전을 설치하려면, systemd 게시글의 도움을 받으십시오. 이 핸드북의 다음 섹션과 동일한 절차 내용이 들어있습니다. 특히 다양한 초기화 시스템 명령(systemctl)과 systemd 환경에서 동작해야 할 systemd만의 서비스(timedatectl, hostnamectl 등)를 안내합니다.
일부 프로그램은 그놈 프로그램 환경에 상당히 의존하며 systemd에도 의존하기도 합니다. 그놈 데스크톱 환경을 사용할 지 여부를 잘 모르는 독자 여러분의 경우, 나중에 systemd 프로파일을 가져올 수 있습니다.
시간대
시스템 시간대를 선택하십시오. 존재하는 시간대를 /usr/share/zoneinfo/에서 찾아보시고 /etc/timezone 파일에 작성하십시오.
root #
ls /usr/share/zoneinfo
시간대를 Europe/Brussels로 잡아보겠습니다:
root #
echo "Europe/Brussels" > /etc/timezone
기대한 대로의 시간대 영역을 나타내지 않는 /usr/share/zoneinfo/Etc/GMT* 시간대 이름 사용을 피하십시오. GMT-8의 경우 실제로 GMT+8입니다.
그 다음 /etc/timezone 항목을 기반으로 /etc/localtime 파일을 업데이트하는 sys-libs/timezone-data 꾸러미를 다시 설정하겠습니다. /etc/localtime 파일은 시스템이 어떤 시간대 영역에 있는지 알고자 시스템 C 라이브러리에서 사용합니다.
root #
emerge --config sys-libs/timezone-data
로캘 설정
대부분의 사용자는 시스템에 하나 내지는 두개의 로캘을 사용하려고 합니다.
로캘은 시스템과 대화할 때 사용자가 사용할 언어에 한정하지 않으며 정렬 문자열의 규칙, 날짜 및 시간의 표시 등의 항목도 포함합니다.
시스템에서 지원할 로캘은 /etc/locale.gen에 있습니다.
root #
nano -w /etc/locale.gen
다음 로캘은 (UTF-8과 같은)문자 형식에 따라 영문(미국)과 독일어(독일)를 설정하는 예제입니다.
en_US ISO-8859-1 en_US.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE.UTF-8 UTF-8
일부 프로그램에서 UTF-8이 필요하므로, 되도록이면 UTF-8로 설정하십시오.
다음 단계는 locale-gen을 실행할 차례입니다. /etc/locale.gen파일에 지정한 모든 로캘을 만듭니다.
root #
locale-gen
선택한 로캘을 사용할 수 있는지 확인하려면 locale -a을 실행하십시오.
이 과정이 끝나면 시스템 범위 로캘을 설정할 차례입니다. 이제 eselect 명령에 locale
모듈을 사용하겠습니다.
eselect locale list 명령으로 존재 대상을 나타냈습니다:
root #
eselect locale list
Available targets for the LANG variable: [1] C [2] POSIX [3] en_US [4] en_US.iso88591 [5] en_US.utf8 [6] de_DE [7] de_DE.iso88591 [8] de_DE.iso885915 [9] de_DE.utf8 [ ] (free form)
eselect locale set VALUE 명령으로 올바른 로캘을 설정할 수 있습니다:
root #
eselect locale set 9
직접 설정한다면 /etc/env.d/02locale 파일에서도 처리할 수 있습니다:
LANG="de_DE.UTF-8" LC_COLLATE="C"
로캘을 설정했는지 확인하십시오. 그렇지 않으면, 커널을 빌드할 때와 설치 과정에서 나중에 다른 프로그램을 배포할 때 시스템에서 경고와 오류를 출력합니다.
이제 환경을 다시 불러오십시오:
root #
env-update && source /etc/profile && export PS1="(chroot) $PS1"
이 과정을 통해 사용자 안내를 도울 완전한 지역화 안내서를 만들었습니다. 시스템에서 UTF-8 문자 코드를 활성화 할 주제로만 작성한 UTF-8 안내서도 흥미로운 읽을거리입니다.