5.1. Arrencada de l'instal·lador en l'arquitectura 32-bit hard-float ARMv7

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. Configuració del terminal

L'arxiu comprimit d'arrencada per xarxa (Secció 5.1.3.2, «Fitxer comprimit pre-compilat d'arrencada per xarxa») i les imatges d'instal·lació de targetes de memòria SD (Secció 5.1.5, «Ús d'imatges pre-construïdes per a targetes SD amb l'instal·lador») fan servir el terminal predeterminant (específic de per a cada plataforma) definit per U-Boot a la variable «console». En molts casos és el terminal serie, de manera que en aquests plataformes necessitarà un cable de terminal sèrie per fer servir l'instal·lador.

A les plataformes que poden fer servir un terminal de vídeo, podeu modificar la variable «console» d'U-Boot si desitjau iniciar l'instal·lador en el terminal de vídeo.

5.1.3. 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.3.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}.

5.1.3.2. Fitxer comprimit pre-compilat d'arrencada per xarxa

Debian proporciona un fitxer comprimit pre-construïts ( .../images/netboot/netboot.tar.gz ) que pot ésser descomprimit en el seu servidor tftp i que conté tots els fitxers necessaris per l'arrencada des de la xarxa. També inclou un guió d'arrencada que automatitza tots les etapes per carregar el instal·lador. Les versions modernes d'U-Boot contenen una funció d'auto arrencada tftp si no hi ha un dispositiu d'emmagatzematge local d'arrencada (MMC/SD, USB, IDE/SATA/SCSI) i després carrega el guió d'arrencada des del servidor tftp. Els requisits previs per poder fer servir aquesta funcionalitat és disposar d'un servidor DHCP a la vostra xarxa que proporcioni al client la direcció del servidor tftp.

Si voleu activar la funció d'arrencada automàtica tftp des de la línia d'ordres U-Boot, heu de fer servir la següent ordre:

run bootcmd_dhcp

Per a carregar manualment el guió d'arrencada proporcionat pel fitxer comprimit, pot fer servir les següent ordres a la línia de d'ordres d'U-Boot:

setenv autoload no
dhcp
tftpboot ${scriptaddr} /debian-installer/armhf/tftpboot.scr
source ${scriptaddr}

5.1.4. Arrencada des d'una memòria USB a U-Boot

Algunes versions modernes d'U-Boot accepten USB i permeten l'arrencada des de dispositius d'emmagatzematge massiu com les memòries USB. Malauradament, les etapes requerides per això poden variar bastant segons el dispositiu.

U-Boot v2014.10 proporciona una línia d'ordres comú i un entorn de treball d'arrencada automàtic. Això permet la generació d'imatges d'arrencada genèriques que funcionen amb qualsevol sistema fent servir aquest entorn de treball. El debian-installer permet la instal·lació des d'una memòria USB en molts sistemes, però malauradament no totes les plataformes estan adaptades en aquest nou entorn de treball.

Per preparar una memòria USB arrencable per instal·lar Debian, descomprimiu el fitxer per a mitjans físics (llegiu Secció 4.2.1, «On trobar arxius d'instal·lació») en la memòria USB amb format de sistema d'arxius suportat per la versió d'U-Boot. Per a versions recents d'U-Boot, habitualment, qualsevol dels formats FAT16 / FAT32 / ext2 / ext3 / ext4 funciona. Llavors copieu el fitxer d'imatge ISO del primer CD o DVD d'instal·lació de Debian en la memòria USB.

L'entorn de treball d'auto inici en les versions recents d'U-Boot funciona de forma semblant a les opcions d'ordre d'inici de la BIOS/UEFI dels PC, p. ex. es comprova el llistat de dispositius d'inici possibles i s'arrenca el primer que respon. Si no hi ha un sistema operatiu instal·lat, connectar la memòria USB i arrencar el sistema hauria de posar en marxa l'instal·lador. També podeu iniciar el procés d'arrencada des de el USB en qualsevol moment des de la línia d'ordres d'U-Boot executant l'ordre «run bootcmd_usb0».

Un dels problemes que poden presentar-se en arrencar amb una memòria USB quan es fa servir una consola sèrie és que hi hagi un desajust de la velocitat de transmissió. Si la variable de consola està definida en l'U-Bootm, el guió d'arrencada automàtica del debian-installer passa aquesta informació al nucli per establir quin és el dispositiu de consola primari i, si és possible, la velocitat de transmissió de la consola. Malauradament, la gestió de la variable de consola no és la mateixa a totes les plataformes: en algunes plataformes, la variable de consola inclou la velocitat de transmissió (com a «console=ttyS0,115200») i d'altres, la variable de consola només conté el dispositiu (com a «console=ttyS0»). En aquest cas, es produeix un retard en la sortida de la consola quan la velocitat de transmissió predeterminada de l'U-Boot i el nucli son distintes. Les versions recents d'U-Boot fan servir 115200 baudis mentre que el nucli encara fa servir el valor clàssic de 9600 baudis. Si passa això, haureu d'establir manualment la variable de consola per a que tengui el valor correcte de la velocitat de transmissió per al seu sistema i llavors iniciar l'instal·lador amb l'ordre «run bootcmd_usb0».

5.1.5. Ús d'imatges pre-construïdes per a targetes SD amb l'instal·lador

Per a alguns sistemes, Debian facilita imatges per a targetes SD que contenen l'iniciador U-Boot i el debian-installer. Aquestes imatges son de dos tipus: una per a baixar els paquets de programari de la xarxa (disponible a .../images/netboot/SD-card-images/ ) i l'altra instal·lacions fora de línia que fan servir els CD/DVD de Debian (disponibles a .../images/hd-media/SD-card-images/ ). Per a estalviar espai i ample de banda de xarxa, les imatges consisteixen en dues parts: una depenent del sistema amb el nom «firmware.<system-type>.img.gz» i l'altra independent del sistema amb el nom «partition.img.gz».

Per a generar una imatge completa amb les dues parts per a sistemes Linux, podeu fer servir «zcat» de la següent manera:

zcat firmware.<system-type>.img.gz partition.img.gz > complete_image.img

Amb sistemes Windows, primer cal descomprimir les dues parts per separat, com per exemple fent servir 7_Zip, i després ajuntant les parts descomprimides executant l'ordre

copy /b firmware.<system-type>.img + partition.img complete_image.img

en una terminal d'execució d'ordres de Windows.

Escriviu la imatge obtinguda a una targeta SD, p. ex. en els sistemes Linux, executant l'ordre:

cat complete_image.img > /dev/SD_CARD_DEVICE

Després de connectar la targeta SG en el sistema destí i arrencar-lo, es carregarà l'instal·lador des de la targeta SD. Si feu servir CD/DVD per a una instal·lació fora de línia, heu de facilitar l'instal·lador amb accés al primer CD/DVD de Debian amb un mitjà separat, com per exemple amb imatges ISO en CD/DVD o a una memòria USB.

Quan s'arriba a la fase de generació de les particions en l'instal·lador (vegeu Secció 6.3.4, «Realització de particions i selecció de punts de muntatge»), podeu eliminar o substituir les particions anteriors de la targeta. Una vegada iniciat l'instal·lador, s'executa completament en la memòria principal del sistema i ja no necessita accés a la targeta SD, de manera que podeu fer servir completament la targeta per instal·lar Debian. El sistema més senzill de generar una estructura de particions a la targeta SD és deixar que l'instal·lador en generi automàticament un (see Secció 6.3.4.2, «Fer particions de forma guiada»).