OS minimal in QEMU

Categorii: Programare

14-Mar-2014 16:23 - 577 vizionari

Am reusit sa extind sistemul minimal prezentat in tutorialul lui Brandon Friesen si sa-l compilez cu succes in Windows 7, 64 de biti.

Am inteles mai bine legatura intre c si asm, amintindu-mi cu placere de anii din facultate.

Am citit informatiile oferite de instructiunea CPUID privind numele, modelul si familia lui.

Am citit ceasul de timp real al sistemului.

Si am incercat, fara prea mare succes, sa determin viteza de executie a procesorului.

Nucleul OS trebuie sa se descurce singur, fara ajutorul BIOS, pentru ca lucreaza in modul protejat si functiile de BIOS nu sunt accesibile.

Procesor qemu64 simulat de QEMU
Procesor qemu64

 

Compilare si asamblare kernel:
compilare kernel

Asamblare cu: nasm –f elf32
Compilare cu x86_64-elf-gcc-4.9.0.exe –m32
Linkeditare cu x86_64-elf-ld.exe si OUTPUT_FORMAT("binary") OUTPUT_ARCH(i386)
Asadar sistemul este in 32 de biti.

Teste rulate in QEMU.
Numarul de secunde din imagine reprezinta timpul in secunde de cand a fost pornita simularea.

Procesor kvm32
Procesor kvm32

Procesor Core 2 Duo
Procesor core2duo

Procesor n270
Procesor n270

Procesor AMD Phenom
Procesor phenom

 

Procesorele 486 si Pentium sumulate de QEMU nu suporta anumite instructiuni generate de gcc si eroarea este capturata si afisata de OS.
Aceasta este dovada ca este un OS robust si bine gandit de Brandon Friesen.
Procesor 486

Estimare viteza procesor si afisare data si ora pe un procesor I7 simulat in QEMU.
Procesor Nehalem

Acum pot afla parametri de pornire kernel, datorita tutorialului de la http://osdev.berlios.de/grub.html
si pot interpreta informatiile CPUID, datorita http://en.wikipedia.org/wiki/CPUID si http://wiki.osdev.org/CPUID

Aventura mea privind cercetarea unui OS minimal a inceput cand am vrut sa pasez informatii kernelului OpenBSD asa cum se face in Linux.
OpenBSD suporta doar patru parametrii la pornire, –a, -c –d –s, adica:
boot /bsd –a
boot /bsd –c
boot /bsd –d
boot /bsd –s
sau alte combinatii, iar eu am vrut sa trimit si alti parametri si, eventual, sa customizez pornirea in functie de necesitati.

Cu toate problemele si zvonurile din Internet privind OpenBSD, acesta este special pentru mine si nu numai pentru mine si este preferat pentru configuratii de servere.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.