På ARM-baserade system i de flesta fall används ett av två format för uppstartsavbildningar: a) standardkärnor i Linux zImage-format (”vmlinuz”) tillsammans med standard initiala ramdiskar för Linux (”initrd.gz”) eller b) kärnor i uImage-format (”uImage”) i kombination med motsvarande initiala ramdiskar (”uInitrd”).
uImage/uInitrd är bildformat som har designats för den inre mjukvaran U-Boot vilket används i många ARM-baserade system (mestadels 32-bitars). Äldre versioner av U-Boot kan endast starta upp filer i formatet uImage/uInitrd-formatet så dessa används oftast i äldre armel-system. Nyare versioner av U-Boot kan - förutom att starta uImages/uInitrd - också starta standard-kärnor för Linux och ramdisk-avbilder, men kommando-syntaxen för att göra det är något annorlunda från att boota uImages.
För system som använder en multiplattformskärna behövs förutom kärnan och initial ramdisk en så kallad device-tree-fil (eller device-tree blob, ”dtb”). Den är specifik för varje system som stöds och innehåller en beskrivning av den specifika hårdvaran. dtb:n ska levereras med enhetens fasta programvara, men i praktiken behöver en nyare ofta laddas.
Nätverksboot tarbollen (Avsnitt 5.1.3.2, ”Förbyggd netboot tarball”), och SD-korts avbilder av installationsprogrammet (Avsnitt 5.1.5, ”Använda förbyggda SD-kort avbildningar med installationsprogrammet” använder den (platforms-specifika) standard konsolen som är definerad av U-boot i ”konsol” variabeln. I dom flesta fallen så är detta en serie konsol, så på dessa platformar som standard så behöver du en seriekonsol kabel för att använda installationsprogrammet.
På plattformar som också stöder en videokonsol kan du ändra U-Boot ”console” variabeln följaktligen om du vill att installationsprogrammet ska starta på videokonsolen.
Uppstart från nätverket kräver att du har en nätverksanslutning och en TFTP-server konfigurerad för uppstarter (och antagligen även en DHCP-, RARP- eller BOOTP-server för automatisk närverkskonfiguration).
Inställning på serversidan för att stödja nätverksuppstart beskrivs i Avsnitt 4.3, ”Förbered filerna för nätverksuppstart via TFTP”.
Nätverksuppstart på system som använder U-Boot fastprogramvara består av tre steg: a) konfigurera nätverket, b) ladda in avbilderna (kärna/initial ramdisk/dtb) till minnet och c) faktiskt exekvera den tidigare laddade koden.
Först så måste du konfigurera nätverket, antingen automatiskt via DHCP genom att köra
setenv autoload no dhcp
eller manuellt genom att ställa in flera miljövariabler
setenv ipaddr <ip address för klienten> setenv netmask <nätmask> setenv serverip <ip-adress för tftp servern> setenv dnsip <ip-adress för namnservrarna> setenv gatewayip <ip-address på standard gateway>
Om du föredrar det kan du göra dessa inställningar permanenta genom att köra
saveenv
Efteråt måste du ladda avbilderna (kärna/initial ramdisk/dtb) till minnet. Detta görs med kommandot tftpboot, som måste förses med adressen där avbilden ska lagras i minnet. Tyvärr kan minneskartan variera från system till system, så det finns ingen generell regel vilka adresser som kan användas för detta.
På vissa system, så fördefinierar U-Boot en uppsättning miljövariabler med lämpliga laddningsadresser: kernel_addr_r, ramdisk_addr_r och fdt_addr_r. Du kan kontrollera om de är definierade genom att köra
printenv kernel_addr_r ramdisk_addr_r fdt_addr_r
Om det inte är definerade, så måste du kontrollera ditt systems dokumentation för lämpliga värden och ställa in dem manuellt. För system baserade på Allwinner SunXi SOC (t.ex. Allwinner A10, arkitekturnamn”sun4i” eller Allwinner A20, arkitekturnamn ”sun7i”), så du kan du tex använda följande värden:
setenv kernel_addr_r 0x46000000 setenv fdt_addr_r 0x47000000 setenv ramdisk_addr_r 0x48000000
När lastadresserna är definierade kan du ladda avbilderna till minnet från den tidigare definierade tftp-servern med
tftpboot ${kernel_addr_r} <filnamnet på kärnavbild> tftpboot ${fdt_addr_r} <filnamnet på dtb filen> tftpboot ${ramdisk_addr_r} <filnamnet på den ursprungliga ramdiskavbildningen>
Den tredje delen är att ställa in kärnans kommandorad och faktiskt exekvera den laddade koden. U-Boot skickar innehållet i miljövariabeln ”bootargs” som kommandorad till kärnan, så alla parametrar för kärnan och installationsprogrammet - såsom konsolenheten (se Avsnitt 5.3.1, ”Boot serial console”) eller förinställningsalternativ (se Avsnitt 5.3.2, ”Parametrar för Debian Installer” och Appendix B, Automatiserad installation med förinställningar) - kan ställas in med ett kommando som
setenv bootargs console=ttyS0,115200 rootwait panic=10
Det exakta kommandot för att köra den tidigare laddade koden beror på vilket avbildsformat som används. Med uImage/uInitrd är kommandot
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
och med inbyggda Linux-avbilder är det
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
Obs: När du startar upp standardlinux-avbildningar är det viktigt att ladda den initiala ramdiskavbildningen efter kärnan och dtb:n eftersom U-Boot ställer in filstorleksvariabeln till storleken på den senast laddade filen och kommandot bootz kräver storleken på ramdiskavbildningen för att fungera korrekt. Om du startar en plattformsspecifik kärna, det vill säga en kärna utan enhetsträd, utelämna helt enkelt parametern ${fdt_addr_r}.
Debian tillhandahåller en förbyggd tarball ( .../images/netboot/netboot.tar.gz ) som helt enkelt kan packas upp på din tftp-server och innehåller alla filer som behövs för nätverksuppstart. Den innehåller också ett startskript som automatiserar alla steg för att ladda installationsprogrammet. Moderna U-Boot-versioner innehåller en tftp autoboot-funktion som blir aktiv om det inte finns någon startbar lokal lagringsenhet (MMC/SD, USB, IDE/SATA/SCSI) och sedan laddas detta startskript från tftp-servern. Förutsättning för att använda denna funktion är att du har en dhcp-server i ditt nätverk som förser klienten med adressen till tftp-servern.
Om du vill aktivera tftp autoboot-funktionen från U-Boot-kommandoraden kan du använda följande kommando:
kör bootcmd_dhcp
För att manuellt ladda bootskriptet som tillhandahålls i tarbollen kan du alternativt använda följande kommandon i U-Boot-prompten:
setenv autoload no dhcp tftpboot ${scriptaddr} /debian-installer/armhf/tftpboot.scr source ${scriptaddr}
Många moderna U-Boot versiner har USB-stöd och tillåter uppstart från USB-masslagringsenheter som USB-minnen. Tyvärr kan de exakta stegen som krävs för att göra det variera ganska mycket från enhet till enhet.
U-Boot v2014.10 har introducerat en gemensam kommandoradshantering och autoboot-ramverk. Detta gör det möjligt att bygga generiska startavbildningar som fungerar på alla system som implementerar detta ramverk. debian-installer
stöder installation från ett USB-minne på sådana system, men tyvärr har inte alla plattformar antagit detta nya ramverk ännu.
För att bygga ett startbart USB-minne för att installera Debian, packa upp hd-media-tarbollen (se Avsnitt 4.2.1, ”Var man får tag på installationsfiler”) på ett USB-minne formaterat med ett filsystem som stöds av U-Boot-versionen på din enhet. För moderna U-Boot-versioner fungerar vanligtvis någon av FAT16 / FAT32 / ext2 / ext3 / ext4. Kopiera sedan ISO-avbildningsfilen för den första Debian installations-cd eller dvd på minnet.
Autoboot-ramverket i moderna U-Boot-versioner fungerar på samma sätt som alternativen för startordning på ett PC BIOS/UEFI, det vill säga det kontrollerar en lista över möjliga uppstartsenheter för en giltig startavbildning och startar den första den hittar. Om det inte finns något operativsystem installerat bör installationsprogrammet startas genom att ansluta USB-minnet och slå på systemet. Du kan också initiera USB-startprocessen när som helst från U-Boot-prompten genom att ange kommandot ”run bootcmd_usb0”.
Ett problem som kan dyka upp när du startar från ett USB-minne när du använder en seriell konsol kan vara en felmatchning av konsolens baudrate. Om en konsolvariabel är definierad i U-Boot, visas debian-installer
startskript och skickar det automatiskt till kärnan för att ställa in den primära konsolenheten och, om tillämpligt, konsolens baudrate. Tyvärr varierar hanteringen av konsolvariabeln från plattform till plattform - på vissa plattformar inkluderar konsolvariabeln baudrate (som i ”console=ttyS0,115200”), medan konsolvariabeln på andra plattformar endast innehåller enhet (som i ”console=ttyS0”). Det senare fallet leder till en förvrängd konsolutgång när standardbaudraten skiljer sig mellan U-Boot och kärnan. Moderna U-Boot-versioner använder ofta 115200 baud medan kärnan fortfarande är standard på den traditionella 9600 baud. Om detta händer bör du manuellt ställa in konsolvariabeln så att den innehåller rätt baudrate för ditt system och sedan starta installationsprogrammet med kommandot ”run bootcmd_usb0”.
För ett antal system tillhandahåller Debian SD-kortsavbilder som innehåller både U-Boot och debian-installer
. Dessa avbilder finns i två varianter - en för nedladdning av programvarupaketen över nätverket (tillgänglig på
.../images/netboot/SD-card-images/
) och en för offlineinstallationer med en Debian CD/DVD (tillgänglig på
.../images/hd-media/SD-card-images/
). För att spara utrymme och nätverksbandbredd består avbilderna av två delar - en systemberoende del som heter ”firmware.<system-type>.img.gz” och en systemoberoende del som heter ” partition.img.gz”.
För att skapa en komplett avbild från de två delarna på Linux-system kan du använda zcat enligt följande:
zcat firmware.<system-type>.img.gz partition.img.gz > complete_image.img
På Windows-system måste du först dekomprimera de två delarna separat, vilket kan göras t.ex. genom att använda 7-Zip, och sedan sammanfoga de dekomprimerade delarna genom att köra kommandot
copy /b firmware.<system-type>.img + partition.img complete_image.img
i ett Windows CMD.exe fönster.
Skriv den resulterande avbilden till ett SD-kort, t.ex. genom att köra följande kommando på ett Linux-system:
cat complete_image.img > /dev/SD_CARD_DEVICE
Efter att ha anslutit SD-kortet till målsystemet och startat systemet laddas installationsprogrammet från SD-kortet. Om du använder hd-media-varianten för offlineinstallationer måste du ge installationsprogrammet åtkomst till den första Debian CD/DVD på ett separat medium, som kan t.ex. vara en CD/DVD ISO-avbildning på ett USB-minne.
När du kommer till partitionerings steget i installationsprogrammet (se Avsnitt 6.3.4, ”Partitionering och val av monteringspunkter”), du kan ta bort eller ersätta alla av det eventuella tidigare partitioner på kortet. När installationsprogrammet har startat körs det helt i systemets huvudminne och behöver inte längre komma åt SD-kortet, så du kan använda hela kortet för att installera Debian. Det enklaste sättet att skapa en korrekt partitionslayout på SD-kortet är att låta installationsprogrammet automatiskt skapa en partition åt dig (se Avsnitt 6.3.4.2, ”Guidad partitionering”).