5.1. Arrancar o Instalador em 64-bit ARM

5.1.1. Configuração da consola

O instalador gráfico não está activo por defeito nas imagens debian-installer arm64 para stretch por isso é utilizada a consola série. O dispositivo de consola deve ser detetado automaticamente pelo firmware, mas se não for então quando arrancar o linux a partir do menu do GRUB irá ver a mensagem Booting Linux, e depois mais nada.

Se tiver este problema irá necessitar de definir uma configuração especifica de consola na linha de comandos do kernel. Carregue em e para Edit Kernel command-line no menu do GRUB, e altere

--- quiet

para

console=<device>,<speed>

e.g.

console=ttyAMA0,115200n8

. Quando terminar carregue em Control+x para continuar a arrancar com a nova definição.

5.1.2. Instalação do Juno

Juno tem UEFI por isso a instalação é pacífica. O método mais prático é instalar a partir de pen USB. Para funcionar necessitará de firmware atualizado para o arranque por USB funcionar. As compilações de http://releases.linaro.org/members/arm/platforms/latest/ após Março de 2015 foram testadas com sucesso. Consulte a documentação do Juno sobre a atualização de firmware.

Prepare uma imagem standard de CD/DVD arm64 numa pen USB. Insira-a numa das portas USB que estão atrás. Ligue o cabo série na porta série de 9 pinos do topo, atrás. Se necessitar de rede (imagem netboot) ligue o cabo de rede na porta na parte da frente da máquina.

Utilize uma consola série a 115200, 8bit sem paridade, e arranque o Juno. Deverá arrancar a partir da pen USB e ir para um menu do GRUB. A configuração da consola não é corretamente detetada no Juno por isso carregar simplesmente em Enter não irá mostrar a saída do kernel. Defina a consola para

console=ttyAMA0,115200n8

conforme é descrito em (Secção 5.1.1, “Configuração da consola”). Control+x para arrancar e deve mostrar-lhe os ecrãs do debian-installer e permitir proceder com a instalação standard.

5.1.3. Instalação do Applied Micro Mustang

Está disponível UEFI para esta máquina mas é normalmente lançado com U-Boot por isso irá necessitar de instalar primeiro o firmware UEFI e depois utilizar os métodos de arranque/instalação standard, ou utilizar os métodos de arranque por U-Boot. Terá de utilizar uma consola série para controlar a instalação pois o instalador gráfico não está ativo na arquitetura arm64.

O método de instalação recomendado é copiar o kernel e o initrd do debian-installer para o disco rígido, utilizando o sistema openembedded fornecido com a máquina, e depois arrancar daí e correr o instalador. Em alternativa, pode utilizar TFTP para obter o kernel/dtb/initrd e arrancar (Secção 5.1.4.1, “Arranque por TFTP em U-Boot”). Após a instalação, são necessárias alterações manuais para arrancar a partir da imagem instalada.

Corra uma consola série a 115200, 8bit sem paridade, e arranque a máquina. Reinicie a máquina e quando vir Hit any key to stop autoboot: carregue numa tecla para obter uma prompt Mustang#. Depois utilize os comandos U-Boot para carregar e iniciar o kernel, dtb e initrd.

5.1.4. Arrancar por TFTP

Arrancar pela rede requer que tenha uma ligação de rede e um servidor TFTP de arranque por rede (e provavelmente também um servidor de DHCP, RARP ou BOOTP para a configuração automática de rede).

A configuração do servidor para suportar arranque pela rede é descrita em Secção 4.4, “Preparar Ficheiros para Arrancar Através da Rede por TFTP”.

5.1.4.1. Arranque por TFTP em U-Boot

O arranque pela rede em sistemas que utilizam o firmware U-Boot consiste em três passos: a) configurar a rede, b) carregar as imagens (kernel/ramdisk inicial/dtb) para a memória e c) efetivamente executar o código carregado.

Primeiro tem de configurar a rede, quer automaticamente por DHCP ou correndo

setenv autoload no
dhcp

ou manualmente definindo várias variáveis de ambiente

setenv ipaddr <endereço ip do cliente>
setenv netmask <máscara de rede>
setenv serverip <endereço ip do servidor de tftp>
setenv dnsip <endereço ip do servidor de nomes (dns)>
setenv gatewayip <endereço ip da gateway predefinida>

saveenv

Depois tem de carregar as imagens (kernel/ramdisk inicial) para a memória. Isto é feito com o comando tftpboot, ao qual tem de ser passado o endereço a partir de onde é guardada na memória a imagem. Infelizmente o mapa de memória pode variar entre sistemas, por isso não há uma regra genérica com os endereços que possam ser utilizados para isto.

Em alguns sistemas, U-Boot predefine um conjunto de variáveis de ambiente com endereços de carregamento apropriados: kernel_addr_r, ramdisk_addr_r e fdt_addr_r. Pode verificar se estão definidos ao correr

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

Se não estiverem definidos, tem que verificar a documentação do seu sistema por valores apropriados e defini-los manualmente. Para sistemas baseados em SOCs Allwinner SunXi (e.g. o Allwinner A10, nome de arquitetura sun4i ou o Allwinner A20, nome de arquitetura sun7i), pode por exemplo utilizar os seguintes valores:

setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x47000000
setenv ramdisk_addr_r 0x48000000

Quando estiverem definidos os endereços de carregamento, pode assim carregar as imagens para a memória a partir do servidor tftp anteriormente definido:

tftpboot ${kernel_addr_r} <nome de ficheiro da imagem do kernel>
tftpboot ${fdt_addr_r} <nome de ficheiro de dtb>
tftpboot ${ramdisk_addr_r} <nome de ficheiro da imagem inicial de ramdisk>

A terceira parte é definir a linha de comandos do kernel e executar o código carregado. U-boot passa o conteúdo da variável de ambiente bootargs como linha de comandos do kernel, por isso quaisquer parâmetros para o kernel e instalador - tais como dispositivo de consola (veja Secção 5.3.1, “Consola de arranque”) ou opções de preseeding (seja Secção 5.3.2, “Parâmetros de instalação Debian” e Apêndice B, Automatizar a instalação utilizando 'preseeding') - pode ser definido com um comando como

setenv bootargs console=ttyS0,115200 rootwait panic=10

O comando exato a executar o código carregado anteriormente depende do formato de imagem utilizado. Com uImage/uInitrd o comando é

bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

e com imagens nativas de Linux é

bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

Nota: Quando arrancar imagens standard de linux, é importante carregar a imagem ramdisk inicial após o kernel e o dtb já que U-Boot define a variável de tamanho de ficheiro ao tamanho do último ficheiro carregado e o comando bootz necessita o tamanho da imagem ramdisk para funcionar corretamente. Em caso de arrancar um kernel específico da plataforma, i.e. um kernel sem device-tree, simplesmente omita o parâmetro ${fdt_addr_r}.

5.1.5. Arrancar a partir de pen USB com UEFI

Se o seu computador irá arrancar por USB, esta será provavelmente a forma mais fácil para instalar. Assumindo que preparou tudo a partir da Secção 3.6.1, “Selecção de Dispositivo Para Arranque” e de Secção 4.3, “Preparar Ficheiros para iniciar a partir de pen USB”, basta ligar a sua pen USB num conector USB livre e reiniciar o computador. O sistema deverá arrancar, e a menos que tenha utilizado o método flexível para compilar a pen e não a tenha ativado, deverá ser-lhe apresentado um menu gráfico (em hardware que o suporte). Aqui poderá selecionar várias opções do instalador, ou simplesmente carregar em Enter.