Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » [P8000] Kernelgenerierung » Themenansicht

Autor Thread - Seiten: -1-
000
25.02.2007, 13:53 Uhr
Olli

Avatar von Olli

Hallo,

ich habe die letzte Woche mal dazu genutzt, mir erstmal die mit gelieferte sys/LIB1 von WEGA "anzuschauen". Sie hat eine komische Aehnlichkeit mit einem SysIII oder SysV Kernel. Basierend auf dieser Erkentnioss habe ich dann versucht LIB1 aus den im Internet auffindbaren Sourcen der beiden Kernels und den WEGa-Kernel Sourcen die es gibt "zusammenzustricken". Nach einiger Zeit (500 Kommandoeingaben? habe ich nun zummindest schonmal ueberhaupt eine LIB1 - es gibt nun jedoch noch ein paar Symbolkonflikte (bissel was nicht definiert, bissel zu viel definiert) - mal schaun ob ich das auch noch geloest bekomme. Wenn das dann geschafft ist, heisst es natuerlich immer noch nicht, das die LIB1 auch genau so funktioniert wie die alte.... und das System evtl. schon beim booten paniced Muss man dann mal sehn... wenn ich soweit komme. Der andere Objectheader als a.out macht das ganze schon etwas kompliert - frage mich wie die das frueher gemacht haben. Wenn man Geruechten glauben darf, hatten die auch nur Object-Files und nicht die Sourcen des Kernels.


Quellcode:
#502 make all
        scc -c -O -I../h  main.c
        ar rv ../lib1 main.o
a - main.o
ar: creating ../lib1
        rm -f main.o
        scc -c -O -I../h  timer.c
        ar rv ../lib1 timer.o
a - timer.o
        rm -f timer.o
        scc -c -O -I../h  trap.c
        ar rv ../lib1 trap.o
a - trap.o
        rm -f trap.o
        scc -c -O -I../h  sysent.c
        ar rv ../lib1 sysent.o
a - sysent.o
        rm -f sysent.o
        scc -c -O -I../h  sys1.c
        ar rv ../lib1 sys1.o
a - sys1.o
        rm -f sys1.o
        scc -c -O -I../h  sys2.c
        ar rv ../lib1 sys2.o
a - sys2.o
        rm -f sys2.o
        scc -c -O -I../h  sys3.c
        ar rv ../lib1 sys3.o
a - sys3.o
        rm -f sys3.o
        scc -c -O -I../h  sys4.c
        ar rv ../lib1 sys4.o
a - sys4.o
        rm -f sys4.o
        scc -c -O -I../h  acct.c
        ar rv ../lib1 acct.o
a - acct.o
        rm -f acct.o
        scc -c -O -I../h  alloc.c
        ar rv ../lib1 alloc.o
a - alloc.o
        rm -f alloc.o
        scc -c -O -I../h  clock.c
        ar rv ../lib1 clock.o
a - clock.o
        rm -f clock.o
        scc -c -O -I../h  fio.c
        ar rv ../lib1 fio.o
a - fio.o
        rm -f fio.o
        scc -c -O -I../h  iget.c
        ar rv ../lib1 iget.o
a - iget.o
        rm -f iget.o
        scc -c -O -I../h  lockf.c
        ar rv ../lib1 lockf.o
a - lockf.o
        rm -f lockf.o
        scc -c -O -I../h  machdep.c
        ar rv ../lib1 machdep.o
a - machdep.o
        rm -f machdep.o
        scc -c -O -I../h  malloc.c
        ar rv ../lib1 malloc.o
a - malloc.o
        rm -f malloc.o
        scc -c -O -I../h  nami.c
        ar rv ../lib1 nami.o
a - nami.o
        rm -f nami.o
        scc -c -O -I../h  pipe.c
        ar rv ../lib1 pipe.o
a - pipe.o
        rm -f pipe.o
        scc -c -O -I../h  prf.c
        ar rv ../lib1 prf.o
a - prf.o
        rm -f prf.o
        scc -c -O -I../h  rdwri.c
        ar rv ../lib1 rdwri.o
a - rdwri.o
        rm -f rdwri.o
        scc -c -O -I../h  sig.c
        ar rv ../lib1 sig.o
a - sig.o
        rm -f sig.o
        scc -c -O -I../h  slp.c
        ar rv ../lib1 slp.o
a - slp.o
        rm -f slp.o
        scc -c -O -I../h  subr.c
        ar rv ../lib1 subr.o
a - subr.o
        rm -f subr.o
        scc -c -O -I../h  text.c
        ar rv ../lib1 text.o
a - text.o
        rm -f text.o
        scc -c -O -I../h  utssys.c
        ar rv ../lib1 utssys.o
a - utssys.o
        rm -f utssys.o
#503 cd ..
#504 mv /usr/sys/sys/LIB1 /usr/sys/sys/LIB1.org
#505 cp lib1 /usr/sys/sys/LIB1
#506 cd /usr/sys/conf
#507 sysgen

---- sysgen ----

Version 1.2


[...]
New wega is building now ! Wait a minute !
        chkout  ver.c+
        Version 3.2
        4 lines
        scc  -c ver.c
        sld -Ns -o wega -e start -X -i -Ms62 wpar.o event.o mch.o u.o ver.o fpe.o conf.o ../sys/LIB1 ../dev/LIB2
_bcopy   sld: ../sys/LIB1(subr.o): - warning: symbol redefined in archive
Undefined:
_ihinit
_estabur
_debug
_ifree
_prele
_getfs
_free
_ialloc
_sysent
_update
Warning - only 8 characters of name are significant
_freepro
_exit
_schar
_namei
_access
_spl6
_spl0
_splx
_sureg
_alloc
_timeout
../sys/LIB1(iget.o): internal error: symbol not found
*** Error code 4 (ignored)
        rm -f ver.o ver.c
New wega : /usr/sys/conf/wega

New boot is building now !

--- sysgen interrupted -
#508


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
25.02.2007, 14:27 Uhr
Tom Nachdenk



Hm hatten die keine Sourcen?

http://www.trust-us.ch/chalisti/chalisti_07/007_GFAA.html

Der Artikel ist da etwas unklar was man unter glücklichen Zufällen verstehen kann. Es wäre aber schon denkbar das WEGA auf 'transportierten' Quellen basiert. Und die originalen Unix-Source wurden ja meines Wissens relativ freizügig lizensiert ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
26.02.2007, 06:18 Uhr
Olli

Avatar von Olli

Fehlende Symbole "gefixt" aber - soviel dazu


Quellcode:
Boot
: md(0,16000)wega.new

MMU TRAP ID= F3D8
*


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
27.02.2007, 21:28 Uhr
Olli

Avatar von Olli

So, inzw. bin ich etwas weiter. Erstens sollte man bei dem linken auch als Startprozedur explizit "start" angeben wie im Orginal, sonst wird naemlich main genommen usw...
Ausserdem habe ich jetzt auch die mitgelieferte LIB1 wieder "entpackt" in die darin enthaltenen Object-Files, und dann versucht einzelne Object-Files die darin enthalten sind, durch meine selbstcompilierten zu ersetzen und dann die LIB1 wieder neu zu generieren.
Leider endet das aber meist in einem Seg-Fault, einem CPU trap, oder wie in meinem letzten Fall einem durch fsck zerstoertem root-FS - nun installier ich erstmal wieder neu, und ueberlege dann wie man anders an die Sache rangehen kann

Problematisch ist, halt, das ich den user struct (beschrieben in sys/user.h) an 2 Stellen anpassen musste damit der Source compiliert. Das ist natuerlich doof wenn man die erhaltenen Object-Files zusammen mit den anderen Object-Files (welche mit der Orginalversion von sys/user.h compiliert wurden) benutzen will. Wenn auf einmal ein Feld long als Datentyp ist, und in den anderen Object-Files von char ausgegangen wird, und mal neben der Typungleichheit auch noch unterschiedliche Speichergroessen benutzt werden... kann das nur schiefgehen. Ich muss also sehen wie ich den Kernel Source so modifiziert bekomme, das er mit einer unveraenderten Version der sys/user.h funktioniert.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 27.02.2007 um 21:30 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek