|
||||||||||||||||||
Notícies AntiguesKernel 0.3.3 (30-Jul-2007)Un bon grapat d'arreglos i unes quantes millores és el que porta aquesta versió. S'ha arreglat un gran error durant la inicialització de les pàgines de memòria fraccionals (aquelles que poden contenir les seccions DATA i BSS d'un binari). Aquest error causava molts segmentation faults inesperats i impedia gaudir d'un nucli amb un funcionament finet. S'ha arreglat també alguns errors en el sistema de senyals, tot i que encara en manquen uns quants per poder parlar d'un sistema de senyals sòlid.Quant a les millores introduides en aquesta versió, la més destacable és en el filesystem EXT2 (incloent-hi un greu error arreglat en l'algoritme de localització d'inodes), que inclou el suport per les característiques filetype i sparse-super. Aquestes dues característiques s'han fet servir des de ja fa un cert temps en filesystems EXT2 i EXT3 moderns.
Aquesta nova versió inclou suport per la system call
Finalment s'ha actualitzat el
Kernel 0.3.2 (27-Mai-2007)En aquesta nova versió s'ha millorat diverses àrees del nucli. La més destacable és en el sistema de senyals, on també he descobert que encara li falta molta feina a fer.També s'ha fet una mica de feina per arreglar alguns petits problemes que hi havia durant el canvi entre consoles virtuals, tot i que crec que no estarà del tot enllestit fins que el sistema de senyals sigui més sòlid.
A part de tot això hi ha dues noves Espero poder tenir acabat el sistema de senyals de cara a la propera versió.
Kernel 0.3.1 (02-Mai-2007)Després d'uns quants mesos treballant de valent per incloure un ple i estable funcionament per les aplicacions basades en la SVGAlib, és hora de presentar els resultats. S'ha reescrit una bona part del codi del gestor de memòria virtual i s'hi han implementat uns quants nous mètodes del VFS que permetran executar-hi qualsevol aplicació SVGAlib com ara elzgv.
Amb aquest nou nucli es pot executar pràcticament qualsevol aplicació SVGAlib, i a més aquest codi escrit servirà com a base per expandir el suport cap al sistema X Window.
Per poder començar a experimentar amb aquesta novetat he actualitzat el LiveFilesystem per incloure en el mateix directori del
Com a exemple de tot plegat us recomano executar el programa
/root/demos/fun
i veure de primera mà les noves possibilitats gràfiques que porta aquest nou nucli.
Tingueu present que per executar les ordres anteriors us caldrà fer que el LiveFilesystem sigui el root filesystem.
Kernel 0.3.0 (19-Jan-2007)La llargament esperada implementació del filesystempipefs ha arribat. Amb aquesta nova versió major, la qual inclou uns quants arreglos, qualsevol pot començar a fer servir totes les característiques de les pipes amb nom i sense.
Pel que fa a les pipes amb nom i atès que el nucli encara no té implementada la system call Un exemple simple de com fer servir una pipe en una ordre:
ls | grep x
Un exemple simple de com fer servir una pipe amb nom.En una consola virtual, tecleja:
echo "hello" > /dev/fifo
i en una altra, tecleja:
cat /dev/fifo
Kernel 0.2.4 (05-Jan-2007)Amb aquesta versió de manteniment el nucli ha augmentat una mica més la seva estabilitat. Hi ha hagut alguns arreglos i un gran canvi en l'estructura interna del VFS (Virtual FileSystem) per poder afer-hi nous filesystems, especialment aquells que no depenen d'un dispositiu com ara elpipefs i el procfs.
El nou filesystem
Tinc previst enllestir la nova system call
Kernel 0.2.3 (02-Oct-2006)Aquesta versió de manteniment representa un gran pas endavant en quant a l'estabilitat del nucli. Alguns dels bugs que han estat arreglats hi eren des de feia molt de temps i ha calgut molt d'esforç per trobar-los.
Un altre important canvi és que a partir d'aquesta versió ja no és necessari incloure un paràmetre per tenir la disposició de teclat per l'idioma Anglès, per que serà el predeterminat. Per la resta de gent que vulgui la disposició de teclat Espanyol/Català haurà d'especificar-ho durant l'inici del sistema amb el paràmetre
Nou disseny! (11-Set-2006)Tot just tres dies després del llençament de la darrera versió del Fiwix, m'enorgulleix mostrar-vos la nova imatge de la web del projecte.La nova web ha estat basada principalment en la web d'un altre projecte de sistema operatiu anomenat Prex, però tot i que té un disseny diferent, he de donar les gràcies al seu autor per la bona feina feta amb aquest estil tant net i simple. Moltes gràcies Kohsuke Ohtani !.
Kernel 0.2.2 (08-Set-2006)Després de tant de temps sense gaire moviment, la notícia més important d'aquesta nova versió és sens dubte el nou suport de la system callsys_mount() i les seves dues derivades sys_oldumount() i sys_umount(). Tot i que encara no disposen dels paràmetres estàndards, el seu funcionament és plenament satisfactori.
Actualment entre d'altres limitacions hi ha el fet que només permet muntar sistemes de fitxers de tipus EXT2 i amb la mida de block d'1KB. S'ha de tenir en compte també que atès que encara no hi ha muntat el /proc, l'ordre
# mount -t ext2 /dev/hda1 /mnt/disk
A part d'aquesta gran notícia hi ha noves millores en controlador de disquets per suportar tots els formats més comuns, i s'han arreglat forces errors en el sistema de fitxers virtual (VFS).
D'ara endavant la prioritat en el desenvolupament serà la implantació de la system call Kernel 0.2.1 (10-Nov-2005)Finalment la implantació del Virtual Filesystem (VFS) ha estat un èxit complet. Després de força temps treballant, aquesta nova versió de kernel disposa de tot aquest nou subsistema de disc que farà possible la incorporació ràpida i fàcil de nous sistemes de fitxers.Aquesta nova versió també porta noves millores en la detecció de processadors Intel, i la manera com queda representada la informació durant l'inici del sistema.
D'ara endavant la prioritat en el desenvolupament serà la implantació de la system call Kernel 0.2.0 (23-Abr-2005)Després de força temps sense tenir-ne notícies fresques, on pràcticament només feia treballs de manteniment i depuració de codi, m'en orgulleix poder presentar l'inici de la segona branca de desenvolupament. Ha estat gairebé un any sencer sense poder dedicar-me al 100% degut a canvis en l'horari de la feina, que m'han impedit que pogués donar la dedicació que es mereix el projecte Fiwix.Sigui com sigui, aquesta segona branca neix amb l'objectiu principal d'incorporar al nucli el suport pel filesystem de tipus procfs (/proc), i de la necessària capa VFS. Això permetrà la funcionalitat d'eines tant bàsiques com ara ps, free, mount, etc. i a més a més, facilitarà la incorporació de futurs nous tipus de filesystems.
Kernel 0.1.5 (01-Mai-2004)La gestió de la memòria virtual avança força bé. La gran notícia és sens dubte la incorporació de la característica anomenada Copy-On-Write, que permet un millor rendiment durant els fork()s i també un millor aprofitament dels recursos de memòria. Gràcies a tot això, durant les properes versions i mentre hi hagi prou espai, dins del floppy hi haurà un nou programa anomenat forks, que permetrà avaluar la velocitat del kernel calculant la quantitat de fork()s per segon. Per curiositat, aquest cap de setmana he executat aquest binary en diferents ordinadors i després he fet el mateix amb diverses versions del kernel Linux.Els resultats obtinguts i que exposo a continuació permetran tenir una perspectiva més ajustada del kernel Fiwix.
També s'han arreglat (com sempre) alguns bugs, i sobretot s'han eliminat els missatges "WARNING: Unexpected inconsistency in hash_table. Missing page ...". Aquests missatges apareixeran encara a programes gràfics com ara el zgv o en els programes de demostració del paquet svgalib. Això és produït degut a que encara no es gestiona de manera correcte l'accéss directe a les pàgines de memòria de video. Segueixo treballant amb la gestió de memòria virtual i les funcions kmalloc() i kfree().
Kernel 0.1.4 (15-Mar-2004)S'ha completat amb èxit (almenys això espero) la programació de la gestió de memòria virtual. De moment el seu mecanisme és molt simple atès que encara no puc gestionar un sistema de demanda dinàmic de memòria a nivell de kernel (kmalloc i kfree).Segueixo treballant amb la gestió de memòria virtual i les seves funcions de suport.
Kernel 0.1.3 (01-Feb-2004)Tot i que aquest nou kernel és en definitiva una altra versió de manteniment, on s'han arreglat alguns bugs que afectaven directament a l'estabilitat del kernel, la notícia més important és que s'ha començat a afegir part de la nova gestió de memòria virtual, tot i que encara és en fase de proves.Segueixo treballant amb la gestió de memòria virtual i les seves funcions de suport.
Kernel 0.1.2 (01-Des-2003)Aquest nou kernel és en definitiva una nova versió de manteniment.Segueixo treballant amb la gestió de memòria virtual i les funcions kmalloc() i kfree().
Kernel 0.1.1 (01-Nov-2003)Després del gran rebombori que ha produït la presentació del projecte GNU/Fiwix mitjançant el meu article a la revista tecnològica OS News i l'allau de correus electrònics que això ha provocat, la veritat és que m'ha quedat poc temps per acabar algunes de les coses que tenia previstes per aquest mes.Tal i com es va prometre en l'article, ja he enllestit un petit live-filesystem que permetrà poder experimentar molt millor amb l'actual kernel. El trobareu a la secció downloads. Continuo millorant el sistema de gestió de memòria virtual, que serà la base per poder avançar amb noves millores en el kernel.
Kernel 0.1.0 (01-Set-2003)La notícia més important d'aquesta nova versió és sens dubte que l'antic FILO (FIwix LOader) ha estat substituït pel GRUB (GRand Unified Bootloader) i la seva Multiboot Specification. Aquest boot loader forma part actualment d'altres projectes com ara RedHat Linux, FreeBSD, OpenBSD, NetBSD, GNU/Hurd, etc. i gràcies a les seves prestacions sembla que pot acabar sent en el futur tot un estàndar.Aprofitant aquest important avenç que ja s'incorporarà a partir d'ara, he decidit donar un pas endavant en l'actual sèrie de kernels. Des d'ara, la branca de desenvolupament serà la 0.1.x i anirà fins la major version 1.0.0 en passos intermitjos anomenats minor versions com ara: 0.2.x, 0.3.x, etc. Les notícies i els històrics de canvis corresponents a antigues versions del kernel, poden seguir sent consultats clickant en el seu corresponent enllaç.
Si algú vol comprovar de el funcionament del kernel en un filesystem real, recomano instal·lar en un disc dur antic (< 2GB d'espai), la versió RedHat Linux 4.2. Un cop realitzada la instal·lació, engegar l'ordinador amb el disquete bootable que trobareu en la secció downloads.
Penseu que haureu d'indicar el root device correcte en l'argument root= que trobareu en el fitxer
#
# GNU/Fiwix Operating System
# Copyright (C) 1998-2003 Jordi Sanfeliu <mikaku@fiwix.org>
#
# GRUB configuration file
#
default 0
timeout 10
splashimage (fd0)/boot/grub/fiwix.xpm.gz
title GNU/Fiwix 0.1.0
root (fd0)
kernel /vmfiwix root=/dev/fd0
Kernel 0.0.15 (0.0.0w) (01-Jun-2003)Aquesta versió torna a ser una altre versió de manteniment.Segueixo treballant també en el suport gràfic sota svgalib i X11.
Kernel 0.0.14 (0.0.0v) (01-Abr-2003)Aquesta versió torna a ser una altre versió de manteniment. Alguns dels problemes d'estabilitat que venia arrossegant ja han estat solucionats. S'ha millorat notablement el sistema de mapeig de memòria virtual (VMA) i comença a haver-hi suport per grups de processos i sessions.Segueixo depurant i millorant el kernel ja que encara s'observen alguns problemes d'estabilitat.
Kernel 0.0.13 (0.0.0u) (01-Gen-2003)Aquesta versió torna a ser una altre versió de manteniment. Alguns dels problemes d'estabilitat que venia arrossegant ja han estat solucionats. S'ha millorat notablement el sistema de buffer cache. Començo a fer les primeres proves amb el XFree86.Segueixo depurant el kernel ja que encara s'observen problemes d'estabilitat.
Kernel 0.0.12 (0.0.0t) (01-Set-2002)Aquesta versió torna a ser una altre versió de manteniment. El nou sistema de mapa d'adreces virtuals ja permet poder executar programes gràfics com ara elzgv en consola.
Segueixo depurant el kernel degut a problemes d'estabilitat i amb el buffer cache en sistemes amb 4MB i 8MB de memòria.
Kernel 0.0.11 (0.0.0s) (03-Jul-2002)Aquesta versió torna a ser una altre versió de manteniment. S'ha arreglat un munt de bugs i s'han incorporat noves millores en el filesystem. Tot el tema dels symbolic links m'ha portat més mals de cap del que en un principi em pensava. Espero i desitjo haver arribat a la seva fi!.Actualment segueixo depurant el kernel i a la vegada continuo amb la programació del nou sistema de gestió de memòria virtual.
Kernel 0.0.10 (0.0.0r) (01-Mai-2002)Tot i que aquesta és una altre versió de manteniment on s'ha arreglat alguns bugs bàsics, la notícia més important és la inclusió de la utilitat BusyBox en la imatge del disquet.
Fins ara només s'hi oferien els programes
Kernel 0.0.9 (0.0.0q) (01-Abr-2002)Aquesta versió és en definitiva una altre versió de manteniment. S'ha arreglat numbrosos bugs que provocaven errors inesperats, i a la vegada desestabilitzàven la funcionalitat del propi kernel.D'aquí a la darrera versió d'aquesta sèrie em dedicaré a pulir un gran nombre de bugs i carències bàsiques que ja tinc localitzats. Pretenc deixar un kernel bastant enllestit de cara a començar la nova sèrie (0.0.x), amb un kernel net de problemes i preparat per començar a expandir-se.
Kernel 0.0.8 (0.0.0p) (03-Mar-2002)Amb aquesta versió s'inclou el suport pels binaris ELF-386 de Linux, ja siguin estàtics o dinàmics. Ha estat un treball bastant dur perque no he trobat tota la informació que necessitava. He hagut de mirar part del codi font de Linux i intuir certs aspectes durant la càrrega del binari. Tot aquest nou suport actualment es recolza en una sèrie de funcions internes provisionals. Aquestes funcions queden pendents de millorar quan s'instal·li el nou sistema de gestió de memòria virtual que estic fent.
Tot i que les proves que he fet per comprovar aquest nou suport han estat totes satisfactòries, ha provocat una mica d'inestabilitat al kernel que no esperava. Part d'aquesta inestabilitat està localitzada i la crea la system call Ara em centraré en arreglar aquests problemes d'inestabilitat i millorar aquest nou suport. També seguiré treballant en el nou sistema de memòria virtual, que permetrà aprofitar millor la memòria i augmentar el rendiment del kernel.
Kernel 0.0.7 (0.0.0o) (01-Gen-2002)Aquesta versió també és bàsicament una versió de manteniment. Ja s'ha començat a reestructurar part del kernel pel suport de binaris ELF-386 dinàmics. Però degut a que gairebé totes les llibreries són fitxers de tipus symbolic link, ha estat necessari afegir aquest suport per poder continuar amb el plà de treball.És per això que avui es llença aquesta versió, que inclou l'anomenat suport i un parell de bug fixes.
Kernel 0.0.6 (0.0.0n) (01-Des-2001)Apart d'algunes millores esencials, aquesta nova versió és bàsicament una versió de manteniment. La seva finalitat és arreglar un munt de bugs i començar a preparar el kernel per incloure-hi el suport de càrrega de binaris ELF-386 dinàmics, i a la vegada millorar el subsistema de gestió de memòria virtual. Degut a la complexitat d'aquests dos canvis, es veurà afectada inicialment l'estabilitat del kernel, però permetran aprofitar millor les avantatges que ofereix la memòria virtual, i faran donar un pas de gegant al propi kernel.Encara restaran pendents de realitzar el suport per l'escritura en el filesystem i afegir el suport per múltiples filesystems mitjançant la capa VFS (Virtual File System).
Kernel 0.0.5 (0.0.0m) (01-Jul-2001)La millora més destacable que porta aquesta nova versió, és sens dubte la inclusió del nou driver per les unitats de disc dur ATA. Tot i que de moment només soporta la modalitat de lectura, he pogut crear un filesystem EXT2 des d'un ordinador amb Linux i portar les aplicacions més bàsiques, compilades estàticament es clar. El resultat ha estat més satisfactori del que em pensava. El comportament del Fiwix en un filesystem m'ha sorprés totalment. A continuació exposo en detall els passos que he seguit per obtenir aquest filesystem experimental.El primer que cal és disposar d'una versió RedHat Linux 4.2. Això és així perque aquesta distribució encara portava unes llibreries del GCC que permetien un linkatge estàtic complet. Les actuals versions inclouen llibreries adicionals encara que es faci un linkatge estàtic, que fan desestabilitzar el kernel. Com a segon pas i un cop instal·lat el sistema Linux, crear un nou filesystem d'un tamany d'uns 100MB. Un cop creat arriba la feina més feixuga. Escollir els paquets RPM que no requereixin el subsistema de xarxa i recompilar-los estàticament. Els RPM resultants no serveixen degut a que no és possible instal·lar paquets RPM en un altre filesystem (al menys que jo sàpiga). Per tant no quedarà més remei que copiar un per un tots els binaris ja compilats i portar-los cap el seu directori corresponent. A continuació exposo la llista sencera de paquets que he instal·lat:
Finalment ja només queda copiar el kernel del Fiwix (
Encara queda millorar el suport de seqüències ANSI i la system call
Kernel 0.0.4 (0.0.0l) (06-Mai-2001)Aquesta nova versió porta nombroses millores generals i forces reestructuracions internes per poder començar a acoplar el driver del disc dur. El canvi més important es nota ja durant la càrrega inicial del sistema. Es pot observar que aquesta versió no incorpora la imatge del logotip del Fiwix que normalment es mostra durant la càrrega del kernel. Això és així degut a que per poder incorporar el programals ha calgut fer una mica d'espai en el disquet, i l'unic fitxer gros prescindible era el propi logotip del Fiwix. O sigui que al reiniciar l'ordinador amb el disquet de boot, la càrrega del logotip fallarà i l'inici es detindrà en aquest punt, donant un missatge normal d'error de localització del logotip del Fiwix. En aquest punt, el Monitor de Boot esperarà a que l'usuari doni l'ordre boot per iniciar la càrrega del kernel i continuar el procés d'inici.
El programa El kernel és encara inestable degut a un problema de memòria que encara no tinc resolt i que afecta directament quan s'executa en un entorn multiprocés. La resolució d'aquest problema es fa difícil operant amb la lentitud de la unitat de disquets, és per això que a partir d'aquesta versió em centraré en el desenvolupament del driver per unitats de disc dur IDE. Crec que fins d'aqui un parell o tres de mesos no tindré un driver prou funcional com per poder muntar filesystems EXT2 residents a discs durs IDE i poder experimentar el driver sense problemes.
Kernel 0.0.3 (0.0.0k) (06-Mar-2001)Després de gairebé 3 anys d'esforç i plena dedicació, puc començar a presentar un kernel semi-funcional. Aquesta darrera versió permet entre d'altres funcions, crear nous processos fills i executar-los. S'ha millorat molta part de les funcions del filesystem, de la comunicació entre processos mitjançant senyals i sobretot la càrrega i allotjament en memòria de binaris de tipus ELF-386 estàtic. Això ha permès mantenir una compatibilitat 100% amb els binaris actuals de Linux, i de retruc poder utilitzar les eïnes GNU orientades al sistema operatiu.Malgrat totes aquestes millores, el kernel només es capaç de gestionar un tipus d'unitat emmaguetzament. El disquet. I com tots sabem, els disquets més usats actualment tenen una capacitat limitada a 1.44MB. A aquesta problemàtica li hem d'afegir el fet que el sistema no permet encara binaris linkats dinàmicament, sino que només reconeix els binaris linkats estàticament, això significa que els binaris tendeixen a tenir un tamany molt més gran de l'habitual. De totes maneres, i gràcies al tamany reduït de l'actual kernel, he pogut crear una imatge en un disquet on hi ha els següents programes (per ordre d'execució):
Inicialment el kernel munta el filesystem en mode de només lectura. Seguidament i després de preparar un entorn d'execució òptim pel procés INIT, el carrega en memòria i l'executa. Durant l'execució, l'INIT localitza i carrega en memòria el fitxer
Si la contrasenya de l'usuari coincideix amb la contrasenya emmaguetzamada al fitxer A continuació exposo una còpia d'una sessió d'entrada utilitzant la imatge que a partir d'avui queda a disposició de tothom:
Fiwix OS Release 0.0
Copyright (C) 1998-2001, by Jordi Sanfeliu
(mikaku@fiwix.org)
Kernel version 0.0.0k for Intel 32bit Platform
The system language is English
DEVICE I/O ADDRESS IRQ COMMENT
-------------------------------------------------------------------------------
cpu - - family=586 PentiumMMX at 167.34200 Mhz
cpuid - - vendorid=GeniuineIntel model=4 stepping=3
console 0x03D4-0x03D5 - VGA Color 80x25 (12 virtual consoles)
fd0 0x03F2-0x03F7 6 1.44MB 3'5 (New Intel 82077)
memory: total = 65536 (-384KB), kernel = 8576KB, user = 56552KB
kernel: text = 34KB, data = 12KB, bss = 187KB, i/o buffers = 6552KB
inodes = 4071 (652KB)
mounted root (ext2 filesystem) readonly
INIT: version 2.74 booting
INIT: can't open(/etc/ioctl.save, O_WRONLY): No such file or directory
INIT: can't open(/etc/ioctl.save, O_WRONLY): No such file or directory
INIT: Entering runlevel: 3
while opening UTMP file: No such file or directory
while opening UTMP file: No such file or directory
while opening UTMP file: No such file or directory
Fiwix Operating System Release 0.0 (tty1)
Kernel version 0.0.0k
(none) login: root
Password: root
_setutent: Can't open utmp file: No such file or directory
_setutent: Can't open utmp file: No such file or directory
_setutent: Can't open utmp file: No such file or directory
bash#
Els missatges d'error que es poden observar, són produïts com a resultat de muntar el filesystem en mode de només lectura, i a la vegada la manca de la funció d'escriptura als dispositius de block que actualment té el kernel.
Val a dir que el sistema encara és una mica inestable i poden produïr-se situacions de bloqueig general de la màquina. Tot i que no hi ha cap perill de produïr averies en altres dispositius, no m'en faig responsable en cas de que s'en produeixin. Encara hi queda molta feina a fer. Hi ha molts bugs que tinc documentats que són els que creen una estat d'inestabilitat. Espero i desitjo seguir disposant de temps per arribar a la versió 0.0.1 (just després de la 0.0.0z) en la que es disposarà de la función d'escriptura a dispositius de block i probablement també incorporarà el driver pel disc dur.
Kernel 0.0.2 (0.0.0j) (01-Gen-2001)Ja està enllestida la nova versió interna del kernel. Aquesta versió porta moltes més novetats. S'ha incorporat tot el tractament de les senyals entre processos i s'ha ampliat el número de system calls soportades pel propi kernel. M'ha costat molt més del que em pensava implantar tot el sistema de senyals, ja que això suposa tocar l'stack interna de cada procés i controlar el seu signal context, i naturalment això només es pot fer a baix nivell mitjançant l'assembler. Odio l'assembler! :-). Degut a aquestes millores, he ampliat la u_area de cada procés, incorporant-li tot el control dels temporitzadors (Real, Virtual i Profile). També s'ha incorporat el tractament dels descriptors de fitxers i el tractament dels fitxers regulars i els dispositius de block i de caràcter. Tot això ha fet que no es puguin cumplir les espectatives de tenir una imatge estable tant aviat.Crec que cap a finals del mes que ve podré presentar una imatge en disquet, amb un kernel prou funcional com per poder-lo començar a experimentar i provar.
Kernel 0.0.1 (0.0.0i) (30-Oct-2000)Al contrari del que molts han pensat, el projecte Fiwix NO és mort. La demora en presentar la nova versió ha estat degut a la quantitat de noves característiques introduïdes al kernel, que han fet que cada cop s'apropi més a la paraula ESTABLE.Han passat molts mesos des de la darrera notícia en la que el kernel no era res més que una idea. Ara per ara, ja comença a agafar forma i a la vegada complexitat. Actualmente el Monitor de Boot el carrega en memòria automàticament i l'executa. El kernel pren el control de l'ordinador, inicialitza totes les seves estructures internes, detecta els perifèrics més elementals, i prepara un entorn a mida pel primer procés (l'INIT). Degut a que penso mantindre la compatibilitat amb Linux, tots els binaris seran en format ELF-386. Provisionalment, la única diferència serà que hauran de ser compilats amb el paràmetre -static. Això em fa accelerar més la programació destinada a la càrrega i relocació dels binaris gràcies a la simplicitat d'aquest model d'execució.
Per poder provar la càrrega del binari Crec que cap a finals d'any podré presentar una imatge en disquet, amb un kernel prou funcional com per poder-lo provar i comprovar.
Inici de la programació del kernel (03-Feb-1999)Ha arribat el moment de la veritat. A partir d´ara, tota la feina es centrarà en la programació del kernel del sistema que (inicialment), tindrà un petit nucli amb les tasques més simples (consola, teclat, floppy i rellotge). Per altre banda, aniré perfilant totes les rutines de suport per carregar-lo i executar-lo automàticament des del Monitor de Boot a mesura que avanci la seva programació.Val a dir que degut a que penso mantindre la compatibilitat amb Linux, el kernel serà un binari de format ELF-386. Això fa que es retrassi molt més la seva programació ja que desconec completament com tractar la estructura interna d´aquest format. Tot s´anirà fent sobre la marxa. No sé quan de temps em caldrà per obtenir aquest petit kernel, però, com a temps aproximat crec que no ens tornarem a veure fins d´aquí uns quants mesos. De totes maneres, intentaré reflexar l´avanç de la seva programació dins les seccions Històric de Canvis i Estat del Projecte.
Finalitzada la càrrega del logotip de boot (16-Gen-1999)A partir d´ara, la primera imatge que sortirà per pantalla serà el logotip especificat en el directori/etc/default. Inicialment he fet que el nom d´aquest fitxer sigui fiwixlogo.bmp. Naturalment, aquest fitxer ha de cumplir uns requisits per poder-lo visualitzar sense cap problema:
Com es pot veure, qualsevol logotip dels que porta el Windows95 us serveix per tenir-lo com a base. De moment no hi haurà animació (mitjançant la paleta), sino que serà una imatge estàtica. Més endavant tinc la intenció de dotar-lo d´un cert moviment que denoti que el sistema està treballant.
Finalitzada la càrrega dels paràmetres de boot (10-Gen-1999)Bé dono per acabada la fase de càrrega dels paràmetres de boot. Aquests paràmetres resideixen en el fitxer anomenat/etc/default/boot. A continuació es mostra un exemple d´aquest fitxer amb els paràmetres actualment suportats. Naturalment, no es descarten futures ampliacions que aniré detallant conforme es vagin necessitant.
# @(#) boot
#
# Fiwix Operating System
# Copyright (C) 1998 Jordi Sanfeliu. All Rights Reserved.
#
# default/boot - system boot parameters
#
# Syntax: PARAMETER=value (no spaces and lowercase)
#
AUTOBOOT=yes
KIMAGE=/fiwix
LOGOIMG=/etc/default/fiwixlogo.bmp
LANG=en
Tots els paràmetres queden prou aclarits per sí mateixos. Bé a partir d´ara em dedicaré a enllestir la càrrega del logotip (que deu n´hi do!).
Canvi de look a la web (17-Des-1998)No se que en pensàveu de la web anterior, però crec que li faltava quelcom una mica més seriós. Així doncs, aquest serà el look que tindrà la web fins que el comencem a veure una mica antiquat. De totes maneres, aquests nous colors m´agraden molt i això em fa pensar que hi seran durant molt de temps. Ara només li caldrà una mica d´animació en alguns GIFs i algun retoc màgic de la mà del Sr. Java.
Primer download! (pels més impacients) (07-Des-1998)Per poder començar a experimentar una mica amb aquest monitor de boot, he posat en la secció de Downloads la imatge sencera del diskette de boot. Tal i com s´especifica en la secció de Característiques del Fiwix, el monitor de boot està fet en llenguatge anglès i amb el seu corresponent teclat. O sigui que haureu d´estar habituats amb la disposició de les tecles dels teclats anglesos. No cal ni dir que no intenteu engegar el kernel, perque encara no n´hi ha. :-)
Finalitzades les rutines de baix nivell pel filesystem EXT2-FS (Linux) (05-Des-1998)Ja he acabat les rutines de baix nivell que permetran al monitor de boot poder llegir el filesystem de tipus EXT2 (Linux). Això a permés poder acabar la ordre "ls [directory]" i sobretot, poder llegir el fitxer de paràmetres de boot allotjat en el directori "/etc/default". A més a més, s´han canviat algunes ordres i se n´han afegit de noves, com ara "rootdev=", "kimage=", "logoimage=", "lang=", "set" i "boot". No prevec que se n´afageixi cap més (per ara).Com a exemple, a continuació es mostra una petita sessió de treball amb el monitor de boot del Fiwix:
Fiwix OS/386 Release 0.0.0
Boot Monitor. (Press '?' for help)
[Boot]: ?
Variable Description
-------------------------------------------------------
rootdev= Set the root device (fd0, hda0, etc.)
kimage= Set the name of the kernel image
logoimage= Set the name of the boot logo image
lang= Set the system language (en/ct/es)
Command Description
--------------------------------------------------------
? Help available
cpu Information about CPU type and features
mem Memory size reported by BIOS
set Show boot parameters for the kernel
fsstat Status of the root filesystem
ls [directory] List the contents of a directory
boot Load and run the kernel image specified
--------------------------------------------------------
[Boot]: cpu
Vendor ID : GenuineIntel
CPU type : 4 (80486 DX4)
Model : 8
Stepping : 3
CPUID : yes
FPU : yes (contains a FPU)
VME : yes (Virtual Memory Extensions)
PSE : yes (Page Size Extensions)
[Boot]: mem
BIOS has detected 640KB of conventional RAM (below 1MB)
(using BIOS function INT 12h)
BIOS has detected 31744KB of extended RAM
(using BIOS function INT 15h, AH=88h)
Total RAM presumed = 32768KB
[Boot]: set
bootdev=fd0
rootdev=fd0
cputype=486
memsize=640
extmemsize=15360
video=VGA-color
lang=en
image=/fiwix
[Boot]: ls /
/.
/..
/lost+found
/boot
/etc
A partir d´ara em dedicaré a enllestir la càrrega dels paràmetres del boot i la visualització de la imatge del logotip.
Primeres ordres del monitor de boot (21-Oct-1998)Després d´haver aconseguit implantar la estructura interna del funcionament del boot, actualment ja estic començant a dotar-lo d´ordres que ajudaràn a donar informació important sobre les característiques de l´ordinador. Algunes com ara, "cpu", "mem", "kparams" ja estàn totalment finalitzades.A partir d´ara comença la part més important del boot. És a dir, el diskette de boot ha de tenir incorporat un filesystem EXT2 (Linux) i el programa de boot s´ha de fer càrrec del control d´aquest filesystem. La feina que estic fent ara, és la programació de les rutines de baix nivell que em permetràn controlar el filesystem des del monitor de boot. Aquesta tasca és totalment necessària, ja que mitjançant aquestes rutines el boot podrà localitzar la imatge del kernel dins del propi filesystem i carregar-lo a la memòria.
Ja estic dins del llenguatge C ! (27-Set-1998)Després de passar-m´hi moltes setmanes escollint quin ensamblador aniria millor per poder fusionar amb el GCC (32-bit ELF), i havent descartat totalment la opció que representava el NASM, he decidit implantar la mateixa idea que la gent de BSD, o sigui el GAS (GNU Assembler). Avui he pogut barrejar el llenguatge assembler amb el C dins del mateix programa de BOOT.Amb l´ajuda que ha representat el poder estudiar les fonts del sistema operatiu FreeBSD, he pogut fer un programa híbrid entre l´assembler i el C que mostrés per pantalla la típica frase "Hello World!" (intercanviant de mode real a mode protegit) durant un BOOT des de diskette. A partir d´aquí, prevec que la programació del programa de BOOT agafarà un caire molt més ràpid. |
||||||||||||||||||
|
||||||||||||||||||