5.1. Arrencada de l'instal·lador en l'arquitectura 32-bit soft-float ARM

5.1.1. Formats d'imatge d'arrencada

En els sistemes basats en ARM, en la majoria de casos, es fa servir un dels dos formats d'imatges d'arrencada: a) nuclis Linux estàndard en format «zImage» («vmlinuz») conjuntament amb disc RAM inicials estàndard de Linux («initrd.gz») o b) nuclis en format «uImage» («uImage») conjuntament amb el corresponent disc RAM inicial («uInitrd»).

«uImage/uInitrd» son formats d'imatges dissenyats pel programari del maquinari («firmware») U-Boot i que es fa servir en molts sistemes basats en ARM (sobretot de 32 bits). Les versions anteriors d'U-Boot només podent arrencar fitxers en els formats «uImage/uInitrd» i per això es fan servir en els sistemes ARM més antics. Les noves versions d'U-Boot poden arrencar imatges «uImage/uInitrd» i també nuclis estàndard Linux així com imatges de dics RAM, tot i què la sintaxi de les ordres que ho fan és significativament diferent a l'arrencada amb «uImage».

Pels sistemes que fan servir nuclis multiplataforma, a més del nucli i el disc RAM incial necessiten un fitxer anomenat dispositiu d'arbres («device-tree» o «device-tree blob», «dtb»). Aquest fitxer és específic per a cada sistema suportat i conté la descripció del maquinari corresponent. Cal que el «dtb» sigui subministrat pel microprogramari del maquinari («firmware»), però a la pràctica, sovint s'ha de carregar un de nou.

5.1.2. Arrencada amb el TFTP

Per arrencar des de la xarxa necessitareu una connexió i un servidor d'arrencada de xarxa TFTP ( i probablement un servidor DHCP, RARP o BOOTP per a la configuració automàtica de la xarxa).

El mètode d'instal·lació per suportar l'arrencada de la xarxa es descriu a Secció 4.3, «Preparació dels fitxers per a l'arrencada en xarxa TFTP».

5.1.2.1. Arrencada TFPT a U-Boot

L'arrencada amb xarxa en sistemes que fan servir el microprogramari («firmware») U-Boot consisteix en tres passos: a) configuració de la xarxa, b) càrrega de les imatges (nucli, dics RAM inicial i «dtb») a la memòria i c) execució del codi carregat prèviament.

Primer cal configurar la xarxa, ja sigui automàticament a través de DHCP executant

setenv autoload no
dhcp

o bé manualment establint els valors de diverses variables d'entorn

setenv ipaddr <ip adreça del client>
setenv netmask <netmask>
setenv serverip <ip aadreça del servidor tftp >
setenv dnsip <ip adreça dels servidor de noms>
setenv gatewayip <ip adreça de la passarel·la predeterminada>

Si ho prefereix, pot fer que aquests ajustos siguin permanents executant

saveenv

Després ha de carregar les imatges (nucli, disc inicial RAM i «dtb») a la memòria. Això es fa executant l'ordre «tftpboot», el qual cal proveir la direcció en la qual està emmagatzemada la imatge a la memòria. Malauradament, el mapa de memòria pot variar entre sistemes, pel que no hi ha una regla general per a les adreces que es puguin fer servir per això.

En diversos sistemes, U-Boot predefineix con conjunt de variables d'entorn amb les adreces de càrrega adequades: «kernel_addr_r», «ramdisk_addr_r» i «fdt_addr_r». Podeu comprovar quines estan definides executant

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

Si no estan definides, haureu de consultar la documentació del vostre sistema per saber els valors adequats i establir-los manualment. Per a sistemes basats en «Allwinner SunXi SOCs» (p. ex. Allwinner A10, nom d'arquitectura «sun4i» o Allwinner A20, nom d'arquitectura «sun7i»), podeu, per exemple, fer servir els següents valors:

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

Una vegada definides les adreces de càrrega, podeu carregar les imatges a la memòria del servidor tftp prèviament determinat amb

tftpboot ${kernel_addr_r} <nom del fitxer d'imatge del nucli>
tftpboot ${fdt_addr_r} <nom del fitxer del «dtb»>
tftpboot ${ramdisk_addr_r} <nom del fitxer de la imatge inicial del disc RAM>

La tercera part és establir la línia d'ordres del nucli i executar el codi carregat. U-Boot transfereix el contingut de la variable d'entorn «bootargs» com a línies d'ordres al nucli, de manera que els paràmetres per al nucli i l'instal·lador, com el dispositiu de terminal (llegiu Secció 5.3.1, «Terminal d'arrencada sèrie») o opcions de configuració (llegiu Secció 5.3.2, «Paràmetres de l'instal·lador Debian» i Apèndix B, Automatització de la instal·lació fent servir una configuració prèvia)- poden establir-se amb ordres del tipus

setenv bootargs console=ttyS0,115200 rootwait panic=10

L'ordre concreta per executar el codi prèviament carregat depèn del format de la imatge que s'utilitzi.Amb «uImage/uInitrd», l'ordre és

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

i amb imatges natives de Linux és

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

Nota: en arrencar imatges estàndard Linux, és important carregar la imatge del disc RAM inicial després que el nucli i el «dtb» com a U-Boot estableixin la variable de la mida de fitxer amb el valor de la mida del darrer fitxer carregat i l'ordre «bootz» requereixi la mida de la imatge de disc RAM per a treballar correctament. En el cas d'arrencar un nucli específic de la plataforma, p. ex. un nucli sense arbre de dispositius, ometeu el paràmetre ${fdt_addr_r}.