Skip to content
Nicolas LG edited this page Aug 22, 2020 · 45 revisions

SEAC

SEAC (Système d'Exploitation Approximativement Complet) est un système d'exploitation développé pour ordinateur de type "PC" par N-LG pour son usage personnel. c'est un systeme d'exploitation monolithique en 32bit. il n'y as pas de GUI, chaque application qui as besoin d'interfacer avec l'utilisateur utilise la totalité de l'écran. Le logiciel est écrit exclusivement en assembleur pour processeur x386 et compilable par le logiciel FASM 1.70.16 Cette documentation a été rédigé pour définir proprement les caractéristique du système et dans l'éventualité peu probable que quelqu'un d'autre souhaite utiliser ou modifier ce logiciel. l'intégralité du code source est en "osef* source" la version actuellement en cours de développement est la 0.9b

Installation

préparer le noyau
installer
description de la phase d'amorçage
Installer Grub

utilisation

fonctionnement
navigation entre les applications
terminal de commande principal
commande intégré
commande optionnelles
Script

Annexes

termes Spéciaux
liste des codes d'erreurs
liste des codes services

préparer le noyau

le noyau est une archive constitué du noyau de base et de fichiers optionnels

compiler la base du noyau

simplement compiler le fichier SYST.ASM avec la commande fasm SYST.ASM SYST.BAZ

ajouter fichier optionnels

avec l'utilitaire AJARCH on peut ajouter d'autres fichier au noyau de base. tout les fichier ajouté au noyau de base seront mis dans le disque mémoire lors de l'initialisation. il faut veiller a ce que le noyau ne dépasse pas 256Ko car c'est la limite maximum que l'on peut utiliser durant la phase d'amorçage.

installer

une fois le noyau prêt il faut encore l'associer a un bootloader qui se chargera de copier le noyau au bon endroit et de l’exécuter. il n’y as aucune possibilité d'installer directement le système a partir d'un autre système d'exploitation

amorçage sur disque dur partitionné en MBR

il faut copier le noyau "SYST.BAZ" comme une simple image dans une partition de type 30h et en installant le programme de mbr "MBR_BIOS.BIN" pour ça vous devez utiliser le logiciel partd (disponible uniquement pour SeaC) Si vous effectuez une installation sur un disque amovible, mettez la partition 30h a la fin du disque car certains windows ne prennent en compte que la première partition il faut bien sûr que le partitionnement soit de type MBR et qu'il n'y ait qu'une partition de type 30h sur le disque

amorçage par GRUB / multiboot1

on peut transformer le noyau en image multiboot 1 en utilisant le programme chargeur.asm (avec la commande fasm chargeur.asm CHARGEUR.IMB, après il faudra modifier la config de grub pour ajouter une possibilité de démarrer via cette image (voir plus bas)

amorçage par réseau

on peut utiliser le noyau "SYST.BAZ" tel quel pour démarrer sur le réseau par bootp/pxe et tftp, j'ai créer le programme "bootnet.asm" pour effectuer les amorçage par réseau mais actuellement je le déconseille (trop compliqué a utiliser: le paramétrage se fait dans le fichier source)

amorçage sur machine virtuel

Si on souhaite utiliser le système sur une machine virtuelle, il suffit de générer une image de disquette 1.44Mo amorçable non formaté fat en utilisant le programme disquette.asm (avec la commande fasm disquette.asm disquette.img. et de créer une machine virtuelle qui démarre sur la disquette. fonctionne avec qemu et virtualbox

Grub

Installer Grub avec Windows:


je recherche actuellement une méthode simple pour l'installer sous windows mais hélas j'ai pas encore trouvé, si vous avez des suggestions contactez moi

Installer Grub avec Linux:


entrez la commande suivante sudo grub-install /dev/sdX en remplaçant sbX par le nom du lecteur sur lequel vous souhaitez l'installer, plus d'info sur la documentation Ubuntu

Configurer Grub

Grub utilise un fichier de configuration pour définir ce qui est présent dans le menu, celui se trouve dans le disque sur lequel est installé Grub a l'adresse "GRUB2/Grub.Cfg". ouvrez le fichier avec un editeur de texte pour y ajouter ces lignes:
menuentry "SeaC" {
multiboot /grub2/CHARGEUR.IMB
}

ajoutez cette ligne si vous souhaitez pouvoir Redémarrer l'ordinateur a partir de votre menu Grub:
menuentry "Redémarrer" {reboot}

ajoutez cette ligne si vous souhaitez pouvoir éteindre l'ordinateur a partir de votre menu Grub:
menuentry "Éteindre" {halt}


fonctionnement

SeaC est un système multitâche préemptif, une tache principale est chargé de l'affichage et la gestion du TECOP (lorsque celle ci est affiché), de l’interprétation des commandes envoyé au système, de la mise a jour de l'écran, et de quelques travaux periodique (gestion moteur disquette, etc...). les autres taches sont créer lorsque que l'on exécute une commande associé a un fichier exécutable

le système utilise un journal ou chaque tache peut écrire le résultat de ces opérations

le système d'exploitation emploie le BIOS de l'ordinateur uniquement pour obtenir des informations sur les modes vidéo utilisables, pour changer le mode vidéo de la carte, et pour accéder a la mémoire vidéo en mode fenêtré par contre il s'avère que certains bios ont des effet de bord sur le fonctionnement du système, il est donc recommandé de limiter l'usage des fonction LV et MODV et de choisir des mode vidéo avec accès a la mémoire linéaire

une fois le système initialisé, le terminal de commande principale (TECOP, voir plus loin) s'affiche. la combinaison de touche alt+tab permettent de changer d'interface, et la touche list (entre la touche win et ctrl de droite) ou le placement du curseur de la souris en haut a gauche permettent de revenir a l'affichage du TECOP

le TECOP est l'interface standard entre l'utilisateur et le système, l'écran s'organise de la façon suivante:
les première lignes sont réservé a l'affichage des interfaces disponibles (si existante)
les lignes suivante sont réservé à l'affichage du "journal"
deux lignes sont réservé a l'affichage du dossier en cours d’utilisation
deux lignes son réserve a l'affichage de la ligne de commande en cours de rédaction


les touches réserve sont:
les flèche gauche et droite déplace le curseur dans la ligne de commande
les flèche haut et bas font défiler le journal
la touche début fait visionner le début du journal
la touche fin permet de visualiser la fin du journal
la touche inser permet de réutiliser la dernière commande envoyé au systeme
les touches F1 à F12 permettent d'acceder directement a une des interfaces listé en au du tecop la souris permet d'acceder directement a une des interfaces listé en au du tecop simplement cliquant sur le nom de celle ci

fonction système

démarrage du syteme d'exploitation

pour démarrer il faut charger le noyau a l'adresse 5000h:0000h et l'executer en mode réel.le noyau initalise alors le systeme (mode protégé, mémoire, périphériques de base, etc..), définis le disque mémoire comme disque de travail et systeme, puis execute 2 commande:
-ver pour afficher le numéros de version en cours dans le journal
-ex cfg.sh pour executer la liste de commande dans le fichier cfg.sh qui est dans le disque mémoire. si vous n'avez pas ajouté de fichier cfg.sh au noyau de base vous verrez alors un message d'erreur s'afficher

commande intégré

af XXX ajoute le texte XXX au journal
cd change de dossier, cd.. permet de revenir au dossier parent
ld Liste les partitions et cdrom qui ont été détecté par le système
lm Liste les espaces mémoires utilisé par le système
lt Liste les Taches en cours d’exécution sur le système
lv Liste les modes d'affichage reconnue par la carte vidéo
cop XXX YYY copie le fichier XXX dans le dossier YYY
dir Liste le contenue du dossier en cours d'utilisation
efj efface le contenue du journal système
fix fait enregistrer au système que le dossier en cours d’utilisation est le dossier système
mtt XXX YYY fixe le temps d’exécution de la tache XXX a la valeur YYY (unité de temps 2.5ms)
ren XXX YYY renomme le fichier XXX en YYY
sup XXX supprime le fichier XXX
ver affiche la version du système
modv XXX change le mode vidéo de l'écran pour le mode XXX
stop XXX arrête la tâche numéros XXX
nd XXX créer le dossier XXX
def XXX charge le fichier de définition XXX

lors de l’exécution d'une commande, le système vérifie d'abord si le premier mot de la commande correspond a une commande integré, ensuite le système cherche dans le dossier système puis dans le dossier de travail du TECOP si un fichier exécutable est du même nom que le verbe et si il est trouvé l’exécute. si aucun fichier n'est trouvé, on affiche un message d'erreur dans le journal

commande optionnelles

les commandes optionnelles sont tous les fichier exécutable rangé dans le dossier système, comme leur nom l'indique ces commande ne sont pas obligatoirement présente dans le système surtout si le dossier système n'as pas été définis (par la commande fix) on peut simplement considérer que les commande optionnelles sont de simple exécutable qui sont présent dans le répertoire du système

sous fonctions système

int 60h - fin de l’exécution de la tache
int 61h - sous fonction général (voir SF_GEN.ASM)
int 62h - déclenche la commutation de tache
int 63h - sous fonction interface (voir SF_VID.ASM)
int 64h - sous fonction fichier(voir SF_FICH.ASM)
int 65h - sous fonction communication(voir SF_COM.ASM)
int 66h - sous fonction port COM et LPT(voir SF_PORT.ASM)
int 67h - sous fonction périphériques USB(voir SF_USB.ASM)
int 68h à int 6Fh inutilisé

Annexes

Termes "spéciaux"

UTF8Z -> chaine de caractère codé en UTF8 dont la fin est signalé par le caractère NULL (octet a zéro)
TECOP -> terminal de commande principal
osef source -> (osef = On S'En Fout) c'est open source et vous pouvez en faire tout ce que vous voulez avec (même l'integrer a un projet fermé et payant) par contre l'osef source ne vous empêchera pas d'être un trou-du-cul si vous ne respectez pas les regles éthiques des hackers

codes d'erreurs

code signification
0 fonction exécute sans erreur
1 paramètre incorrecte
2 erreur de lecture
3 lecteur/disque/fichier non trouvé
4 erreur du système de fichier
5 erreur d'écriture
6 pas de réponse disque
7 disque occupé
8 fichier déjà ouvert
9 interdiction de lecture
10 interdiction d'ouverture
11 plus assez de mémoire
12 le fichier ouvert est un dossier
13 erreur d'origine inconnue (normalement jamais utilisé, sauf erreur)
14 nombre de couleur non reconnue
15 écran absent
16 zone tampon vide
17 zone tampon pleine
18 contrôleur ne répond pas
19 contrôleur absent
20 dossier non vide (dans le cas d'une suppression)
21 dossier non vide (dans le cas d'une suppression)
22 caractère interdit dans le nom de fichier
23 création de fichier impossible

codes de services

code signification
0 aucun service
1 écran
2 camera
3 imprimante
4 scanner
5 son
6 réseau Ethernet
7 reseau wifi
8
9
10 aucun service
11 à 63 réservé pour les standard
64 à 255 utilisable
Clone this wiki locally