LINUX.ORG.RU

Странности в gmesg при эксперементальной установке Gentoo

 , ,


0

2

Решил попробовать это ваше генту, ставлю по хэндбуку...
Короче, я собрал ядро командой «genkernel all», настроил загрузчик, ядро загрузилось и... куча ошибок в dmesg и половина неработающих устройств. Особенно волнуют драйвера tg3 и bcma (для Ethernet и WiFi адаптеров соответственно). У меня ни в одном дистрибутиве ядро так себя не вело.
dmesg вот http://freetexthost.com/6ll441lezz Кстати он почему-то показывает события не с начала, не с нулевой секунды.

★★★★★

Ты не прочитал, что значит опция all. Это вовсе не сборка всех модулей ядра. К тому же, даже со всеми включенными модулями могут потребоваться firmware.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)

Короче, я собрал ядро командой «genkernel all», настроил загрузчик, ядро загрузилось и... куча ошибок в dmesg

man gernkernel
...
NAME
       genkernel - the Gentoo Linux automatic kernel compiler.

SYNOPSIS
       genkernel [options...] action

...
ACTIONS
       An action tells genkernel what you want it to do - the following
       actions are supported:

       all
           Build all steps - the kernel, modules, and the ramdisk.

       bzImage
           Build only the kernel.

       initramfs
           Build only the ramdisk/initramfs.

       kernel
           Build only the kernel and the modules.

       ramdisk
           Build only the ramdisk/initramfs.
...
   KERNEL CONFIGURATION
       --[no-]menuconfig
           Runs, or does not run «make menuconfig» after running «make
           oldconfig».
...

Как видите, действие «all» (Action) лишь укажет genkernel, что он должен собрать ядро, модули и initramfs. Но это не означает, что будут собраны вообще все модули в ядре или хотя бы попросту все необходимые модели для работы устройств в текущей системе. Вы должны сами сконфигурировать ядро, включив соответствующие опции в конфигурации ядра, если будете использовать genkernel, то у него есть ключ '--menuconfig', на который я вам указал.

половина неработающих устройств ...
Особенно волнуют драйвера tg3 и bcma (для Ethernet и WiFi адаптеров соответственно)

Запускаете menuconfig и настраиваете конфигурацию ядра перед сборкой, включаете нужные модули, опции к ним. Не забудьте определить какие модули нужно включить в ядре и какие прочие опции для вашей конфигурации оборудования, а так же установить пакеты с прошивками.

С модулями можете определиться посредством

lspci -k
запущенном на дистрибутиве где у вас всё работает и смотрите строки «Kernel driver in use:...» а так же смотрите вывод dmesg на предмет инициализации прочих модулей (драйверов), например для устройство, подключенных через USB шину.

У меня ни в одном дистрибутиве ядро так себя не вело.

Так вы его не настроили в Gentoo, а ещё что-то хотите, настраивайте.

Кстати он почему-то показывает события не с начала, не с нулевой секунды.

Включите в конфиге ядра соответствующую опцию, которая указывает размер буфера для хранения сообщений ядра и системных компонентов, собственно тот вывод, который затем выводится в dmesg. Вся суть в том, что на этапе работы initramfs dmesg ещё не запущен, а запущен он будет лишь после монтирования корневой файловой системы, так вот если размер этого буфера небольшой, то у вас могут потеряться часть строк с начала работы ядра.

Читайте документацию, настраивайте, разбирайтесь.

Удачи.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Почему же не читал, я читал, только понял по своему.
Мне как раз надо было собрать ядро, модули и initramfs. menuconfig я посчитал, что запускать не нужно, потому что menuconfig подготавливает файл /usr/src/linux/.config, а, если он уже есть - то зачем его снова создавать. Ведь в ядре - несколько сотен опций и без теоретической подготовки в его конфигурирование лучше не лезть, поэтому во всех дистрибутивах существует готовый конфиг, подготовленный мейнтейнером.
По поводу tg3 и bcma: lspci говорит, что они есть, сообщения от этих драйверов в dmesg тоже говорят, что они существуют, тогда в чём дело? Они что, требуют каких-то дополнительных модулей или опций? Куда мне копать, чтобы понять чего им не хватает?

sunny1983 ★★★★★
() автор топика

У меня ни в одном дистрибутиве ядро так себя не вело.

А ты на других дистрибутивах тоже какой-то утилитой конфгурил ядро?

genkernel действует по best effort, что значит, что оно не гарантирует корректной сборки ядра. Просто потому что это очень сложно - подобрать нужные настройки под любое железо. Вряд ли такое вообще можно реализовать програмно.

Моя рекомендация - собрать ядро руками. Правда, если никогда этого не далал, намучаешься.

Еще вариант - в каких это «ни одном» дистрибутивах такого не было? - Возьми оттуда конфиг ядра. Ну, или с какого-нибудь LiveCD типа Knoppix.

Kroz ★★★★★
()
Ответ на: комментарий от sunny1983

Мне как раз надо было собрать ядро, модули и initramfs.

Правильно, но за основу будет взят если не «дефолтный» конфиг ядра, который можно создать вот так:

# make help
Cleaning targets:
  clean		  - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper	  - Remove all generated files + config + various backup files
  distclean	  - mrproper + remove editor backup and patch files

Configuration targets:
  config	  - Update current config utilising a line-oriented program
  nconfig         - Update current config utilising a ncurses menu based program
  menuconfig	  - Update current config utilising a menu based program
  xconfig	  - Update current config utilising a QT based front-end
  gconfig	  - Update current config utilising a GTK based front-end
  oldconfig	  - Update current config utilising a provided .config as base
  localmodconfig  - Update current config disabling modules not loaded
  localyesconfig  - Update current config converting local mods to core
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps
  defconfig	  - New config with default from ARCH supplied defconfig
  savedefconfig   - Save current config as ./defconfig (minimal config)
  allnoconfig	  - New config where all options are answered with no
  allyesconfig	  - New config where all options are accepted with yes
  allmodconfig	  - New config selecting modules when possible
  alldefconfig    - New config with all symbols set to default
  randconfig	  - New config with random answer to all options
  listnewconfig   - List new options
  olddefconfig	  - Same as silentoldconfig but sets new symbols to their default value

вам нужна опция defconfig, также обратите внимание на опции localmodconfig и allmodconfig, то как минимум будет использоваться конфиг, который поставляется с genkernel, но его в любом случае нужно доводить до ума.

menuconfig я посчитал, что запускать не нужно, потому что menuconfig подготавливает файл /usr/src/linux/.config, а, если он уже есть - то зачем его снова создавать.

Да в том-то и суть, что его нет, его нужно создавать, если вас не устраивает конфиг, который предоставляет genkernel, то используется menuconfig.

Ведь в ядре - несколько сотен опций и без теоретической подготовки в его конфигурирование лучше не лезть

Сгенерируйте дефолтный конфиг, смотрите выше как это делается и затем вклчите поддержку нужного вам оборудования, но если опция помечена как «DEPRECATED», то не включайте её, она устаревшая и сейчас используется другая и она, скорее всего уже включена. Пример такой устаревшей опции «CONFIG_IDE», сейчас используется подсистема «CONFIG_ATA». В общем, если бездумно не включать и не выключать опции, то на основе базового конфига вы сможете настроить когнфиг ядра именно для оборудования вашей системы.

поэтому во всех дистрибутивах существует готовый конфиг, подготовленный мейнтейнером.

В Gentoo вы сами решаете что и как вам нужно настроить, в том числе и в ядре, поэтому конфиг ядра, который использует genkernel минималистичен и не содержит груду опций, для всего возможного оборудования, но даже он избыточен. Зачастую в Gentoo ядро собирают под конкретное железо, конкретную конфигурацию, поэтому, что бы не вычищать не нужные в текущей конфигурации опции ядра лучше иметь минимальный рабочий конфиг. С другой стороны можно начать и с

make defconfig
и до настроить под себя. Вы же можете для начала использовать
make localmodconfig
в этом случае в ядре будут включены опции, которые соответствуют загруженным модулям (используемым драйверам) в текущей системе. Но я вам всё же советую начинать с
make defconfig
ну либо возьмите готовый универсальный конфиг из любого дистрибутива и собирайте ядро с ним. Но при этом в вашем ядре будет допустим 5% опций отвечающего за оборудование, которое есть в вашей системе и 95% модулей для оборудования, которого у вас нет и 100% не будет.

Куда мне копать, чтобы понять чего им не хватает?

Копать в сторону указания вашего оборудования и вывода lspci. А дальше ждать ответа, ну и читать Gentoo форумы и смотреть как настраивали ядро люди с таким же оборудованием. Так же почитайте Gentoo Wiki и wiki страницы прочих дистрибутивов, кроме всего прочего сходится в google, в запросе укажите название оборудования и сообщения, которые выводятся в dmesg относительно его.

kostik87 ★★★★★
()
Ответ на: комментарий от sunny1983

[ 5.539440] tg3.c:v3.137 (May 11, 2014)
[ 5.549476] libphy: tg3 mdio bus: probed
[ 5.549482] tg3 0000:08:00.0: No PHY devices
[ 5.549525] tg3 0000:08:00.0: Problem fetching invariants of chip, aborting

Не похоже, что он драйвер загрузил. Лучше приведи вывод lspci, может кто поможет с выбором модуля ядра для неработающих устройств. Про wifi вечером ссылку поищу, про то, каким устройствам какой firware может понадобиться.

Никакой особой особой теоретической подготовки для использования menuconfig не нужно: там практически все опции прокомментированы; явно ненужные можно смело отрубать, особенно в секции device drivers, но если не очень уверен, то можно пару дровин оставить модулями. В процессе сборки ядра можно параллельно оставить старое, на случай если что-то лишнее в новом отключишь и оно не загрузится.

grem ★★★★★
()

Что ты до этого использовал? В дебианах/убунтах есть /boot/config<что-то-там>. Вот это коонфиг ядра. Чтобы не мучаться и менюконфиги не делать. Берёшь его. Ложишь его в /etc/kernels/ и именуюешь его сообразно своему ядру. Мой конфиг, например /etc/kernels/kernel-config-x86_64-3.18.1-gentoo. А дальше генкернел, грузишься, радуешься жизни.

turtle_bazon ★★★★★
()
Ответ на: комментарий от kostik87

ну либо возьмите готовый универсальный конфиг из любого дистрибутива и собирайте ядро с ним

Так не взлетит же! Версии другие и патчи

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Вы читать умеете?

oldconfig	  - Update current config utilising a provided .config as base
В общем, берёте конфиг, сохраняете его в директории с исходными кодами ядра как ".config", выполняете
make oldconfig
отвечаете на вопросы, если есть.

Собираете ядро:

mount /boot
make -jN bzImage
make -jN modules
make install
make INSTALL_MOD_STRIP=1 modules_install
Где N - число ядре процессора, ключ -j указывает во сколько потоков запускать процесс компиляции.

Но я вам советую как минимум после oldconfig запустить menuconfig:

make oldconfig
make menuconfig
и выключить хотя бы поддержку драйверов отсутствующих сетевых адаптеров, wifi адаптеров, ATA контроллеров и возможно прочего, что бы не собирать поддержку точно отсутствующего оборудования.

Удачи.

kostik87 ★★★★★
()

Когда я пошёл на генту и не осилил этот genkernel, то просто взял, раскурил документацию к ядру, к железу, потратил ~восемь часов на конфигурацию ядра, и уже года три делаю make oldconfig, чего и тебе советую — один раз настроил, и забыл. Документации не так много, как кажется, да и из ~14 килострок конфига доступны не более 12. Повключай то, что нужно тебе, в соответствии со своим железом, ничего не отключая из дефолта. Пусть не с первого раза, но ты соберёшь себе рабочее ядро, а потом можно будет подпилить по вкусу при необходимости.

funeralismatic ★★★
()

sys-kernel/linux-firmware ставил?

DeadEye ★★★★★
()

Кстати он почему-то показывает события не с начала, не с нулевой секунды

CONFIG_LOG_BUF_SHIFT увеличь

это ваше генту

нечего на зеркало пенять

anonymous
()
Ответ на: комментарий от kostik87

make -jN bzImage
make -jN modules

просто make -jN заменяет обе команды. нафига это репостить?

anonymous
()
Ответ на: комментарий от anonymous

Ну так читай всё моё сообщение, а не выборочно.

kostik87 ★★★★★
()
Ответ на: комментарий от grem
06:00.0 Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
	Subsystem: Broadcom Corporation Device 0510
	Kernel driver in use: bcma-pci-bridge
	Kernel modules: bcma
08:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
	Subsystem: Lenovo Device 38a2
	Kernel modules: tg3

Для вафли я во всех ранее пробованных дистрибутивах проприетарный драйвер broadcom-sta использовал, но вот в последнем Кноппиксе неожиданно заработал свободный - видимо починили.
Эксперементы с конфигурированием ядра по приведенным выше советам ещё не проводил, но в выходные займусь, есть правда небольшие сомнения в успехе, потому что из прошлого неудачного опыта помню, что не все ключи ядерного мейкфайла - рабочие.
А что, до сих пор никто не додумался написать ебилд, грузящий универсальный конфиг?

sunny1983 ★★★★★
() автор топика
Последнее исправление: sunny1983 (всего исправлений: 1)
Ответ на: комментарий от sunny1983

У меня связь с внешним миром через интернет от провайдера со стационарника накрылась, а со смартфона неудобно через сот.оператора бороздить :( Когда починят, не знаю.

grem ★★★★★
()
Ответ на: комментарий от sunny1983

Про настройку wifi можно глянуть здесь. От себя добавлю, что скорее всего в ядре нужно будет ещё включить CONFIG_CFG80211_WEXT=y

Хотя странно, драйвер указан, но не работает. Может указанной опции не хватает, у меня без неё не сканировал сети. Для настройки и управления я использовал wicd в итоге.

grem ★★★★★
()
Ответ на: комментарий от grem

Ну для WiFi я всё равно лучше broadcom-sta поставлю. Но для этого нужно чтобы сначала хоть какая-то сеть была, а то у меня и Ethernet не работает. С ним то что?
И никакой гентой я в выходные не занимался.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

модуль грузится? устройство видит? вручную настраивал параметры сети или dhcp стоит?

grem ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.