Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers Diplomarbeit Autor: Rade Bozic
Fernsystem Zielsetzung Fern - Wartung Fern - Diagnose Universell einsetzbares System im Bereichen: Fern - Wartung Fern - Diagnose
Gliederung des Vortrages Einleitung Planung eines Fernsystems Aufbau eines Linux- Systems Hardware Bootloader Root Dateisystem Entwicklungsumgebung Web Server Realisierung einer Anwendung
Einleitung Qualität entscheidet
Einleitung Spannungsfeld Qualität Qualität Kunde Unternehmen Preise Kosten Unternehmen Produkte Eigenschaften Kunde Anforderungen Erwartungen
Begriffsdefinition „Qualität“ Einleitung Qualität Beschaffenheit einer Einheit bezüglich ihrer Eignung, festgelegte und vorausgesetzte Erfordernisse zu erfüllen Beschaffenheit Gesamtheit der Merkmale und Merkmalswerte einer Einheit Einheit Materieller oder immaterieller Gegenstand der Betrachtung Begriffsdefinition „Qualität“ DIN 55350, Teil 1
Was bedeutet Qualität in Bezug auf das Fernsystem? Einleitung Was bedeutet Qualität in Bezug auf das Fernsystem? Fernsystem Abstraktionsebene (Konfigurationsfenster) Anwender
Planung eines Fernsystems
Einsatz eines Fernsystems Ziel: Aktuellen Zustand der Technische Prozesse darstellen Änderungen an den Technischen Prozess vornehmen
Planung eines Fernsystems Aufteilung in zwei Bereiche Steuerung eines Technischen Prozesses mit dem Fernsystem Administration des Fernsystems
Planung eines Fernsystems
Planung eines Fernsystems Anforderungen: Konfigurationsfenster der Fernsysteme soll unabhängig von dem technischen Prozess sein Der Aufbau der Konfigurationsfenster soll einheitlich sein Leichte Integration eines technischen Prozesses in das Fernsystem Eigener Konfigurationsfenster für den technischen Prozess
Software - Programme Netzwerkdienste Hardware System Benutzer Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? Software - Programme Netzwerkdienste Hardware System Benutzer Andere
Software installieren Software löschen Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? Software – Programme: System Update Software installieren Software löschen Andere
FTP TFTP HTTP NFS Remote Steuerung Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? Netzwerkdienste: FTP TFTP HTTP NFS Remote Steuerung Andere
Hardware Information LAN CAN RS232 RS485 Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? Hardware: Hardware Information LAN CAN RS232 RS485 Andere
Integration einer Anwendung Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? System: Datum und Zeit sysconfig Flash Speicher Integration einer Anwendung Andere
Benutzterverwaltung Gruppenverwaltung Andere Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten? Benutzer: Benutzterverwaltung Gruppenverwaltung Andere
Administration eines Fernsystems Ziel: Änderungen an den Fernsystem vornehmen Aktuellen Zustand des Fernsystems darstellen
Administration eines Fernsystems Aktuellen Zustand des Fernsystems ändern oder darstellen mit den System Programmen
Planung eines Konfigurationsfensters für eine Anwendung Konfigurationsfenster wird an das technische Problem angepasst Das Konfigurationsfenster sollte eigenständig funktionieren Integration des Konfigurationsfensters in das Fernsystem
Beispiel eines technischen Prozesses Aktuellen Zustand des Technischen Prozesses darstellen
Beispiel eines technischen Prozesses Änderungen an den Technischen Prozess vornehmen
Aufbau eines Linux- Systems
Aufbau eines Linux-Sytems Hardware Bootloader Betriebsystem Dateisystem
Aufbau eines Linux-Sytems
Planung eines Linux-Sytems
Hardware Entwicklungsboard (Eval-Board) DIMM Modul Entwicklungsrechner
Hardware – Eval-Board
Hardware – DIMM Modul
Hardware – Entwicklungsrechner
Bootloader
Bootloader
Bootloader Interne Firmware (Bootloader) Durchsucht die Peripherie nach dem bootfähigen Programm Lädt das Programm in den internen SRAM Führt den „remap“ Befehl aus Startet das Programm
Bootloader Funktion des „remap“ Befehls
Bootloader - Uploader Eigenschaften des Uploaders Darf max. 12 KByte groß sein (4 KByte Stack) Kann Programme die größer als 128 KByte sind nicht laden und starten
Bootloader - Uploader Aufgaben des Uploaders SDRAM Initialisierung : SDRAM Xmodem Protocol über DBGU Serial SPI Flash Laden und starten von Programmen in SDRAM
Bootloader -Uploader Funktionen des Uploaders aus dem SPI Flash lesen in den Bootsektor des SPI Flash schreiben den Bootsecktor im SPI Flash löschen laden eines Programms mit Xmodem (z.B. U-Boot) in den SDRAM und startet das Programm
Bootloader – U-Boot U-Boot => Universal Bootloader Open-Source Projekt Sehr gute Dokumentation Portiert auf mehr als 100 Plattformen Sehr flexibel Viele Funktionen
Bootloader – U-Boot Aufgaben von U-Boot Initialisierung des Boards Ramdisk in SDRAM laden Linux in SDRAM laden bootargs an Linux übergeben Linux starten
Bootloader – U-Boot U-Boot wurde auf die DIMM-RM9200 Plattform portiert make DIMM_rm9200_config U-Boot wird für das DIMM-RM9200 Board konfiguriert make U-Boot wird für das DIMM-RM9200 Board übersetzt
Bootloader – U-Boot Zwei Boot-Modi Starten aus dem parallelen Flash Starten aus dem seriellen Flash Mit einem Jumper (Schalter) wird entschieden von wo gestartet wird. Jumper hat eine ähnliche Funktion wie der „remap“ Befehl. Ist er aufgesetzt, wird die Adresse 0x00000000 auf die erste Adresse des parallelen Flashs gesetzt.
Bootloader – U-Boot Zwei U-Boot Programme U-Boot für den parallelen Flash (PU-Boot) U-Boot für den seriellen Flash (SU-Boot)
Bootloader – U-Boot Unterschiede zwischen den beiden U-Boot Programmen PU-Boot hat seine Umgebungsvariable im parallelen Flash, SU-Boot im seriellen Flash. Uploader wird beim Start von PU-Boot nicht benötigt
Bootloader – U-Boot Entwicklungablauf des Bootloaders
Bootloader – U-Boot Wie werden die zwei U-Boot Programme generiert? Konfigurationsdatei DIMM_rm9200.h Variable: #define CONFIG_BOOTBINFUNC 1 => PU-Boot //#define CONFIG_BOOTBINFUNC 1 => SU-Boot
Bootloader – U-Boot Es gibt drei Möglichkeit U-Boot zu starten: über Uploader aus dem seriellen Flash (Jumper nicht aufgesetzt) aus dem parallel Flash (Jumper aufgesetzt) über Uploader mit dem XModem Protocol (Jumper nicht aufgesetzt)
Bootloader – U-Boot Arbeiten mit dem U-Boot U-Boot Befehle: Manipulation von Flash Speicher boot Befehle (laden und starten von Programmen) Netzwerk Befehle informations- Befehle
Bootloader – U-Boot U-Boot Scripte Mehrere Befehle in einem Befehl vereinen Scripte werden mit dem Befehl „run“ gestartet Ein Script startet das Betriebsystem
Bootloader – U-Boot Startablauf von U-Boot
Bootloader – U-Boot Drei wichtigsten Variablen zum starten von Linux Konfigurationsdatei DIMM_rm9200.h Variablen: #define CONFIG_BOOTCOMMAND "run tftpboot„ #define CONFIG_BOOTARGS #define CONFIG_EXTRA_ENV_SETTINGS
Bootloader – U-Boot Beispiel: Script „tftpboot“ Das Script „tftpboot“ ist in der Variable CONFIG_EXTRA_ENV_SETTINGS definiert "tftpboot=tftp $(initrdload) initrd.bin;tftp $(kernelload) uImage;bootm\0" tftp $(initrdload) initrd.bin tftp $(kernelload) uImage bootm Ramdisk wird geladen ab der Adresse „initrdload“ Kernel wird geladen ab der Adresse „kernelload“ startet den Kernel und übergibt im die Argumente die in der Variable CONFIG_BOOTARGS stehen
Bootloader – U-Boot Wenn man soweit gekommen ist, das ein U-Boot Script automatisch ein Betriebsystem starten kann, dann hat der U-Boot seinen Zweck erfühlt.
Funktion eines Linux-Systems Komponente eines lauffähigen Linux-Systems Linux-Kernel C-Bibliothek Shell Dienst - Programme
Funktion eines Linux-Systems
Linux-Kernel Im Linux Quellen existieren zwei separate Programme Kernel mit dem Modulen Kconfig (Konfigurationsprogramm)
Linux-Kernel Neuen Kernel generieren Kernel erstellen: make xconfig Module erstellen: make modules make INSTALL_MOD_PATH=${SYSROOT} modules_install
Linux-Kernel Was sind Module? Module sind Programme wie jede andere Programme auch, nur das die im Kernel-Space ablaufen.
Root Dateisystem Filesystem Hierarchy Standard (FHS)
Root Dateisystem BusyBox => „Multi-Call Binary“ make menuconfig Programme auswählen Root Dateisystem angeben Cross-Kompiler eintragen make make install
Root Dateisystem /etc Dateien mit allgemeinen Informationen mime.types, protocols, rpc, services.
Root Dateisystem /etc Dateien mit Benutzerinformationen passwd, group, shadow.
Root Dateisystem /etc Dateien für die Netzwerkkonfiguration hosts statische Zuordnung von Hostnamen und IP- Adressen hosts.conf für Namensanfragen erst die Datei „hosts“ durchsuchen resolv.conf Eingabe eines Namensserver inetd.conf Konfigurationsdatei des inetd-Dämons exports werden lokale Verzeichnisse für NFS freigegeben host.allow Freigeben der Netzdienste host.dany Sperren der Netzdienste
Root Dateisystem /etc/sysconfig Dateien für die Netzwerkkonfiguration ifcfg-eth0 ifcfg-lo network_cfg
Root Dateisystem Init-Scripte Nach System-V-Init-Style gibt es 6 Runlevel. Runlevel 0 = Herunterfahren Runlevel 1 = Single-User Runlevel 2 = Multi-User ohne Netzwerk Runlevel 3 = Multi-User mit Netzwerk Runlevel 4 = hat keine Funktion Runlevel 5 = Multi-User mit Netzwerk und automatischen X-Start Runlevel6 = Reboot
Root Dateisystem Init-Scripte
Root Dateisystem Ramdisk erstellen #!/bin/sh cd /usr/src/root mkdir images mkdir initrd dd if=/dev/zero of=images/initrd.img bs=1k count=8192 /sbin/mke2fs -F -v -m0 images/initrd.img mount -o loop images/initrd.img initrd/ cp -av rootfs/* initrd/ umount initrd/ gzip -9 < images/initrd.img > images/initrd.bin mv images/initrd.bin /tftpboot rmdir initrd rm -r images exit 0
Entwicklungsumgebung Open-Source => Die GNU-Toolchain Toolchain = Werkzeug – Kette
Entwicklungsumgebung
Entwicklungsumgebung Windows 2000 Cygwin => „www.cygwin.com/setup“ UNIX-Umgebung wird simuliert cygwin1.dll Cygwin Programme
Entwicklungsumgebung Windows 2000 Toolchain für die ARM-Architektur Installieren: www.gnuarm.com Hauptverzeichnis: c:\GNUARM
Entwicklungsumgebung Windows 2000 Toolchain für die ARM-Architektur Verzeichnis in den Suchpfad einbinden : PATH=/GNUARM/bin:$PATH; export PATH Testen: arm.elf.gcc -v
Entwicklungsumgebung Linux Toolchain für die ARM-Architektur ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2 ftp.gnu.org/gnu/glibc/glibc-2.3.5.tar.gz ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.gz maxim.org.za/AT91RM9200/2.6/2.6.12-at91.patch.gz
da die Schritte von einander abhängig sind. Entwicklungsumgebung Linux Toolchain für die ARM-Architektur Installationsschritte: binutils-2.16.tar.gz glibc-2.3.5.tar.gz gcc-3.4.4.tar.bz2 Die Einhaltung der Reihenfolge der Installationsschritte ist zwingend notwendig, da die Schritte von einander abhängig sind.
Entwicklungsumgebung Programme Beschreibung ld Zusammenfügen der einzelnen Objekt-Dateien. Erstellen von ausführbaren Images ar Ein Tool zum Erstellen und Modifizieren von Archiven. Das Extrahieren von Code aus Bibliotheken ist ebenfalls möglich. ranlib Index über ein Archiv erzeugen readelf Anzeigen von Informationen eines ELF-Files (Object oder ausführbar) nm Auflisten von Symbolen aus Object-Dateien addr2line Ermöglicht das Konvertieren von Adressen in Dateinamen mit zugehörigen Zeilennummern. Kann bei der Fehlersuche nützlich sein. as Umsetzen von ASCIII-Quellcode in eine Objekt-Datei. gprof Anzeigen von Profiling-Informationen. Diese sind bei der Laufzeit-Analyse von Programmen sehr hilfreich. size Anzeige der Größe einzelner Sektionen innerhalb einer Objekt- oder Archiv-Datei. objcopy Kopieren und Umwandeln von Objekt-Dateien. objdump Anzeige von Informationen über Objekt-Dateien. strings Anzeige druckbarer Zeichenketten innerhalb von Dateien. strip Löschen von Symbolfunktionen aus Dateien. Das kann zu einer drastischen Reduzierung der Größe dieser Dateien führen.
Entwicklungsumgebung Fehlersuche mit Debugger „gdb“ arm-elf-gcc -g Grafische Unterstützung insight ddd
Entwicklungsumgebung IDE (Integrated Development Environment) Integrierte Entwicklungsumgebung Editor Compiler Debugger
Entwicklungsumgebung Integrierte Entwicklungsumgebung bei der SUSE 9.3 Distribution KDevelop (KDE) und Anjuta (GNOME),
Web Server
Web Server Web Technologien CGI (Common Gateway Interface) JavaScript Java-Applets Java-Servlets.
Web Server Web Technologien Allgemeiner Begriff: „Web Services“ JSP ( Java Server Pages) ASP ( Active Server Pages) PHP ( Hypertext Preprocessor) Allgemeiner Begriff: „Web Services“
Web Server Open-Source => LAMP Linux Apache MySQL Perl oder PHP
Web Server APACHE inetd standalone
Web Server Konfigurationsdateien httpd.conf srm.conf access.conf
Web Server Apache und Module Base Extension Experimental AddModule: aktiviert ein zur Verfügung stehendes Modul. ClearModuleList: deaktiviert alle zur Verfügung stehenden Module. Base Extension Experimental
Web Server Hilfsprogramme apxs wird zur Kompilierung externer Module für den Apache außerhalb des eigentlichen Kontextes verwendet (Apache Extension Tool). apachectl ist ein Shell-Skript, das den Webserver startet. start startet den Webserver stop stoppt den Webserver restart Neustart des Webservers (sendet SIGHUP an den Apache) fullstatus Ausgabe des Serverstatus status Kurzform des Serverstatus graceful "netter" Neustart (sendet SIGUSR1 an den Apache) configtest Syntaxtest der Konfigurationsdateien. ab ist ein Tool zur Durchführung von Webserver-Benchmarks. htdigest Verwaltung der Passwortdateien für die Digest-HTTPAuthentisierung. htpasswd Verwaltung der Passwortdateien für die Basic-HTTPAuthentisierung. dbmmanage Verwaltung von Passwortdateien für die HTTPAuthentisierung im DBM Format. logresolve ersetzt IP-Adressen in Logdateien durch die entsprechenden DNS- Adressen. rotatelogs Rotieren der Logdateien, ohne dass ein Anhalten des Servers notwendig ist. log_server_status schreibt den aktuellen Apache-Status in eine Logdatei.
Web Server Web-Anwendung SSI – Server Side Include zwischen dem Kommentaranfang „<!--" und dem SSI-Befehl ist kein Leerzeichen und hinter dem SSI-Befehl und vor dem Kommentarende „-->“ muss ein Leerzeichen sein.
Web Server Web-Anwendung CGI – Commom Gateway Interface Standardkonzepte von Unix Umgebungsvariablen Kommandozeilenparameter Standardeingabe (stdin) Standardausgabe (stdout) Fehlerausgabe „error.log“
Web Server Web-Anwendung CGI – Commom Gateway Interface
Web Server Web-Anwendung FastCGI Offener TCP-Port der Webserver und der Rechner, auf dem die FastCGI-Applikation läuft, in einem abgesicherten Netzsegment stehen, alle Rechner in diesem Netzsegment vertrauenswürdig sind und keine Netzverbindungen von außen auf den von der FastCGI-Applikation verwendeten TCP-Port initiiert werden können.
Web Server Der embedded Server apache-1.3.xx.tar.gz (Version 1.3)
Anwendungsbeispiel
Anwendungsbeispiel
Anwendungsbeispiel
Vielen Dank für Ihre Aufmerksamkeit! Fragen? Vielen Dank für Ihre Aufmerksamkeit!