Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - tiger717

Seiten: 1 2 3 [4] 5
61
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 29. May 2011, 17:03 »
Linkerfile ist ganz normal, anders sind nur:

OUTPUT_FORMAT(elf32-i386)
OUTPUT_ARCH(i386:i386)
und *(multiboot)

(sorry wenn ich mich vertippt hab, bin gerade in Windows und kann nicht nachsehen)
62
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 29. May 2011, 10:55 »
Ich hab mal ein bisschen experimentiert, und wenn ich meine Linkerfile weglasse, sagt er nichts.
63
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 29. May 2011, 09:24 »
Hmm. Mich interessiert eher, wie ich diesen Bug wieder loswerde.
64
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 22:02 »
ld überrascht einen immer wieder:  :-o

/usr/bin/nasm -f elf32 -o a.elf boot.asm
cc -m32 -Wall -Wextra -Werror -nostdlib -nostdinc -nostartfiles -nodefaultlibs -ffreestanding -fno-stack-protector -c -o b.out kernel.c
cc -m32 -Wall -Wextra -Werror -nostdlib -nostdinc -nostartfiles -nodefaultlibs -ffreestanding -fno-stack-protector -c -o c.out video.c
/usr/bin/ld -T kernel.ld -melf_i386 -o kernel.elf a.elf b.out c.out
*** buffer overflow detected ***: /usr/bin/ld terminated
======= Backtrace: =========
/lib/libc.so.6(__fortify_fail+0x40)[0xb739a070]
/lib/libc.so.6(+0xe8e27)[0xb7397e27]
/lib/libc.so.6(+0xe8445)[0xb7397445]
/lib/libc.so.6(_IO_default_xsputn+0x91)[0xb731ac31]
/lib/libc.so.6(_IO_vfprintf+0xec3)[0xb72ee103]
/lib/libc.so.6(__vsprintf_chk+0xcc)[0xb739751c]
/lib/libc.so.6(__sprintf_chk+0x2f)[0xb739742f]
/usr/bin/ld[0x80503d0]
/usr/bin/ld[0x8051392]
/usr/bin/ld[0x804dbf3]
/usr/bin/ld[0x80538c3]
/usr/bin/ld[0x8062604]
/lib/libc.so.6(__libc_start_main+0xfe)[0xb72c5c2e]
/usr/bin/ld[0x804d361]
======= Memory map: ========
08048000-0836b000 r-xp 00000000 08:16 9963519    /usr/bin/ld.bfd
0836b000-0836c000 r--p 00322000 08:16 9963519    /usr/bin/ld.bfd
0836c000-0836f000 rw-p 00323000 08:16 9963519    /usr/bin/ld.bfd
0836f000-08392000 rw-p 00000000 00:00 0          [heap]
b7256000-b7272000 r-xp 00000000 08:11 394400     /lib/libgcc_s.so.1
b7272000-b7273000 r--p 0001b000 08:11 394400     /lib/libgcc_s.so.1
b7273000-b7274000 rw-p 0001c000 08:11 394400     /lib/libgcc_s.so.1
b7296000-b7298000 rw-p 00000000 00:00 0
b7298000-b72ad000 r-xp 00000000 08:11 394207     /lib/libz.so.1.2.5
b72ad000-b72ae000 r--p 00014000 08:11 394207     /lib/libz.so.1.2.5
b72ae000-b72af000 rw-p 00015000 08:11 394207     /lib/libz.so.1.2.5
b72af000-b7415000 r-xp 00000000 08:11 394653     /lib/libc-2.11.3.so
b7415000-b7416000 ---p 00166000 08:11 394653     /lib/libc-2.11.3.so
b7416000-b7418000 r--p 00166000 08:11 394653     /lib/libc-2.11.3.so
b7418000-b7419000 rw-p 00168000 08:11 394653     /lib/libc-2.11.3.so
b7419000-b741c000 rw-p 00000000 00:00 0
b741c000-b741f000 r-xp 00000000 08:11 394661     /lib/libdl-2.11.3.so
b741f000-b7420000 r--p 00002000 08:11 394661     /lib/libdl-2.11.3.so
b7420000-b7421000 rw-p 00003000 08:11 394661     /lib/libdl-2.11.3.so
b7421000-b767d000 r-xp 00000000 08:16 11409880   /usr/lib/libbfd-2.21.so
b767d000-b767e000 ---p 0025c000 08:16 11409880   /usr/lib/libbfd-2.21.so
b767e000-b76b4000 r--p 0025c000 08:16 11409880   /usr/lib/libbfd-2.21.so
b76b4000-b76bb000 rw-p 00292000 08:16 11409880   /usr/lib/libbfd-2.21.so
b76bb000-b76c0000 rw-p 00000000 00:00 0
b76e1000-b76e3000 rw-p 00000000 00:00 0
b76e3000-b7702000 r-xp 00000000 08:11 397828     /lib/ld-2.11.3.so
b7702000-b7703000 r--p 0001e000 08:11 397828     /lib/ld-2.11.3.so
b7703000-b7704000 rw-p 0001f000 08:11 397828     /lib/ld-2.11.3.so
bf956000-bf977000 rw-p 00000000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
make: *** [prog] Abgebrochen

Muss gleich mal gucken, was ich so verändert habe. Vor 5 Minuten war das noch nich so...
65
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 19:21 »
Sorry, aber ich muss euch nochmal mit Code bombardieren...  :-D

Diesmal mit Pastebin: http://pastebin.com/QLRSz78H

Das Problem: "nochma" steht nach den Punkten, nicht unter Halihalo. Bei weiteren Tests zeigt sich, dass mein Code nur die ersten beiden Seiten anfassen will.
66
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 13:30 »
An Flags soll es gcc nicht mangeln:

-m32 -Wall -Wextra -Werror -nostdlib -nostdinc -nostartfiles -nodefaultlibs -ffreestanding -fno-stack-protector -c
67
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 11:14 »
Uups, ich glaube, ich muss mir doch noch mal eine C-Referenz durchlesen...

P.S.: Ich bin VB .NET Veteran, das mit dem doppelten Gleichheitszeichen wird mir noch öfters passieren!
68
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 10:48 »
Noch eine letzte Frage:

Ich habe mal angefangen, eine simple stdio-Libary zu programmieren. Aber jetzt gibt er mir folgenden Fehler:

video.h:5:19: error: expected ‘)’ before ‘output’
#ifndef VIDEO_H
#define VIDEO_H

void printf(char hw[]);
void putc(uint8_t output);
void refresh();
int getpointer();
void clearscreen();

#endif

void putc(uint8_t output)
{
pointerx = x;
pointery = y;
getpointer();

if (outputput != "\n" && output != "\0") {
// Zeichen i in den Videospeicher kopieren
buffer[pointer] = output[i];

// 0x07 = Hellgrau auf Schwarz
buffer[pointer + 1] = 0x07;

pointerx++;
} else if (output = "\n") {
pointerx = 0;
pointery++;
}

if (pointerx = 80) { pointerx = 0; pointery++; }
}

(Getpointer() holt sich die Addresse, an die der Text hinsoll)
69
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 10:31 »
Aber wie bekommt ihr ein ganzes OS mit Teibern etc und GRUB drauf? Mehrere Disketten? Oder Festplatten?
70
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 28. May 2011, 09:34 »
aber ich denke mal, das Floppy-erst-nach-boot-einstecken hat dann geholfen.
Ja, das stand auch völlig außer Frage. Ich vermute mal da macht irgendeine Legacy-Emulator-Funktionalität des BIOS ein paar Probleme. Meine Frage zielte aber eher darauf ab ob Du da nun noch etwas weiter geforscht hast (und vielleicht noch ein paar nützliche Infos für die Allgemeinheit bieten kannst) oder ob Du Dich mit der Behelfslösung einfach zufrieden gibst.

Mit solchen Lowlevel-Hardware-Sachen bin ich nicht wirklich gut aus, und die Allgemeinheit guckt Filme von Blu-Ray-Discs (tatsächlich steckt doch schon was wares dahinter, mein Image ist 1,5 MB groß, die Diskette hat 1,44 MB (liegt wahrscheinlich an der Interpretierung der Vorzeichen (1 Mibibyte = 1024 KB)). Hoffentlich bleibt noch Zeit, bis ich mit meinem selbstgebastelten HDD-Treiber meine Festplatten zerschießen muss. (Zum Glück hab ich 2 Stück)
71
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 27. May 2011, 15:48 »
Ich bin mir nicht sicher, was genau die Erlösung gebracht hat, aber ich denke mal, das Floppy-erst-nach-boot-einstecken hat dann geholfen.

P.S.: Der Luxus der Paketverwaltung gegenüber Windows ist doch immer wieder beeindruckend!
72
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 26. May 2011, 22:00 »
Welches Repo enthält denn bochs? Muss ich gleich mal nachschauen!
73
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 26. May 2011, 16:02 »
Du scheinst irgendwie nicht richtig das Wiki zu lesen, sonst wüsstest du, was Emulatoren sind und warum einen eigenen Bootloader schreiben Mist ist.

Das liegt wohl an dem Ärger mit Emulatoren, den es unter Linux gibt. Bochs will eine libglitz.so.1, und bei qemu haben die wohl vergessen, was Ausführbares beizulegen (oder hab ich mir da den Sourcecode geladen?)

Und mit dem Bootloader usw.: Ich hab halt überhaupt keine praktische Erfahrung, und ich muss doch sagen, dass wenn z.B. Jutta (Name von der Redaktion geändert), eine mehr oder weniger erfahrene Programmiererin, (zufällig) auf das Wiki kommt, doch von den Tutorials erschlagen wird. Es gibt ja mindestens [Übertriebene Aussage]10 Tutorials[/Übertriebene Aussage], die ein einfaches OS (na gut, Kernel, Bootsektor, schlagt euch meinetwegen die Köpfe darüber ein) beschreiben.
74
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 24. May 2011, 18:31 »
Danke, funktioniert jetzt!
75
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 24. May 2011, 15:30 »
Hallo nochmal,

ich habe jetzt brav nach Tutorial ein GRUB-Image erstellt, doch beim Auswählen des Kernels (beim Booten) sagt er mir, er erkenne das Format nicht (Error 13). Ich habe OUTPUT_FORMAT(elf32-i386) auch im Linkerscript drinne.

thx
tiger717
76
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 23. May 2011, 20:21 »
Hallo, ich habe jetzt das FDD erst nach dem Booten angesteckt, und jetzt funktioniert es! (Wird als sdf eingebunden)

Muß jetzt noch mal über mein GRUB-Image schauen, ich glaub, da ist was faul...
77
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 23. May 2011, 14:41 »
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 058f:6360 Alcor Micro Corp. Multimedia Card Reader
Bus 002 Device 003: ID 13d3:3306 IMC Networks WLAN [RTL8191S]
Bus 004 Device 002: ID 046d:c219 Logitech, Inc. Cordless RumblePad 2
Bus 004 Device 003: ID 045e:009d Microsoft Corp. Wireless Optical Desktop 3.0
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Aber siehe hier: http://www.linux-club.de/viewtopic.php?f=61&t=31792

Zitat
Das ist momentan leider bei allen Linux Versionen so, jedenfalls wenn es überhaupt erkannt wird.
Ich habe hier ein externes USB Floppy (NEC UF0002) und das wird entweder gar nicht oder immer 8 mal eingebunden.
Getestet mit SuSE 9.2, Ubuntu 5.04, Kanotix BH8 + 2005/1.
Bei Ubuntu 4.10 kommt 'ne Fehlermeldung wegen angeblich ungültiger Partitionstabelle!

Ich vermute das es damit zusammenhängt, das es als SCSI Gerät angesprochen wird und auf alle 8 möglichen Geräteadressen antwortet.
78
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 23. May 2011, 11:23 »
Hallo
P.S.: Ja, ich weiß schon was Real Mode usw ist. (ich les schon seit ca einem Jahr die Artikel hier, es wundert mich, dass ich noch keinen 2.Windows programmiert habe...) Allerdings bin ich halt kein C-Guru (und werde es niemals sein. Assembler ist doch die schönere Sprache ;) )

Als Build-Vorgang mach ich erst den ganzen Make-Kram in Linux -> Reboot auf Windows, Rawwrite anschmeißen -> Reboot, Fleißig [F8] drücken und mein Floppy auswählen
(Ich weiß, dass es kompliziert ist, dass braucht mir keiner zu sagen)

Aber warum kann ich den Kernel nicht extern haben? Vielleicht, wenn ich die 2.Stage in eine eigene Sektion packe?
79
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 22. May 2011, 22:09 »
Mir ist gerade aufgefallen, dass wenn ich die Linker-Zeile
    . = 0x7e00;durch
    . = 0x100000;ersetze, ich folgende Fehlermeldung erhalte:
a.out:a.out:(.text+0x9): relocation truncated to fit: 16 against `.text'
a.out:a.out:(.text+0x1e): relocation truncated to fit: 16 against `.text'
b.out:b.out:(.text+0x4): relocation truncated to fit: 16 against `.data'
b.out:b.out:(.text+0xf): relocation truncated to fit: 16 against `.text'

Dass sind jeweils Zeilen mit Speicherzugriffen.
80
Lowlevel-Coding / Re:C-Kernel ohne Multiboot
« am: 22. May 2011, 22:04 »
Moin

vermute, dass GRUB meinen Code nicht erkennt (ist ja beides auf unixoider Basis). Das BIOS erkennt den Bootloader tadellos.

Vermutest du das nur oder hast du Grub schon getestet? Normalerweise müsste GRUB auch mit USB Diskettenlaufwerken gehen.
Kannst du von deinem USB Diskettenlaufwerk booten?

PNoob

Hast du etwa ein USB-Diskettenlaufwerk? Die Sache ist die: Mein BIOS erkennt das Laufwerk (gaaaanz sicher), aber Linux will nie etwas davon gehört haben (sagt nicht mal sowas wie "unknown device"). Außerdem: Ich will hier nur mal testen, wie ich ASM+C gut kombinieren kann. Im späteren OS werd ich dann auch wahrscheinlich Multiboot implentieren. Das Problem liegt ja hier nicht am eigentl. Bootvorgang, sondern am Linker (bzw. Compiler). Wie schon gesagt, will dieser meinen Kernel nicht hinzufügen.
Seiten: 1 2 3 [4] 5

Einloggen