3.6. Pré-Instalação do Hardware e Configuração do Sistema Operativo

Esta seção irá guiá-lo através da configuração de hardware da pré-instalação, se existir alguma, que necessite fazer antes de instalar Debian. Normalmente isto envolve verificar e possivelmente alterar definições de BIOS/firmware para o seu sistema. A BIOS ou o firmware do sistema é o software utilizado pelo hardware; é o mais crítico invocado durante o processo de arranque (depois de o ligar).

3.6.1. Firmware ARM

Conforme já mencionado anteriormente, infelizmente não existe standard para o firmware de sistema nos sistemas ARM. Mesmo o comportamento de diferentes sistemas que normalmente utilizem o mesmo firmware pode ser bastante diferente. Isto resulta do facto que uma grande parte dos dispositivos que utilizam a arquitectura ARM são sistemas embebidos, para os quais os fabricantes utilizam versões de firmware altamente customizadas e que incluem patches específicos de dispositivos. Infelizmente os fabricantes muitas vezes não submetem as suas alterações e extensões de volta aos desenvolvedores de firmware mainline, por isso as suas alterações não são integradas em novas versões do firmware original.

Como resultado disso mesmo sistemas recentemente vendidos muitas vezes utilizam um firmware que é baseado numa versão com anos modificada pelo fabricante cujo código mainline do firmware entretanto evoluiu imenso e oferece funcionalidades adicionais ou apresenta comportamento diferente em certos aspectos. Além disso, o nome de dispositivos onboard não é consistente entre diferentes versões modificadas pelo fabricante do mesmo firmware, e por isso é quase impossível disponibilizar instruções utilizáveis que sejam independentes de produto para sistemas baseados em ARM.

3.6.2. Definir o endereço MAC de ethernet em u-boot

O endereço MAC de cada interface ethernet deve ser globalmente único, e tecnicamente tem que ser único dentro do domínio de broadcast ethernet. Para alcançar isto, o fabricante geralmente aloca um bloco de endereços MAC e partir de um conjunto administrado centralmente (para o qual é pago um valor) e preconfigura um destes endereços em cada item vendido.

No caso de placas de desenvolvimento, por vezes o fabricante quer evitar pagar esses valores e por isso não disponibiliza um endereço globalmente único. Nesses casos os próprios utilizadores têm de definir os endereços MAC para os seus sistemas. Quando não está definido um endereço MAC para um interface ethernet, alguns controladores de rede geram um endereço MAC aleatório que pode ser alterado em cada arranque, mas se isso acontecer, o acesso à rede será possível mesmo que o utilizador não defina manualmente o endereço, mas e.g. atribuir endereços IP semi-estáticos por DHCP baseados em endereços MAC do cliente que requisita obviamente não irá funcionar correctamente.

To avoid conflicts with existing officially-assigned MAC addresses, there is an address pool which is reserved for so-called locally administered addresses. It is defined by the value of two specific bits in the first byte of the address (the article MAC address in the English language Wikipedia gives a good explanation). In practice this means that e.g. any address starting with hexadecimal ca (such as ca:ff:ee:12:34:56) can be used as a locally administered address.

On systems using u-boot as system firmware, the ethernet MAC address is placed in the ethaddr environment variable. It can be checked at the u-boot command prompt with the command printenv ethaddr and can be set with the command setenv ethaddr ca:ff:ee:12:34:56. After setting the value, the command saveenv makes the assignment permanent.

3.6.3. Kernel/Initrd/Device-Tree relocation issues in u-boot

On some systems with older u-boot versions there can be problems with properly relocating the Linux kernel, the initial ramdisk and the device-tree blob in memory during the boot process. In this case, u-boot shows the message Starting kernel ..., but the system freezes afterwards without further output. These issues have been solved with newer u-boot versions from v2014.07 onwards.

If the system has originally used a u-boot version older than v2014.07 and has been upgraded to a newer version later, the problem might still occur even after upgrading u-boot. Upgrading u-boot usually does not modify the existing u-boot environment variables and the fix requires an additional environment variable (bootm_size) to be set, which u-boot does automatically only on fresh installations without existing environment data. It is possible to manually set bootm_size to the new u-boot's default value by running the command env default bootm_size; saveenv at the u-boot prompt.

Another possibility to circumvent relocation-related problems is to run the command setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv at the u-boot prompt to completely disable the relocation of the initial ramdisk and the device-tree blob.