5.1. Het installatiesysteem starten op 64-bit ARM

5.1.1. De configuratie van de console

Het grafische installatiesysteem is op de arm64 debian-installer images voor stretch niet beschikbaar en dus wordt de seriële console gebruikt. De console zou automatisch gedetecteerd moeten worden op basis van de firmware, maar als dat niet het geval is, zult u nadat u Linux vanuit het GRUB-menu opgestart heeft, de melding Booting Linux zien en dan niets meer.

Indien u te maken krijgt met dit probleem, moet u een specifieke consoleconfiguratie instellen aan de commandoregel van de kernel. Druk in het GRUB-menu op de toets e voor Edit Kernel command-line (de commandoregel van de kernel bewerken) en verander

--- quiet

in

console=<device>,<speed>

bijv.

console=ttyAMA0,115200n8

. Als u klaar bent, drukt u op de toetsencombinatie Control+x om het opstarten voort te zetten met de nieuwe instelling.

5.1.2. De installatie op Juno

Juno beschikt over UEFI en dus verloopt de installatie eenvoudig. De meest praktische methode is installeren vanaf een USB-stick. Opdat opstarten vanaf USB zou werken, moet de firmware up-to-date zijn. Compilaties van http://releases.linaro.org/latest/members/arm/ die dateren van na maart 2015 blijken oké te zijn. Raadpleeg de documentatie van Juno in verband met het opwaarderen van firmware.

Plaats een standaard arm64 CD-image op een USB-stick. Plaats die in een van de USB-poorten achteraan. Sluit een seriële kabel aan op de bovenste 9-pins seriële poort achteraan. Indien u een netwerkverbinding nodig heeft (als u het netboot-image gebruikt) moet u een ethernetkabel aansluiten op de socket vooraan op de machine.

Gebruik een seriële console aan 115200, 8bits zonder pariteit, en start de Juno op. Het apparaat zou vanaf de USB-stick moeten opstarten naar het GRUB-menu. De configuratie van de console wordt op Juno niet correct gedetecteerd en dus zal gewoon op de enter-toets drukken geen uitvoer van de kernel tonen. Stel de console in op

console=ttyAMA0,115200n8

(zoals beschreven wordt in Paragraaf 5.1.1, “De configuratie van de console”). De toetsencombinatie Control+x om op te starten zou u de schermuitvoer van debian-installer moeten laten zien en u in staat moeten stellen om een standaardinstallatie af te werken.

5.1.3. De installatie op Mustang van Applied Micro

Deze machine kan UEFI gebruiken, maar wordt gewoonlijk geleverd met U-Boot. U zal dus ofwel eerst de UEFI-firmware moeten installeren om daarna de standaardmethode te gebruiken voor het opstarten van het systeem en het uitvoeren van de installatie, ofwel zult u de opstartprocedure voor U-Boot moeten gebruiken. U moet een seriële console gebruiken om de installatie op te volgen, vermits het grafische installatiesysteem niet beschikbaar is voor de arm64-architectuur.

De aanbevolen installatiemethode is om de kernel en initrd van debian-installer naar de harde schijf te kopiëren met behulp van het 'openembedded' (open-ingebed) systeem dat met de machine meegeleverd wordt, om dan daarvandaan op te starten en het installatiesysteem te gebruiken. Een andere mogelijkheid is om TFTP te gebruiken om kernel/dtb/initrd binnen te halen en op te starten (Paragraaf 5.1.4.1, “Opstarten via TFTP in U-Boot”). Na de installatie van het image zijn handmatig uit te voeren aanpassingen nodig om van het geïnstalleerde image te kunnen opstarten.

Gebruik een seriële console aan 115200, 8bits zonder pariteit, en start de machine. Herstart de machine en als u de melding Hit any key to stop autoboot: (druk op een toets om het automatisch opstarten te onderbreken) ziet, moet u een toets indrukken om een Mustang# prompt te bekomen. Dan moet u U-Boot commando's gebruiken om de kernel, dtb en initrd te laden en op te starten.

5.1.4. Opstarten via TFTP

Om over het netwerk te kunnen opstarten moet u een netwerkverbinding hebben en een TFTP netwerk-opstartserver (en wellicht ook een DHCP-, RARP-, of BOOTP-server voor het automatisch configureren van de netwerkinstellingen).

De instellingen aan de kant van de server voor het ondersteunen van opstarten over het netwerk, worden beschreven in Paragraaf 4.3, “Bestanden klaarmaken om over het netwerk op te starten met TFTP”.

5.1.4.1. Opstarten via TFTP in U-Boot

Over het netwerk opstarten met systemen die gebruik maken van de U-Boot firmware, omvat drie stappen: a) het netwerk configureren, b) de images (kernel/initiële ramschijf/dtb) in het geheugen laden, en c) de eerder geladen code daadwerkelijk uitvoeren.

Eerst moet u het netwerk configureren, ofwel automatisch via DHCP met de opdrachten

setenv autoload no
dhcp

ofwel handmatig door verschillende omgevingsvariabelen in te stellen

setenv ipaddr <ip-adres van de cliënt>
setenv netmask <netmasker>
setenv serverip <ip-adres van de tftp-server>
setenv dnsip <ip-adres van de naamserver>
setenv gatewayip <ip-adres van de standaard gateway>

Indien u dit verkiest, kunt u deze instellingen een permanent karakter geven met de opdracht

saveenv

Nadien moet u de images (kernel/initiële ramschijf/dtb) in het geheugen laden. Dit gebeurt met het commando tftpboot, waaraan het adres opgegeven moet worden waar het image in het geheugen geplaatst zal worden. Jammer genoeg kan het indelingsplan van het geheugen verschillend zijn van systeem tot systeem, waardoor er geen algemene regel bestaat voor welke adressen daarvoor gebruikt kunnen worden.

Op sommige systemen stelt U-Boot vooraf een aantal omgevingsvariabelen in met geschikte laadadressen: kernel_addr_r, ramdisk_addr_r en fdt_addr_r. U kunt nagaan of ze ingesteld werden met de opdracht

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

Indien ze niet gedefinieerd zijn, moet u in de documentatie bij uw systeem nagaan welke waarden geschikt zijn en ze handmatig instellen. Voor systemen die gebaseerd zijn op SunXi SOC's van Allwinner (bijv. de Allwinner A10, met als architectuurnaam sun4i of de Allwinner A20, met als architectuurnaam sun7i), kunt u bijvoorbeeld de volgende waarden gebruiken:

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

Wanneer de laadadressen gedefinieerd zijn, kunt u de images vanaf de voordien gedefinieerde tftp-server in het geheugen laden met

tftpboot ${kernel_addr_r} <bestandsnaam van het kernel-image>
tftpboot ${fdt_addr_r} <bestandsnaam van het dtb>
tftpboot ${ramdisk_addr_r} <bestandsnaam van het initiële ramschijf-image>

De derde stap is het instellen van de commandoregel voor de kernel en het daadwerkelijk uitvoeren van de geladen code. U-Boot geeft de inhoud van de omgevingsvariabele bootargs als commandoregel door aan de kernel. Dus alle parameters voor de kernel en het installatiesysteem - zoals het apparaat dat de console gebruikt (zie Paragraaf 5.3.1, “Opstartconsole”) of opties in het kader van preseeding (vooraf ingestelde antwoorden - zie Paragraaf 5.3.2, “Parameters voor het installatiesysteem van Debian” en Bijlage B, De installatie automatiseren door antwoorden vooraf in te stellen) - kunnen ingesteld worden met een commando zoals

setenv bootargs console=ttyS0,115200 rootwait panic=10

Het exacte commando voor het uitvoeren van de voordien geladen code is afhankelijk van welk van de twee imagevormen gebruikt wordt. Met uImage/uInitrd is het commando

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

en met een authentieke Linux-image is het

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

Opmerking: Als u standaard Linux images start, is het belangrijk om het image van de initiële ramschijf te laden na de kernel en de dtb, omdat U-Boot de variabele filesize instelt op de grootte van het laatst geladen bestand en het commando bootz de grootte van de ramschijf nodig heeft om correct te werken. Indien u een platformspecifieke kernel start, d.w.z. een kernel zonder apparatenboom, moet u gewoon de parameter ${fdt_addr_r} weglaten.