Boot-loader. Carl Wernstedt

Relevanta dokument
Om konsolporten. Beskrivning av portarna

Programmera och ladda ny mjukvara till DT-serien. Information och nerladdning av SatEdit V3 från: Ladda hem.

Föreläsning 2. Operativsystem och programmering

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

DIG IN TO Administration av nätverk- och serverutrustning

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Programmera och ladda ny mjukvara till DT-serien. SatEdit V3 laddas ner från Ladda hem.

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

DIG IN TO Dator och nätverksteknik

Nemo96 HD och Nemo96 HD+ firmware uppdatering

DIG IN TO Administration av nätverk- och serverutrustning

Instruktioner för uppdatering av enheter med ISP

BDM12 Användarbeskrivning. Introduktion

Manual Sportident Onlinekontroll via GPRS

Linux på en Windows-PDA. Christer Weinigel Weinigel Ingenjörsbyrå AB

Operativsystem och användargränssnitt

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

WAGO IO System Service Seminar. Diagnostik

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

DIG IN TO Dator och nätverksteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

Pipelining i Intel 80486

Raspberry Pi hallonpaj Kom igång med Raspberry Pi

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Schemaläggning Unix. Minneshantering etc. Linux. Schemaläggning av trådar (kernel threads) Detaljer. Operativsystem - Lektion 7

PNSPO! Tips! Xpectia kommunikation till OMRON PLC via Seriellt. 14 mars 2012 OMRON Corporation

BIPAC-711C2 / 710C2. ADSL Modem / Router. Snabbstart Guide

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

Linuxadministration I 1DV417 - Laboration 1 Installation. Marcus Wilhelmsson 15 januari 2013

komplett kopia av hårddisken 20 minu En instabil dator som ofta drabbas av fel får du snabbt på rätt kurs med en kopia av Windows och alla program.

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

MESI i Intel Core 2 Duo

Antares Användning och installation

IDE USB kabel Windows XP, Vista 7 löäzxcvbnmqwertyuiopåasdfghjklöäz [Version 1.4, ]

Swema 05. Bruksanvisning vers 1.01 MB

Manual Sportident Onlinekontroll via GPRS

INSTALLATION OCH KONFIGURATION AV PROGRAM PICBASIC PRO - MICRO CODE STUDIO PLUS - EPIC PLUS

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Filöverföring i Windowsmiljö

PV Applications Manager. Instruktionshäfte

4 grundregler. Minneshantering. Problemet. Windows minkrav

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Prestige 660M. Snabbinstallation. Version 1.0

Prestige 660H 3Play modem. Snabbinstallation Version 1.0. BOK_P660H_3play_modem.indd :19:14

Travel Phrase Guide. Instruktionshäfte

Föreläsning 4 IS1300 Inbyggda system

AmigaOS 4.0 Pre-release. installationsguide

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Datorsystem 5. På denna föreläsning skall vi prata om Operativsystem Exempel på tenta (typ fjolårets)

Projekt Fake för Virtutech

Templog / TempControl PC

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

Deluppgift 9 Installera Pintos

Instruktioner för Internetanslutning

Stiftelsen MHS-Bostäder Instruktioner och felsökningsguide för Internetanslutning

Cacheminne Intel Core i7

Konfigurera Xenta från Babs

DC ++ o allt annat runt om! (en kom-i-gång guide..) Klicka på File Settings. Färdigt med konfigureringen!

B60 Domäncentral B60 används i system vid fler än 10 st. dörrmiljöer och/ eller VAKA-bokning.

Programmering av. PADDY mini

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Capitex dataservertjänst

Test i datorkunskap Hårdvara

Systemkrav och tekniska förutsättningar

Installation av AutoCAD Architecture 2010

USB-C till Ethernet-adapter med USB 3.0-hubb med 3 portar och Power Delivery

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Din manual HP COMPAQ EVO D310 MICROTOWER

Systemkrav/Rekommendationer

Installera USB-adapter

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Uppdatering av programvaror Användarhandbok

Hur du installerar Open Broadcaster Software (OBS) fo r HD-sa ndning

1. Starta om din Mac. 2. Kontrollera din Internetuppkoppling

HANTERING AV UPS CX

KURSMÅL WINDOWS STARTA KURSEN

Kontrollsystem HACCP WEB Tool 1. Användarmanual

Handbok Kfloppy diskettformaterare

Felsökningsguide för Windows XP

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Swema 03. Bruksanvisning vers 1.01 MB

Att använda pekare i. C-kod

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

QUICK GUIDE Master reset, initiering och adressering. Master Reset av LCU6516

*1 Alternativ lösning Serial/IP COM Port Redirector v4.8 from tacticalsoftware.com För mer info se

SW3674. Snabbguide. Eee PC 900 Serierna 15G06Q0136D0

Användarmanual. SMS Fjärrkontroll för Värmepump / Air Condition. Modell: GARD

Uppdatering av programvaror

Tips och tricks. Några bra tips. Lägg till sökvägar

MORPHEUS CANBUS programmering för Cobra 4405/4425

LABORATIONSRAPPORT Operativsystem 1 Linux

Transkript:

Boot-loader Av Carl Wernstedt 02-09-25 da99cwt@ing.umu.se

Inledning All hårdvara som använder sig av något slags operativsystem behöver en boot-loader för att kunna starta och lägga in önskat operativsystem, samt någon anordning för att kunna ladda in själva boot-loader programmet. Det här kapitlet tittar närmare på olika Linux boot-loaders för Intel StrongARM processorer, deras olika egenskaper samt visar hur man installerar en boot-loader och laddar ner filsystem / kärna till LART systemet.

Boot-loaderns huvud uppgifter 4 Boot-loaderns uppgifter i detalj 5 Olika bootloaders 6 ABLE 6 Angel/AngelBoot 6 Blob (Boot Loader OBject) 6 Bootldr 6 Jflash 6 Hermit 7 NeTTrom 7 Blob Praktiskt exempel 8 BLOB i pseudokod 10 Referenser 13

Boot-loaderns huvud uppgifter Det finns idag många olika Linux boot-loaders, många är under utveckling och deras funktioner ändras hela tiden men samtliga tillhandahåller stöd för de mest fundamentala uppgifter som en boot-loader skall utföra. För att kunna använda Linux som operativsystem krävs två saker av boot-loadern. 1) Boot-loadern måste ladda upp Linux kärnan till minnet. 2) Boot-loadern måste ladda upp ett rot filsystem till minnet. Givetvis måste även andra uppgifter utföras men dessa två är de viktigaste. De flesta boot-loaders har två lägen de kan användas i, Bootloading och Downloading. Bootloading innebär att boot-loadern opererar självständigt och laddar ner sin kärna och filsystem från en intern enhet, det vill säga en normal boot-loader procedur. Downloading innebär att boot-loadern arbetar samt laddar ner kärna och filsystem från en extern enhet, det här läget används oftast för att installera kärnor / filsystem samt för att uppdatera dessa. Förutom dessa uppgifter gör boot-loadern mycket mera, i StrongARM fallen körs operativsystemet från RAM, men innan boot-loadern kan lämna över ansvaret till kärnar gör den följande saker. 1) Initialiserar standard hårdvara som att sätta CPU hastighet, minnes hantering, avbrott samt att bestämma storlek på ram minnet. 2) Initierar de enheter som behövs för att läsa kärnans och filsystemets image-filer. 3) Ordna plats i det fysiska minnet för kärna och filsystem, lägga in dessa på respektive plats samt anropa kärnan med lämpliga parametrar. Därefter har boot-loadern fyllt sin funktion och ansvaret kan överlämnas till kärnans startupp sekvens. Givetvis är det även en rad andra saker som händer än de 3 stegen som ovan är beskrivet.

Boot-loaderns uppgifter i detalj När boot-loadern körs brukar den vanligtvis initiera enheter som tillexempel en seriell UART och någon GPIO för att kunna kommunicera. GPIOn är vanligtvis kopplad till en lysdiod för att kunna visa sin status och eventuella felmeddelanden. Den seriella överföringen används för att skicka ut status samt ta in boot-loader kommandon, om inte boot-loadern själv kommer att använda sig av dessa funktioner behöver den inte initiera dessa efter som kärnan själv kommer att göra det vid uppstart. Boot-loaderns uppgift att ta reda på minnesstorleken kan anses lite onödig då det kan hårdkodas in i kärnan, men är lämpligt för enheter där minnes mängden kan variera. För att kunna anropa kärnan med parametrar krävs att boot-loadern och kärnan kommer överens om en fysik minnesadress där informationen läggs och läses, för StrongArm processorn ligger adressen på 0xc0000100 dvs. 256 från botten av det fysiska minnet. En annan aspekt som bootloadern måste ta hänsyn till är var kärnan skall placeras, vanligtvis läggs kärnan längst ned i minnet men behöver här läggas en bit ovanför (0x8000). Det utrymmet som skapas mellan kärnan och slutet på minnet används av kärnans page tabeller. Om minnet ligger på adressen 0xc0000000 laddas kärnan på 0xc000800000. Filstrukturen laddas vanligtvis 8MB ovanför på adressen 0xc900000. Det som avgör dessa värden är att Kärnans och RAMdiskens image filer inte skall överlappa med den uppackade kärnan. När kärnan väl är uppackad tas den packade versionen bort för att frigöra minne till andra användnings områden. Slutligen måste boot-loadern beakta viloläge (sleepmode). När ARM processorn utför en reset, exekverar den instruktioner på minnes adressen 0, där boot-loadern ligger. Detta sker även när processorn vaknar från viloläge. För att inte boot-loadern omedelbart skall utföra en reset måste den kolla lämpliga statusregister för att se om processorn vill ha en omstart eller bara vaknar från viloläge, då den ska utför en annorlunda procedur. För StrongARM SA-11x0 processorer innebär detta att Reset Controller Status Register (RCSR) kollas för att se vilken typ av reset som har utförts. Om det var en väcknings signal hämtar den ett värde från Power Manager Scratchpad Rigister (PSPR), boot-loadern använder det hämtade värdet för att komma till rätt adress i väckningskoden.

Olika bootloaders Det finns än uppsjö av olika bootloaders på marknaden som ständigt förändras men här visas några av de populäraste. ABLE Boot-loader skriven av Ben Dooks och Vince Sanders, stödjer Riscstation och Simtec a7500fe plattformar baserade på ARM7500FE enheter. Boot-loadern lagras i ROM alternativt i ett EEPROM, laddar images från en IDE disk partition. Ner laddningen sköt via ett seriellt interface. Angel/AngelBoot Stödjer Intel StrongARM SA-1110 processorer samt dess utvecklingsbord, målfilerna sparas i flashminne och skickas över seriellt. Under bootsekvens laddas kärnan och ramdisken till RAM innan ansvaret läggs över på kärnan. Angel är själva koden som hanterar den enhet som startas upp och AngelBoot är det program som körs för att hantera uppladdning. Tillsammans utgör de en enkel och effektiv bootloader. Blob (Boot Loader OBject) Blob var ursprungligen skriven för LART av Erik Mouw och Jan-Derk Bakker, men finns nu för andra Intel StrongARM SA-1110 baserade plattformar. Blob ligger i enhetens lokala eller utbyggda flashminne., varifrån den kan ladda samt spara kärna och filsystem. Operationerna sker via ett seriellt interface där uppladdningen sker i form av UUkodade filer. Under normal uppstart initieras hårdvaran och kärnan samt RAMdisk läggs över från flash minnet till RAM. Ett utförligt exempel hur blob fungerar visas senare i texten. Bootldr En fullfjädrad bootloader som främst är känd för att sitta i Compaq's ipaq. Utöver ipaqen används Bootldr till StrongARM SA-1110, Skiff, HP Journade 720 samt en del andra mindre projekt. Parametrar för kärna och uppstart finns sparat i flash minne tillsammans med kärnan och filsystem (vanligtvis JFFS2 men stöd finns även för RAMdisk och CRAMFS). Bootldr har ungefär 30 kommandon för att dela upp och styra flashminne, samt inbyggt stöd för att visa en startbild på ipaqn där användaren kan styra olika moment genom GPIOs. Uppladdningar sker via seriellt Xmodem. Jflash Jflash är från början ett Windows baserat program men har senare portats till Linux av Nico Pitre. Boot-loadern tillhanda håller de vanligaste funktionerna och finns till LART och TuxScreen båda är StrongARM SA-1110 plattformar.

Hermit En ganska enkel boot-loader med stöd för Ethernet kommunikation som använder sig av sockets istället för TCP/IP stack. Efter som ingen kollisionsdetektering utförs rekommenderas en korskopplad kabel alternativt en hub utan andra enheter inkopplade. NeTTrom NeTTrom är egentligen en väldigt nedbantad version av Linux kärnan med inbyggt stöd för hårddisk och nätverk. Boot-loadern ligger i ROM och nedladdning sker via en IDE disk alternativt nätverksanslutning då den använder sig av DHCP och TFTP. Nackdelen är att den tar relativt stor plats, omkring 500K.

Blob Praktiskt exempel Låt oss säga att vi har något system baserat på StrongARM SA-1110 processorn, LART systemet tillexempel. Det enklaste sättet att installera Blob är att ta hem en färdig kompilerad version från till exempelvis ftp.netwinder.org/users/c/chagas. Paketet heter blob-kit-assabet-1.3.tar.gz och innehåller dels Bloben samt verktyg för att installera den. På sin värddator packar man upp filen genom att skriva: %tar xzvf blob-kit-assabet-1.3.tar.gz %cd blob-kit %-/Jflash-linux blob-linux Förhoppningsvis har man anslutit sin lart till serieport 1 eftersom verktygen är inställda på det. Det som händer nu är att Blob läggs in på LARTens flashminne. När väl det är gjort startar man upp valfritt terminal program, tillexempel minicom. Konfigurerar serieporten att använda hastigheten 9600 bps 8-N-1. Starta sedan om LARTen genom att göra en reset alternativt slå av och på strömförsörjningen. Följande meddelande skall då visas i terminal fönstret. Blob version 1.0.8-pre2, Copyright (C) 1999 2000 Jan-Derk Bakker and Erik Mouw Copyright (C) 2000 Johan Pouwelse Blob comes with ABSOLUTELY NO WARRANTY; read the GNU GPL for details. This is free software, and you are welcome to redistribute it under certain conditions; read the GNU GPL for details. Autoboot in progress, press Enter to stop... Eftersom vi ännu inte lagt in nån kärna eller filsystem trycker vi enter, och ser följande. Autoboot aborted Type "help" to get a list of commands blob> Färdig kompilerade versioner av ARM-Linux samt ett enkelt filsystem finns att hämta på http://www.lart.tudelft.nl/lartware, men innan de är färdiga att laddas ner måste filerna UUenkodas enligt följande. %uuencode ramdisk.gz ramdisk.gz > ramdisk.uu %uuencode zimage zimage > zimage.uu

I Blob promten skriver vi %download kernel För att påbörja nerladdning. Blob kommer då att svara med att rekommendera oss att byta hastighet från 9600 till 115200, det går även att i Blob promten ställa in annan överföringshastighet. Switching to 115200 baud you have 60 seconds to switch your terminal emulator to the same speed and start downloading. After that blob will switch back to 9600 baud. Det enklaste är nu att öppna upp ett nytt terminal fönster och därifrån skicka kärnans image fil genom att skriva. %cat zimage.uu > /dev/ttys1 Då påbörjas överföringen som tar ett par minuter. När (Please switch your terminal back to 9600 baud) Received 509300 (0x0007C574) bytes Visas är kärnan på plats och vi byter tillbaka till hastigheten 9600 och får tillbaka vår Blob promt. För att slippa göra om denna procedur för varje omstart är det lämpligt att skriva in kärnan i flashminnet på följande sätt. %flash kernel För att lägga in filsystemet utförs exakt samma steg som ovan med den skillnaden att man skickar över ramdisk.uu. LARTen är nu klar att användas och kan startas om genom att skriva boot alternativt göra en reset.

BLOB i pseudokod Det som utfördes i BLOB ett praktiskt exempel utförs av BLOBens main() funktion samt dess funktions anrop. Nedan följer en steg för steg beskrivning i psuedokod av vad som sker i BLOB när den startas. Main() Först av allt tänds LED (lysdioden lartens lysdiod) för att indikera att bootloadern körs. Serie porten ställs om till 9600 baud. Diverse textsträngar skrivs ut. Den aktuella minnes mängden hämtas genom funktions anrop. Där efter läggs blob, kärna och filsystem från flashminnet till RAM. (om de finns sparade i flash.) Ytterligare information skrivs ut. Lägger sig i en 10 sekunders loop och väntar på att en tangent trycks ned, om ingen tangent tryckts ned går bootloadern direkt till att starta upp linux. Om en tangent trycks ned skrivs en enkel prompt ut som reagerar på följande kommandon: "boot" "clock" "download " "flash " "help" "reblob" "reload " "reset" "speed " "status" Vart och ett av dessa parametrar ger upphov till nedanstående funktionsanrop.

Boot() Clock() Startar linux boot sekevens. Ger användaren möjlighet att ställa in systemklockan. Download() Anges med tre möjliga alternativ: "download blob" Sätter startadressen där bloben skall läggas samt förbereder för att ta emot en ny version av blob. "download kernel" sätter startadressen där kärnan skall läggas samt förbereder för att ta emot en imagefil av kärnan. "download ramdisk" sätter startadressen där filsystemet skall läggas samt förbereder för att ta emot en imagefil av filsystemet. Flash() Om någon av ovanstående alternativ är angivna ställs seriportens hastighet om till 115200 baud. Diverse text strängar skrivs ut och programmet väntar 60 sekunder på att få användaren skall skicka något på serieporten. Tas inte något emot skrivs felmeddelande ut och programmet återgår till tidigare promt, samt ställer tillbaka serieporten till 9600 baud. Fungerar på samma sätt som download med den skillnaden att den sparar det som finns i RAm till flashminne, samt kör en felkontroll.

Help() Visar samtliga kommondon som finns att tillgå samt intruktioner hur de används. Reblob() Reload() Startar om bootloader programmet. Tar samma argument som download() och laddar om blob, kärna eller filsystem från flashminnet till ramdisk. Reset() Speed() värdet. Status() Ställer hastigheten till 9600 baud samt skriver 100 blank steg till terminal programmet. Tar följande argument: "1200" "9600" "19200" "38400" "57600" "115200" Den sätter sedan nedladdnings hastigheten det angivna Skriver ut en mängd olika textsträngar med varierande information.

Referenser Information från följande webbadresser har används vid skapandet av denna rapport. http://www-2.cs.cmu.edu/~wearable/software/docs/assabet-linuxreport/node2.html#section00021000000000000000 http://www.aleph1.co.uk/armlinux/docs/armbooting/t1.html http://www.wirelesssolutionsjournal.com/articles/issue2/aleph_1_pages.pdf http://www.aleph1.co.uk/armlinux/docs/armbooting/x115.html http://www.aleph1.co.uk/armlinux/book/boottools.html http://www.aleph1.co.uk/armlinux/book/book1.html http://debianlinux.net/linux.html