시작하기
"Gentoo"는 어떻게 발음하고, 무슨 뜻인가?
Gentoo는 작고 빠른 펭귄의 일종으로서, "젠투"라고 발음한다.
("gen-too", "gentoo"의 "g"는 "gentle"에서와 같이
부드러운(soft) "g"이다.)
젠투 펭귄의 학명은 Pygoscelis papua이다.
젠투는 포클랜드 군도(Falkland Islands)에 사는 사람들이
펭귄에 붙인 이름이다.
젠투는 무엇이 다른가?
젠투는 포티지(portage)라고 불리는
BSD의 포트(ports)와 비슷한 시스템을 사용한다.
포티지는 젠투 시스템에서 소프트웨어를
유연하게 설치하고 관리할 수 있게 하는 패키지 관리 시스템이다.
포티지는 (USE 플래그를 통한)
컴파일 시간 옵션 지원, 조건부 의존성, "가짜" 설치, (모래상자를 통한) 안전 설치와
소프트웨어의 설치 제거, 시스템 개요,
설정 파일 보호,
그리고 그 밖의 여러
특징들을 제공한다.
여러분은 젠투로 여러분이 선택한 최적화 방법을 써서
완전한 시스템을 구축할 수 있다.
여러분은 어떤 패키지가 설치되고 설치되지 않을지
완전히 통제할 수 있다.
젠투는 젠투를 여러분의 입맛대로 설치할 수 있도록 다양한 선택 사항을 제공한다.
그래서 젠투는 메타 배포판(meta-distribution)이라고 불린다.
젠투는 매우 활발하게 개발되고 있다.
이빌드(젠투에서 쓰는 패키지 형식)는 물론 전체 배포판이
빠른 속도로 개발되고 있다.
패키지의 패치들은 신속히 반영되고, 문서는 하루 단위로 업데이트되며,
포티지 기능은 자주 추가되고, 새로운 버전들이 자주 나오며, ...
설치
나는 "-O9 -ffast-math -fomit-frame-pointer" 최적화를 쓰고 있는데,
상당히 불안정한다. 왜 그러한가?
-O3보다 높은 최적화는 현재 버전의 gcc에서 지원하지 않으니 쓰려고 노력하지 마라.
매우 공격적인 최적화는 때때로 컴파일러가 어셈블리 코드를 다르게 동작하는 코드가 될 때까지
고치게 한다.
버그를 보고하기 전에
CFLAGS를 -march= -O2로 하고 컴파일 해 보라.
어떻게 root(나 다른 사용자들의) 비밀번호를 변경하나?
여러분은 passwd로 현재 쓰고 있는 사용자의 비밀번호를 변경할 수 있다.
자세한 옵션과 설정은 man passwd를 참고하라.
어떻게 일반 사용자를 추가하나?
adduser gentoo 명령은 gentoo라는 사용자를 추가한다.
다음으로 해야 할 일은 이 사용자에게
passwd로 비밀번호를 주는 것이다.
adduser를 쓰는 대신에 다음과 같이 할 수도 있다.
# useradd gentoo -m -G users,audio,wheel -s /bin/bash
이 명령은 사용자 gentoo를 추가하고, 소리와 관련된 장치들
(/dev/sound/*)을 쓸 수 있게 하고, (su로) root로 전환할 수 있게 하고,
/bin/bash를 로그인 쉘로 쓰게 한다.
여러분은 emerge superadduser로 superadduser를 설치한 뒤
superadduser gentoo를 써서 gentoo라는 사용자를 추가할 수도 있다.
superadduser를 입력할 때 나오는 지시를 따라하기만 하면 된다.
왜 일반 사용자는 su로 root가 될 수 없나?
보안상의 이유로 사용자는 wheel 그룹에 속해 있을 때만 su로 root가 될 수 있다.
username을 wheel 그룹에 추가하려면 다음과 같은 명령을 root로서 사용하면 된다.
# gpasswd -a username wheel
어떻게 devfs를 해제하나?
여러분이 젠투에서 "구식" /dev 접근법을 사용하려면,
gentoo=nodevfs 옵션을 커널에 넘겨서 devfs를 해제할 수 있다.
반면 여러분이 (2.6 커널에만 있는) udev를 사용하고 싶다면,
devfs=nomount 옵션을 커널에 넘겨서 devfs를 해제할 수 있다.
udev 가이드를 읽는 것을 잊지 마라.
젠투를 한 릴리스에서 다른 릴리스로 재설치하지 않고 업그레이드 할 수 있나?
사실 일단 설치된 뒤에는 여러 릴리스 사이의 차이는 없다.
젠투 1.4와 그 뒤의 버전들은
glibc-2.3.x에 기반하고 있다.
emerge sync; emerge -u world를 실행하면 여러분의 시스템은 "최신 젠투"와
같아지게 된다.
릴리스 사이의 진정한 차이는 설치 과정에 있다.
더 많은 정보는 젠투 업그레이드
가이드에서 찾을 수 있다.
커널이 (정상적으로) 부팅하지 않는다. 어떻게 해야 하나?
설치의 모든 단계를 다시 할 필요는 없다. 커널과 관련된 부분만 하면 된다.
여러분이 젠투를 /dev/hda1 (/boot와 /dev/hda3(/)에 설치했고
/dev/hda2를 스왑으로 쓴다고 가정하자.
LiveCD로 부팅하고 프롬프트를 받을 때까지 기다린다.
우리는 먼저 모든 파티션들을 마운트한다.
# mount /dev/hda3 /mnt/gentoo
# mount /dev/hda1 /mnt/gentoo/boot
# swapon /dev/hda2
# mount -t proc none /mnt/gentoo/proc
다음에 우리는 젠투 환경으로 chroot한 뒤 커널을 설정한다.
# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile
# cd /usr/src/linux
# make menuconfig
이제 여러분이 이전에 잘못 선택(취소)했던 것들을 선택(취소)한다.
설정을 마치고 커널을 컴파일 한다.
# make dep && make bzImage modules modules_install
이제 새 bzImage 파일을 이전 bzImage 파일 위에 덮어쓴다.
# cp arch/i386/boot/bzImage /boot
LILO를 쓰면 LILO를 다시 실행한다. GRUB 사용자는 건너뛴다.
# /sbin/lilo
chroot를 빠져나와 재부팅한다.
# exit
# umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
# reboot
만약 여러분의 부트로더 설정에 다른 문제가 있었다면,
비슷한 과정으로 하면 된다.
커널을 설정하고 컴파일하는 대신 부트로더를 재설정하라.
(재컴파일은 필요하지 않다.)
프록시가 인증을 요구한다. 어떻게 해야 하나?
여러분이 wget을 써서 무엇인가를 다운로드해야 할 때,
다음과 같은 문장을 써서 인증하라.
# wget --proxy-user=username --proxy-passwd=password <url>
포티지가 이를 자동으로 하게 하려면,
/etc/make.conf안에 정의해 놓으라.
FETCHCOMMAND="wget --proxy-user=username --proxy-passwd=password -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget --proxy-user=username --proxy-passwd=password -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
슬프게도 rsync는 프록시의 사용자 이름과 비밀번호를 사용한 인증을 지원하지 않는 것 같다.
이 상황을 어떻게 처리할지에 대한 정보는 rsync가 동작하지 않으면 무엇이 문제인가?를 참고하라.
어떻게 ISO 파일을 굽나?
여러분은 파일들을 raw 모드로 구워야 한다.
이것은 여러분이 단순히 파일을 CD에 담아서는 안 되고,
파일을 전체 CD로 인식하도록 해야 한다는 것이다.
많은 CD를 굽는 도구들이 있기 때문에 모두를 다루는 것은 불가능하다.
하지만 유명한 몇몇 도구들을 다루는 것은 그다지 나쁘지 않을 것이다. :)
-
EasyCD Creator에서 여러분은 File, Record CD
from CD image를 선택한다. 그리고 Files of type을 ISO image
file로 바꾼다. 다음에 ISO 파일을 찾고 Open을 클릭한다. 여러분이
Start recording을 클릭하면 ISO 이미지는 CD-R에 올바르게 구워질 것이다.
-
Nero Burning ROM에서는 자동으로 뜨는 마법사를 닫고 File메뉴의 Burn Image를 고른다.
여러분이 굽고 싶은 이미지를 고른 뒤 Open을 클릭한다. 이제 Burn을 누르고
여러분의 새 CD가 구워지는 것을 본다.
-
cdrecord에서 여러분은 간단히 cdrecord dev=/dev/hdc 뒤에
ISO 파일의 경로를 입력하면 된다. :)
(/dev/hdc를 여러분의 CD-RW 드라이브의 장치 경로로 바꾸라.)
-
K3B에서는 Tools > CD > Burn Image를 고른다.
그 다음에 여러분은 ISO 파일을 "Image to Burn" 영역에 넣을 수 있다.
끝으로 Start를 클릭하라.
-
Mac OS X Panther에서는
Applications/Utilities에서
Disk Utility를 실행한 뒤,
Images 메뉴에서
Open을 고르고,
메인 윈도우에서 마운트된 디스크 이미지를 고른 뒤
Images 메뉴의 Burn을 고른다.
-
Mac OS X Jaguar에서는
Applications/Utilities에서 Disk Copy를 실행한 뒤,
File 메뉴에서
Burn Image를 고르고,
ISO를 고른 뒤 Burn 버튼을 클릭한다.
패키지 관리
어떤 형식으로 패키지가 저장되나?
패키지들은 포티지 트리에 ebuild 자동 빌드 스프립트로 저장된다.
젠투는 기본적으로 포트 기반 배포판이다. 이는 우리가 스크립트(.ebuild 파일들)와 특별한 프로그램(포티지)을 제공해서 여러분이 프로그램들을 소스로부터 빌드할 수 있다는 것을 뜻한다. 우리는 일반적으로 릴리스와 스냅샷을 만들 때만 바이너리를 빌드한다.
Development HOWTO는 ebuild 스크립트의 내용에 대해서 자세히 다룬다. 완전한 바이너리 ISO 릴리스를 만들 때 우리는 모든 패키지들을 .tbz2 (파일 끝에 메타 정보를 붙였으며 .tar.bz2와 호환됨) 형식으로 된 바이너리 패키지로 만들어서 모은다.
rsync가 동작하지 않으면 무엇이 문제인가?
만약 여러분이 rsync의 트래픽을 걸러내는 방화벽 뒤에 있다면
emerge-webrsync를 써서 일반적인 HTTP를 통해 포티지 스냅샷을 받아와서 설치할 수 있다.
emerge-webrsync는 wget을 써서 다운로드하기 때문에, 프록시는 완전히 지원된다.
# emerge-webrsync
방화벽 뒤에서 emerge를 어떻게 사용하나?
/etc/make.conf의 PROXY 설정을 고친다. 이것이 듣지 않으면
/etc/wget/wgetrc의 http_proxy와 ftp_proxy를 적절히 고친다.
다른 운영체제와 rsync할 수 있나?
http://www.cis.upenn.edu/~bcpierce/unison/에서 구할 수 있는 unison이라는 프로그램은 UNIX와 Win32 모두에서 돌아간다.
나는 집에서 느린 모뎀으로밖에 접속하지 않는다. 다른 곳에서 소스를 다운로드해서 내 시스템에 넣을 수 있나?
물론이다. 여러분은 emerge --pretend package로 무슨 프로그램이 설치될지 알 수 있다.
패키지의 소스와 소스를 다운로드 받을 수 있는 곳을 찾으려면
emerge -fp package를 실행하라.
소스를 다운로드 한 뒤 적당한 매체에 담아서 집으로 가져오라.
소스를
/usr/portage/distfiles 안에 넣고 emerge package를 실행해서 방금 가져온 소스가 인식되는 것을 볼 수 있다!
설치된 .tar.gz 소스가 /usr/portage/distfiles를 채워가면서 귀중한 공간을 잡아 먹는다.
이것들을 지워도 안전한가?
그렇다. 여러분은 이 파일들을 안전하게 지울 수 있다. 하지만 모뎀과 같이 느린 접속을 사용한다면, 가능한 한 아카이브들을 보존하고 싶을 것이다.
같은 버전의 소프트웨어에 대해 여러 이빌드들이 릴리스되는 경우가 종종 있는데, 소프트웨어를 업그레이드할 때 여러분이 아카이브를 지웠다면
인터넷에서 다시 다운로드해야 할 것이다.
/var/tmp/portage에 무엇이 있나?
/var/tmp/portage 안에 있는 파일과 디렉토리를 지워도 되나?
컴파일을 하는 동안, 젠투는 패키지의 소스를
/var/tmp/portage에 저장한다. 이 디렉토리의 모든 내용은 지워도 된다.
사용
나는 openssh를 컴퓨터에 설치했지만, 루트로밖에 로그인할 수 없다.
일반 유저 계정은 동작하지 않다.
아마도 여러분의 사용자 계정에 올바른 쉘이 지정되어 있지 않았기 때문일 것이다. /etc/passwd의 사용자 항목을 확인하고 /bin/bash(나 다른 쉘)로 끝나는지 보라. 만약 그렇지 않다면, 여러분은 사용자가 쓸 쉘을 지정해 주어야 한다. 이것은 usermod 명령을 사용해서 할 수 있다.
# usermod -s /bin/bash myuser
root일 때만 X 어플리케이션을 시작할 수 있다.
여러분의 /tmp 디렉토리의 퍼미션이 잘못 설정되어 있다. (이 디렉토리는 스틱키 비트를 설정해야 한다.) root가 되어 다음 명령을 사용하라.
# chmod 1777 /tmp
어떻게 국제 키보드 레이아웃을 설치하나?
/etc/rc.conf의 KEYMAP 변수를 편집하라. 그 다음에 재부팅하거나 /etc/init.d/keymaps restart로 키맵 스크립트를 다시 시작한다.
DNS 이름 분석이 root일 때만 동작한다.
/etc/resolv.conf의 퍼미션이 올바르게 설정되지 않았다. 다음과 같이 chmod를 사용하라.
# chmod 0644 /etc/resolv.conf
왜 사용자들이 자신들만의 crontab을 쓸 수 없나?
crontab을 사용할 사용자를 cron 그룹에 추가해야 한다.
부팅할 때부터 넘록이 켜져있게 하려면 어떻게 해야 하나?
만약 여러분이 그래픽 환경으로 로그인하거나 startx를 할 때
넘록이 켜지기를 바란다면 emerge numlockx을 한 뒤
startx를 위해서는 /etc/X11/xinit/xinitrc에,
그래픽 로그인 관리자를 위해서는 /etc/X11/Sessions/에 있는 설정 파일에 (GDM의 경우 /etc/X11/Sessions/Gnome) /usr/X11R6/bin/numlockx를 추가해야 한다.
GNOME 2.6 사용자는 이 방법이 잘 듣지 않을 것이다. 대신에, GNOME 2.6 사용자들은
gnome-session-properties 도구를 써야 한다. 창 위쪽에서
시작 프로그램을 고르고 더하기 단추를 클릭하라.
그 다음에 numlockx 도구가 있는 위치(예를 들어 /usr/X11R6/bin/numlockx)를 입력하고 설정을 마치라.
만약 여러분이 커맨드 라인에서 일한다면, rc-update add numlock default만 하면
재부팅 할 때부터 넘록이 켜질 것이다.
로그아웃할 때 터미널에 있는 내용을 지우려면 어떻게 해야 하나?
여러분의 터미널에 있는 내용을 지우려면,
여러분의 ~/.bash_logout 스크립트에 clear를 추가하라.
$ echo clear >> ~/.bash_logout
사용자를 추가할 때 위와 같은 설정이 자동으로 되도록 하고 싶으면
위와 같은 설정을 /etc/skel/.bash_logout에 해 주면 된다.
# echo clear >> /etc/skel/.bash_logout
개발
버그는 어디에 보고하나?
특정한 프로그램 안의 버그는 그 프로그램의 개발자에게 보고하면 된다.
그 밖의 경우에는 http://bugs.gentoo.org에 있는
버그질라 버그 추적기를 쓰라.
여러분은 우리를 FreeNode IRC 망의 #gentoo에서
만날 수도 있다.
얼마나 자주 새 릴리스가 발표되나?
새로운 릴리스는 gentoo-announce 메일링 리스트에서 발표된다.
사실 패키지 자체는 개발자가 새 코드를 발표하면 곧 업데이트된다.
언제 젠투가 새 릴리스를 만들지 궁금하면,
Release Engineering Project를 확인하라.
어떻게 이 FAQ에 질문이나 답변을 추가하나?
http://bugs.gentoo.org에서 새 버그(역주: 젠투 리눅스에서는 거의 모든 것이 버그이다!)를 "Docs-user" product의 "Gentoo Linux FAQ" component에 제출하라.
모질라를 컴파일 하는 동안 스피커가 미친 것처럼 삐삐거린다.
어떻게 콘솔 비프를 해제할 수 있나?
콘솔 비프는 setterm을 써서 해제할 수 있다.
# setterm -blength 0
부팅할 때 콘솔 비프를 해제하고 싶다면 이 명령을 /etc/conf.d/local.start에 넣는다.
하지만 이 명령은 현재 터미널에서만 비프를 해제한다.
다른 터미널에서도 비프를 해제하고 싶다면, 명령의 출력을 파이프를 써서 대상 터미널로 보낸다.
# setterm -blength 0 >/dev/vc/1
여러분은 /dev/vc/1을 콘솔 비프를 해제하고 싶은 터미널로 바꾸어야 한다.
자료
어디에서 젠투 리눅스에 대한 정보를 더 찾을 수 있나?
공식 젠투 리눅스 문서는 http://www.gentoo.org에서 찾을 수 있고,
일반적인 리눅스 정보는 http://www.tldp.org에서 찾을 수 있다.
(역주: 한국에서는 http://www.gentoo.or.kr과
http://www.kldp.org를 참고하라.)
젠투 리눅스 CD를 살 수 있나?
그렇다! Gentoo Store에서 모든 지원되는 아키텍처에 해당하는 LiveCD를 살 수 있다.
여러분이 여기에서 CD를 사면, 여러분은 우리의 개발을 지원하는 것이 된다.
그러니 가능하면 Gentoo Store에서 사는 것을 고려하라. :-)
여러분은 신선한 CD들을
tuxcds에서
아주 좋은 가격에 구할 수 있다.
이분들은 이익의 일부를 젠투 프로젝트에 돌려주기도 하니,
기회를 놓치지 말고 사라!
왜 젠투 메일링 리스트의 글에 답장을 할 때
메일링 리스트에 있는 모든 사람이 아닌 글을 쓴 사람에게만 대답이 가나?
메일링 리스트 관리자는 메일 헤더의 내용을 가능한 한 변경하지 않기로 결정했다.
이는 답장이 메일링 리스트에 있는 모든 사람에게 갈 수 있도록
메일 헤더의 내용을 바꾸는 것을 하지 않기로 했다는 것이다.
여기에는 여러 이유가 있다.
예를 들어 어떤 구독자의 메일함이 가득 찼다면,
어떠한 글이 게시될 때마다 메일링 리스트의 모든 사람들이
메일함이 가득 찼다는 통보를 받게 된다.
대부분의 GUI 기반 메일 프로그램에는 "모두에게 답장" 기능이 있다.
이것을 쓰면 여러분의 답장은 글을 쓴 사람 뿐만이 아닌
메일링 리스트에 있는 모든 사람들에게 가게 될 것이다.
텍스트 기반 메일 프로그램을 쓰는 사람들 대부분은 어떤 방법을 쓰면 될지
이미 알고 있겠지만, 만약 여러분이 모른다면, Pine에 "그룹에게 답장" 옵션이 있다.
메일링 리스트에 있는 모든 사람들에게 답장하도록 Mutt를 설정하는 것은
forums.gentoo.org의
비공식 문서에서 다루고 있다.
메일링 리스트의 몇몇 사람들은 이러한 방법을 좋아하지 않지만,
이 방법이 시행될 때 찬성과 반대 양쪽에서 상당히 많은 논의가 있었다는 것을
알아 주었으면 한다.
결국 메일링 리스트 관리자들은 이 방법을 고수하기로 결정했다.
메일링 리스트에서 이것에 대해 이야기하면 정중하게 설명해 주는 사람도 있고
보관소를 확인해 보라는 퉁명스러운 대답을 하는 사람도 있을 것이다.
관리자들이 몇몇 사용자들이 느낄 불편함에 대해 유감을 표시하기는 했지만,
지금은 이 방법이 여기에서 다루어진
것과 같은 여러 이유들 때문에 대안들보다 낫다고 생각한다.
(어떻게 메일의 내용을 변경해야 할지에 대한 다른 그럴 듯한 의견들도 있었으며,
리스트 관리자들은 물론 이들을 읽었다.)
이 FAQ는 내 질문에 대답하지 못했다. 이제 어떻게 해야 하나?
먼저 관련된 문서들을 검색해 보고, 실패하면 구글에서 젠투 리눅스 메일링 리스트를 검색해 보라.
젠투 메일링 리스트에서 "foo"를 검색하려면 "lists.gentoo.org foo"를 입력하면 된다.
다른 방법으로 잘 해결되지 않았거나, 젠투 사람들과 놀고 싶으면 irc를 방문하라.
irc.freenode.net의 #gentoo이다.
(역주: 한국 젠투 리눅스 사용자 모임의 irc는 irc.hanirc.org의 #gentoo이다.)