Trans:GentooFrequentlyAskedQuestion

Gentoo Korea Wiki
둘러보기로 가기 검색하러 가기

목차

소개

이 문서는 젠투리눅스 홈페이지의 공식 문서와 가이드에서 많이 질문한 내용들에 대한 답변에 관한 내용을 다루고 있습니다. 아래에 있는 링크들은 이에 대한 가장 간단한 질문들입니다. 젠투 리눅스와 리눅스/GNU를 보다 효과적으로 활용하기 위해, 작성된 다양한 문서들이나 Man 페이지의 내용을 읽어보시고, 여기에 설명되지 않은 것들에 대하여서 질문을 해주시면 좋겠습니다.

시작하기

젠투(Gentoo)를 어떻게 발음하고, 그 의미는 무엇인가요?

젠투 는 "젠-투"라고 발음한다("Gentoo"의 "g"는 "gentle"처럼 부드러운 "g"이다.). 젠투 펭귄의 학명(scientific name)은 Pygoscelis papua 입니다. 젠투 라는 이름은 포클랜드 섬에 서식하는 펭귄에게 붙였습니다.

젠투의 특별한 점은 무엇인가?

젠투는 포티지라고 부르는, BSD와 유사한 시스템을 사용합니다. 포티지는 젠투 시스템 안에서 소프트웨어를 설치하고 유지하는 동안 많은 유연성을 제공하는 패키지 관리 시스템입니다. 포티지는 여러 가지 특징들 가운데 (USE flag를 통한) 컴파일-타임 옵션 지원, 선택적 의존성, 패키지 설치 전 요약 정보, (sandbox를 통한) 안전한 설치 및 소프트웨어, 시스템 프로파일, 계정 파일 보호를 제공합니다.

젠투와 함께? 최적화 설정을 선택하여 소스로부터 전체 시스템을 빌드할 수 있습니다. 어떤 패키지가 설치되었는지 아닌지에 대한 완전한 제어권을 갖습니다. 젠투는 다양한 선택권을 제공하기 때문에, 본인의 선호도에 따라 젠투를 설치할 수 있으며, 이것이 젠투가 메타배포판이라 고 불리는 이유입니다.

젠투는 활발히 개발되었습니다. 전체 배포판은 메인 트리에 빠른 속도의 개발 스타일을 적용합니다: 패키지에 대한 패치들은 빠르게 메인 트리에 통합되고, 문서는 매일 업데이트되며, 포티지 기능들은 주기적으로, 그리고 한 해에 두 번 공식적인 릴리즈가 추가됩니다.

설치하기

-O9 -ffast-math -fomit-frame-pointer 최적화를 사용하는데 정말 불안정하네요. 어떻게 된건가요?

현재 gcc의 버젼들이 제공하지 못하고 있기 때문에, -O3 이상을 사용하는 경우 불평하지 마세요. 매우 무리한 최적화는 때때로 컴파일러로 하여금 더 이상 같은 일을 하지 못할 정도로 어셈블리 코드를 간소화하도록 하기도 합니다.


참고: 그래서 오히려 성능상 저하가 일어날 수도 있습니다 : 역자 주


버그를 보고하기 전에, CFLAGS 값을 -O2 -march=<your_arch>로 설정한 후 컴파일 해보세요.

루트(또는 다른 유저)의 암호를 변경하는 방법은 무엇인가요?

passwd 명령어를 사용하여 로그인한 사용자의 암호를 변경할 수 있습니다. 루트 권한이 있다면, passwd username 명령어를 통해 어떤 사용자의 암호든 변경할 수 있다. 더 많은 옵션과 설정은 man passwd를 참고하십시오.

보통 권한의 유저를 어떻게 추가하는가?

useradd username 명령어가 "username"이라는 아이디의 사용자를 추가할 것입니다. 그러나, 이 메소드는 사용자에게 주려고 하는 권한들을 주지 못할 수도 있습니다. 그렇기 때문에 다음의 명령어를 사용하길 권합니다:


Code Listing 3.1: useradd 사용하기
# useradd -m -G users,audio,wheel username


이렇게 하면 "username"이라는 아이디의 사용자가 추가될 것입니다. audio 이라는 옵션은 사용자를 audio 그룹에 추가하고 사운드 장치에 접근하도록 허용합니다. wheel 이라는 옵션은 wheel 그룹에 추가하며, 이 그룹은 사용자를 루트 유저의 권한을 얻도록 전환하는 su 명령어를 실행할 수 있게 합니다.

왜 유저가 루트로 권한 변경(su)이 되지 않나요?

많은 보안 문제들로 인해, 사용자들은 wheel 그룹에 속하는 경우에만 su가 가능하다. username의 사용자를 wheel 그룹에 추가하기 위해서는, 다음과 같은 명령어를 root를 통해 실행합니다:


Code Listing 3.2: 사용자를 wheel 그룹에 추가하는 방법
# gpasswd -a username wheel


재설치 없이 다른 릴리즈로 젠투를 업그레이드 할 수 있나요?

실질적으로, 설치된 이후로는 많은 릴리즈들 사이에 차이점은 없습니다. 젠투 1.4부터는 glibc-2.3.x 기반입니다. 그렇기 때문에, emerge --sync && emerge -uDN world를 실행하면 전체 시스템을 "최신 젠투"로 끌어 올려줄 것입니다. 각각의 릴리즈들의 차이는 설치 미디어와 pre-compile된 패키지에 달려있습니다. 업그레이드에 있어서 프로파일들과 그들의 역할에 대한 자세한 정보는 Gentoo Upgrading Guide를 참고하세요.

설정한 커널이 부팅되지 않을 때, 어떻게 해야 하나요?

설치 과정을 다시 진행할 필요는 없지만, 커널과 관련된 모든 단계에 대해 확인해 보는 것이 필요합니다. /dev/hda2에 스왑 공간을 두고 /dev/hda1 (/boot) 로 /dev/hda3 (/)에 젠투를 설치했다고 가정할 때:


Code Listing 3.3: 커널 재설정하기
설치 CD를 넣고 부팅하고 프롬프트가 나타날 때까지 기다립니다.

우선 모든 파티션들을 마운트합니다:
# 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 && make modules_install

생성한 bzImage 파일을 이전의 것에 복사(덮어쓰기)합니다:
# cp arch/i386/boot/bzImage /boot/<kernel_name>

만약 LILO를 사용한다면, lilo를 재실행한다 -- GRUB 사용자는 이 단계를 건너뛰면 됩니다:
# /sbin/lilo

이제, chroot를 종료하고 재부팅합니다.
# exit
# umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
# reboot


한편, 문제가 부트로더 설정과 관련되었다면, 커널을 설정/컴파일하는 대신, 부트로더를 다시 설정하는 방법으로 같은 단계를 실행합니다(재컴파일은 필요없습니다.)

프록시 서버가 인증을 요구하면, 어떻게 해야 해요?

이런 스키마(프록시)를 자동으로 사용하는 포티지를 구축하기 위해서는, /etc/make.conf 에 정의해두어야 합니다:


코드 예제 3.4: /etc/make.conf
http_proxy="http://username:password@yourproxybox.org:portnumber"

ftp_proxy="ftp://username:password@yourproxybox.org:portnumber"
RSYNC_PROXY="rsync://username:password@yourproxybox.server:portnumber"


ISO 파일을 어떻게 CD로 버닝해요?

RAW 모드에서 파일을 버닝해야 합니다. 이는 CD에 파일을 그냥 넣는 것이 아니라 전체 CD 내용으로 파일을 번역해야 한다는 의미입니다.

CD를 굽는 툴은 많이 있습니다. 그 모든 것들에 대해 다루는 것은 헛고생일수가 있습니다. 하지만, 몇 가지 잘 알려진 도구에 대한 내용을 적어두면 그다지 해롭지는 않을 것입니다:

  • EasyCD Creator를 사용하면 File, Record CD from CD image 메뉴를 선택합니다. Files of typeISO image file으로 바꿉니다. Start recording을 클릭하면 ISO 이미지를 CD-R로 정확히 구울 것입니다.
  • Nero Burning ROM을 사용한다면, 자동적으로 뜨는 마법사 창을 취소하고 Burn Image을 선택한 후 Open을 누릅니다. Burn 단추를 누른 후 새 CD를 굽는 모습을 지켜보면 됩니다.
  • cdrecord를 사용하는 경우, ISO 파일의 경로에 따라 cdrecord dev=/dev/hdc (/dev/hdc를 자신의 CD-RW 드라이브 장치로 변경합니다)라고 간단히 입력합니다.
  • K3B의 경우, Tools > CD > Burn CD Image을 선택합니다. 'Image to Burn' 부분에서 ISO 파일을 지정해준다. 마지막으로 Start를 누릅니다.
  • Mac OS X Panther를 사용한다면, Applications/Utilities에서 Disk Utility를 실행하고, Images 메뉴에서 Open을 선택합니다. 메인 창에서 마운트된 디스크 이미지를 선택하고 Images 메뉴에 있는 Burn Image을 선택합니다.
  • Mac OS X Jaguar를 사용할 경우, Applications/Utilities에서 Disk Copy를 실행하고, File 메뉴에서 Burn Image을 선택한 후, ISO 파일을 선택하고 Burn 단추를 누릅니다.

내 CPU에 맞는 CD나 스테이지는 무엇인가요?

가장 먼저 어떤 CPU를 사용하고 있는지 알아야 합니다. Pentium-M일때를 가정해봅니다. CPU가 무엇인지, 어떤 기계어 명령을 쓰는지 어떤 종류와 호환이 되는지를 알 필요가 있을 것입니다. 비록 최소한 [[1]]검색이 쓸모있을 지는 몰라도, CPU 제조사의 웹사이트를 통해 알아볼 필요가 있을 수도 있습니다 :-).

만약 확실하지 않다면, i686이나 generic x86 (또는 아키텍쳐에 맞는)에 대한 "낮은" CD/stage 파일을 고르시기 바랍니다. 최적화된 것만큼 빠르지는 않을지라도, 시스템이 정상 적으로 동작하는 것은 보장해줄 것입니다.

바이너리 스테이지를 빌드하는 젠투에서 쓰는 것보다 더 많은 옵션들이 존재한다는 것을 알아두길 바랍니다. --march를 설정하려면 gcc 안내서를 보세요.

재부팅 이후 온라인 상태가 되지 않네요. 뭐가 문제인가요?

우선 먼저 커널이 네트워크 카드를 발견했는지 확인해보아야 합니다. ifconfig -a를 실행하여 eth0나 wlan0(특정 무선 네트워크 카드의 경우)가 있는지 찾아보도록 합니다. 그런 경우라면, /etc/modules.autoload.d/kernel-2.6 (커널 버젼 2.4인 경우 kernel-2.4)에 커널 모듈이 존재하도록 해야 합니다.

커널에 네트워크 카드 지원을 포함하지 않았다면, 커널을 재컴파일해야 합니다.

네트워크 카드가 커널에 존재하더라도 네트워크 설정을 DHCP를 사용하도록 지정하였다면, emerge dhcpcd를 빼먹었을 수도 있습니다. dhcpcd 를 설치하려면 설치 CD를 이용 하여 재부팅해야 합니다.

설치 CD를 이용하여 시스템을 복구하는 방법에 대한 정보는 여기를 참조하세요.

난 lilo나 grub로 윈도우로 부팅을 하고 싶은데, 시커먼 화면만 나오네요. 어떻게 해야 해요?

이는 잘 알려진 문제입니다. Windows는 첫 번째 하드 드라이브에 설치되어 있지 않은 경우 부팅되지 않고 검은/공백 화면만 나옵니다. 이 문제를 해결하려면, 부트 로더 설정 부분에 약간 손을 대서 Windows가 첫 번째 하드 드라이브에 설치되어 있다고 "속이는" 작업을 거쳐야 합니다. 아래의 예제를 보면, 젠투는 hda(첫 번째 디스크)에 Windows는 hdb(두 번째 디스크)에 설치되어 있습니다. 필요한대로 설정을 변경하면 됩니다.


코드 예제 3.5: grub.conf의 Windows 듀얼 부팅 설정 예제
title Windows XP

    map (hd1) (hd0)
    map (hd0) (hd1)
    rootnoverify (hd1,0)
    chainloader +1



코드 예제 3.6: 윈도우즈 운영체제를 위한 lilo.conf의 듀얼 시동 목록 예제
other=/dev/hdb1

    label=WindowsXP
    table=/dev/hdb
    map-drive = 0x80
    to = 0x81
    map-drive = 0x81
    to = 0x80


이렇게 하면 Windows가 첫 번째 하드 드라이브에 설치된 것으로 인식하여 문제없이 부팅할 수 있게 해줍니다. 자세한 정보는, 사용하고 있는 부트로더에 따라, GRUB 문서나 man lilo.conf를 참고하면 됩니다.

젠투를 Stage1이나 Stage2셋을 이용해서 설치하는 방법은?

젠투의 공식 핸드북에서는 stage3를 이용한 설치방법만을 소개하고 있습니다. 아직 젠투에서는 stage1과 stage2 tarball을 제공하고 있지만, 일반 사용자가 사용하기보다는 개발을 목적으로(릴리즈 엔지니어링 팀은 스테이지1 타르볼을 이용하여 스테이지3을 얻습니다) 하는 것입니다: 스테이지3 타르볼도 시스템을 잘 부트스트랩해주며, 인터넷 연결이 되어있어야 합니다.

부트스트랩은 핵심 패키지들의 설치가 끝난 후 시스템의 툴체인(C 라이브러리와 컴파일러)를 빌드하는 것을 의미한다. 시스템을 부트스트랩하려면 스테이지3 설치를 수행하면 된다. 커널 설정하기 장의 내용을 시작하기 전에, 여러분이 필요로 하는 만큼 bootstrap.sh 스크립트를 수정하고 실행합니다:


코드 예제 3.7: 시스템을 부트스트래핑 하기
# cd /usr/portage/scripts

# vi bootstrap.sh

# ./bootstrap.sh


그 후, 새롭게 빌드된 툴체인으로 주요 시스템 패키지들을 재빌드한다. Stage3 tarball이 이미 제공하는 부분이기 때문에 단지 재빌드 하기만 하면 됩니다:


코드 예제 3.8: 주요 시스템 패키지들 재빌드하기
# emerge -e system


이제 커널 설정하기 장의 내용을 이어서 하면 됩니다. 하지만, 미리 빌드한 GRP 패키지들은 사용할 수가 없습니다.

패키지 관리

패키지들은 어떤 형태로 저장되어 있나요?

패키지들은 그 자체로 "저장되어 있지" 않습니다. 대신, 젠투는 의존성을 해결하고, 소스 빌드를 불러오고, 특별히 필요한 버전의 패키지를 컴파일하는 스크립트 모음을 제공합니다. 젠투 Ebuild HOWTO 문서에서 ebuild 스크립트의 내용에 대해 자세하게 다루고 있습니다.

완전한 ISO 릴리즈에 대해, 파일 끝에 메타 정보를 넣어 .tar.bz2와 호환되는 개선된 .tbz2 형식의 완전한 바이너리 패키지 모음을 만들었습니다. 이는 (완전히 최적화되 진 않았지만) 동작하는 패키지 버전을 빠르고 효율적으로 설치하는데 사용할 수 있습니다.

RPM(레드햇 패키지 관리자 파일)을 만들 수도 있지만, 패키지를 설치하는데, 지금은 이미 있는 RPM을 사용할 수는 없습니다.

./configure 과정을 제가 좀 알아서 실행하고 싶은데 가능할까요?

네 하지만 분명한 방법도 아니고 추천하지도 않습니다. 이 방법이 포티지의 대부 동작이나 명령을 이해하는데 필요한 좋은 방법이긴 하지만, 여러분이 원해서 포티지 오버레이에 올려놓는 등 이빌드가 수행할 패치를 여러분이 만드는 것(이것이 오버레이가 있는 이유입니다.)을 추천합니다. 이 것은 관리측면에 있어 훨씬 좋은 방법이며, 보통 더욱 손쉬운 방법이기도 합니다. 더 자세한 정보는 젠투 Ebuild HOWTO 문서를 참조하시기 바랍니다.

방화벽 내에서 emerge 를 어떻게 사용하나요?

프록시, rsync, 소스파일 직접 내려받기 질문을 참조하세요.

rsync가 동작하질 않네요?

방화벽 내에서 rsync 트래픽 사용을 허가받지 않았을 경우, 일반 HTTP망을 통해 포티지 스냅샷을 받아 설치할 수 있는 emerge-websync를 사용할 수 있습니다. 프록시를 통해 소스코드와 포티지 스냅샷을 내려받기 위한 정보를 보려면 이 문서에서 프록시 부분을 보세요

집에 느린 모뎀만 달려있거든요. 다른 곳에서 소스코드를 받아서 제 시스템에 추가할 수 있나요?

네 확실히 됩니다. 어떤 프로그램을 설치할 지 보려면 emerge --pretend package를 실행하시면 됩니다. 이 패키지들에 대한 소스코드나 소스코드 저장소를 찾아보려면 emerge -fp package를 실행하시면 됩니다. 매체의 중심부에 소스코드를 다운로드해서 가져옵니다. 이들은 /usr/portage/distfiles에 들어가게 되고 emerge package를 실행합니다. 하지만 분명히 경고하는데 이 방식은 굉장히 지루합니다.

/usr/portage/distfiles에 소스코드가 모여있네요. 이거 지워도 되나요?

이 파일을 지우면 매일매일의 성능에 나쁜 영향을 미치지는 않을 것입니다. 그러나 파일의 최신 버전을 유지하는데 현명한 방법이 될 수 있습니다. 종종 수많은 ebuild들은 특정 프로그램에 대한 동일버전에 대해 갱신될 것입니다. 만약 이걸 아카이브에서 지우고 소프트웨어를 업그레이드 하면, 이 파일들을 받기 위해 인터넷 연결이 다시 필요할지도 모릅니다.

/var/tmp/portage는 무엇인가요? /var/tmp/portage에 있는 파일이나 디렉터리들을 지워도 되나요?

컴파일을 하는 동안 젠투는 /var/tmp/portage에 소스코드를 저장합니다. 이 파일과 폴더들은 보통 머지를 완료하고 나면 지워지지만 가끔 실패하는 경우가 있습니다. 그래서 emerge가 실행중이 아니라면 이 디렉터리의 내용들을 싹 지우셔도 됩니다. 이 디렉터리를 지우시기 전에 실행중인지 확인해보시려면 pgrep emerge를 항상 실행해보세요.

유지보수

ReiserFS 파일 시스템 깨짐 문제 - 어떻게 고칠까요?

ReiserFS 파티션이 깨졌다면 젠투 설치 CD로 부팅하고 깨진 파일시스템에서 reiserfsck --rebuild-tree를 실행합니다. 파일시스템이 깨져서 여러분의 파일이나 디렉토리 일부가 없어질 수도 있겠지만, 이를 통해 파일시스템의 연속성을 재 수립할 것입니다.

개발

버그는 어떻게 알리죠?

[버그질라]를 사용하세요. 실제버그인지 잘 모르겠다면 IRC의 [#gentoo] 채널을 찾아오셔서 질문하실 수도 있습니다.

새 릴리즈 만드는 주기가 어떻게 되나요?

스피커가 미친듯이 삑삑대네요. 콘솔 알림 어떻게 끄나요?

자원