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. Debian-provided U-Boot (system firmware) images

Debian provides U-Boot images for various armhf systems that can load their U-Boot from an SD card at .../images/u-boot/ . The U-Boot builds are offered in two formats: raw U-Boot components and a ready-made card image that can easily be written onto an SD card. The raw U-Boot components are provided for advanced users; the generally recommended way is to use one of the ready-made SD card images. They are named <system-type>.sdcard.img.gz and can be written to a card e.g. with

zcat <system-type>.sdcard.img.gz > /dev/SD_CARD_DEVICE

As with all images, please be aware that writing the image to an SD card wipes all previous contents of the card!

If Debian provides a U-Boot image for your system, it is recommended that you use this image instead of the vendor-provided U-Boot, as the version in Debian is usually newer and has more features.

3.6.3. 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.

Para evitar conflitos com endereços MAC atribuidos oficialmente, existe um conjunto de endereços que é reservado para os chamados endereços administrados localmente. É definido pelo valor de dois bits especificos no primeiro byte do endereço (o artigo MAC address na Wikipedia em idioma Inglês dá uma boa explicação). Na prática isto significa que qualquer endereço começado pelo hexadecimal ca (tal como ca:ff:ee:12:34:56) pode ser utilizado como endereço administrado localmente.

Em sistemas que utilizem U-Boot como firmware de sistema, o endereço MAC é colocado na variável de ambiente ethaddr. Pode ser verificado na linha de comandos do U-Boot com o comando printenv ethaddr e pode ser definido com o comando setenv ethaddr ca:ff:ee:12:34:56. Após definir o valor, o comando saveenv torna a atribuição permanente.

3.6.4. Problemas de relocação do Kernel/Initrd/Device-tree no U-Boot

Em alguns sistemas com versões mais antigas do U-Boot podem haver problemas com a correcta relocação do kernel Linux, do ramdisk inicial e do blob de device-tree em memória durante o processo de arranque. Neste caso, o U-Boot mostra a mensagem Starting kernel ..., mas o sistema congela de seguida sem mais qualquer saída. Estes problemas foram resolvidos com novas versões do U-Boot a partir da v2014.07.

Se o sistema utilizou originalmente uma versão do U-Boot anterior à v2014.7 e foi posteriormente actualizado para uma versão mais recente, o problema pode ainda assim ocorrer mesmo após actualizar o U-Boot. A actualização do u-boot normalmente não altera as variáveis de ambiente existentes e a correção requer que seja definida uma variável de ambiente adicional (bootm_size), o que o U-Boot faz automaticamente apenas em novas instalações sem dados de ambiente. É possível definir manualmente bootm_size para a nova predefinição do U-Boot ao correr na linha de comandos o comando env default bootm_size; saveenv.

Outra possibilidade de contornar os problemas relacionados com a relocação é correr o seguinte comando na linha de comandos do U-Boot setenv fdt_high ffffffff; setenv iitrd_high 0xffffffff; saveenv para desabilitar completamente a relocação do ramdisk inicial e do blob device-tree.