Что означает “EISA: Cannot allocate resource for mainboard” и как это решить?

Вопрос или проблема

Я нашел это в журналах ядра:

platform eisa.0: EISA: Cannot allocate resource for mainboard
Cannot allocate resource for EISA slot 1
Cannot allocate resource for EISA slot 2
Cannot allocate resource for EISA slot 3
Cannot allocate resource for EISA slot 4
Cannot allocate resource for EISA slot 5
Cannot allocate resource for EISA slot 6
Cannot allocate resource for EISA slot 7
Cannot allocate resource for EISA slot 8

Что это значит и как я могу это исправить?

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 21.04
Release:        21.04
Codename:       hirsute

Существует открытая ошибка по этому поводу на https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1837326

Ubuntu жестко задает все параметры конфигурации ядра EISA в y:

$ grep -i eisa /boot/config-*
CONFIG_HAVE_EISA=y
CONFIG_EISA=y
CONFIG_EISA_VLB_PRIMING=y
CONFIG_EISA_PCI_EISA=y
CONFIG_EISA_VIRTUAL_ROOT=y
CONFIG_EISA_NAMES=y

Эти параметры должны быть установлены в m (модули) или n (исключить их полностью, потому что EISA была заменена PCI в 1993 году.)

Согласно комментариям в отчете об ошибке, вы можете (или не можете) иметь удачу, добавив eisa_bus.disable_dev=1,2,3,4,5,6,7,8 в командную строку ядра, например, обновив GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub, а затем регенерируя конфигурацию grub с помощью команды, такой как:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Если это не сработает, единственным другим вариантом будет компиляция пользовательского ядра.

Ответ или решение

Ошибка "EISA: Cannot allocate resource for mainboard" возникает, когда ядро операционной системы не может выделить ресурсы для устройств, использующих шину EISA. EISA, или Extended Industry Standard Architecture, была одной из архитектур шин, разработанных в 1988 году для замены шины ISA. Однако, начиная с 1993 года, EISA была вытеснена более современной и быстрой шиной PCI. Несмотря на это, поддрержка EISA все еще присутствует в некоторых конфигурациях ядра Linux, в том числе в Ubuntu.

Давайте подробнее разберем, почему возникает эта ошибка и как её можно исправить.

Теория

Эта ошибка связана с тем, что ядро Linux, которое вы используете, настроено поддерживать EISA, даже если ваше оборудование не использует эту шину. В вашем случае, все соответствующие опции ядра для поддержки EISA жестко установлены на «y». Это значит, что они включены на уровне ядра и не могут быть загружены или выгружены в виде модулей. Ядро пытается обнаружить и выделить ресурсы для EISA устройств, которых в вашей системе может просто не быть.

Пример

Из приведенных вами логов ядра видно, что система пытается выделить ресурсы для слотов EISA, которых у вас, судя по всему, нет:

platform eisa.0: EISA: Cannot allocate resource for mainboard
Cannot allocate resource for EISA slot 1
Cannot allocate resource for EISA slot 2

Таким образом, сообщение о невозможности выделения ресурсов только информирует о ненахождении EISA-совместимых устройств. Это само по себе не должно вызывать проблем с производительностью системы, однако может засорять логи ненужной информацией.

Применение

Теперь, когда мы знаем, что вызывает проблему, и понимаем, что это не критическая ошибка, мы можем решить эту задачу двумя основными способами.

1. Изменение параметров загрузки ядра

Первым шагом будет попытка исключить ненужную проверку устройств EISA на этапе загрузки системой. Вы можете добавить параметр eisa_bus.disable_dev=1,2,3,4,5,6,7,8 в командную строку ядра. Это указание отключит слоты EISA из рассмотрения при загрузке. Для этого:

  1. Откройте файл /etc/default/grub с привилегиями администратора:

    sudo nano /etc/default/grub
  2. Найдите строку, начинающуюся с GRUB_CMDLINE_LINUX_DEFAULT и добавьте eisa_bus.disable_dev=1,2,3,4,5,6,7,8 в конец строки, в пределах кавычек. Это может выглядеть следующим образом:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash eisa_bus.disable_dev=1,2,3,4,5,6,7,8"
  3. Сохраните изменения и закройте редактор.

  4. Обновите конфигурацию GRUB:

    sudo grub-mkconfig -o /boot/grub/grub.cfg
  5. Перезагрузите систему для применения изменений.

2. Компиляция кастомного ядра

Если первое решение не устраняет сообщений в логах, возможно потребуется более радикальное действие — компилирование своего собственного ядра, в котором EISA будет полностью отключена. Это более трудоемкий процесс, требующий навыков работы с компиляцией ядра Linux.

Основные шаги:

  1. Установите необходимые зависимости и исходные коды ядра.
  2. Сконфигурируйте ядро, отключив все параметры EISA (установите их в n).
  3. Скомпилируйте и установите новое ядро.
  4. Обновите загрузчик и перезагрузите систему.

Заключение

Хотя ошибка "EISA: Cannot allocate resource for mainboard" не является серьезной проблемой и не влияет на функциональность вашей системы, она может досаждать своим присутствием в логах. Устранение ее заключается в оптимальной конфигурации загрузчика или создании кастомного ядра, что позволит избежать ненужных проверок на наличие устаревших аппаратных компонентов.

Оцените материал
Добавить комментарий

Капча загружается...