I-RT-HOME

  1. Problemstellung
  2. Linux Boot-Diskette
  3. Linux Boot-CD von Diskette
  4. Linux Boot-CD allgemein
  5. Linux+RTAI Boot-Diskette
  6. Linux+RTAI Boot-CD von Diskette
  7. Linux+RTAI Boot-CD allgemein
  8. Linux+RTAI nach Shortridge
  9. Testfragen


I-RT05 WS05
VL 10: Linux booten; Linux + RTAI

 Achtung : Skript gibt den mündlichen Vortrag nur teilweise wieder !!! 
Achtung : Skript noch nicht abgeschlossen !!!

AUTHOR: Gerd Döben-Henisch und der Unterstützung des A-Teams (Ayik, Krsic, Massong, Naccarato und Voscak) sowie Herrn Jozic
DATE OF FIRST GENERATION: September-16, 2003
DATE OF LAST CHANGE: May-30, 2006
EMAIL: doeben_at_fb2.fh-frankfurt.de

1. Problemstellung

Nachdem zuvor am Beispiel einer Live-CD, mit fertigem Iso-Image, gezeigt wurde, wie man Linux von der CD booten kann, auf dieser Basis einen USB-Stick analysieren kann und man dann diesen USB-Stick bootfähig machen kann, soll nun untersucht werden, wie man, ausgehend von den Quellen von Linux und RTAI zu einem Iso-Image kommen kann.


START

2. Linux Boot-Diskette (mit ELinOS)

Ein Weg, wie man von den Linux-Quellen zu einer bootfähigen Diskette kommt, wurde in Übung Nr.4 beschrieben. Ein Beispiel dazu hat auch Herr Jozic dokumentiert.


START

3. Linux Boot-CD von Boot-Diskette

Ein Weg, wie man von den Linux-Quellen mit Hilfe einer bootfähigen Diskette zu einer bootfähigen CD-ROM kommt, wurde ebenfalls von Herrn Jozic dokumentiert.


START

4. Linux Boot-CD ohne Boot-Diskette (und sogar ohne Linux zu installieren)

Ein Weg, wie man von den Linux-Quellen ohne eine bootfähige Diskette direkt zu einer bootfähigen CD-ROM kommt, wurde ebenfalls von Herrn Jozic dokumentiert. Hier gibt es eine weitere, exzellente Dokumentation des A-Teams (die Herren Ayik, Krsic, Massong, Naccarato und Voscak).  Sie benutzen eine Live-CD, um ohne Linux Linux kompilieren zu können. Ferner benutzen sie als Boot-Version unter ELinOS nicht floppy (1), sondern CD-ROM (2).

START


5. Linux+RTAI Boot-Diskette

Der einfachste Weg ist natürlich der, entsprechend den oben dokumentierten Beispielen mit Hilfe von ELinOS eine bootfähige Version aus den Quellen zu erstellen. Man muss nur die Option RTAI zusätzlich angeben.

Bevor wir ein eigene kleine Anwendung unter RTAI betrachten, schauen wir uns an, wie man mit ELinOS v2.2 ein fertiges Projekt klont, realisiert und dann, in einem weiteren Schritt, zu einem anderen Projekt abwandeln kann. Das Projekt, das wir klonen wollen, nennt sich RTAI und findet sich im demos-Ordner von /opt/elinos.

(Hinweis fuer die Umgebung Realzeitlabor: es ist möglich, als normaler User --nicht Root!-- alle Quellen zu kompilieren und eine bootfähige Diskette zu erzeugen. Man muss nach dem Einsatz von Diskettenbefehle nur darauf achten, dass --falls notwendig--, das Diskettenlaufwerk mit dem Befehl umount /media/floppy wieder freigegeben wird. Andernfalls muesste ein neuer User den PC von neuem starten, was etwas aufwendig ist...)

gerd@turing:~/public_html/fh/I-RT04/VL/VL10> /opt/elinos/bin/elinos-cloneproject /opt/elinos/demos/RTAI RTAIDEMO

CLONING PROJECT `RTAIDEMO' FROM `/opt/elinos/demos/RTAI'
========================================================

Checking existing project /opt/elinos/demos/RTAI... ok
Checking new project RTAIDEMO... ok
Cloning project /opt/elinos/demos/RTAI as RTAIDEMO... 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 = realtime
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
Board Type [custom]: 486
Project Name (8 characters at most, no blanks) [realtime]: RTAIDEMO
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]: 1
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 "realtime.mkefs" to match new project name? [y]: y

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


Configuring Features in /home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO
=========================================================================

*** 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/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO"
sh# . ELINOS.sh
----------------------------------------------

CLONING DONE.

gerd@turing:~/public_html/fh/I-RT04/VL/VL10> su
Password:
turing:/home/gerd/public_html/fh/I-RT04/VL/VL10 # cd RTAIDEMO/
turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # . ELINOS.sh
STARTING ELINOS SESSION
=======================

Setting up CDK x86_386 for libc6

$ELINOS_BOARD = 486
$ELINOS_BIN_PREFIX = x86_386
$ELINOS_PROJECT = /home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO
$ELINOS_DOSNAME = RTAIDEMO
$CC = x86_386-gcc
$CXX = x86_386-g++
$AS = x86_386-as
$GDB = x86_386-gdb

turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # l
insgesamt 70
drwxr-xr-x 8 gerd users 504 2004-12-11 15:47 ./
drwxr-xr-x 4 gerd users 472 2004-12-11 15:45 ../
drwxr-xr-x 2 gerd users 48 2004-12-11 15:45 app.rootfs/
drwxr-xr-x 2 gerd users 48 2004-12-11 15:45 boot/
lrwxrwxrwx 1 gerd users 32 2004-12-11 15:45 configure -> /opt/elinos/bin/elinos-configure*
-rw-r--r-- 1 gerd users 2732 2004-12-11 15:46 ELINOS.sh
lrwxrwxrwx 1 gerd users 19 2004-12-11 15:45 elk -> /opt/elinos/bin/elk*
-rw-r--r-- 1 gerd users 380 2004-12-11 15:47 feature.mkefs
drwxr-xr-x 3 gerd users 72 2004-12-11 15:46 feature.rootfs/
-rw-r--r-- 1 gerd users 12741 2004-12-11 15:46 .features
drwxr-xr-x 2 gerd users 48 2004-12-11 15:45 kernel.rootfs/
drwxr-xr-x 14 gerd users 688 2004-12-11 15:47 linux/
-rwxr-xr-x 1 gerd users 21761 2004-12-11 15:45 makeboot*
-rw-r--r-- 1 gerd users 5085 2004-12-11 15:45 Makefile
-rw-r--r-- 1 gerd users 885 2004-12-11 15:46 project.config
-rw-r--r-- 1 gerd users 191 2004-12-11 15:45 README
-rw-r--r-- 1 gerd users 63 2004-12-11 15:45 RTAIDEMO.mkefs
drwxr-xr-x 4 gerd users 96 2004-12-11 15:45 src/

(Anmerkung : der nachfolgende Wechsel nach root ist hier noch nicht notwendig !)

turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # make boot
Reading feature configuration ... complete
Reading implications from /opt/elinos/elk/valid.elk ... ok.
Reading implications from /home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO/valid.elk ... n/a.
make -C /home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO/linux symlinks clean install
...

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

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 RTAIDEMO.tgz /floppy/RTAIDEMO.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/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO/makeboot

Achtung: Wechsel in den normalen User-Mode!

gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> fdformat /dev/fd0h1440
Doppelseitig, 80 Spuren, 18 Sektoren/Spur, Totale Kapazität: 1440kB.
Formatieren ... Beendet
Überprüfen ... Beendet

gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> mformat a:
gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> mdir
Volume in drive A has no label
Volume Serial Number is 7E35-AA2E
Directory for A:/

No files
1 457 664 bytes free


gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> mcopy syslinux.cfg banner RTAIDEMO.tgz a:
gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> mcopy boot/vmlinuz a:linux
gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> mdir
Volume in drive A has no label
Volume Serial Number is 7E35-AA2E
Directory for A:/

syslinux cfg 78 2004-12-11 16:12
banner 2532 2004-12-11 16:12
RTAIDEMO tgz 848088 2004-12-11 16:12
linux 339599 2004-12-11 16:15
4 files 1 190 297 bytes
266 240 bytes free

gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> /opt/elinos/bin/syslinux /dev/fd0
umount: /media/floppy: Das Gerät wird momentan noch benutzt

Man muss jetzt wiedr in den root-Modus wechseln, um auf das Floppy schreiben zu können (Im Falle des Realzeitlabors ist dies nicht notwendig !).

gerd@turing:~/public_html/fh/I-RT04/VL/VL10/RTAIDEMO> su
Password:
turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # /opt/elinos/bin/syslinux /dev/fd0
mount: /dev/fd0 ist bereits eingehängt oder /tmp/syslinux.mnt.10865.0 wird gerade benutzt
mount: Laut mtab ist /dev/fd0 auf /media/floppy eingehängt

turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # umount /media/floppy
turing:/home/gerd/public_html/fh/I-RT04/VL/VL10/RTAIDEMO # /opt/elinos/bin/syslinux /dev/fd0

Wenn man den PC mit der Diskette gebootet hat, wird man aufgefordert, bestimmte Module zu laden:

insmod rtai
insmod rtai_sched_up
insmod rtai_fifos
insmod rt_process

Dann kann man sein eigenes Demoprogramm starten:

/bin/cscope

Beenden erfolgt über Ctrl-C gefolgt von

rmmod rt_process


Das Umschreiben eines geklonten Projektes: rtai_hello.c



Nach diesem vorgefertigten Beispiel aus dem demos-Verzeichnis von ELinOS hier eine Abwandlung des Beispiels mit einem eigenen kleinen Modul genannt rtai_hello.c. Man kann daran ersehen, dass sich die RTAI Module genauso wie Standard Linux-Module verhalten.

/*********************** * * rtai_hello.c * ************************/
#include <linux/module.h>
#include
<rtai.h>
#include <rtai_fifos.h>

int init_module(void) {
    rt_printk
("Hallo Real Welt...");
    rtai_print_to_screen("Hallo RT nochmal ...");
    return
0; }

void
cleanup_module(void) {
    rt_printk
("Auf wiedersehen...");
    }


MODULE_AUTHOR
("Mein Name");
MODULE_DESCRIPTION("Mein erstes Realzeit-Programm");
MODULE_LICENSE("GPL");

Dieses Beispiel beschreibt, wie eine Meldung mittels RTAI auf der Konsole ausgegeben werden kann.

Als erstes müssen die notwendigen Headerdateien eingebunden werden (module.h, rtai.h und rati_fifos). Dann muss man in dem Ordner src/rtproc die Quelldateien des ursprünglichen Projektes RTAI löschen und dafür die neue Quelldatei rtai_hello.c einfügen. Schliesslich muss man noch das Makefile ändern. Eine mögliche Version könnte lauten:


Makefile.elinos


all: rtai_hello

LINUX_DIR = $(ELINOS_PROJECT)/linux

MODULE_TARGET = $(ELINOS_PROJECT)/kernel.rootfs/lib/modules/$(KERNELRELEASE) CFLAGS = -I$(LINUX_DIR)/include -I$(LINUX_DIR)/include/linux -I$(LINUX_DIR)/drivers/rtai/include -O2 -Wall

CFLAGS_USER_APP = -O2 -Wall

rtai_hello: rtai_hello.c
$(CC) -D__KERNEL__ -DMODULE $(CFLAGS) -c $< $(LD) -r -o $@ $@.o -static -lm

install: rtai_hello
mkdir -p $(MODULE_TARGET)/rtai
cp rtai_hello $(MODULE_TARGET)/rtai/$<.o
mkdir -p $(ELINOS_PROJECT)/app.rootfs/bin

clean: rm -f *~ *.rtai_hello

distclean:

Die Variablen in diesem Makefile werden durch die vorausgehende Initialisierung mit dem Befehl . ELINOS.sh gesetzt. So hat z.B. die Variable MODULE_TARGET im Ausdruck $(MODULE_TARGET) in unserem Beispiel hat den Wert 'kernel.rootfs/lib/modules/2.4.18'

Die Variable $< hat die Bedeutung, dass der Wert der ersten Voraussetzung eingesetzt werden soll, das ist hier rtai_hello.c

Die Variable $@ hat die Bedeutung, dass der Dateiname des ersten Zieles eingesetzt werden soll, das ist hier rtai_hello

Sehr wichtig in diesem Makefile ist der Befehl install:, da durch diesen Befehl das kompilierte Modul zu den Modulen von rtai hinzugefügt wird.

Der weitere Ablauf ist wie bei dem vorausgehenden Beispiel, nur mit anderen Projektnamen.

Nach dem Booten der Diskette lautet die Befehlssequenz für das Laden der Module wie folgt:

insmod rtai
insmod rtai_sched_up
insmod rtai_fifos
insmod rtai_hello

Man sieht, dass jetzt das eigene Modul wie ein RTAI-Modul geladen wird. Die Printouts erscheinen beim Ablauf auf dem Bildschirm.

Man entfernt dieses Modul wieder durch:

rmmode rtai_hello

START

6. Linux+RTAI Boot-CD von Diskette


Analog wie oben.



START

7. Linux+RTAI Boot-CD ohne Diskette

Dieses Beispiel wurde mit dem Werkzeug eLinOS 4.0 der Firma Sysgo erstellt:


gerd@linux:~/public_html/RT/ELINOS> l

insgesamt 48

drwxr-xr-x 4 gerd users 4096 2006-05-29 20:50 ./

drwxrwxr-x 4 gerd users 4096 2006-05-29 19:41 ../

drwxr-xr-x 9 gerd users 4096 2006-05-29 20:47 Hello/

gerd@linux:~/public_html/RT/ELINOS> /opt/elinos-4.0/bin/elinos-cloneproject /opt/elinos-4.0/demos/RTAI RTAI


CLONING PROJECT `RTAI' FROM `/opt/elinos-4.0/demos/RTAI'

========================================================


Checking existing project /opt/elinos-4.0/demos/RTAI ... ok

Checking new project RTAI ... ok

Cloning project /opt/elinos-4.0/demos/RTAI as RTAI ... ok


CONFIGURING PROJECT

===================


Initializing ELinOS and project dependent configuration mask ...

Collecting project environment: CDK, boot strategies, boards. Done.

Creating configuration section 'Project settings'

Creating configuration section 'Board selection'

Creating configuration section 'CPU'

Creating configuration section 'Architecture'

Creating configuration section 'Library'

Creating configuration section 'Boot strategy'

Creating configuration section 'Kernel'

Configuration:

Preparation and editing of .elinosproject ...

Current Settings:


ELINOS_PREFIX = /opt/elinos-4.0

ELINOS_BOARD = 486_FPU

ELINOS_CPU = x86

ELINOS_ARCH = 486

ELINOS_LIBC = glibc-2.3.4

ELINOS_DOSNAME = RTAI

ELINOS_BOOT_STRAT = cdrom

ELINOS_KERNELPATH = linux/linux-x86-2.4.31


Checking Kernel-Source /opt/elinos-4.0/linux/linux-x86-2.4.31 ... ok

Wiping old kernel ... ok

Setting up new kernel ... ok

*** 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.


Renaming mkefs script "realtime.mkefs" to match new project name.


Writing file ELINOS.sh ... ok

----------------------------------------------

Your new project has been set up successfully.

To work on it, type:


sh# cd "/home/gerd/public_html/RT/ELINOS/RTAI"

sh# . ELINOS.sh

----------------------------------------------


CLONING DONE.


gerd@linux:~/public_html/RT/ELINOS> l

insgesamt 52

drwxr-xr-x 5 gerd users 4096 2006-05-30 07:17 ./

drwxrwxr-x 4 gerd users 4096 2006-05-29 19:41 ../

-rw-r--r-- 1 gerd users 12983 2006-05-29 19:41 elinos_v4.0_installation_290506.odt

drwxr-xr-x 9 gerd users 4096 2006-05-29 20:47 Hello/

-rw-r--r-- 1 gerd users 16217 2006-05-29 22:45 hello_bsp_fuer CDROM_290506.odt

drwxr-xr-x 2 gerd users 4096 2006-05-29 20:51 isolinux/

drwxr-xr-x 10 gerd users 4096 2006-05-30 07:20 RTAI/

gerd@linux:~/public_html/RT/ELINOS> cd RTAI

gerd@linux:~/public_html/RT/ELINOS/RTAI> . ELINOS.sh

STARTING ELINOS SESSION

=======================


Setting up CDK x86_486 for glibc-2.3.4


$ELINOS_PREFIX = /opt/elinos-4.0

$ELINOS_BOARD = 486_FPU

$ELINOS_BIN_PREFIX = x86_486

$ELINOS_BOOT_STRAT = cdrom

$ELINOS_KERNELPATH = linux/linux-x86-2.4.31

$ELINOS_PROJECT = /home/gerd/public_html/RT/ELINOS/RTAI

$ELINOS_DOSNAME = RTAI

$CC = x86_486-gcc

$CXX = x86_486-g++

$AS = x86_486-as

$GDB = x86_486-gdb


gerd@linux:~/public_html/RT/ELINOS/RTAI> make boot

.

.

.


make[3]: Leaving directory `/home/gerd/public_html/RT/ELINOS/RTAI/linux/arch/i386/boot/compressed'

gcc -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o tools/build tools/build.c -I/home/gerd/public_html/RT/ELINOS/RTAI/linux/include

x86_486-objcopy -O binary -R .note -R .comment -S compressed/bvmlinux compressed/bvmlinux.out

tools/build -b bbootsect bsetup compressed/bvmlinux.out CURRENT > bzImage

Root device is (3, 2)

Boot sector 512 bytes.

Setup is 2524 bytes.

System is 337 kB

make[2]: Leaving directory `/home/gerd/public_html/RT/ELINOS/RTAI/linux/arch/i386/boot'

make[1]: Leaving directory `/home/gerd/public_html/RT/ELINOS/RTAI/linux'

Checking for mkisofs ... ok.

Checking for banner ... installing default banner.

Writing isolinux.cfg ... ok.

Preparing kernel and filesystem images ... ok.

Creating ISO filesystem .../usr/bin/mkisofs: The option '-L' is reserved by POSIX.1-2001.

/usr/bin/mkisofs: The option '-L' means 'follow all symbolic links'.

/usr/bin/mkisofs: Mkisofs-2.02 will introduce POSIX semantics for '-L'.

/usr/bin/mkisofs: Use -allow-leading-dots in future to get old mkisofs behavior.

Warning: creating filesystem that does not conform to ISO-9660.

INFO: UTF-8 character encoding detected by locale settings.

Assuming UTF-8 encoded filenames on source filesystem,

use -input-charset to override.

Size of boot image is 4 sectors -> No emulation

Total translation table size: 2048

Total rockridge attributes bytes: 866

Total directory bytes: 2048

Path table size(bytes): 26

Max brk space used 0

762 extents written (1 MB)

ok.

The CDROM Image is /home/gerd/public_html/RT/ELINOS/RTAI/boot/RTAI.iso

Now you can burn the CDROM with cdrecord or something else

- 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/gerd/public_html/RT/ELINOS/RTAI/custom.boot

Edit the "final_steps" part, where you currently find this note.



gerd@linux:~/public_html/RT/ELINOS/RTAI> cdrecord speed=40 dev=/dev/hdd boot/RTAI.iso

cdrecord: No write mode specified.

cdrecord: Asuming -tao mode.

cdrecord: Future versions of cdrecord may have different drive dependent defaults.

cdrecord: Continuing in 5 seconds...

Cdrecord-Clone 2.01 (i686-suse-linux) Copyright (C) 1995-2004 Jörg Schilling

Note: This version is an unofficial (modified) version

Note: and therefore may have bugs that are not present in the original.

Note: Please send bug reports or support requests to http://www.suse.de/feedback

Note: The author of cdrecord should not be bothered with problems in this version.

cdrecord: Operation not permitted. WARNING: Cannot set RR-scheduler

cdrecord: Permission denied. WARNING: Cannot set priority using setpriority().

cdrecord: WARNING: This causes a high risk for buffer underruns.

cdrecord: Warning: not running as root user, fs= option ignored.

scsidev: '/dev/hdd'

devname: '/dev/hdd'

scsibus: -2 target: -2 lun: -2

Warning: Open by 'devname' is unintentional and not supported.

Linux sg driver version: 3.5.27

Using libscg version 'schily-0.8'.

cdrecord: Warning: using inofficial libscg transport code version (okir@suse.de-scsi-linux-sg.c-1.83-resmgr-patch '@(#)scsi-linux-sg.c 1.83 04/05/20 Copyright 1997 J. Schilling').

Device type : Removable CD-ROM

Version : 0

Response Format: 1

Vendor_info : 'CD-R/RW '

Identifikation : 'CW099D CD-R/RW '

Revision : '12SM'

Device seems to be: Generic mmc CD-RW.

Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).

Driver flags : MMC-3 SWABAUDIO BURNFREE

Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R

Starting to write CD/DVD at speed 40 in real TAO mode for single session.

Last chance to quit, starting real write 0 seconds. Operation starts.

Track 01: Total bytes read/written: 1560576/1560576 (762 sectors).

gerd@linux:~/public_html/RT/ELINOS/RTAI>



Mit zusätzlichen Optionen: -v -tao -eject und user: root



gerd@linux:~/public_html/RT/ELINOS/RTAI> su

Password:

linux:/home/gerd/public_html/RT/ELINOS/RTAI # cdrecord -v speed=40 dev=/dev/hdd -tao -eject boot/RTAI.iso

Cdrecord-Clone 2.01 (i686-suse-linux) Copyright (C) 1995-2004 Jörg Schilling

Note: This version is an unofficial (modified) version

Note: and therefore may have bugs that are not present in the original.

Note: Please send bug reports or support requests to http://www.suse.de/feedback

Note: The author of cdrecord should not be bothered with problems in this version.

TOC Type: 1 = CD-ROM

scsidev: '/dev/hdd'

devname: '/dev/hdd'

scsibus: -2 target: -2 lun: -2

Warning: Open by 'devname' is unintentional and not supported.

Linux sg driver version: 3.5.27

Using libscg version 'schily-0.8'.

cdrecord: Warning: using inofficial libscg transport code version (okir@suse.de-scsi-linux-sg.c-1.83-resmgr-patch '@(#)scsi-linux-sg.c 1.83 04/05/20 Copyright 1997 J. Schilling').

SCSI buffer size: 64512

atapi: 1

Device type : Removable CD-ROM

Version : 0

Response Format: 1

Vendor_info : 'CD-R/RW '

Identifikation : 'CW099D CD-R/RW '

Revision : '12SM'

Device seems to be: Generic mmc CD-RW.

Current: 0x0009

Profile: 0x000A

Profile: 0x0009 (current)

Profile: 0x0008

Profile: 0x0002 (current)

Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr).

Driver flags : MMC-3 SWABAUDIO BURNFREE

Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R

Drive buf size : 1951488 = 1905 KB

FIFO size : 4194304 = 4096 KB

Track 01: data 1 MB

Total size: 1 MB (00:10.18) = 764 sectors

Lout start: 2 MB (00:12/14) = 764 sectors

Current Secsize: 2048

ATIP info from disk:

Indicated writing power: 5

Is not unrestricted

Is not erasable

Disk sub type: Medium Type B, low Beta category (B-) (4)

ATIP start of lead in: -11834 (97:24/16)

ATIP start of lead out: 359849 (79:59/74)

Disk type: Short strategy type (Phthalocyanine or similar)

Manuf. index: 24

Manufacturer: SONY Corporation

Blocks total: 359849 Blocks current: 359849 Blocks remaining: 359085

Starting to write CD/DVD at speed 32 in real TAO mode for single session.

Last chance to quit, starting real write 0 seconds. Operation starts.

Waiting for reader process to fill input buffer ... input buffer ready.

BURN-Free is OFF.

Performing OPC...

Starting new track at sector: 0

Track 01: 1 of 1 MB written (fifo 100%) [buf 76%] 181.0x.

Track 01: Total bytes read/written: 1560576/1560576 (762 sectors).

Writing time: 8.340s

Average write speed 2.5x.

Fixating...

Fixating time: 19.267s

cdrecord: fifo had 25 puts and 25 gets.

cdrecord: fifo was 0 times empty and 0 times full, min fill was 100%.

linux:/home/gerd/public_html/RT/ELINOS/RTAI #

START


8. Linux+RTAI nach Shortridge


Wer ein bootfähiges Medium mit Linux und RTAI ohne die Hilfe von ELinOS erstellen will,der muss sich die entsprechenden Quellen in den passenden Versionen samt den zugehörigen Built-Werkzeugen selbst zusammenstellen und 'per Hand' ausführen. Die wohl ausführlichste Dokumentation zu diesem Prozess stellt der Artikel von Shortridge dar (siehe: http://www.aao.gov.au/local/www/ks/documents/RTAI_Install.pdf oder lokal). Wie eigene Experimente aber schnell zeigen, ist dies nicht so 'leichtgängig' wie das Arbeiten mit einem entsprechend ausgelegten Werkzeug.

Idealerweise sollte man als Umgebung für die Kompilierung eine Distribution wählen, die den gleichen Kernel hat. Dies hat den Vorteil, dass die entsprechenden Entwicklungswerkzeuge schon verfügbar sind.

Folgende konkreten Tests:

Test 1 auf Laptop Dell Latitude 100L mit Suse 10.0 mit Kernel 2.6.13-15.7 als Umgebung.



Einrichtung eines Verzeichnisses:


/home/gerd/KERNEL/RTAI


In dieses Verzeichnis die Quellen von RTAI und Linux:


gerd@linux:~/KERNEL/RTAI> cd KERNEL/RTAI

gerd@linux:~/KERNEL/RTAI> bunzip rtai-3.2.tar.bz2

gerd@linux:~/KERNEL/RTAI> tar -xzvf linux-2.6.10.tar.gz

gerd@linux:~/KERNEL/RTAI> tar -xf rtai-3.2.tar

gerd@linux:~/KERNEL/RTAI> l

insgesamt 56648

drwxr-xr-x 4 gerd users 4096 2006-01-18 09:59 ./

drwxr-xr-x 3 gerd users 4096 2006-01-18 09:55 ../

drwxr-xr-x 18 gerd users 4096 2004-12-24 22:35 linux-2.6.10/

-rw-r--r-- 1 gerd users 45799369 2006-01-12 08:58 linux-2.6.10.tar.gz

drwxr-xr-x 7 gerd users 4096 2005-05-10 14:00 rtai-3.2/

-rw-r--r-- 1 gerd users 12124160 2006-01-11 22:35 rtai-3.2.tar


gerd@linux:~/KERNEL/RTAI/linux-2.6.10> cp arch/i386/defconfig .config

gerd@linux:~/KERNEL/RTAI/linux-2.6.10> make oldconfig

gerd@linux:~/KERNEL/RTAI/linux-2.6.10> make xconfig


gerd@linux:~/KERNEL/RTAI/linux-2.6.10> make bzImage

CHK include/linux/version.h

SPLIT include/linux/autoconf.h -> include/config/*

HOSTCC scripts/basic/fixdep

scripts/basic/fixdep.c: In Funktion »parse_config_file«:

scripts/basic/fixdep.c:245: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »use_config« unterscheiden sich im Vorzeichenbesitz

scripts/basic/fixdep.c: In Funktion »parse_dep_file«:

scripts/basic/fixdep.c:299: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strchr« unterscheiden sich im Vorzeichenbesitz

scripts/basic/fixdep.c:299: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

HOSTCC scripts/basic/split-include

scripts/basic/split-include.c: In Funktion »main«:

scripts/basic/split-include.c:113: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

HOSTCC scripts/basic/docproc

scripts/basic/docproc.c: In Funktion »find_export_symbols«:

scripts/basic/docproc.c:184: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

scripts/basic/docproc.c:185: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

scripts/basic/docproc.c:202: Warnung: Zeigerziele bei Übergabe des Arguments 2 von »add_new_symbol« unterscheiden sich im Vorzeichenbesitz

scripts/basic/docproc.c: In Funktion »singfunc«:

scripts/basic/docproc.c:274: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

scripts/basic/docproc.c: In Funktion »parse_file«:

scripts/basic/docproc.c:296: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

CC scripts/mod/empty.o

HOSTCC scripts/mod/mk_elfconfig

MKELF scripts/mod/elfconfig.h

HOSTCC scripts/mod/file2alias.o

HOSTCC scripts/mod/modpost.o

HOSTCC scripts/mod/sumversion.o

scripts/mod/sumversion.c: In Funktion »parse_file«:

scripts/mod/sumversion.c:260: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »grab_file« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:277: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »parse_string« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:283: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »parse_comment« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c: In Funktion »parse_source_files«:

scripts/mod/sumversion.c:335: Warnung: Zeigerziele in Initialisierung unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:344: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:357: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »parse_file« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c: In Funktion »strip_rcs_crap«:

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:463: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strncmp« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:467: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:467: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:467: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:483: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c:484: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/mod/sumversion.c: In Funktion »maybe_frob_rcs_version«:

scripts/mod/sumversion.c:494: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strip_rcs_crap« unterscheiden sich im Vorzeichenbesitz

HOSTLD scripts/mod/modpost

HOSTCC scripts/kallsyms

scripts/kallsyms.c: In Funktion »read_symbol«:

scripts/kallsyms.c:152: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:153: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strcpy« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c: In Funktion »symbol_valid«:

scripts/kallsyms.c:190: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strstr« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strlen« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

scripts/kallsyms.c:194: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »__builtin_strcmp« unterscheiden sich im Vorzeichenbesitz

HOSTCC scripts/conmakehash

scripts/conmakehash.c: In Funktion »getunicode«:

scripts/conmakehash.c:36: Warnung: Zeigerziele in Initialisierung unterscheiden sich im Vorzeichenbesitz

scripts/conmakehash.c:44: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

scripts/conmakehash.c:45: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »strtol« unterscheiden sich im Vorzeichenbesitz

CC arch/i386/kernel/asm-offsets.s

CHK include/asm-i386/asm_offsets.h

init/main.c: In Funktion »maxcpus«:

init/main.c:150: Warnung: Zeigerziele bei Übergabe des Arguments 2 von »get_option« unterscheiden sich im Vorzeichenbesitz

CHK include/linux/compile.h

UPD include/linux/compile.h

CC init/version.o

CC init/do_mounts.o

LD init/mounts.o

CC init/initramfs.o

init/initramfs.c: In Funktion »flush_window«:

init/initramfs.c:402: Warnung: Zeigerziele bei Übergabe des Arguments 1 von »flush_buffer« unterscheiden sich im Vorzeichenbesitz

init/initramfs.c: In Funktion »unpack_to_rootfs«:

init/initramfs.c:443: Warnung: Zeigerziele in Zuweisung unterscheiden sich im Vorzeichenbesitz

LD init/built-in.o

HOSTCC usr/gen_init_cpio

CHK usr/initramfs_list

UPD usr/initramfs_list

CPIO usr/initramfs_data.cpio

GZIP usr/initramfs_data.cpio.gz

AS usr/initramfs_data.o

LD usr/built-in.o

CC arch/i386/kernel/process.o

arch/i386/kernel/process.c: In Funktion »show_regs«:

arch/i386/kernel/process.c:262: Warnung: Zeigerziele bei Übergabe des Arguments 2 von »show_trace« unterscheiden sich im Vorzeichenbesitz

{standard input}: Assembler messages:

{standard input}:893: Error: suffix or operands invalid for `mov'

{standard input}:894: Error: suffix or operands invalid for `mov'

{standard input}:1102: Error: suffix or operands invalid for `mov'

{standard input}:1103: Error: suffix or operands invalid for `mov'

{standard input}:1182: Error: suffix or operands invalid for `mov'

{standard input}:1183: Error: suffix or operands invalid for `mov'

{standard input}:1253: Error: suffix or operands invalid for `mov'

{standard input}:1254: Error: suffix or operands invalid for `mov'

{standard input}:1388: Error: suffix or operands invalid for `mov'

{standard input}:1400: Error: suffix or operands invalid for `mov'

make[1]: *** [arch/i386/kernel/process.o] Fehler 1

make: *** [arch/i386/kernel] Fehler 2

gerd@linux:~/KERNEL/RTAI/linux-2.6.10>

Bevor man das im Detail analysiert ein anderer Versuch:


Test2 mit PC (CPU Intel Celeron 2 GHZ und Matrox G400 und RTL-8139) mit  Suse 9.2 und Kernel 2.6.8-24


gerd@kant:~> cd KERNEL/RTAI

gerd@kant:~/KERNEL/RTAI> l

insgesamt 37084

drwxr-xr-x 2 gerd users 120 2006-01-18 16:13 ./

drwxr-xr-x 3 gerd users 72 2006-01-18 16:06 ../

-rw-r--r-- 1 gerd users 36261440 2006-01-18 15:09 linux-2.6.9.tar.bz2

-rw-r--r-- 1 gerd users 1671644 2006-01-11 22:54 rtai-3.2.tar.bz2


gerd@kant:~/KERNEL/RTAI> bunzip2 linux-2.6.9.tar.bz2

gerd@kant:~/KERNEL/RTAI> l

insgesamt 201653

drwxr-xr-x 2 gerd users 112 2006-01-18 16:16 ./

drwxr-xr-x 3 gerd users 72 2006-01-18 16:06 ../

-rw-r--r-- 1 gerd users 204615680 2006-01-18 15:09 linux-2.6.9.tar

-rw-r--r-- 1 gerd users 1671644 2006-01-11 22:54 rtai-3.2.tar.bz2

gerd@kant:~/KERNEL/RTAI> tar -xf linux-2.6.9.tar

gerd@kant:~/KERNEL/RTAI> bunzip2 rtai-3.2.tar.bz2

gerd@kant:~/KERNEL/RTAI> l

insgesamt 211867

drwxr-xr-x 3 gerd users 144 2006-01-18 16:18 ./

drwxr-xr-x 3 gerd users 72 2006-01-18 16:06 ../

drwxr-xr-x 18 gerd users 600 2004-10-18 23:55 linux-2.6.9/

-rw-r--r-- 1 gerd users 204615680 2006-01-18 15:09 linux-2.6.9.tar

-rw-r--r-- 1 gerd users 12124160 2006-01-11 22:54 rtai-3.2.tar

gerd@kant:~/KERNEL/RTAI> tar -xf rtai-3.2.tar

gerd@kant:~/KERNEL/RTAI> l

insgesamt 211867

drwxr-xr-x 4 gerd users 168 2006-01-18 16:18 ./

drwxr-xr-x 3 gerd users 72 2006-01-18 16:06 ../

drwxr-xr-x 18 gerd users 600 2004-10-18 23:55 linux-2.6.9/

-rw-r--r-- 1 gerd users 204615680 2006-01-18 15:09 linux-2.6.9.tar

drwxr-xr-x 7 gerd users 456 2005-05-10 14:00 rtai-3.2/

-rw-r--r-- 1 gerd users 12124160 2006-01-11 22:54 rtai-3.2.tar


gerd@kant:~/KERNEL/RTAI> cd linux-2.6.9

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> l

insgesamt 242

drwxr-xr-x 18 gerd users 600 2004-10-18 23:55 ./

drwxr-xr-x 4 gerd users 168 2006-01-18 16:18 ../

drwxr-xr-x 24 gerd users 584 2004-10-18 23:53 arch/

-rw-r--r-- 1 gerd users 18691 2004-10-18 23:54 COPYING

-rw-r--r-- 1 gerd users 88031 2004-10-18 23:54 CREDITS

drwxr-xr-x 2 gerd users 920 2004-10-18 23:55 crypto/

drwxr-xr-x 45 gerd users 4328 2004-10-18 23:55 Documentation/

drwxr-xr-x 46 gerd users 1176 2004-10-18 23:55 drivers/

drwxr-xr-x 54 gerd users 2864 2004-10-18 23:55 fs/

drwxr-xr-x 36 gerd users 944 2004-10-18 23:53 include/

drwxr-xr-x 2 gerd users 392 2004-10-18 23:55 init/

drwxr-xr-x 2 gerd users 304 2004-10-18 23:55 ipc/

drwxr-xr-x 3 gerd users 1216 2004-10-18 23:55 kernel/

drwxr-xr-x 4 gerd users 960 2004-10-18 23:55 lib/

-rw-r--r-- 1 gerd users 54549 2004-10-18 23:54 MAINTAINERS

-rw-r--r-- 1 gerd users 42213 2004-10-18 23:54 Makefile

drwxr-xr-x 2 gerd users 1088 2004-10-18 23:55 mm/

drwxr-xr-x 32 gerd users 968 2004-10-18 23:55 net/

-rw-r--r-- 1 gerd users 13970 2004-10-18 23:55 README

-rw-r--r-- 1 gerd users 2815 2004-10-18 23:54 REPORTING-BUGS

drwxr-xr-x 9 gerd users 1280 2004-10-18 23:55 scripts/

drwxr-xr-x 3 gerd users 272 2004-10-18 23:55 security/

drwxr-xr-x 15 gerd users 496 2004-10-18 23:55 sound/

drwxr-xr-x 2 gerd users 136 2004-10-18 23:55 usr/

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> patch -p1 < ../rtai-3.2/base/arch/i386/patches/hal-linux-2.6.9-i386-r9.patch

patching file Documentation/adeos.txt

patching file Makefile

patching file adeos/Kconfig

patching file adeos/Makefile

patching file adeos/generic.c

patching file adeos/x86.c

patching file arch/i386/Kconfig

patching file arch/i386/kernel/Makefile

patching file arch/i386/kernel/adeos.c

patching file arch/i386/kernel/apic.c

patching file arch/i386/kernel/cpu/mcheck/p4.c

patching file arch/i386/kernel/cpu/mtrr/cyrix.c

patching file arch/i386/kernel/cpu/mtrr/generic.c

patching file arch/i386/kernel/cpu/mtrr/state.c

patching file arch/i386/kernel/entry.S

patching file arch/i386/kernel/i386_ksyms.c

patching file arch/i386/kernel/i8259.c

patching file arch/i386/kernel/io_apic.c

patching file arch/i386/kernel/irq.c

patching file arch/i386/kernel/process.c

patching file arch/i386/kernel/smp.c

patching file arch/i386/kernel/smpboot.c

patching file arch/i386/kernel/time.c

patching file arch/i386/kernel/timers/timer_pit.c

patching file arch/i386/kernel/timers/timer_tsc.c

patching file arch/i386/kernel/traps.c

patching file arch/i386/mm/fault.c

patching file arch/i386/mm/ioremap.c

patching file include/asm-i386/adeos.h

patching file include/asm-i386/io_apic.h

patching file include/asm-i386/mach-default/do_timer.h

patching file include/asm-i386/mach-default/irq_vectors.h

patching file include/asm-i386/mach-visws/do_timer.h

patching file include/asm-i386/mach-visws/irq_vectors.h

patching file include/asm-i386/msi.h

patching file include/asm-i386/pgalloc.h

patching file include/asm-i386/smp.h

patching file include/asm-i386/spinlock.h

patching file include/asm-i386/system.h

patching file include/linux/adeos.h

patching file include/linux/init_task.h

patching file include/linux/preempt.h

patching file include/linux/sched.h

patching file init/Kconfig

patching file init/main.c

patching file kernel/Makefile

patching file kernel/adeos.c

patching file kernel/exit.c

patching file kernel/fork.c

patching file kernel/panic.c

patching file kernel/printk.c

patching file kernel/sched.c

patching file kernel/signal.c

patching file kernel/sysctl.c

patching file mm/vmalloc.c



gerd@kant:~/KERNEL/RTAI/linux-2.6.9> cp arch/i386/defconfig .config

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> l

insgesamt 270

drwxr-xr-x 19 gerd users 648 2006-01-18 16:24 ./

drwxr-xr-x 4 gerd users 168 2006-01-18 16:18 ../

drwxr-xr-x 2 gerd users 152 2006-01-18 16:21 adeos/

drwxr-xr-x 24 gerd users 584 2004-10-18 23:53 arch/

-rw-r--r-- 1 gerd users 26771 2006-01-18 16:24 .config

-rw-r--r-- 1 gerd users 18691 2004-10-18 23:54 COPYING

-rw-r--r-- 1 gerd users 88031 2004-10-18 23:54 CREDITS

drwxr-xr-x 2 gerd users 920 2004-10-18 23:55 crypto/

drwxr-xr-x 45 gerd users 4360 2006-01-18 16:21 Documentation/

drwxr-xr-x 46 gerd users 1176 2004-10-18 23:55 drivers/

drwxr-xr-x 54 gerd users 2864 2004-10-18 23:55 fs/

drwxr-xr-x 36 gerd users 944 2004-10-18 23:53 include/

drwxr-xr-x 2 gerd users 392 2006-01-18 16:21 init/

drwxr-xr-x 2 gerd users 304 2004-10-18 23:55 ipc/

drwxr-xr-x 3 gerd users 1240 2006-01-18 16:21 kernel/

drwxr-xr-x 4 gerd users 960 2004-10-18 23:55 lib/

-rw-r--r-- 1 gerd users 54549 2004-10-18 23:54 MAINTAINERS

-rw-r--r-- 1 gerd users 42244 2006-01-18 16:21 Makefile

drwxr-xr-x 2 gerd users 1088 2006-01-18 16:21 mm/

drwxr-xr-x 32 gerd users 968 2004-10-18 23:55 net/

-rw-r--r-- 1 gerd users 13970 2004-10-18 23:55 README

-rw-r--r-- 1 gerd users 2815 2004-10-18 23:54 REPORTING-BUGS

drwxr-xr-x 9 gerd users 1280 2004-10-18 23:55 scripts/

drwxr-xr-x 3 gerd users 272 2004-10-18 23:55 security/

drwxr-xr-x 15 gerd users 496 2004-10-18 23:55 sound/

drwxr-xr-x 2 gerd users 136 2004-10-18 23:55 usr/


############

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make xconfig

....


RealTek RTL-8139 PCI Fast Ethernet Adapter support (8139TOO)


This is a driver for the Fast Ethernet PCI network cards based on

the RTL8139 chips. If you have one of those, say Y and read

the Ethernet-HOWTO <http://www.tldp.org/docs.html#howto>.


To compile this driver as a module, choose M here: the module

will be called 8139too. This is recommended.


--------------



Loopback device support (BLK_DEV_LOOP)


Saying Y here will allow you to use a regular file as a block

device; you can then create a file system on that block device and

mount it just as you would mount other block devices such as hard

drive partitions, CD-ROM drives or floppy drives. The loop devices

are block special device files with major number 7 and typically

called /dev/loop0, /dev/loop1 etc.


This is useful if you want to check an ISO 9660 file system before

burning the CD, or if you want to use floppy images without first

writing them to floppy. Furthermore, some Linux distributions avoid

the need for a dedicated Linux partition by keeping their complete

root file system inside a DOS FAT file using this loop device

driver.


To use the loop device, you need the losetup utility, found in the

util-linux package, see

<ftp://ftp.kernel.org/pub/linux/utils/util-linux/>.


The loop device driver can also be used to "hide" a file system in

a disk partition, floppy, or regular file, either using encryption

(scrambling the data) or steganography (hiding the data in the low

bits of, say, a sound file). This is also safe if the file resides

on a remote file server.


There are several ways of encrypting disks. Some of these require

kernel patches. The vanilla kernel offers the cryptoloop option

and a Device Mapper target (which is superior, as it supports all

file systems). If you want to use the cryptoloop, say Y to both

LOOP and CRYPTOLOOP, and make sure you have a recent (version 2.12

or later) version of util-linux. Additionally, be aware that

the cryptoloop is not safe for storing journaled filesystems.


Note that this loop device has nothing to do with the loopback

device used for network connections from the machine to itself.


To compile this driver as a module, choose M here: the

module will be called loop.


Most users will answer N here.


------------------

Pipeline profiling (ADEOS_PROFILING)


This option activates the profiling code which collects the

timestamps needed to measure the propagation time of

interrupts through the pipeline. Say N if unsure.


------------

Enhanced Real Time Clock Support (RTC)


If you say Y here and create a character special file /dev/rtc with

major number 10 and minor number 135 using mknod ("man mknod"), you

will get access to the real time clock (or hardware clock) built

into your computer.


Every PC has such a clock built in. It can be used to generate

signals from as low as 1Hz up to 8192Hz, and can also be used

as a 24 hour alarm. It reports status information via the file

/proc/driver/rtc and its behaviour is set by various ioctls on

/dev/rtc.


If you run Linux on a multiprocessor machine and said Y to

"Symmetric Multi Processing" above, you should say Y here to read

and set the RTC in an SMP compatible fashion.


If you think you have a use for such a device (such as periodic data

sampling), then say Y here, and read <file:Documentation/rtc.txt>

for details.


To compile this driver as a module, choose M here: the

module will be called rtc.

##############



gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make dep

*** Warning: make dep is unnecessary now.

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make clean


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


gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make bzImage



gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make dep

*** Warning: make dep is unnecessary now.

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make clean

gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make bzImage

CHK include/linux/version.h

UPD include/linux/version.h

SYMLINK include/asm -> include/asm-i386

SPLIT include/linux/autoconf.h -> include/config/*

HOSTCC scripts/basic/fixdep

HOSTCC scripts/basic/split-include

HOSTCC scripts/basic/docproc

CC scripts/mod/empty.o

HOSTCC scripts/mod/mk_elfconfig

MKELF scripts/mod/elfconfig.h

HOSTCC scripts/mod/file2alias.o

HOSTCC scripts/mod/modpost.o

HOSTCC scripts/mod/sumversion.o

HOSTLD scripts/mod/modpost

HOSTCC scripts/kallsyms

HOSTCC scripts/conmakehash

CC arch/i386/kernel/asm-offsets.s

CHK include/asm-i386/asm_offsets.h

UPD include/asm-i386/asm_offsets.h

CC init/main.o

CHK include/linux/compile.h

UPD include/linux/compile.h

CC init/version.o

CC init/do_mounts.o

LD init/mounts.o

CC init/initramfs.o

LD init/built-in.o

HOSTCC usr/gen_init_cpio

CPIO usr/initramfs_data.cpio

GZIP usr/initramfs_data.cpio.gz

AS usr/initramfs_data.o

LD usr/built-in.o

CC arch/i386/kernel/process.o

CC arch/i386/kernel/semaphore.o

CC arch/i386/kernel/signal.o

AS arch/i386/kernel/entry.o

CC arch/i386/kernel/traps.o

CC arch/i386/kernel/irq.o

CC arch/i386/kernel/vm86.o

CC arch/i386/kernel/ptrace.o

CC arch/i386/kernel/i8259.o

CC arch/i386/kernel/ioport.o

CC arch/i386/kernel/ldt.o

CC arch/i386/kernel/setup.o

CC arch/i386/kernel/time.o

CC arch/i386/kernel/sys_i386.o

CC arch/i386/kernel/pci-dma.o

CC arch/i386/kernel/i386_ksyms.o

CC arch/i386/kernel/i387.o

CC arch/i386/kernel/dmi_scan.o

CC arch/i386/kernel/bootflag.o

CC arch/i386/kernel/doublefault.o

CC arch/i386/kernel/acpi/boot.o

CC arch/i386/kernel/acpi/sleep.o

AS arch/i386/kernel/acpi/wakeup.o

LD arch/i386/kernel/acpi/built-in.o

CC arch/i386/kernel/cpu/common.o

CC arch/i386/kernel/cpu/proc.o

CC arch/i386/kernel/cpu/amd.o

CC arch/i386/kernel/cpu/cyrix.o

CC arch/i386/kernel/cpu/centaur.o

CC arch/i386/kernel/cpu/transmeta.o

CC arch/i386/kernel/cpu/intel.o

CC arch/i386/kernel/cpu/rise.o

CC arch/i386/kernel/cpu/nexgen.o

CC arch/i386/kernel/cpu/umc.o

CC arch/i386/kernel/cpu/mcheck/mce.o

CC arch/i386/kernel/cpu/mcheck/k7.o

CC arch/i386/kernel/cpu/mcheck/p4.o

CC arch/i386/kernel/cpu/mcheck/p5.o

CC arch/i386/kernel/cpu/mcheck/p6.o

CC arch/i386/kernel/cpu/mcheck/winchip.o

CC arch/i386/kernel/cpu/mcheck/non-fatal.o

LD arch/i386/kernel/cpu/mcheck/built-in.o

CC arch/i386/kernel/cpu/mtrr/main.o

CC arch/i386/kernel/cpu/mtrr/if.o

CC arch/i386/kernel/cpu/mtrr/generic.o

CC arch/i386/kernel/cpu/mtrr/state.o

CC arch/i386/kernel/cpu/mtrr/amd.o

CC arch/i386/kernel/cpu/mtrr/cyrix.o

CC arch/i386/kernel/cpu/mtrr/centaur.o

LD arch/i386/kernel/cpu/mtrr/built-in.o

LD arch/i386/kernel/cpu/built-in.o

CC arch/i386/kernel/timers/timer.o

CC arch/i386/kernel/timers/timer_none.o

CC arch/i386/kernel/timers/timer_tsc.o

CC arch/i386/kernel/timers/timer_pit.o

CC arch/i386/kernel/timers/common.o

LD arch/i386/kernel/timers/built-in.o

CC arch/i386/kernel/adeos.o

CC arch/i386/kernel/reboot.o

CC arch/i386/kernel/smp.o

CC arch/i386/kernel/smpboot.o

AS arch/i386/kernel/trampoline.o

CC arch/i386/kernel/mpparse.o

CC arch/i386/kernel/apic.o

CC arch/i386/kernel/nmi.o

CC arch/i386/kernel/io_apic.o

CC arch/i386/kernel/module.o

CC arch/i386/kernel/sysenter.o

LDS arch/i386/kernel/vsyscall.lds

AS arch/i386/kernel/vsyscall-int80.o

SYSCALL arch/i386/kernel/vsyscall-int80.so

AS arch/i386/kernel/vsyscall-sysenter.o

SYSCALL arch/i386/kernel/vsyscall-sysenter.so

AS arch/i386/kernel/vsyscall.o

CC arch/i386/kernel/early_printk.o

SYSCALL arch/i386/kernel/vsyscall-syms.o

LD arch/i386/kernel/built-in.o

AS arch/i386/kernel/head.o

CC arch/i386/kernel/init_task.o

LDS arch/i386/kernel/vmlinux.lds

CC arch/i386/mm/init.o

CC arch/i386/mm/pgtable.o

CC arch/i386/mm/fault.o

CC arch/i386/mm/ioremap.o

CC arch/i386/mm/extable.o

CC arch/i386/mm/pageattr.o

CC arch/i386/mm/mmap.o

LD arch/i386/mm/built-in.o

CC arch/i386/mach-default/setup.o

CC arch/i386/mach-default/topology.o

LD arch/i386/mach-default/built-in.o

LD arch/i386/crypto/built-in.o

CC kernel/sched.o

CC kernel/fork.o

CC kernel/exec_domain.o

CC kernel/panic.o

CC kernel/printk.o

CC kernel/profile.o

CC kernel/exit.o

CC kernel/itimer.o

CC kernel/time.o

CC kernel/softirq.o

CC kernel/resource.o

CC kernel/sysctl.o

CC kernel/capability.o

CC kernel/ptrace.o

CC kernel/timer.o

CC kernel/user.o

CC kernel/signal.o

CC kernel/sys.o

CC kernel/kmod.o

CC kernel/workqueue.o

CC kernel/pid.o

CC kernel/rcupdate.o

CC kernel/intermodule.o

CC kernel/extable.o

CC kernel/params.o

CC kernel/posix-timers.o

CC kernel/kthread.o

CC kernel/adeos.o

CC kernel/futex.o

CC kernel/dma.o

CC kernel/cpu.o

CC kernel/spinlock.o

CC kernel/uid16.o

CC kernel/module.o

CC kernel/kallsyms.o

CC kernel/power/main.o

CC kernel/power/process.o

CC kernel/power/console.o

CC kernel/power/pm.o

CC kernel/power/swsusp.o

CC kernel/power/smp.o

CC kernel/power/disk.o

LD kernel/power/built-in.o

CC kernel/stop_machine.o

CC kernel/audit.o

CC kernel/auditsc.o

LD kernel/built-in.o

CC mm/bootmem.o

CC mm/filemap.o

CC mm/mempool.o

CC mm/oom_kill.o

CC mm/fadvise.o

CC mm/page_alloc.o

CC mm/page-writeback.o

CC mm/pdflush.o

CC mm/prio_tree.o

CC mm/readahead.o

CC mm/slab.o

CC mm/swap.o

CC mm/truncate.o

CC mm/vmscan.o

CC mm/fremap.o

CC mm/highmem.o

CC mm/madvise.o

CC mm/memory.o

CC mm/mincore.o

CC mm/mlock.o

CC mm/mmap.o

CC mm/mprotect.o

CC mm/mremap.o

CC mm/msync.o

CC mm/rmap.o

CC mm/vmalloc.o

CC mm/page_io.o

CC mm/swap_state.o

CC mm/swapfile.o

CC mm/thrash.o

CC mm/shmem.o

LD mm/built-in.o

CC fs/open.o

CC fs/read_write.o

CC fs/file_table.o

CC fs/buffer.o

CC fs/bio.o

CC fs/super.o

CC fs/block_dev.o

CC fs/char_dev.o

CC fs/stat.o

CC fs/exec.o

CC fs/pipe.o

CC fs/namei.o

CC fs/fcntl.o

CC fs/ioctl.o

CC fs/readdir.o

CC fs/select.o

CC fs/fifo.o

CC fs/locks.o

CC fs/dcache.o

CC fs/inode.o

CC fs/attr.o

CC fs/bad_inode.o

CC fs/file.o

CC fs/dnotify.o

CC fs/filesystems.o

CC fs/namespace.o

CC fs/seq_file.o

CC fs/xattr.o

CC fs/libfs.o

CC fs/fs-writeback.o

CC fs/mpage.o

CC fs/direct-io.o

CC fs/aio.o

CC fs/eventpoll.o

CC fs/nfsctl.o

CC fs/binfmt_aout.o

CC fs/binfmt_misc.o

CC fs/binfmt_script.o

CC fs/binfmt_elf.o

CC fs/mbcache.o

CC fs/autofs4/init.o

CC fs/autofs4/inode.o

CC fs/autofs4/root.o

CC fs/autofs4/symlink.o

CC fs/autofs4/waitq.o

CC fs/autofs4/expire.o

LD fs/autofs4/autofs4.o

LD fs/autofs4/built-in.o

CC fs/devpts/inode.o

LD fs/devpts/devpts.o

LD fs/devpts/built-in.o

CC fs/exportfs/expfs.o

LD fs/exportfs/exportfs.o

LD fs/exportfs/built-in.o

CC fs/ext2/balloc.o

CC fs/ext2/bitmap.o

CC fs/ext2/dir.o

CC fs/ext2/file.o

CC fs/ext2/fsync.o

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


GEN .version

CHK include/linux/compile.h

UPD include/linux/compile.h

CC init/version.o

LD init/built-in.o

LD .tmp_vmlinux1

KSYM .tmp_kallsyms1.S

AS .tmp_kallsyms1.o

LD .tmp_vmlinux2

KSYM .tmp_kallsyms2.S

AS .tmp_kallsyms2.o

LD vmlinux

SYSMAP System.map

SYSMAP .tmp_System.map

AS arch/i386/boot/bootsect.o

LD arch/i386/boot/bootsect

AS arch/i386/boot/setup.o

LD arch/i386/boot/setup

AS arch/i386/boot/compressed/head.o

CC arch/i386/boot/compressed/misc.o

OBJCOPY arch/i386/boot/compressed/vmlinux.bin

GZIP arch/i386/boot/compressed/vmlinux.bin.gz

LD arch/i386/boot/compressed/piggy.o

LD arch/i386/boot/compressed/vmlinux

OBJCOPY arch/i386/boot/vmlinux.bin

HOSTCC arch/i386/boot/tools/build

BUILD arch/i386/boot/bzImage

Root device is (3, 2)

Boot sector 512 bytes.

Setup is 2346 bytes.

System is 1868 kB

Kernel: arch/i386/boot/bzImage is ready

gerd@kant:~/KERNEL/RTAI/linux-2.6.9>


################



gerd@kant:~/KERNEL/RTAI/linux-2.6.9> make modules

CHK include/linux/version.h

make[1]: »arch/i386/kernel/asm-offsets.s« ist bereits aktualisiert.

CC [M] drivers/base/firmware_class.o

CC [M] drivers/char/agp/intel-mch-agp.o

CC [M] drivers/net/dummy.o

CC [M] drivers/net/s2io.o

CC [M] drivers/scsi/dpt_i2o.o

drivers/scsi/dpt_i2o.c: In function `adpt_read_blink_led':

drivers/scsi/dpt_i2o.c:160: warning: passing arg 1 of `readb' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:161: warning: passing arg 1 of `readb' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_i2o_post_this':

drivers/scsi/dpt_i2o.c:1229: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:1246: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_i2o_reset_hba':

drivers/scsi/dpt_i2o.c:1305: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:1334: warning: passing arg 1 of `memcpy_toio' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:1336: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:1356: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_isr':

drivers/scsi/dpt_i2o.c:2018: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2019: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2023: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2032: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2033: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2039: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2044: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2045: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2048: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2050: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2057: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2064: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2071: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2078: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_i2o_to_scsi':

drivers/scsi/dpt_i2o.c:2241: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2245: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2250: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2261: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_send_nop':

drivers/scsi/dpt_i2o.c:2646: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2663: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_i2o_init_outbound_q':

drivers/scsi/dpt_i2o.c:2680: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2713: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2754: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c: In function `adpt_i2o_status_get':

drivers/scsi/dpt_i2o.c:2798: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/dpt_i2o.c:2825: warning: passing arg 2 of `writel' makes pointer from integer without a cast

CC [M] drivers/scsi/ipr.o

drivers/scsi/ipr.c: In function `ipr_mask_and_clear_interrupts':

drivers/scsi/ipr.c:522: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:525: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:526: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_do_req':

drivers/scsi/ipr.c:667: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_send_hcam':

drivers/scsi/ipr.c:760: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_wait_iodbg_ack':

drivers/scsi/ipr.c:1363: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_get_ldump_data_section':

drivers/scsi/ipr.c:1398: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1410: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1413: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1417: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1429: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c:1436: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1442: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1445: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1449: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:1454: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_handle_other_interrupt':

drivers/scsi/ipr.c:3172: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:3175: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:3176: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_isr':

drivers/scsi/ipr.c:3225: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c:3226: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c:3277: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:3278: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_queuecommand':

drivers/scsi/ipr.c:3919: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_reset_enable_ioa':

drivers/scsi/ipr.c:4799: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c:4803: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:4804: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c:4809: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:4811: warning: passing arg 2 of `writel' makes pointer from integer without a cast

drivers/scsi/ipr.c:4812: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_get_unit_check_buffer':

drivers/scsi/ipr.c:4882: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_reset_allowed':

drivers/scsi/ipr.c:5018: warning: passing arg 1 of `readl' makes pointer from integer without a cast

drivers/scsi/ipr.c: In function `ipr_reset_alert':

drivers/scsi/ipr.c:5076: warning: passing arg 2 of `writel' makes pointer from integer without a cast

CC [M] drivers/scsi/sata_sis.o

CC [M] drivers/scsi/sata_sx4.o

CC [M] drivers/usb/input/touchkitusb.o

CC [M] drivers/usb/misc/cytherm.o

CC [M] drivers/usb/misc/phidgetservo.o

CC [M] net/ipv4/netfilter/iptable_raw.o

CC [M] net/ipv4/netfilter/ipt_NOTRACK.o

CC [M] lib/libcrc32c.o

Building modules, stage 2.

MODPOST

CC drivers/base/firmware_class.mod.o

LD [M] drivers/base/firmware_class.ko

CC drivers/char/agp/intel-mch-agp.mod.o

LD [M] drivers/char/agp/intel-mch-agp.ko

CC drivers/net/dummy.mod.o

LD [M] drivers/net/dummy.ko

CC drivers/net/s2io.mod.o

LD [M] drivers/net/s2io.ko

CC drivers/scsi/dpt_i2o.mod.o

LD [M] drivers/scsi/dpt_i2o.ko

CC drivers/scsi/ipr.mod.o

LD [M] drivers/scsi/ipr.ko

CC drivers/scsi/sata_sis.mod.o

LD [M] drivers/scsi/sata_sis.ko

CC drivers/scsi/sata_sx4.mod.o

LD [M] drivers/scsi/sata_sx4.ko

CC drivers/usb/input/touchkitusb.mod.o

LD [M] drivers/usb/input/touchkitusb.ko

CC drivers/usb/misc/cytherm.mod.o

LD [M] drivers/usb/misc/cytherm.ko

CC drivers/usb/misc/phidgetservo.mod.o

LD [M] drivers/usb/misc/phidgetservo.ko

CC lib/libcrc32c.mod.o

LD [M] lib/libcrc32c.ko

CC net/ipv4/netfilter/ipt_NOTRACK.mod.o

LD [M] net/ipv4/netfilter/ipt_NOTRACK.ko

CC net/ipv4/netfilter/iptable_raw.mod.o

LD [M] net/ipv4/netfilter/iptable_raw.ko


#################


gerd@kant:~/KERNEL/RTAI/linux-2.6.9> su

Password:


kant:/home/gerd/KERNEL/RTAI/linux-2.6.9 # make modules_install

INSTALL drivers/base/firmware_class.ko

INSTALL drivers/char/agp/intel-mch-agp.ko

INSTALL drivers/net/dummy.ko

INSTALL drivers/net/s2io.ko

INSTALL drivers/scsi/dpt_i2o.ko

INSTALL drivers/scsi/ipr.ko

INSTALL drivers/scsi/sata_sis.ko

INSTALL drivers/scsi/sata_sx4.ko

INSTALL drivers/usb/input/touchkitusb.ko

INSTALL drivers/usb/misc/cytherm.ko

INSTALL drivers/usb/misc/phidgetservo.ko

INSTALL lib/libcrc32c.ko

INSTALL net/ipv4/netfilter/ipt_NOTRACK.ko

INSTALL net/ipv4/netfilter/iptable_raw.ko

if [ -r System.map ]; then /sbin/depmod -ae -F System.map 2.6.9-adeos; fi

---------------------------------------------------
Im Artikel von Shortridge heisst es nun:

"Create the initrd RAM disk file.

 mkinitrd /boot/initrd-2.6.8.1-adeos.img 2.6.8.1-adeos

The second argument, the version string, allows mkinitrd to locate the files it needs to build the disk file whose name is given in the first argument. For some reason I find I keep forgetting the .img extension for this file, and I also seem incapable of typing adeoa   sorry, adeos   properly. Just check your typing. The kernel build HOW-TO file points out that some distributions, for example, SUSE, have a version of mkinitrd that uses a slightly different syntax."

In der tat ist das Konzept des scripts mkinitrd bei Suse 9.2 so verschieden, dass eine direkte Fortsetzung nicht möglich war.

Zum Thema 'mkinitrd' findet sich einmal eine ausführliche Doku bei den Quellen, darueberhinaus aber auch folgender Artikel:
http://www.almesberger.net/cv/papers/ols2k-9.ps.gz oder lokal

-----------------------------------------------------------------------------------------------------------------------

Written 1996,2000 by Werner Almesberger <werner.almesberger@epfl.ch> and

Hans Lermen <lermen@fgan.de>

initrd provides the capability to load a RAM disk by the boot loader.

This RAM disk can then be mounted as the root file system and programs

can be run from it. Afterwards, a new root file system can be mounted

from a different device. The previous root (from initrd) is then moved

to a directory and can be subsequently unmounted.


initrd is mainly designed to allow system startup to occur in two phases,

where the kernel comes up with a minimum set of compiled-in drivers, and

where additional modules are loaded from initrd.


This document gives a brief overview of the use of initrd. A more detailed

discussion of the boot process can be found in [1].


Operation

---------


When using initrd, the system typically boots as follows:


1) the boot loader loads the kernel and the initial RAM disk

2) the kernel converts initrd into a "normal" RAM disk and

frees the memory used by initrd

3) initrd is mounted read-write as root

4) /linuxrc is executed (this can be any valid executable, including

shell scripts; it is run with uid 0 and can do basically everything

init can do)

5) linuxrc mounts the "real" root file system

6) linuxrc places the root file system at the root directory using the

pivot_root system call

7) the usual boot sequence (e.g. invocation of /sbin/init) is performed

on the root file system

8) the initrd file system is removed


Note that changing the root directory does not involve unmounting it.

It is therefore possible to leave processes running on initrd during that

procedure. Also note that file systems mounted under initrd continue to

be accessible.


Operation

---------


When using initrd, the system typically boots as follows:


1) the boot loader loads the kernel and the initial RAM disk

2) the kernel converts initrd into a "normal" RAM disk and

frees the memory used by initrd

3) initrd is mounted read-write as root

4) /linuxrc is executed (this can be any valid executable, including

shell scripts; it is run with uid 0 and can do basically everything

init can do)

5) linuxrc mounts the "real" root file system

6) linuxrc places the root file system at the root directory using the

pivot_root system call

7) the usual boot sequence (e.g. invocation of /sbin/init) is performed

on the root file system

8) the initrd file system is removed


Note that changing the root directory does not involve unmounting it.

It is therefore possible to leave processes running on initrd during that

procedure. Also note that file systems mounted under initrd continue to

be accessible.



Installation

------------


First, a directory for the initrd file system has to be created on the

"normal" root file system, e.g.


# mkdir /initrd


The name is not relevant. More details can be found on the pivot_root(2)

man page.


If the root file system is created during the boot procedure (i.e. if

you're building an install floppy), the root file system creation

procedure should create the /initrd directory.


If initrd will not be mounted in some cases, its content is still

accessible if the following device has been created (note that this

does not work if using devfs):


# mknod /dev/initrd b 1 250

# chmod 400 /dev/initrd


Second, the kernel has to be compiled with RAM disk support and with

support for the initial RAM disk enabled. Also, at least all components

needed to execute programs from initrd (e.g. executable format and file

system) must be compiled into the kernel.


Third, you have to create the RAM disk image. This is done by creating a

file system on a block device, copying files to it as needed, and then

copying the content of the block device to the initrd file. With recent

kernels, at least three types of devices are suitable for that:


- a floppy disk (works everywhere but it's painfully slow)

- a RAM disk (fast, but allocates physical memory)

- a loopback device (the most elegant solution)


We'll describe the loopback device method:


1) make sure loopback block devices are configured into the kernel

2) create an empty file system of the appropriate size, e.g.

# dd if=/dev/zero of=initrd bs=300k count=1

# mke2fs -F -m0 initrd

(if space is critical, you may want to use the Minix FS instead of Ext2)

3) mount the file system, e.g.

# mount -t ext2 -o loop initrd /mnt

4) create the console device (not necessary if using devfs, but it can't

hurt to do it anyway):

# mkdir /mnt/dev

# mknod /mnt/dev/console c 5 1

5) copy all the files that are needed to properly use the initrd

environment. Don't forget the most important file, /linuxrc

Note that /linuxrc's permissions must include "x" (execute).

6) correct operation the initrd environment can frequently be tested

even without rebooting with the command

# chroot /mnt /linuxrc

This is of course limited to initrds that do not interfere with the

general system state (e.g. by reconfiguring network interfaces,

overwriting mounted devices, trying to start already running demons,

etc. Note however that it is usually possible to use pivot_root in

such a chroot'ed initrd environment.)

7) unmount the file system

# umount /mnt

8) the initrd is now in the file "initrd". Optionally, it can now be

compressed

# gzip -9 initrd


For experimenting with initrd, you may want to take a rescue floppy and

only add a symbolic link from /linuxrc to /bin/sh. Alternatively, you

can try the experimental newlib environment [2] to create a small

initrd.


Finally, you have to boot the kernel and load initrd. Almost all Linux

boot loaders support initrd. Since the boot process is still compatible

with an older mechanism, the following boot command line parameters

have to be given:


root=/dev/ram0 init=/linuxrc rw


if not using devfs, or


root=/dev/rd/0 init=/linuxrc rw


if using devfs. (rw is only necessary if writing to the initrd file

system.)


With LOADLIN, you simply execute


LOADLIN <kernel> initrd=<disk_image>

e.g. LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0

init=/linuxrc rw


With LILO, you add the option INITRD=<path> to either the global section

or to the section of the respective kernel in /etc/lilo.conf, and pass

the options using APPEND, e.g.


image = /bzImage

initrd = /boot/initrd.gz

append = "root=/dev/ram0 init=/linuxrc rw"


and run /sbin/lilo


For other boot loaders, please refer to the respective documentation.


Now you can boot and enjoy using initrd.



Changing the root device

------------------------


When finished with its duties, linuxrc typically changes the root device

and proceeds with starting the Linux system on the "real" root device.


The procedure involves the following steps:

- mounting the new root file system

- turning it into the root file system

- removing all accesses to the old (initrd) root file system

- unmounting the initrd file system and de-allocating the RAM disk


Mounting the new root file system is easy: it just needs to be mounted on

a directory under the current root. Example:


# mkdir /new-root

# mount -o ro /dev/hda1 /new-root


The root change is accomplished with the pivot_root system call, which

is also available via the pivot_root utility (see pivot_root(8) man

page; pivot_root is distributed with util-linux version 2.10h or higher

[3]). pivot_root moves the current root to a directory under the new

root, and puts the new root at its place. The directory for the old root

must exist before calling pivot_root. Example:


# cd /new-root

# mkdir initrd

# pivot_root . initrd


Now, the linuxrc process may still access the old root via its

executable, shared libraries, standard input/output/error, and its

current root directory. All these references are dropped by the

following command:


# exec chroot . what-follows <dev/console >dev/console 2>&1


Where what-follows is a program under the new root, e.g. /sbin/init

If the new root file system will be used with devfs and has no valid

/dev directory, devfs must be mounted before invoking chroot in order to

provide /dev/console.


Note: implementation details of pivot_root may change with time. In order

to ensure compatibility, the following points should be observed:


- before calling pivot_root, the current directory of the invoking

process should point to the new root directory

- use . as the first argument, and the _relative_ path of the directory

for the old root as the second argument

- a chroot program must be available under the old and the new root

- chroot to the new root afterwards

- use relative paths for dev/console in the exec command


Now, the initrd can be unmounted and the memory allocated by the RAM

disk can be freed:


# umount /initrd

# blockdev --flushbufs /dev/ram0 # /dev/rd/0 if using devfs


It is also possible to use initrd with an NFS-mounted root, see the

pivot_root(8) man page for details.


Note: if linuxrc or any program exec'ed from it terminates for some

reason, the old change_root mechanism is invoked (see section "Obsolete

root change mechanism").



Usage scenarios

---------------


The main motivation for implementing initrd was to allow for modular

kernel configuration at system installation. The procedure would work

as follows:


1) system boots from floppy or other media with a minimal kernel

(e.g. support for RAM disks, initrd, a.out, and the Ext2 FS) and

loads initrd

2) /linuxrc determines what is needed to (1) mount the "real" root FS

(i.e. device type, device drivers, file system) and (2) the

distribution media (e.g. CD-ROM, network, tape, ...). This can be

done by asking the user, by auto-probing, or by using a hybrid

approach.

3) /linuxrc loads the necessary kernel modules

4) /linuxrc creates and populates the root file system (this doesn't

have to be a very usable system yet)

5) /linuxrc invokes pivot_root to change the root file system and

execs - via chroot - a program that continues the installation

6) the boot loader is installed

7) the boot loader is configured to load an initrd with the set of

modules that was used to bring up the system (e.g. /initrd can be

modified, then unmounted, and finally, the image is written from

/dev/ram0 or /dev/rd/0 to a file)

8) now the system is bootable and additional installation tasks can be

performed


The key role of initrd here is to re-use the configuration data during

normal system operation without requiring the use of a bloated "generic"

kernel or re-compiling or re-linking the kernel.


A second scenario is for installations where Linux runs on systems with

different hardware configurations in a single administrative domain. In

such cases, it is desirable to generate only a small set of kernels

(ideally only one) and to keep the system-specific part of configuration

information as small as possible. In this case, a common initrd could be

generated with all the necessary modules. Then, only /linuxrc or a file

read by it would have to be different.


A third scenario are more convenient recovery disks, because information

like the location of the root FS partition doesn't have to be provided at

boot time, but the system loaded from initrd can invoke a user-friendly

dialog and it can also perform some sanity checks (or even some form of

auto-detection).


Last not least, CD-ROM distributors may use it for better installation

from CD, e.g. by using a boot floppy and bootstrapping a bigger RAM disk

via initrd from CD; or by booting via a loader like LOADLIN or directly

from the CD-ROM, and loading the RAM disk from CD without need of

floppies.


Obsolete root change mechanism

------------------------------

The following mechanism was used before the introduction of pivot_root.

Current kernels still support it, but you should _not_ rely on its

continued availability.

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

Resources


[1] Almesberger, Werner; "Booting Linux: The History and the Future"

http://www.almesberger.net/cv/papers/ols2k-9.ps.gz

[2] newlib package (experimental), with initrd example

http://sources.redhat.com/newlib/

[3] Brouwer, Andries; "util-linux: Miscellaneous utilities for Linux"

ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/


------------------------------------------------------------

Das Projekt ist damit noch keinesfalls an seinem Ende angelangt....



START


9. Testfragen


  1. Noch zu schreiben...

START