Устранение неполадок
Цель этой страницы — предоставить пользователям, в частности новичкам, набор методов и инструментов для выявления и устранения неисправностей, связанных с самостоятельной установкой Gentoo. Кроме того, в случае более сложных проблем, данная статья стремится дать навыки по сбору информации, которые помогут пользователям и их поддержке решать проблемы целенаправленней.
В данной статье предполагается, что Gentoo Handbook было прочитано и есть общее представление об использовании Gentoo.
Где получить помощь
У Gentoo есть довольно много вики-статей, каждая из которых имеет огромное количество информации. Будьте осторожны, так как некоторые статьи могут содержать старые или устаревшие сведения, но, без сомнения, чтение вики-статей всегда очень важно, при использовании Gentoo.
- Официальная Gentoo Wiki
- База знаний по устоявшимся практикам и проблемам
В IRC #gentoo (webchat) рекомендуемый канал по общим вопросам. Это, возможно, самый быстрый способ получить ответ.
Так как IRC каналы требуют деятельного присутствия, некоторые пользователи могут предпочесть оставить сообщение на форуме или в списке рассылок, которые продолжают существовать после закрытия браузера. Когда появляется ответ, даётся уведомление (как правило, через электронную почту).
На худой конец, если кажется, будто что-то не так в самой Gentoo, то средство отслеживания ошибок Gentoo является хорошим ресурсом, где можно посмотреть, возможно что-то уже сообщалось, или создавать новые сообщения об ошибках в случае необходимости. Это очень действенный приём для связи с Gentoo разработчиками, которые могут использовать данное обращение для разрешения проблемной ситуации.
Программы
Ниже перечислен настоятельно рекомендуемый набор инструментов:
Системы управления пакетами
Пакет | Описание |
---|---|
app-portage/gentoolkit | предоставляет набор инструментов для взаимодействия с Gentoo; наиценнейшие из них: equery, eclean, euse и eshowkw, смотрите страницы руководств для получения дополнительной информации. |
app-portage/eix | предоставляет eix — инструмент для выполнения запросов к пакетам Portage. |
app-portage/pfl | предоставляет e-file — инструмент для выполнения запросов на проверку наличия файла в пакете; также работает для неустановленных пакетов, так как он использует онлайн поиск. |
app-portage/genlop | предоставляет genlop — инструмент для разбора emerge-журналов; удобно, чтобы выяснить: когда были установлены пакеты, обновлены и сколь долго они компилировались. |
app-portage/elogv | предоставляет elogv — интерфейс, основанный на ncurses, для обзора emerge-журналов. |
Оборудование
Пакет | Описание |
---|---|
sys-apps/pciutils | предоставляет lspci — инструмент для сбора информации о PCI устройствах. |
sys-apps/usbutils | предоставляет lsusb — инструмент для сбора информации о USB устройствах. |
Наблюдение
Пакет | Описание |
---|---|
sys-process/htop | предоставляет htop — инструмент для наблюдения за процессами. Похож на top, но имеет больше возможностей. |
sys-process/iotop | предоставляет iotop — top-подобный инструмент для наблюдения за вводом-выводом процесса. |
net-analyzer/nettop | предоставляет nettop — top-подобный инструмент для проверки сетевого трафика на предмет какой протокол, порт и процесс. |
Разное
Пакет | Описание |
---|---|
app-text/wgetpaste | предоставляет wgetpaste — инструмент для отправки текста прямо в pastebin. |
net-irc/weechat | предоставляет weechat — простой текстовый IRC клиент. |
Первые шаги
Для того, чтобы перевести проблему в её решение, вам сначала нужно хорошо понять саму проблему. Если проблема не ясна, то будет очень трудно, если вообще возможно, придти к решению. Точное, подробное изложение проблемы, скорее всего приведёт к получению решения, которое наилучшим образом ей соответствует.
Определение проблемы
Эта часть может показаться нелёгкой, но без неё устранение неисправностей невозможно.
Обратите внимание на несколько вещей:
- Данная неисправность относится к аппаратной части или программной?
- Что было сделано или изменено недавно, могущее привести к данной неисправности?
- Возможно ли собрать дополнительную информацию о неисправности?
Сохранение любого вида подробностей, журналов, опыта других людей и иного может быть ценным и дать общее представление.
Неполадки оборудования
Драйверы
Проблема с драйвером для оборудования — это одна из наиболее распространенных проблем, о которых сообщается на IRC.
В первую очередь, необходимо определить, с каким оборудованием случились неполадки, для этого подойдут такие утилиты как lspci и lsusb. В качестве примера, мы рассмотрим сетевую карту как проблемное устройство.
Определение подходящего драйвера
Для начала взглянем на lspci и найдём информацию об устройстве:
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 и подобных местах, чтобы подобрать подходящий драйвер для применения в Linux.
Проверка, что драйвер загружен
Заполучить драйвер — менее чем половина дела. Ведь, большая часть беды при работе с драйверами — увериться, что они загрузились и работают корректно.
Доверимся нашему другу 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 <названиемодуля>, чтобы попытаться загрузить подходящий модуль. Если же драйвер встроен в ядро, подумайте о пересборке его в качестве модуля, потому что модуль может быть загружен командой modprobe и выгружен modprobe -r, что может спасти от бесчисленных перезагрузок во время отладки.
Устранение неисправностей драйвера
Соберите драйвер как модуль, а затем захватите производимый после его загрузки вывод. Удостоверьтесь, что сначала удалили все модули, зависящие от драйвера (смотрите lsmod).
Следующая команда сравнивает вывод dmesg после удаления модуля (к примеру, r8169
) с выводом после его повторной загрузки, действенно показывая добавленные сообщения (строки начинающиеся с +).
root #
diff -u <(modprobe -r r8169; dmesg) <(sleep 1; modprobe r8169; dmesg) | grep ^+
К наибольшему числу неприятностей приводит отсутствие прошивки. При появлении сообщения об её отсутствии, устанавливайте или sys-kernel/linux-firmware, или специальный пакет прошивок из Portage. Чтобы узнать разрешилась ли проблема после установки прошивки, произведите проверку, повторно выгрузив и загрузив модуль ядра.
Программные неисправности
Неисправности Portage
Конфликт слотов в графе зависимостей
Время от времени, при попытках установить пакет, встречаются сообщения похожие на:
!!! 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
) всех конфликтующих пакетов за один приём, так как, бывает, что они зависят друг от друга. Смотрите также World set.
Ниже другой пример блокировки:
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. Заметьте, app-text/texlive-core не требует определенной версии poppler, но должен быть пересобран в независимости от используемой версии:
root #
emerge --ask --oneshot =app-text/poppler-0.24.5 app-text/texlive-core
Ниже приведен еще один пример конфликта при обновлении:
root #
emerge --ask --verbose --update --newuse --deep @world
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.
Сбор дополнительной информации
При поиске помощи очень часто требуется дополнительная информация, например вывод команд. Некоторые из них производят десятки или сотни строк текста, а это слишком много для вставки в IRC чаты, такие как канал поддержки Gentoo на Freenode. Вот где пригодится команда wgetpaste, позволяющая пользователям размещать короткие ссылки на длинный вывод.
Убедитесь, что app-text/wgetpaste установлен:
root #
emerge --ask wgetpaste
Например, чтобы показать содержимое /etc/conf.d/net, воспользуйтесь wgetpaste просто как:
user $
wgetpaste /etc/conf.d/net
Или, скажем, кому-то нужен детализированный вывод команды lspci:
root #
wgetpaste -c 'lspci -nnk'
Иногда необходимо перенаправить stderr в stdout, чтобы сообщения об ошибках также выводились. Это возможно сделать так:
root #
wgetpaste -c 'emerge -pv <package>'
Эта команда вернёт ссылку на страницу pastebin-сайта, которую можно легко отправить тому, кто способен помочь.
Полезные вещи при вставке:
- в случае аппаратных проблем или проблем с ядром:
user $
wgetpaste /usr/src/linux/.config
- в случае проблем с portage:
root #
emerge --verbose --info | wgetpaste
- в случае ошибки во время установки пакета:
root #
wgetpaste /var/tmp/portage/<category>/<package>-<version>/temp/build.log
- в случае проблем с Xorg:
user $
wgetpaste /var/log/Xorg.0.log
- в случае, если необходимо предоставить все установленные пакеты в системе:
root #
eix-update && eix-installed all
Упаковка в одну ссылку
Ниже дана shell-функция, которая может быть использована для выполнения нескольких команд, а их вывод обработается одной командой wgetpaste, таким образом можно обойтись всего лишь одной ссылкой для получения помощи от пользователей или разработчиков:
root #
wgetpaste -i -c "lspci -nnk" -c "lsusb" -c "cat /usr/src/*$(uname -r)/.config"\
-c "cat /var/log/Xorg.0.log" -c "dmesg" -c "eix-update" -c "eix-installed all"
Пожалуйста, не используйте pastebin-сервисы в списке рассылок gentoo-user
Большинство из Pastebin-сервисов периодически уничтожают старые тексты (не говоря уже о том, что Pastebin услуги вряд ли вообще приносят выгоду, а, следовательно, часто прекращают свою деятельность), тогда как сообщения из списков рассылок архивируются в нескольких местах и доступны в течение многих лет. Если соответствующий вывод краток, или может быть урезан, тогда вставьте его в тело письма — длинный же вывод можно направить в текстовый файл и добавить в виде простого вложения.
Рождение решения
Хорошее описание проблемы, полная последовательность действий и всякого рода отладочные сведения (касающиеся проблемы подробности, информация об аппаратном/программном обеспечении, журналы, цепочки вызовов и многое другое) являются полезным набором данных, доступных для поиска решения.
В целом, повторяйте следующие шаги до получения решения:
- Получить представление о том, где заключена эта проблема, подумать о возможных причинах.
- Если нет очевидных областей для исследования, то углубиться в смежные области или спросите более опытного в этом.
- Иногда необходимо сделать предположения, чтобы продолжить работу. Во время их создания нужно делать проверку: неудачные предположения не должны отвлекать пользователей и разработчиков от других причин.
- Получить дополнительную отладочную информацию в сфере проблемы, или выполнить проверки.
Зачастую это приведёт к нескольким возможным причинам. Важно проверить их (чтобы удостовериться, что это истинная причина), а, следуя принципу "разделяй и властвуй", проверять их нужно по отдельности.
Предположим, возникла проблема вроде "мой браузер иногда отображает белые страницы при загрузке", но ведь о ней уже известно много подробностей, а значит возможно несколько причин:
- Следствие ли это неправильного закрытия браузера, во время перезагрузки системы?
- Проверьте это, убивая процесс и перезагрузившись несколько раз, каждый раз проверяя - белые ли страницы после загрузки. Действительная ли эта причина или есть и другие?
- Является ли этот результат следствием поломки определенной версии браузера?
- Попробуйте старые или новые версии за последние нескольких дней или перезагрузитесь, чтобы выяснить повторяются ли нарушения.
И так далее...
С дополнительной информацией, можно смело думать о более особенных причинах:
- Ломает ли систему некая закреплённая вкладка X, которая загружает плагин Y?
- Открепить вкладку, чтобы больше не открывалась при запуске или отключить плагин, и проследить, уберёт ли это проблему.
- Было сообщение о проблемах с графикой. Возможно они вызваны видеодрайвером?
- Попробуйте другую версию драйвера, либо альтернативные драйверы, если таковые имеются.
Поскольку исследуется каждая возможная причина, реальная причина проблемы может находиться всё ближе и ближе.
И, в конце концов, если причина до сих пор не найдена, ссылки в верхней части статьи Где получить помощь покажут множество мест, где люди настроены на помощь; сделайте их счастливыми своим тщательным описанием проблемы и сообщением, что уже было проделано для решения проблемы. Это даст им возможность помочь.