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 detectado 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.
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 actualizado para o arranque por USB funcionar. As compilações de http://releases.linaro.org/latest/members/arm/ após Março de 2015 foram testadas com sucesso. Consulte a documentação do Juno sobre a actualização de firmware.
Prepare uma imagem standard de CD 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, 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 é correctamente detectada 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.
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á activo na arquitectura 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.
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.3, “Preparar Ficheiros para Arrancar Através da Rede por TFTP”.
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) efectivamente 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 pré-define 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 arquitectura “sun4i” ou o Allwinner A20, nome de arquitectura “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 correctamente. 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}.