21
Offtopic / Re: Trick: Eigenes OS als ISO
« am: 01. November 2012, 13:36 »Ich vermute das liegt daran, dass das Image nicht 1,44 MB groß ist.Kann sein. Wie bekomme ich das so groß?
29. March 2024, 03:15
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.
Ich vermute das liegt daran, dass das Image nicht 1,44 MB groß ist.Kann sein. Wie bekomme ich das so groß?
man kann auch einfach bei virtualbox als start medium eine diskette auswählen und das image auswählen ...
Die Das Diskettenabbild <pfad>\OS.img konnte nicht geöffnet werden.Ich erstelle es einfach mit "copy". Den Pfad habe ich für dieses Zitat durch <pfad> ersetzt.
Could not get the storage format of the medium '<pfad>\OS.img' (VERR_NOT_SUPPORTED).
Fehlercode:VBOX_E_IPRT_ERROR (0x80BB0005)
Komponente:Medium
Interface:IMedium {29989373-b111-4654-8493-2e1176cba890}
Callee:IVirtualBox {3b2f08eb-b810-4715-bee0-bb06b9880ad2}
Callee RC:VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Ja, GRUB ist ein Bootloader, und den gibt es auf einem echten Rechner genauso wie im Emulator genau dann, wenn man ihn installiert hat...d.h. ich muss ihn mit meinem Kernel verknüpfen?
Habe ich das nicht im ersten Post schon mal erwähnt?
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned uint32_t;
typedef long long int64_t;
typedef unsigned long long uint64_t;
typedef unsigned char uint8_t;
(a) Ich hatte dir anderweitig schon geschrieben, dass Abschreiben böse ist.Da hast du eindeutig Recht. Ich werde es lassen.
Aber glaub mir: Lern bitte erstmal ein paar C-Grundlagen. Zu wissen, was in stdint.h steht, gehört wirklich zu den Basics.Ich habe ein C-Buch zuhause. Ich habe dort extra nachgeschaut bevor ich die Frage im Forum gestellt habe. Dort stand nichts!
;;; Ein kleines Beispiel, wie man in den 32-Bit Protected Mode wechselt
;;; Bei Fragen kann man sich einfach an die ICQ-Nummer 338-417-614 wenden.
[BITS 16]
org 0x0000 ; Addiert zu allen Offsets die Start-Adresse dieses Codes
cli ; Interrupts ausschalten
lgdt [gdtr] ; GDT Pointer laden
mov eax,cr0 ; In PMode wechseln, indem das niedrigste
or al,1 ; Steuerungsbit von cr0 geändert wird
mov cr0,eax ; muss über Umweg über ein anderes Register gemacht werden
jmp codesel:PMode ; FarJump zu einer 32-Bit PMode Funktion
[BITS 32]
PMode:
mov ax,datasel ; Segmentregister laden
mov ds,ax
mov ss,ax
mov esp,0x90000 ; Stack aufsetzen
jmp $ ; Endlosschleife, wird durch weiteren Code ersetzt
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; == GDT == ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gdtr: ; Desktiptortabelle
dw gdt_end-gdt-1 ; Limit
dd gdt ; Basisadresse
gdt:
dd 0,0 ; Null-Deskriptor
codesel equ $-gdt
dw 0xFFFF ; Segmentgrösse 0..15
dw 0x0000 ; Segmentadresse 0..15
db 0x00 ; Segmentadresse 16..23
db 0x9A ; Zugriffsberechtigung und Typ
db 0xCF ; Zusatzinformationen und Segmentgrösse 16...19
db 0x00 ; Segmentadresse 24..31
datasel equ $-gdt
dw 0xFFFF ; Segmentgrösse 0..15
dw 0x0000 ; Segmentadresse 0..15
db 0x00 ; Segmentadresse 16..23
db 0x92 ; Zugriffsberechtigung und Typ
db 0xCF ; Zusatzinformationen und Segmentgrösse 16...19
db 0x00 ; Segmentadresse 24..31
gdt_end:
copy bootloader.bin+kernel.bin MeinOS.img