Linux

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
blu3light
Beiträge: 88
Registriert: 11.03.2006 17:02:26
Kontaktdaten:

Linux

Beitrag von blu3light » 12.03.2006 14:03:23

Ich bin ja gerade dabei dir ganzen FAQ's HOWTOS Tutorials was auch immer zu lesen und ich bin auf "Historisch" Objekte gestoßen. Habe mir die Kernen der Linux version 0.1 geholt und mir ist aufgefallen das es sich eine datei MAKEFILE dort befindet.

Ich habe mich gefragt, welche Datei dem PC sagt, welche Dateien es wie ausführen muss. Kann es sein das es dieses MAKEFILE ist?

INHALT:
#
# Makefile for linux.
# If you don't have '-mstring-insns' in your gcc (and nobody but me has :-)
# remove them from the CFLAGS defines.
#

AS86 =as -0 -a
CC86 =cc -0
LD86 =ld -0

AS =gas
LD =gld
LDFLAGS =-s -x -M
CC =gcc
CFLAGS =-Wall -O -fstrength-reduce -fomit-frame-pointer -fcombine-regs
CPP =gcc -E -nostdinc -Iinclude

ARCHIVES=kernel/kernel.o mm/mm.o fs/fs.o
LIBS =lib/lib.a

.c.s:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -S -o $*.s $<
.s.o:
$(AS) -c -o $*.o $<
.c.o:
$(CC) $(CFLAGS) \
-nostdinc -Iinclude -c -o $*.o $<

all: Image

Image: boot/boot tools/system tools/build
tools/build boot/boot tools/system > Image
sync

tools/build: tools/build.c
$(CC) $(CFLAGS) \
-o tools/build tools/build.c
chmem +65000 tools/build

boot/head.o: boot/head.s

tools/system: boot/head.o init/main.o \
$(ARCHIVES) $(LIBS)
$(LD) $(LDFLAGS) boot/head.o init/main.o \
$(ARCHIVES) \
$(LIBS) \
-o tools/system > System.map

kernel/kernel.o:
(cd kernel; make)

mm/mm.o:
(cd mm; make)

fs/fs.o:
(cd fs; make)

lib/lib.a:
(cd lib; make)

boot/boot: boot/boot.s tools/system
(echo -n "SYSSIZE = (";ls -l tools/system | grep system \
| cut -c25-31 | tr '\012' ' '; echo "+ 15 ) / 16") > tmp.s
cat boot/boot.s >> tmp.s
$(AS86) -o boot/boot.o tmp.s
rm -f tmp.s
$(LD86) -s -o boot/boot boot/boot.o

clean:
rm -f Image System.map tmp_make boot/boot core
rm -f init/*.o boot/*.o tools/system tools/build
(cd mm;make clean)
(cd fs;make clean)
(cd kernel;make clean)
(cd lib;make clean)

backup: clean
(cd .. ; tar cf - linux | compress16 - > backup.Z)
sync

dep:
sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
(for i in init/*.c;do echo -n "init/";$(CPP) -M $$i;done) >> tmp_make
cp tmp_make Makefile
(cd fs; make dep)
(cd kernel; make dep)
(cd mm; make dep)

### Dependencies:
init/main.o : init/main.c include/unistd.h include/sys/stat.h \
include/sys/types.h include/sys/times.h include/sys/utsname.h \
include/utime.h include/time.h include/linux/tty.h include/termios.h \
include/linux/sched.h include/linux/head.h include/linux/fs.h \
include/linux/mm.h include/asm/system.h include/asm/io.h include/stddef.h \
include/stdarg.h include/fcntl.h
:? Das ganze finde ich sehr interressant und faszinierend...

Benutzeravatar
puntarenas
Beiträge: 712
Registriert: 28.05.2005 15:07:05

Beitrag von puntarenas » 12.03.2006 14:09:07

http://www.linuxfibel.de/make.htm

Viel Spaß beim Lesen!

Gruß
puntarenas

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Beitrag von Spasswolf » 12.03.2006 14:16:25

Grob gesagt:
So ein Makefile sagt wie die verschienen Quelldateien eines Programms (in diesem der Kernel) kompiliert und zu einem ausführbaren Programm zusammengestellt werden.
So ein Makefile befindet sich in (fast) jedem Quellcode.
Ich habe mich gefragt, welche Datei dem PC sagt, welche Dateien es wie ausführen muss. Kann es sein das es dieses MAKEFILE ist?
Damit hat so ein Makefile nichts zu tun.(Ein Computer kann ja auch keine Texdateien lesen) Wie Programme ausgeführt werden bestimmt der Kernel.
Guck mal nach bei der Kernelkonfiguration unter "Executable file formats", da sind die Typen von Binärdateien angegeben die der Kernel ausführen kann.

PS. Es geht noch historischer, es gibt bei http://www.kernel.org/pub/linux/kernel/Historic/ auch noch die Quellen von Version 0.01
PPS. Kein Anspruch auf Richig - und Vollständigkeit, falls ich Mist erzählt habe, bitte korrigieren

Benutzeravatar
blu3light
Beiträge: 88
Registriert: 11.03.2006 17:02:26
Kontaktdaten:

Beitrag von blu3light » 12.03.2006 14:23:26

es geht mir im allgemeinen ja nicht um den kernel sondern eher darum wie der PC, die Hardware erkennt, was er machen muss wenn jetzt zB eine Automatische Installation im Laufwerk befindet (also eine CD wie die Linux CD wo es sich automatisch startet) oder sowas.... Wenn ich jetzt (zB) eine CD mit einem Spiel ins Laufwerk lege passiert beim Booten/starten des PC's auch nichts. Es muss ja eine Datei sein, die der Hardware sagt, was nun kommt?!

Bei Windows zB wenn man auf eine CD eine autorun.ini tut und passend konfiguriert startet sie bestimmte dinge....

nur wie startet der PC ?? xD Ich hoffe nun verstanden wie ich das meine. Es ist nicht auf ein bestimmtes System bezogen. Aber irgendwo in so nem Systemkernel oder so muss sich ja eine Datei befinden die der PC / die Hardware erkennt und passend auführt und diese den Rest erledigt!

yeti

Re: Linux

Beitrag von yeti » 12.03.2006 14:46:56

Ich denke, Du meinst Version 0.01...
Christian_wa hat geschrieben:

Code: Alles auswählen

tools/build: tools/build.c
	$(CC) $(CFLAGS) \
	-o tools/build tools/build.c
	chmem +65000 tools/build
chmem?!?!?!
Das riecht mir nach Minix...
*seufz*
Erinnerungen steigen auf...

Also... Minix installieren...

Selbst mit Minix: Ich würd kein Körperteil darauf verwetten, daß das mit einem nun weit mehr als 10 Jahre jüngerem Minix übersetzbar ist... ausgeschlossen ist es freilich nicht...

Viel Spaß bei der Linux-Archäoligie!

Und: halt uns auf dem Laufenden!

Der älteste Linux-Kern, den ich selbst laufen hatte, war 0.11. Auf Älteres wäre ich auch neugierig... hab aber erst durch Linus' Ankündigung von 0.11 in comp.os.minix von Linux erfahren... ich bin ja so ein grüner Hüpfer...

Benutzeravatar
blu3light
Beiträge: 88
Registriert: 11.03.2006 17:02:26
Kontaktdaten:

Beitrag von blu3light » 12.03.2006 14:54:42

über minix... mhm.... ja 0.01 is das ^^
hmm.. okay... wenn ich die linux faq's alles durch hab, und ich zeite habe stell ich mir einen älteren rechner zusamm; zieh minix drauf und dann über minix versuch ich die version 0.01 von linux zum laufen zu bringen :? Kann man bestimmt sehr viel machen :D

Naja, bin neugierig, also werd ich das dann machen :D

Antworten