I-RT-HOME

  1. Einführung

  2. ELinOS im RT-Lab

  3. Eigenes init-Programm

  4. Ferncompilierung

  5. Projekt MyFirst

  6. Aufgabe


I-RT05 REALZEITSYSTEME WS05
EX4: Erstellen von Zielsystemen mit ELinOS

    Achtung : Skript ist nicht notwendigerweise identisch mit den  mündlichen Erläuterungen !!!

AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: September-16, 2003
DATE OF LAST CHANGE: Dec-14,2005, 22:18h
EMAIL:doeben_at_fb2.fh-frankfurt.de



1. Einführung

Ziel der Übungen ist es, den praktischen Umgang mit konkreten Systemen einzuüben sowie Teile der theoretischen Konzepte in funktionierende Systeme umzusetzen.

Da das primäre Ziel darin besteht, Realzeitsysteme verstehen und erzeugen zu können, zielt diese Übungen darauf ab, möglichst schnell ein Verständnis für die praktische Generierung eines  Realzeitsystems zu bekommen, um so die Voraussetzungen zu schaffen, eigene Modelle gezielt implementieren zu können.

Ziel der heutigen Übung ist es, zunächst das Entwicklungswerkzeug ELinOS der Firma Sysgo AG nutzen zu lernen, ohne dass schon alle technischen und theoretischen Hintergründe geklärt sind; dies erfolgt schrittweise im Verlauf der nächsten Vorlesungen und Übungen (Achtung: für diese Übung benutzen wir nicht die neueste Version von ELinOS).

Für die ersten Beispiele wird ferner angenommen, dass diese Systeme per Diskette gebootet werden sollen. Die Libraries für Intel- und PowerPC-Plattformen stehen zur Verfügung. Wir werden zunächst nur die Intel-Plattformen berücksichtigen. Damit kann jeder das selbst erzeugte Betriebssystem auf jedem Intel-PC ausprobieren (andere Bootverfahren werden im weiteren Verlaufe noch behandelt. Wer z.B. das Booten von CD-ROM anstatt des Bootens von Floppy benutzen will, kann dies tun. Sofern die von CD-ROM bootfähige Version gut dokumentiert ist und sich durch andere reproduzieren lässt, gibt es dafür zusätzliche Übungs-Punkte).


START

2. ELinOS im RT-Lab

Die Software ELinOS steht jedem Studenten nach der Anmeldung entweder direkt im Realzeitlabor zur Verfügung oder über ssh von zu Hause aus ( 'ssh eigener_login_name@194.94.80.8' ). Die fertig kompilierten Dateien kann man dann mittels 'sftp eigener_login_name@194.94.80.8' auf den eigenen Rechner herunterladen und dort bootfähig machen. Wie dies geht, wird weiter unten beschrieben.


START

3. Eigenes init.c Programm


Das erste Projekt zur Erzeugung eines bootfähigen Systems soll gleich auch mit einer eigenen init.c Datei starten.  Damit kann man von Anbeginn festlegen, wie sich das System verhalten soll. Als Beispiel sei hier ein ganz einfaches init.c-Programm aufgelistet:




/*******************************
*
* init.c
*
* ****************************/


#include <stdio.h>
#include <unistd.h>


int main(void)
{
int i;

/***************************************
Linux doesn_t like init to finish, therefore
an infinite loop will be prepared...
***************************************/


for(;;)
{
printf("Hallo wrld!!!\n");
printf("This is the first Programm ...");
for(i=0; i<100000000; i++){;}
}

return 0;
}



Bevor dieses Programm benutzt werden kann, müssen wir zunächst ein bootfägiges System mit einer init.c-Datei erstellen, die wir dann durech unsere eigene init.c-Datei ersetzen. Dieses System erstellen wir, indem wir uns auf den FH-Informatik-Realzeit-Server einloggen und die dort installierte ELinOS-Software benutzen.


START


4. Ferncompilierung

Von zu Hause aus startet man ein Shellfesnter und gibt den Befehl ssh eigener_login@194.94.80.8 ein.  Hier mein Beispiel:
gerd@kant:~/public_html/fh/I-RT05/EX/EX4> ssh doeben@194.94.80.8
Password:
Last login: Wed Dec 14 18:27:53 2005 from .....t-dialin.net
Have a lot of fun...

doeben@webserver:~> ls
BusyBox  Desktop   devc++    I-RT05    KDesktop1   Mail  nsmail             public_html  TEST
c++      Desktop1  DISKUSSION  index.html           KDesktop  kurse.html  MND   OpenOffice.org1.1  scilab.hist

Ich lande in  meinem eigenen Homeverzeichnis.  Dort gibt es erwartungsgemäss einige Ordner. Es gibt aber noch keinen Ordner MyFirst. Es soll jetzt mit Hilfe von ELinOS ein schon bestehendes Demoprojekt 'Hello' geklont werden, und zwar in den eigenen ordner mit Namen MyFirst.


START

5. Projekt MyFirst

Wir beginnen damit, ein schon vorhandes Projekt mit Namen 'Hello' im Verzeichnis '/opt/elinos/demos' in ein lauffähiges eingebettetes System zu verwandeln.

Der erste Schritt besteht darin, einen 'Clone' dieses Projektes zu erzeugen. Dazu wird zunächst nicht das grafische Frontend benutzt, sondern die verfügbaren Shell-Befehle, hier der Befehl elinos-cloneproject im Verzeichnis /opt/elinos/bin.Bevor man mit der Generierung des Programms beginnt muss man in das Verzeichnis /opt/elinos  wechseln, da nur dort die Quota für Studenten aufgehoben ist. Man muss das Quellprojekt angeben und den Zielnamen (Die nachfolgende Bildschirmausgabe stammt von einem lokalen Linuxrechner. Die Angaben sind aber direkt übersetzbar).


doeben@webserver:~> /opt/elinos/bin/elinos-cloneproject /opt/elinos/demos/Hello MyFirst

CLONING PROJECT `MyFirst' FROM `/opt/elinos/demos/Hello'
========================================================

Checking existing project /opt/elinos/demos/Hello... ok
Checking new project MyFirst... ok
Cloning project /opt/elinos/demos/Hello as MyFirst... ok

CONFIGURING PROJECT
===================

Configuration: reading from ./project.config... ok

Current Settings:

   ELINOS_BOARD      = custom
   ELINOS_CPU        = x86
   ELINOS_ARCH       = 386
   ELINOS_LIBC       = libc6
   ELINOS_DOSNAME    = hello
   ELINOS_BOOT_STRAT = floppy

Please select your board type.
(1)     386_libc5
(2)     486_libc5
(3)     486_FPU_libc5
(4)     386_FPU_libc5
(5)     dilnet_pc_libc5
(6)     386
(7)     486
(8)     486_FPU
(9)     386_FPU
(10)    dilnet_pc
(11)    custom

Hier muss man sich für eine Architektur entscheiden. Für ältere PCs hat sich die Option '486' bewährt.


Board Type [custom]: 7

Hier folgen nun weitere Eingaben:


Project Name (8 characters at most, no blanks) [hello]: myfirst
You must now select the boot strategy for your new project:
(1)     floppy -- Floppy Bootstrap
(2)     lilo -- Hard-Disk Bootstrap
(3)     rolo -- x86 ROM Bootstrap with ROLO
(4)     rolo_rawdisk -- ROLO disk boot image (eg. for CompactFlash)
(5)     etherboot -- Diskless Network Bootstrap
(6)     etherboot_multi -- Diskless Network Bootstrap (one Image for Kernel/Root-Filesystem)
Boot Strategy: [floppy]:
Please select your kernel source tree. The suggested order is:
(1)     linux-x86-2.4.18
Kernel Source Tree [1]:
Checking Kernel-Source /opt/elinos/linux/linux-x86-2.4.18... ok
Wiping old kernel... ok
Setting up new kernel... ok
Rename mkefs script "hello.mkefs" to match new project name? [y]:

Writing file ./project.config... ok
Writing file ELINOS.sh... ok


Configuring Features in /home/profs/doeben/MyFirst
==================================================

*** initializing features
*** feature input complete
*** initializing features
*** feature input complete
*** running feature configuration scripts ...
(prepare) done.
(commit) done.
(mkefs) done.
(kernel) done.
(unkernel) done.
*** merging kernel configuration with feature-config ...

Feature build complete.

----------------------------------------------
Your new project has been set up successfully.
To work on it, type:

  sh# cd "/home/profs/doeben/MyFirst"
  sh# . ELINOS.sh
----------------------------------------------

CLONING DONE.
         

Damit sind die Vorbereitungen getroffen. Man muss jetzt nur eine Reihe von Umgebungsvariablen mittels des Shell-Scripts ELINOS.sh initialisieren. Dies tut man, indem man die Shell mit dem vorgeschalteten Punkt startet:


doeben@webserver:~> cd MyFirst
doeben@webserver:~/MyFirst> ls
app.rootfs   boot       ELINOS.sh  feature.mkefs   kernel.rootfs  makeboot  myfirst.mkefs   README
autonode.sh  configure  elk        feature.rootfs  linux          Makefile  project.config  src
doeben@webserver:~/MyFirst> . ELINOS.sh

STARTING ELINOS SESSION
=======================

Setting up CDK x86_386 for libc6

$ELINOS_BOARD      = 486
$ELINOS_BIN_PREFIX = x86_386
$ELINOS_PROJECT    = /home/profs/doeben/MyFirst
$ELINOS_DOSNAME    = myfirst
$CC                = x86_386-gcc
$CXX               = x86_386-g++
$AS                = x86_386-as
$GDB               = x86_386-gdb

Dies sind nur einige der vielen Shellvariablen, die gesetzt werden. Man koennte sich auch all anzeigen lassen. Hier nun kann man die vorerzeugte init.c-Datei durch die eigene init.c-Datei ersetzen. Dazu muss man die Datei init.c im Verzeichnis src/rc ersetzen. Dies erfolgt in 2 Schritten: (i) Löschen der vorgegebenen Datei, (ii) Hochladen der eigenen Datei.

doeben@webserver:~/MyFirst> cd src/rc
doeben@webserver:~/MyFirst/src/rc> ls
init.c  Makefile.elinos
doeben@webserver:~/MyFirst/src/rc> rm init.c
doeben@webserver:~/MyFirst/src/rc> ls
Makefile.elinos
doeben@webserver:~/MyFirst/src/rc> logout
Connection to 194.94.80.8 closed.

Nachdem man sich aus der ssh ausgelogged hat, greift man mittels sftp wieder neu zu, um die eigene Datei hochzuladen:


gerd@kant:~/public_html/fh/I-RT05/EX/EX4> sftp doeben@194.94.80.8
Connecting to 194.94.80.8...
Password:
sftp> ls
BusyBox                DISKUSSION             Desktop                Desktop1               I-RT05                 KDesktop
KDesktop1              MND                    Mail                   MyFirst                OpenOffice.org1.1      TEST
c++                    devc++            index.html             kurse.html             nsmail
public_html            scilab.hist

Nun gibt es den Ordner 'MyFirst'. In diesen muss man hineingehen und dort im Verzeichnis src/rc die neue Datei init.c ablegen:


sftp> cd MyFirst
sftp> ls
ELINOS.sh        Makefile         README           app.rootfs       autonode.sh      boot             configure        elk
feature.mkefs    feature.rootfs   kernel.rootfs    linux            makeboot         myfirst.mkefs    project.config   src
sftp> cd src/rc
sftp> ls
Makefile.elinos
sftp> lls
Aufgabe4_Fernkompilierung_EigenesProgramm.txt   Aufgabe4_Fernkompilierung.txt   BusyBox  my_init
Aufgabe4_Fernkompilierung_EigenesProgramm.txt~  Aufgabe4_Fernkompilierung.txt~  init.c
sftp> put init.c
Uploading init.c to /home/profs/doeben/MyFirst/src/rc/init.c
init.c                                                                                                    100%  463     0.5KB/s   00:00
sftp> ls
Makefile.elinos  init.c
sftp> quit

Nachdem die eigene Datei in den ordner src/rc eingefügt worden ist, muss man sich wieder mittels ssh einloggen, um den Kopiervorgang starten zu können.


gerd@kant:~/public_html/fh/I-RT05/EX/EX4>  
gerd@kant:~/public_html/fh/I-RT05/EX/EX4> ssh doeben@194.94.80.8
Password:
Last login: Wed Dec 14 19:45:34 2005 from ....t-dialin.net
Have a lot of fun...
doeben@webserver:~> ls
BusyBox  Desktop   devc++    I-RT05    KDesktop1   Mail  MyFirst  OpenOffice.org1.1  scilab.hist
c++      Desktop1  DISKUSSION  index.html           KDesktop  kurse.html  MND   nsmail   public_html        TEST
doeben@webserver:~> cd MyFirst
doeben@webserver:~/MyFirst> ls
app.rootfs   boot       ELINOS.sh  feature.mkefs   kernel.rootfs  makeboot  myfirst.mkefs   README
autonode.sh  configure  elk        feature.rootfs  linux          Makefile  project.config  src

Wir schauen kurz nach, ob auch tatsaechlich die eigene Datei vorhanden ist:


doeben@webserver:~/MyFirst> cd src/rc
doeben@webserver:~/MyFirst/src/rc> ls
init.c  Makefile.elinos
doeben@webserver:~/MyFirst/src/rc> cat init.c

/*******************************
 *
 * init.c
 *
 * ****************************/

#include <stdio.h>
#include <unistd.h>


int main(void)
{
  int i;

  /***************************************
   Linux doesn_t like init to finish, therefore
   an infinite loop will be prepared...
  ***************************************/

        for(;;)
        {
                printf("Hallo wrld!!!\n");
                printf("This is the first Programm ...");
                for(i=0; i<100000000; i++){;}
        }

        return 0;
}

Es sieht so aus. Dann starten wir den Bootprozess. Das kann etwas dauern...


doeben@webserver:~/MyFirst> make boot
Reading feature configuration ... complete
Reading implications from /opt/elinos/elk/valid.elk ... ok.
Reading implications from /home/profs/doeben/MyFirst/valid.elk ... n/a.
make -C /home/profs/doeben/MyFirst/linux symlinks clean install
make[1]: Entering directory `/home/profs/doeben/MyFirst/linux'
rm -f include/asm
( cd include ; ln -sf asm-i386 asm)
( cd drivers/rtai/include ; rm -f asm ; ln -s asm-i386 asm)
make[2]: Entering directory `/home/profs/doeben/MyFirst/linux/arch/i386/boot'
rm -f tools/build
rm -f setup bootsect zImage compressed/vmlinux.out
rm -f bsetup bbootsect bzImage compressed/bvmlinux.out
make[3]: Entering directory `/home/profs/doeben/MyFirst/linux/arch/i386/boot/compressed'
rm -f vmlinux bvmlinux _tmp_*
make[3]: Leaving directory `/home/profs/doeben/MyFirst/linux/arch/i386/boot/compressed'
make[2]: Leaving directory `/home/profs/doeben/MyFirst/linux/arch/i386/boot'
find . \( -name '*.[oas]' -o -name core -o -name '.*.flags' \) -type f -print \
| grep -v lxdialog/ | xargs rm -f


........................

Checking device node type on target file system ... device file system
Reading kernel configuration ... complete
Reading feature configuration ... complete
Running mkefs ... complete
Reading target file system ... complete
Reading implications from /opt/elinos/elk/valid.elk ... ok.
Reading implications from /home/profs/doeben/MyFirst/valid.elk ... n/a.
./makeboot myfirst.tgz
Checking for CONFIG_ELINOS_CMDLINE ... adding custom parameters:
"devfs=mount root=ramfs"

Preparing for floppy-boot:
Checking for banner ... installing default banner.
Writing syslinux.cfg ... ok.
Ok.

Nachdem alles kompiliert worden ist, fordert das Programm uns auf, die folgenden Dateien auf eine Diskette zu kopieren. Anschliessend muss die Floppy bootfähig gemacht werden.


As a final step to get a bootable floppy disk, please copy the
following files to an empty, MS-DOS formatted floppy:

   cp syslinux.cfg /floppy/syslinux.cfg
   cp banner /floppy/banner
   cp boot/vmlinuz /floppy/linux
   cp myfirst.tgz /floppy/myfirst.tgz

To make the floppy bootable, please type:

   /opt/elinos/bin/syslinux /dev/fd0

                             - NOTE -

   You may need root privileges to execute the above commands.

                             - NOTE -

   You may want to customise this script to meet any special
   requirements of your target hardware. For instance, you could
   add the commands neccessary to copy the boot files to a floppy
   disk, or to the download directory of your tftp-server.
   The script is located here:
   /home/profs/doeben/MyFirst/makeboot

Da wir aus der Ferne kein Floppy einlegen können holen wir uns die Dateien mit sftp auf den eigenen Rechner, präparieren dort eine Floppy und machen diese dann bootfähig (alternativ würde man die Dateien auf eine CD-ROM bringen oder auf einen USB-Stick. Für die vorliegende Übung werden allerdings nur Floppy oder CD-ROM akzeptiert).


doeben@webserver:~/MyFirst> logout
Connection to 194.94.80.8 closed.
gerd@kant:~/public_html/fh/I-RT05/EX/EX4> sftp doeben@194.94.80.8
Connecting to 194.94.80.8...
Password:
sftp> ls
BusyBox                DISKUSSION             Desktop                Desktop1               I-RT05                 KDesktop
KDesktop1              MND                    Mail                   MyFirst                OpenOffice.org1.1      TEST
c++                    devc++                 ergebnis_7_7_05.tgz    index.html             kurse.html             nsmail
public_html            scilab.hist
sftp> cd MyFirst
sftp> ls
ELINOS.sh        Makefile         README           app.rootfs       autonode.sh      banner           boot             configure
elk              feature.mkefs    feature.rootfs   kernel.rootfs    linux            makeboot         myfirst.mkefs    myfirst.tgz
project.config   src              syslinux.cfg
sftp> lls
Aufgabe4_Fernkompilierung_EigenesProgramm.txt   Aufgabe4_Fernkompilierung.txt   BusyBox  my_init
Aufgabe4_Fernkompilierung_EigenesProgramm.txt~  Aufgabe4_Fernkompilierung.txt~  init.c

Da es bis jetzt noch kein Verzeichnis MyFirst auf dem lokalen Rechner gibt, wird dieser Ordner jetzt angelegt, um darin die Dazeien abzulegen:

sftp> lmkdir MyFirst
sftp> lls
Aufgabe4_Fernkompilierung_EigenesProgramm.txt   Aufgabe4_Fernkompilierung.txt   BusyBox  MyFirst
Aufgabe4_Fernkompilierung_EigenesProgramm.txt~  Aufgabe4_Fernkompilierung.txt~  init.c   my_init
sftp> lcd MyFirst
sftp> lls
sftp> ls
ELINOS.sh        Makefile         README           app.rootfs       autonode.sh      banner           boot             configure
elk              feature.mkefs    feature.rootfs   kernel.rootfs    linux            makeboot         myfirst.mkefs    myfirst.tgz
project.config   src              syslinux.cfg

sftp> get banner
Fetching /home/profs/doeben/MyFirst/banner to banner
/home/profs/doeben/MyFirst/banner                                                                         100% 2532     2.5KB/s   00:00
sftp> get syslinux.cfg
Fetching /home/profs/doeben/MyFirst/syslinux.cfg to syslinux.cfg
/home/profs/doeben/MyFirst/syslinux.cfg                                                                   100%   74     0.1KB/s   00:00
sftp> get myfirst.tgz
Fetching /home/profs/doeben/MyFirst/myfirst.tgz to myfirst.tgz
/home/profs/doeben/MyFirst/myfirst.tgz                                                                    100%  161KB  80.5KB/s   00:02
sftp> cd boot
sftp> ls
System.map  vmlinuz
sftp> get vmlinuz
Fetching /home/profs/doeben/MyFirst/boot/vmlinuz to vmlinuz
/home/profs/doeben/MyFirst/boot/vmlinuz                                                                   100%  319KB  63.9KB/s   00:05
sftp> ls
System.map  vmlinuz
sftp> lls
banner  myfirst.tgz  syslinux.cfg  vmlinuz
sftp> quit

Damit sind alle Dateien im lokalen Ordner MyFirst. Damit kann man sich wieder ausloggen und die Übertragung auf die Floppy vorbereiten. Entweder man hat schon eine fertig formatierte MS-DOS-Diskette oder man muss eine erstellen. Unter Linux bieten sich folgende Befehle an:


gerd@kant:~/public_html/fh/I-RT05/EX/EX4> fdformat /dev/fd0h1440
Doppelseitig, 80 Spuren, 18 Sektoren/Spur, Totale Kapazität: 1440kB.
Formatieren ... Beendet
Überprüfen ... Beendet

Falls man die mtools installiert hat (was bei den meisten Distributionen der Fall ist), kann man nun einfach die m-Befehle benutzen:


gerd@kant:~/public_html/fh/I-RT05/EX/EX4> mformat a:
gerd@kant:~/public_html/fh/I-RT05/EX/EX4> mdir
 Volume in drive A has no label
 Volume Serial Number is 1823-3AD2
Directory for A:/

No files
                          1 457 664 bytes free

Das Floppy ist formatiert. Jetzt müssen die Dateien vom lokalen Verzeichnis auf das Floppy kopiert werden. Dabei ist zu beachten, dass die Datei mit Namen 'vmlinuz' umbenannt werden muss in 'linux'.


gerd@kant:~/public_html/fh/I-RT05/EX/EX4>  
gerd@kant:~/public_html/fh/I-RT05/EX/EX4> cd MyFirst
gerd@kant:~/public_html/fh/I-RT05/EX/EX4/MyFirst> ls
banner  myfirst.tgz  syslinux.cfg  vmlinuz
gerd@kant:~/public_html/fh/I-RT05/EX/EX4/MyFirst> mcopy syslinux.cfg banner myfirst.tgz a: 
gerd@kant:~/public_html/fh/I-RT05/EX/EX4/BusyBox> mcopy vmlinuz a:linux
gerd@kant:~/public_html/fh/I-RT05/EX/EX4/MyFirst> mdir
 Volume in drive A has no label
 Volume Serial Number is 1823-3AD2
Directory for A:/

syslinux cfg        74 2005-12-14  20:19
banner            2532 2005-12-14  20:19
myfirst  tgz    164948 2005-12-14  20:20
linux           326925 2005-12-14  20:20
        4 files             494 479 bytes
                            962 048 bytes free
               

Jetzt sind zwar alle Dateien auf dem Floppy, aber man muss es noch bootfähig machen.  Dies kann man unter Linux mit dem recht vielseitigen Programm 'syslinux' tun. Man kann sich dieses programm entweder selbst aus dem Internet herunterladen und installieren, oder aber --für den vorliegenden Fall-- einfach mittels sftp aus dem Verzeichnis /opt/elinos/bin herunterladen.

// download von syslinux

gerd@kant:~/public_html/fh/I-RT05/EX/EX4> sftp doeben@194.94.80.8
Connecting to 194.94.80.8...
Password:
sftp> cd /opt/elinos/bin
sftp> ls
autonode.pl                 autonode.sh                 ddd                         depmod.pl                   disdosbb
dismbr                      disnbi                      elinos-2.0-to-2.1           elinos-boardinfo            elinos-bsp
elinos-cloneproject         elinos-configure            elinos-get-kernels          elinos-isrv                 elinos-linkkernel
elinos-makeboot             elinos-makeboot-compat      elinos-mkext2rd.sh          elinos-netcat               elinos-newproject
elinos-qt-setup.sh          elinos-rpm                  elinos-rpm2cpio             elinos-sysinfo              elinos-tools.sh
elinos-validate             elinos-validate-tgz.pl      elinos-version              elk                         feature-config
gendiff                     gethostip                   lxdialog                    mkefs                       mkelf-linux
mkelf-menu                  mknbi-dos                   mknbi-fdos                  mknbi-linux                 mknbi-menu
mknbi-rom                   mksquashfs                  rolo                        rolo.com                    rolo.sys
syslinux                    traceanalyze                tracedcore                  tracedump                   traceview
tracevisualizer
sftp> get syslinux
Fetching /opt/elinos/bin/syslinux to syslinux
/opt/elinos/bin/syslinux                                                                                  100%  392KB  65.4KB/s   00:06
sftp> lls
Aufgabe4_Fernkompilierung_EigenesProgramm.txt   Aufgabe4_Fernkompilierung.txt   Aufgabe4_syslinux_installieren.txt  init.c   my_init
Aufgabe4_Fernkompilierung_EigenesProgramm.txt~  Aufgabe4_Fernkompilierung.txt~  BusyBox                             MyFirst  syslinux
sftp> quit

Nachdem man das Programm heruntergeladen hat, kann man mit diesem Programm dann die Diskette bootfähig machen. Dazu muss man normalerweise root sein. Statt sich als normaler User abzumelden und als root neu anzumelden kann man verschiedene Umwege gehen. einer ist der Befehl 'sudo' (:= super user do). Man gibt den Befehl ein gefolgt von dem Befehl ./syslinux und dem Argument /dev/fd0:


gerd@kant:~/public_html/fh/I-RT05/EX/EX4> sudo ./syslinux /dev/fd0
Password:
gerd@kant:~/public_html/fh/I-RT05/EX/EX4>       

Ab jetzt sollte diese Diskette von jedem geeigneten Intel-PC als Bootdiskette akzeptiert werden. Man muss sich allerdings vergewissern, dass im Falle einer bootfähigen Floppy der PC auch so eingestellt ist, dass er zunächst vom Diskettenlaufwerk aus booten will. Wenn dies der Fall ist, dann kann man nun seine eigene bootfähige Diskette in das Laufwerk schieben und zuschauen, wie der PC mit dem eigenen System bootet.......Man sollte diesen letzten Test eher nicht erst während der Übung machen. Das könnte schiefgehen.....


START


6. Aufgabe

Die Übung Nr.4 zielt darauf ab, (i) das Programm ELinOS so benutzen zu lernen, dass man eigene Betriebssystemkerne bootfähig erzeugen kann, und (ii), dass man im Rahmen des Betriebssystems ein eigenes Programm init.c implementieren kann, das das Verhalten des Systems steuert.

Erwartetes Ergebnis: eine bootfähige beschriftete Diskette mit einem eigenen ausführbaren Programm, das sich von den vorausgehenden Beispielen unterscheidet. (5 Pkt). Dazu kleiner Vortrag und Dolumentation des eigenen init.c-Programms.

Sonderpunkte: Falls ein Team es schafft, eine bootfähige CD-ROM zu erstellen, wobei der Prozess der Erstellung gut dokumentiert sein muss und von Dritten reproduzierbar ist, dann kann es  dafür bis zu 10 Pkte extra geben.


START