3.6. Настройка аппаратного обеспечения и операционной системы перед установкой

В этом разделе описывается аппаратное обеспечение, для которого требуется настройка перед установкой Debian. Обычно, для этого производится проверка и возможно, изменение настроек BIOS или микропрограммы вашей системы. «BIOS» или «микропрограмма» — это программное обеспечение, используемое аппаратным обеспечением; данные компоненты почти всегда выполняются во время загрузки машины (после подачи питания).

3.6.1. Выбор загрузочного устройства

3.6.2. Микропрограмма ARM

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

Как следствие, даже в совсем новых системах часто используется микропрограмма на основе изменённой производителем версии многолетней давности, в то время как основной версией микропрограммы предлагаются дополнительные возможности или в ней было изменено поведение в работе. В дополнении к этому, в изменённых производителями одной версии микропрограммы используются разные наименования набортных устройств, что не позволяет написать рабочую единую инструкцию для систем ARM.

3.6.3. Задание MAC-адреса ethernet в U-Boot

Считается, что MAC-адрес каждого интерфейса ethernet должен быть уникальным глобально, и, технически, уникальным внутри своего широковещательного домена ethernet. Для этого производителю, обычно, выделяется блок MAC-адресов из централизованно-управляемого пространства (платно), и он настраивает один из этих адресов на каждом продаваемом устройстве.

Выпуская платы разработчика производитель, иногда, чтобы не платить, не предоставляет глобально-уникальный адрес. В этих случаях пользователи сами задают MAC-адреса для своих систем. Когда MAC-адрес интерфейса не задан, некоторые сетевые драйверы генерируют произвольный MAC-адрес, который может меняться при каждом включении, и если это происходит, доступ к сети возможен даже если пользователь не ввёл адрес вручную, но при этом, например, назначение IP-адресов по DHCP на основе MAC-адреса, очевидно, не заработает.

Чтобы избежать пересечения с официально выданными MAC-адресами существует зарезервированное пространство, так называемых «локально-контролируемых» адресов. Оно задаётся значением двух специальных бит в первом байте адреса (хорошее описание в статье википедии «MAC address»). На практике это означает, что любой адрес, начинающийся с шестнадцатеричного ca (например, ca:ff:ee:12:34:56) можно использовать как локально-контролируемый адрес.

В устройствах с U-Boot в качестве системной микропрограммы, ethernet MAC-адрес хранится в переменной окружения «ethaddr». Его можно увидеть из приглашения U-Boot по команде «printenv ethaddr» и изменить командой «setenv ethaddr ca:ff:ee:12:34:56». После установки значения команда «saveenv» делает его постоянным.

3.6.4. Проблемы размещения ядра/Initrd/дерева-устройств в U-Boot

В процессе загрузки в некоторых устройствах со старыми версиями U-Boot могут быть проблемы с правильным размещением в памяти ядра Linux, начального ramdisk и файла дерева устройств. В этот случае U-Boot выводит сообщение «Starting kernel ...», и система повисает ничего больше не выводя. Эти проблемы были решены в новых версиях U-Boot, начиная с v2014.07.

Если в системе сначала использовалась версия U-Boot старее v2014.07 и позже она была обновлена на новую, то проблема может остаться. При обновлении u-boot, обычно, не изменяются существующие переменные окружения U-Boot и для исправления требуется установка дополнительной переменной окружения (bootm_size), что делается U-Boot автоматически только при установке с нуля, при отсутствии данных окружения. Возможно вручную указать bootm_size со значением по умолчанию нового U-Boot командой «env default bootm_size; saveenv» из приглашения U-Boot.

Ещё один способ обхода проблем размещения: выполнить команду «setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv» в приглашении U-Boot, полностью выключающую размещение начального ramdisk и файла дерева устройств.