MINIX by Tanenbaum

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
Buonasera gente :ciaociao:

Ho scaricato il famoso sistema operativo MINIX 3.3.0 del famoso Prof. Tanenbaum.

Minix3

il sistema dovrebbe essere piuttosto grezzo, perche si dice che non ha neache il supporto alle porte USB :grat:
(era stato creato solo per scopi didattici da allegare al libro)
pero c'e' qualcosa per cui vale la pena di istallarlo e provare qualche programma in C :
LCOM 2013/2014: Lab2

"4.1 Invocation of the INT 0x10 instruction in real-mode
Minix 3 offers the SYS_INT86 kernel call, whose description in the
Minix 3 Developers Guide is as follows:
Make a real-mode BIOS on behalf of a user-space device driver. This temporarily switches from 32-bit protected mode to 16-bit real-mode to access the BIOS calls."


che significa che posso utilizzare tutti le chiamate del bios nel modo reale. :sisi:
dunque posso riprogrammare la porta seriale, la porta parallela ... ecc. ecc.
ora libero un hard disk, lo installo e vediamo cosa riesco ad ottenere.. :look:

:PCfury:

PS : [SAFETY USA-mode ON]

Per questi esperimenti sarebbe fortemente raccomandato utilizzare un PC pulito con un solo hard disk vuoto.
così se si combina qualche pasticcio si può reistallare il sistema da zero e senza timore di distruggere
i nostri preziosi dati o videogiochi.

E' abbastanza normale che il MINIX si blocca .... ha dei problemi .... e tanto altro,
questo perchè l'evoluzione dell' hardware ha portato troppi cambiamenti e troppe incompatibilità
e anche perchè questo software resta un sistema sperimentale/didattico.
 
Ultima modifica:
  • Mi piace
Reazioni: cdtux

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
capitolo 2 : Istallazione

Dopo aver scaricato e masterizzato la ISO del Minix 3.3.0
si puo' istallare il sistema operativo sull' hard disk vuoto (fill zero).
cioè si inserisce il cd-rom boot si avvia, poi quando appare la scritta login digitare il testo in rosso :
login : root
password : [invio]

per avviare l'istallazione digitare
# setup

usersguide:doinginstallation [Wiki]

dopodichè il sistema analizza e partiziona il disco e chiede le solite informazioni per l'installazione..
(tipo tastiera, paese, ecc. ecc.) e dove conviene mantenere tutto nello stile english-USA per ovvie ragioni.

Poi se durante l'istallazione non è collegato nessun network (LAN)
sarebbe meglio impostare l'opzione 0 = no network, altrimenti il sistema potrebbe mettersi
in ricezione del dhcp senza ottenere risposta, restando bloccato ore e ore fino al riavvio forzato. :grat:

Una volta istallato si puo' far partire il sistema operativo dall' hard disk
e tenendo ancora il cd-rom di istallazione nel lettore si digita il comando :

# pkgin_cd

che esegue l'update e visualizza gli aggiornamenti del cd.
poi :

# pkgin_cd in $( pkgin_cd av | awk '{ print $1 }' )

usersguide:installingbinarypackages [Wiki]

Questo serve per istallare tutti i pakages o le "apps" che non sono stati istallati
per motivi di spazio... nel 1990 1GB era considerata una dimensione mostruosa.. :asd:

A questo punto possiamo scrivere il nostro primo programma in C :sisi:

programma hellokitty.c :

# include <stdio.h>
int main ()
{ printf("Hellokitty ! \n");
return 0;
}

Ecco diciamo subito che questo sistema operativo ha due editor di testo davvero primitivi, cioe ed e vi

il primo è di tipo 1d che è un editor a linea singola,
il secondo invece èdi tipo 2d ed assomiglia a qualcosa di piu umano.




- - - Updated - - -

e diciamo pure che per utilizzare questi editor di testo, bisogna imparare la sintassi dei comandi,
che non sono nè facili nè intuitivi. l'editor dell' MS DOS a confronto era qualcosa di meraviglioso :sisi:

una volta salvato il programma hellokitty.c

si compila con il comando :

# clang hellokitty.c

che produce il file a.out

e che si esegue digitando :

# ./a.out

Hellokitty !

#

beh per ora e' tutto :ciaociao:
 
Ultima modifica:

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
Capitolo 3 -- Trasferimento File

Iniziamo col dire che il filesystem del minix è di tipo "minix" :sisi:
e non è compatibile nè con windows nè con linux, mentre Gparted dice che è di tipo sconosciuto.
Tentando di montare il disco minix da linux effettivamente si riescono a vedere alcuni files,
quindi appare evidente che esiste qualche compatibilità magari non dichiarata ufficialmente.
Però meglio non rischiare di fare pasticci cercando di leggere o scrivere qualcosa di ignoto.
Tantopiù che esistono alcuni comandi MINIX per l' I/O del floppy disk (o CD-ROM)
oppure per trasferire files via LAN configurando opportunamente il sistema in base al tipo di controller installato.
E se c'è un modem router con l'ingresso USB sarà possibile perfino scrivere sulla proibitissima chiavina,
su un NAS o su un altro PC della rete locale.
(magari si potrebbe pure utilizzare un server internet remoto, però visto che il sistema è abbastanza "rustico"
e quindi vulnerabile, sarebbe meglio evitare la connessione diretta con il provvider)
Per ora sembra che il controller USB onboard non è supportato.

Per provare qualche programma in C sarebbe utile poter importare ed esportare dei piccoli file di testo.
Che poi è possibile scrivere, modificare e stampare con Windows o con Linux.

Soprattutto l'editor grafico di linux è mille volte migliore del vi-unix
ed inoltre riconosce la sintassi del C cambiando colore alle parole chiave del linguaggio.
Questo è un valido aiuto per non commettere i soliti errori di scrittura che bloccano il compilatore :
manca il punto e virgola ... manca la parentesi graffa.. uffa!

* COMANDI FLOPPY DISK (FAT16)

Se il pc ha un vecchio floppy drive da 1.44 MB e qualche dischetto formattato,
si può iniziare subito a scrivere o copiare qualche programma :
con windows o linux l'operazione è banale.

Poi passando il dischetto sul PC del PC MINIX si possono provare alcuni comandi :

Elenca i file del floppy disk (fd)

# dosdir /dev/fd0

Stampa a video il testo del file su floppy prog.c

# dosread /dev/fd0 progr.c

invece per copiare dal floppy all' hard disk si può reindirizzare l'output al file :

# dosread /dev/fd0 prog.c > prog.c

viceversa per copiare dall' hard disk al floppy :

# doswrite /dev/fd0 prog.c < prog.c

* COMANDI CD-ROM-DVD

I comandi isoinfo, isodir e isoread dovrebbero funzionare allo stesso modo,
ma in questo caso non è possibile scrivere nulla, cioè il MINIX non può masterizzare il disco.

Stampa la directory del cd-rom :

# isodir /dev/c0d1

Copia il file readme.txt sull' hard disk di minix :

# isoread /dev/c0d1 readme.txt > readme.txt

(Magari per fare le prove sarebbe meglio utilizzare un CD-RW riscrivibile.)

E ultimo ma non ultimo, per per spegnere il computer,
cioè per mettere il sistema operativo in fase di arresto,
si utilizza il comando (solo per Minix 3.3.0) :

# shutdown -p now

che dovrebbe spegnere anche l'alimentazione
Ma qualcosa non funziona troppo bene,
perchè talvolta il PC resta acceso e bloccato.

Per il riavvio semplice invece si utilizza :

# reboot

Oppure la famosa combinazione dei 3 tasti ctrl+alt+del
 
Ultima modifica:

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
--- continua ---

giunti a questo punto si vorrebbe provare qualche programma che utilizza
gli interrupt x86 nel modo reale, cioè l'unico motivo per cui abbiamo istallato
il MINIX sull' hard disk :D

Ma ti pareva che in questi tempi di proibizionismo, telecontrollo e di digital millenium Act si lasciava
al programmatore l'accesso diretto alle routine del bios ? :giudice: Ma ovviamente NO ! :asd:
Ragion per cui nelle nuove versioni di MINIX 3 è stata soppressa la chiamata di sistema sys_int86(...);
Difatti nella guida per gli sviluppatori che elenca le Minix Kernel API
manca proprio la funzione che ci interessava. :cry:
developersguide:kernelapi [Wiki]

(Ufficialmente dicono che non era compatibile con le versioni per cpu ARM)

Ma noi non ci arrenderemo, ce la faremo e ci riusciremo ! :P
e pazienza se bisogna istallare qualche versione piu vecchia,
oppure se bisogna utilizzare la virtual machine di Ubuntu.

www:download:previousversions [Wiki]

l'istallazione e i comandi delle versioni precedenti sono simili a quelli descritti sopra,
(utente : root ... istallazione : setup ...)
tranne lo spegnimento che si esegue con (MINIX 3.1.8)

# shutdown

e poi

# off

che dovrebbe scollegare l'alimentazione.
e altre piccole differenze, come il compilatore intrgrato cc al posto di clang.

ciaooo :ciaociao:


PS tentando di istallare X-window della MINIX 3.1.7 con il comando

# packman

e poi avviando xwindow, sul mio pc succede il finimondo,
e un crash irreversibile di sistema. :asd:
 
Ultima modifica:

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
Capitolo 4 --- Linux e Vitrual Box MINIX 3.1.8

Bene giunti a questo punto bisogna fare alcune considerazioni particolari,
per chi non è abituato agli editor classici dei sistemi unix, ( ed e vi )
puo utilizzare l'editor di minix

# mined nomefile

che equivale al nano di linux e dove finalmente funzionano pure i tasti con le freccette. :look:
(salvare e uscire sono tutti comandi tipo ctrl+w, ctrl+x , ecc. ecc.)

Ma soprattutto, se vogliamo seguire la guida della famosa univerista' :
Faculdade de Engenharia da Universidade do Porto (Portogallo)
https://sigarra.up.pt/feup/pt/web_page.inicial
descritta nel LAB2
Lab 2: The PC's Video Card in Graphics Mode
LCOM 2013/2014: Lab2

c'è bisogno di istallare tutto il 'pack' utilizzato per interagire con il sistema (immagine di Minix 3.1.8)
e modificato per l'esecuzione del compilatore gcc, make ed esecuzione dei processi privilegiati.

Bene, allora ricominciamo ri-formattando l'hard disk per gli esperimenti
ed istallando una bella distro di linux mint 17.2 mate oppure Ubuntu. :party:
Download - Linux Mint
Poi istalliamo la virtual BOX di Oracle con la connessione internet attiva.
(la versione per ubuntu funziona anche per mint)
https://www.virtualbox.org/
Poi scarichiamo dal sito dell' universita' il pack
VirtualBox Image with Minix 3.1.8 (~260 MByte) pronto all' utilizzo :
LCOM 2015/2016
https://feupload.fe.up.pt/get/2PIketDAdHcGsg2

e lo istalliamo sulla virtual box di oracle ! :coffee:

una volta creati l'hard disk virtuale e avviato il minix "custom"
si accede al sistema con le password gia preimpostate dall' univerisita' :

username : root o lcom, password : lcom

(c'e' da dire che In questo caso la connessione internet dialoga con linux
che e' molto piu' sicuro e stabile di minix, quindi non dovrebbero esistere
problemi di virus e Trojan se non si commettono errori.)

Poi scarichiamo i file di testo dei programmi e iniziamo a provare
l'interfaccia grafica del virtual minix.
(in preparazione tutti i file...)

work in progress :asd:
 
Ultima modifica:

davethecipo

Utente Èlite
3,331
1,163
CPU
i5 4660
Scheda Madre
H97 PC Mate
HDD
qualcuno
RAM
8 GB
GPU
R9 280
Monitor
Samsung SyncMaster 940BW 19'
PSU
Enermax Liberty 620W
Case
Enermax Pandora Midi Tower Black
OS
Arch Linux con KDE...Windows 10
Beh se è disponibile un'immagine virtualbox allora posso pure pensare di scaricarlo :asd:

Certo non saprei che farci
 
  • Mi piace
Reazioni: Zhong

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
Dall' universita fanno scaricare l'immagine full (264MB) gia' preistallata e modificata del minix 3.1.8 r8398
che non è la versione "castrata" del sito ufficiale minix 3.1.8 r8165 (15 MByte)
l'unico peccato è che è preimostata per la tastiera portoghese. :asd:
Insomma per ritrovare i caratteri speciali del C bisogna andare a tentativi.
oppure si cambia l'impostazione del layout.

La virtual Box di oracle è davvero sfizziosa, perchè se si ha l'hard disk
abbastanza capiente, si possono scaricare le iso dei cd di linux, poi agganciarli
ai dvd rom virtuali e istallarli sugli hd virtuali della box machine.
In pratica si possono far funzionare contemporaneamente anche N+1 sistemi operativi diversi. :look:

Comunque l'obbiettivo era programmare di gli interrupt x86 e la grafica 1024x768
avendo disponibile l'area di memoria protetta per le variabili dinamiche del C.
(che nel dos sono i famosi 640k, praticamente nulla se confrontati con i Giga di oggi)

Per l'input/output dei file da Linux verso il Minix della VirtualBox si puo' utilizzare il server ftp,
oppure basta zippare i file dei programmi in file.zip , masterizzarli con brasero su un file.iso
poi agganciare il file.iso sul cd rom virtuale della box e poi leggerlo con il minix
utilizzando il comando :
# isoread /dev/c0d2 file.zip > file.zip
e una volta importato nel filesistem basta dezipparli nella cartella corrente.

P.S. sto' preparando i files per il programma in C che ho gia' provato e che funziona bene,
ma siccome interagisce con il sistema operativo per chiamare il sys_int86 in modo reale,
c'e' bisogno di qualche comando in piu' specifico..
ciaooooo :ciaociao:
 

Zhong

Nuovo Utente
92
26
CPU
i8
Scheda Madre
supermicro
HDD
nas array
RAM
dual ecc
GPU
rage
Audio
beep
Monitor
lcd
PSU
rack supply
Case
hot rack
OS
red hatt
Capitolo 5 -- il programma grafico sulla virtual box di minix :bevuta:

Allora, la virtualBOX di Oracle funziona benissimo anche su una live di Linux, incredibbile ma vero ! :sisi:
basta avere almeno 4 Giga. (per linux 32 bit) ma piu RAM c'e' meglio e' (su linux 64 bit)
Dunque scarichiamo e istalliamo la virtual per linux ubuntu e/o mint dal sito di oracle.
poi scarichiamo l'immagine del minix dal sito dell' universita' del Portogallo.
poi si istalla il minix sulla virtual machine e si collega al virtual hard disk.
Tutti i settaggi della virtual box si impostano dalla windows dunque sono abbastanza intuitivi.
setbox.png

poi scarichiamo questa immagine del floppy disk :

floppy.img :: Free File Hosting - File Dropper: File Host for Mp3, Videos, Music, Documents.

e lo colleghiamo al virtual floppy,
poi facciamo partire il sistema minix entrando sempre come superuser :
(se si blocca al dhcp utilizzare il ctrl+c e poi continuare..)

username : root
password : lcom

e importiamo subito il file "alles.zip" con :

# dosread /dev/fd0 alles.zip > alles.zip

e poi

# unzip alles.zip

A questo punto abbiamo dezippato questi files :

alles.c che e' il programma grafico principale
makefile il file batch di compilazione
lmlib.h l'header gentilmente messo a disposizione dall' univerista'
liblm.a il compilato della libreria dell' universita' portoghese
alles e' il file dei permessi di sistema per le chiamate al kernel

- - - Updated - - -

poi copiamo subito il file dei permessi "alles" nella directory /etc/system.conf.d/ con :

# cp alles /etc/system.conf.d/

e poi la compilazione vera e propria con il comando :

# make

che invoca il compilatore gcc e tutta le opzioni particolari,
e finalmente facciamo eseguire il nostro programma grafico con :

# service run /root/alles

e se tutto e' andato bene si ottiene il seguente video :

Visualizza allegato 185406

che dura circa 5 secondi.

eventuali manipolazioni del programma si possono fare
direttamente nell' ambiente di sistema digitando :

# mined alles.c

e ricompilando con

# make



mmm che pasticcio.. :grat:

- - - Updated - - -

Capitolo 6 - Considerazioni Finali

Per chi vuole di piu', puo' seguire direttamente il corso di laboratorio di informatica (6 crediti) :asd:
https://sigarra.up.pt/feup/pt/ucurr_geral.ficha_uc_view?pv_ocorrencia_id=368699

Poi .... scrivere programmi di questo tipo, che interagiscono col kernel per delle chiamate di basso livello,
che sono gli interrupt di bios in modo reale da un sistema multitasking in modo protetto... e' una scelta da kamikaze.
ovvero sarebbe stato di gran lunga piu semplice scrivere direttamente le routine in assembler :sisi:
Il sistema operativo serve per semplificare la gestione degli eventi e le operazioni con i files.
I linguaggi ad alto livello servono per rendre piu' naturale la programmazione.
Ma in questo caso abbiamo complicato cio' che era semplice, e questo non era il nostro obbiettivo.
direi proprio abort mission ! :asd:
L'unico aspetto positivo e' che abbiamo "spipplato" con il minix e i comandi unix (o simili)
che per il futuro informatico e' sempre cosa buona e giusta.

ciaooooo :ciaociao:
 

Allegati

  • VgaHiRes.png
    VgaHiRes.png
    37.4 KB · Visualizzazioni: 36
Ultima modifica:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili