Troubleshooting/ko
이 페이지의 목적은 사용자에게, 약간의 새로운 기술과 도구로 자신 스스로에게 젠투 설정 과정에서 문제를 찾고 해결할 수 있도록 하는 실마리 제공에 있습니다. 게다가 더 복잡한 문제에 있어서도, 이 게시글은 사용자로 하여금 문제를 해결하는 과정에서 자신 스스로에게 도움을 줄 정보를 수집하는 기법을 제공하려 내용을 살펴봅니다.
이 글에서는 젠투 핸드북을 이미 읽었고 젠투 사용법의 기본을 이미 알고 있다고 가정합니다.
If a solution cannot be found after troubleshooting, see the support article about asking for help.
프로그램
다음은 매우 권장하는 도구 목록입니다:
wgetpaste is a handy tool to share snippets, files, command output etc. when discussing troubleshooting issues online.
꾸러미 관리
Package | Description |
---|---|
gentoolkit | A collection of tools for interacting with Gentoo, includes the valuable equery, eclean, euse, etc. |
eix | A tool for querying portage for packages. |
Portage File List | Provides e-file, a tool for querying what package contains a given file, it also works for packages that aren't installed since it uses an online lookup. |
genlop | A tool for parsing emerge logs, handy to figure out when certain packages were installed, updated and to see how long they took to compile. |
elogv | An ncurses based interface for browsing emerge logs. |
하드웨어
Package | Description |
---|---|
pciutils | A tool for gathering information about PCI devices. |
usbutils | A tool for gathering information about USB devices. |
감시
꾸러미 | 설명 |
---|---|
sys-process/htop | 프로세스 감시 도구 htop을 제공합니다. top과 비슷하지만 좀 더 고급진놈입니다. |
sys-process/iotop | 프로세스의 입출력 활동을 감시하는 top 방식의 iotop도구를 제공합니다. |
net-analyzer/net-top | 프로토콜, 포트, 프로세스의 네트워크 트래픽을 점검하는 top 방식의 net-top 도구를 제공합니다. |
| htop | A tool for monitoring processes, like top, but more advanced. |-
| iotop | A top-like tool for monitoring IO activity by process. |-
| net-analyzer/nettop | A top-like tool for examining network traffic by protocol, port, and process. |-
|}
문제 인식
문제 상황을 해결 생황으로 이끌어내려면 우선 문제를 잘 이해해야합니다. 해결책을 끌어올리는게 불가능한 일이 아닌 상황에서 문제를 제대로 이해하지 못하면 어려워집니다. 분명하게 말해서, 문제를 자세하게 설명하면, 문제에 대해 정확하게 맞는 해결책을 이끌어낼 수도 있습니다.
몇가지를 참고해 두십시오:
- 하드웨어의 문제인가? 프로그램의 문제인가?
- 이 문제가 일어나기 전에 어떤 동작을 취해서 바뀐 것이 있는가?
- 문제에 대한 추가 정보를 모을 수 있는가?
자세한 내용, 기록, 다른 사람이 겪은 적이 있는지 여부 등의 정보를 제공한다면 문제를 살펴보기 편하게 해줍니다.
하드웨어 문제
드라이버
하드웨어의 드라이버 이슈는 IRC에서 종종 회자되는 일반적인 문제 중 하나입니다.
무엇보다도 먼저, 어떤 하드웨어가 문제를 일으키는지 확인하십시오. lspci와 lsusb 명령은 이 용도에 따른 멋진 도구입니다. 목적을 시연하기 위해 문제있는 이더넷 카드 장치를 찾아보겠습니다.
적당한 드라이버 찾기
우선 lspci를 살펴보고 장치 정보를 찾아보겠습니다:
root #
lspci
03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16)
root #
lspci
03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16)
간편하게 줄인 표기 옵션 -n
을 사용할 수 있습니다(인터넷에서 검색하는 것보다 쉽습니다).
root #
lspci -n
03:00.0 0200: 11ab:436b (rev 16)
모델 이름(0200
)과 제조사/모델 (11ab:436b
) 은 리눅스에서 사용하는 올바른 드라이버를 찾을 수 있는 WikiDevi 또는 Debian HCL 사이트 같은 곳에서 장치를 찾아볼 때 사용할 수 있습니다.
드라이버 불러오기 유무 확인
드라이버를 가져오는 일은 반절의 사투도 채 안됩니다. 대부분 드라이버와 얽히는 문제는 제대로 불러와서 동작하는지 확인하는 과정입니다.
lspci에게 다시 기대보도록 하죠:
root #
lspci -k
03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8071 PCI-E Gigabit Ethernet Controller (rev 16) Subsystem: Acer Incorporated [ALI] Device 014e Kernel driver in use: sky2
여기서 주목하실 점은, 드라이버가 사용중임을 나타내는 내용입니다. 만약 이 내용이 안나타난다면 이 드라이버를 동작하게 하는 드라이버를 띄우지 않았다는 이야기가 됩니다. 드라이버를 내장 빌드 형식이 아닌 모듈 형식으로 빌드했다면 modprobe <modulename> 명령으로 올바른 모듈을 불러와보십시오. 드라이버를 내장하여 빌드했다면 모듈로 만들어보십시오. 왜냐면 문제를 확인하는 동안 재부팅 횟수를 줄이고, 대신 여러번 modprobe로 모듈을 불러오고 modprobe -r 명령으로 불러온 모듈을 내릴 수 있기 때문입니다.
드라이버 문제 해결
드라이버를 모듈로 컴파일한 후 출력 내용을 찍어보시면 언제 모듈을 불렀는지 나타납니다. 우선 드라이버에 따라 모든 모듈을 제거했는지 확인하십시오(lsmod 확인).
다음 명령은 모듈을 제거한 후 dmesg 출력(예를 들어 r8169)과 모듈을 다시 추가했을 경우 출력을 비교하여 하드웨어를 추가했는지 나타내는 메시지를 효율적으로 보여드립니다(+로 시작하는 줄).
root #
diff -u <(modprobe -r r8169; dmesg) <(sleep 1; modprobe r8169; dmesg) | grep ^+
대부분의 일반적인 문제는 펌웨어가 빠져있는 상태입니다. 메시지에서 펌웨어가 빠져있다고 관리자에게 나타나면 sys-kernel/linux-firmware 또는 포티지에서 특정 펌웨어 꾸러미를 발견하고 설치하십시오. 펌웨어를 설치한 후에는 커널 모듈을 내렸다가 다시 불러와서 문제를 해결했는지 확인하십시오.
프로그램 문제
포티지 문제
의존성 그래프 슬롯 중복
때로는 꾸러미를 이머지할 때 이런 메시지가 뜨는 경우가 있습니다:
!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:
보통 의존성 그래프에서 요청한 버전이 여러개가 있다는 의미입니다. 다행히도 대부분의 경우에는 이게 전부가 아니라면 요청한 버전 중 가장 최신 버전으로 직접 업그레이드 하여 해결할 수 있습니다. 따라서 다음 메시지를 받았다면:
app-emulation/emul-linux-x86-xlibs:0
(app-emulation/emul-linux-x86-xlibs-20120127::gentoo, installed) pulled in by
~app-emulation/emul-linux-x86-xlibs-20120127 required by (app-emulation/emul-linux-x86-medialibs-20120127::gentoo, installed)
(and 2 more with the same problem)
(app-emulation/emul-linux-x86-xlibs-20120520::gentoo, ebuild scheduled for merge) pulled in by
>=app-emulation/emul-linux-x86-xlibs-20120520 required by (net-im/skype-2.2.0.35-r99::gentoo, ebuild scheduled for merge)
~app-emulation/emul-linux-x86-xlibs-20120520 required by (app-emulation/emul-linux-x86-medialibs-20120520::gentoo, ebuild scheduled for merge)
최근 버전은 20120520 입니다. 따라서:
root #
emerge --ask --oneshot =app-emulation/emul-linux-x86-xlibs-20120520
주로, 원샷(--oneshot
또는 -1
) 옵션을 부여하여 모든 중복 문제를 간편하게 한번에 해결하는데 중복 꾸러미가 다른 꾸러미에 의존할 수도 있기 때문입니다.
또 다른 블록 예제가 있습니다:
app-text/poppler:0
(app-text/poppler-0.24.5::gentoo, installed) pulled in by
app-text/poppler:0/44=[xpdf-headers(+)] required by (dev-tex/luatex-0.76.0::gentoo, installed)
app-text/poppler:0/44=[cxx,jpeg,lcms,tiff,xpdf-headers(+)] required by (net-print/cups-filters-1.0.43::gentoo, installed)
(app-text/poppler-0.24.3::gentoo, ebuild scheduled for merge) pulled in by
>=app-text/poppler-0.12.3-r3:0/43= required by (app-text/texlive-core-2013-r1::gentoo, installed)
poppler:0/43
poppler 버전을 바꾸는데 문제가 없어야합니다. luatex와 cups-filter는 지정 버전의 poppler가 필요하지 않지만 어떤 버전을 쓰든지 간에 다시 빌드해야합니다:
root #
emerge --ask --oneshot =app-text/poppler-0.24.3 dev-tex/luatex net-print/cups-filters
Here is another example that could have resulted in a blockage:
도움을 요청할 때, 단 한번도 어떤 내용을 요구받지 않는다기보다는 어떤 추가 정보든 명령 출력 내용 같은 걸 여러번 요구받습니다. 이 문제는 수십줄 내지는 백여줄의 텍스트가 있습니다. 프리노드의 젠투 지원 채널 같은 IRC 대화방에 적당히 붙여넣기에는 너무 많습니다. 때문에 이 문제를 간편하게 해주는 wgetpaste를 도입했습니다. 사용자로 하여금 긴 출력 내용을 간단한 링크로 어딘가에 게시할 수 있게 해줍니다.
sys-power/cpupower:0
These are the packages that would be merged, in order:
Calculating dependencies... done!
Total: 0 packages, Size of downloads: 0 KiB
WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:
sys-power/cpupower:0
(sys-power/cpupower-4.9.0-r1:0/0::gentoo, ebuild scheduled for merge) conflicts with
<sys-power/cpupower-4.7 required by (mate-base/mate-applets-1.12.1-r4:0/0::gentoo, installed)
^ ^^^
Nothing to merge; quitting.
Portage warns about an update that can not be performed, however, there is no issue because this update is not required by a package. More precisely, the update must be skipped because mate-base/mate-applets-1.12.1-r4 requires a version of sys-power/cpupower package lower than 4.7.
System limitations prevent a proper build
When compiling with n jobs parallel the requirement of RAM grows approximately by a factor n. Unfortunately we can not predict the exact amount of RAM needed nor we can predict how much RAM will be consumed by other programs.
Debug a binary
Trouble shoot a compiled binary by Debugging with powerful tools.
Collecting additional information
When seeking help, often additional information will be asked, such as the output of a command. Some of these produce dozens or hundreds of lines of text - too much to be suitable for pasting into chat rooms, such as the Gentoo IRC support channel.
Wgetpaste allows users to post short links to a website that contains long output.
예를 들어 /etc/conf.d/net의 내용을 보여주려면 wgetpaste를 활용하여 다음과 같이 단순화할 수 있습니다:
user $
wgetpaste /etc/conf.d/net
또는 lspci 명령의 자세한 출력을 누군가가 필요하다고 한다면:
root #
lspci -nnk | wgetpaste
가끔은 표준 오류를 표준 출력으로 나타나게끔 하여 오류 메시지 마찬가지로 붙여넣을 수 있도록 해야 합니다. 다음과 같이 하시면 처리할 수 있습니다:
root #
emerge -pv 2>&1 | wgetpaste
하드웨어 문제 또는 커널 문제일 경우:
user $
wgetpaste /usr/src/linux/.config
user $
wgetpaste /usr/src/linux/.config
- 포티지 문제일 경우:
root #
emerge --verbose --info | wgetpaste
root #
emerge --verbose --info | wgetpaste
- 꾸러미 설치 문제일 경우:
root #
wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
root #
wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
- Xorg 문제일 경우:
user $
wgetpaste /var/log/Xorg.0.log
user $
wgetpaste /var/log/Xorg.0.log
- 시스템에 설치한 모든 꾸러미를 제공해야 할 경우:
root #
eix-update && eix-installed all
root #
eix-update && eix-installed all
함께 다듬어 놓기
아래 내용은 각각의 명령을 실행하고 단일 wgetpaste 명령으로 출력을 처리하여 사용자 또는 문제 상황에서 구제하려는 개발자에게 제공해야 할 URL을 뽑아낼 때 사용할 수 있습니다:
root #
execv(){ for cmd in "$@"; do echo -e "\n=== $cmd ===\n"; $cmd; done; }
(execv "cat /etc/*-release" "uname -a" "lspci -nnk" "lsusb" "eselect profile list"\
"emerge --info" "cat /usr/src/*$(uname -r)/.config" "cat /var/log/Xorg.0.log" "dmesg"\
"eix-update" "eix-installed all")\
| wgetpaste
젠투 사용자 메일링 리스트에서는 pastebin 서비스를 활용하지 마십시오
여러곳에서 메일링 리스트 메시지를 보관하고 연 단위로 참조하겠지만서도 대부분 pastebin 서비스는 붙여넣기 내용이 오래된 경우 주기적으로 정리합니다(pastebin 서비스가 상당히 적당하지 않으며, 언제든 서버를 내린다고 하진 않았습니다). 적절한 출력 내용이 짧거나 앞뒤로 자를 수 있다면, 전자메일 본문에 복사하여 붙여넣으십시오. 긴 출력 내용은 텍스트 파일로 넘길 수 있으며 일반 첨부 파일로 추가할 수 있습니다.
해결책 정리
문제 설명문을 알기 쉽게 작성하고, 동작에 대한 모든 기록, 모든 종류의 디버깅 데이터(세부 문제, 하드웨어 / 소프트웨어 정보, 로그, 백트레이스 등) 를 포함한 쓸만한 데이터 모음을 바람직하게 모아두면 해결책을 찾아볼 수 있습니다:
해결책을 찾으려면 다음 과정을 반복합니다:
- 어디에 문제가 있는지 고민하고, 가능한 원인에 대해 생각하기.
- 문제를 살펴볼 명백한 구석이 없다면, 관련 영역을 통해 이미 알고 있는 부분을 좀 더 살펴보거나 이 문제에 대해 전문가인 사용자에게 질문하기.
- 가끔 진행하는데 몇가지를 가정해볼 필요가 있습니다. 가설을 세웠다면 시험에 적용해보십시오. 잘못된 가설 성립은 사용자 및 개발자가 다른 원인을 가려내지 못하게 합니다.
- 문제 범위내에서 추가 디버깅 정보를 가져오거나 시험을 진행하십시오.
종종 가능한 원인이 여러가지일 수도 있습니다. (실제 원인인지 아닌지)문제를 시험하는게 중요하므로 개별적으로 시험해보십시오. 나누어 해결하기(분할 및 정복)로 보통 알려져 있습니다.
부팅하고 나서 브라우저가 가끔 희멀건 페이지를 보여준다 같은 문제가 나타났다 치고 구체적인 많은 상황에 대해 이미 파악했다면, 가능한 원인 몇가지는 다음과 같습니다:
- 시스템을 다시 부팅할 때 브라우저를 제대로 닫지 않았습니까?
- 프로세스를 강제로 끝내보시고 여러번 연결해보신 후 다시 부팅했을 경우 페이지가 희멀겋게 뜨는지 각각의 경우 마다 확인하십시오. 이게 원인이라면 실제 원인인지 다른 원인인지 확인하십시오.
- 일부 버전의 브라우저가 깨져있는게 아닙니까?
- 이전에 올라온 버전 또는 새 버전을 사용하든지, 그래도 깨졌다면 다시 부팅하고 확인해보십시오.
등등...
추가 정보를 통해 더 확실한 원인을 생각해볼 수 있습니다:
- 플러그인 Y를 불러오는 어떤 고정 탭 X가 시스템에 문제를 일으키는가?
- 탭 고정을 해제하여 실행시 더이상 열지 못하게 하거나 플러그인을 비활성화하십시오, 여전히 문제가 지속되는지 확인하십시오.
- 그래픽 문제 마찬가지 보고됐는데, 아마도 비디오 카드 드라이버가 문제를 일으키는 것 같다?
- 드라이버를 다른 버전으로 바꿔보거나, 다른 드라이버가 있다면 그 드라이버를 시도해보십시오.
가능한 갖가지 원인을 찾았다면, 실제 문제의 원인을 좀 더 확실하게 찾아보실 수 있을겁니다.
그럼에도 끄끝내 문제를 못찾았다면, 문서 상단의 도움을 받을 곳 자료에서 도움을 구할 사람이 있는 여러 곳을 찾아볼 수 있습니다. 문제를 상세하게 설명하고, 마찬가지로 무얼 시도했는지 확실하게 언급하여 설명하는 이들이 납득하기 쉽게 하면, 여러분을 구제하는데 도움이 됩니다.
See also
- Knowledge Base:Recovering from a kernel boot failure
- Project:Portage/Fixing broken portage — provides guidance on how to manually update or fix a broken Portage installation - particularly in the event emerge -v1 sys-apps/portage cannot be run.
- Fix my Gentoo — rescuing an installation when a chroot is not possible
- Project:Portage/FAQ
- Support — provide support for technical issues encountered when installing or using Gentoo Linux