Wiki Ordunix

Linux, FreeBSD, macOS, Windows et Histoire Informatique

Outils pour utilisateurs

Outils du site


wiki:virtualisation_et_emulation:simh:tutos:unix-v6

Ceci est une ancienne révision du document !


Installation d'Unix version 6 sur PDP-11 avec émulateur SimH

Prérequis pour Unix version 6

Création des répertoires pour Unix version 6 :

mkdir -p emulateur/simh/Unix-V6

Se rendre dans le répertoire nouvellement créé :

cd emulateur/simh/Unix-V6/

Télécharger la bande d'installation d'Unix Version 6 :

wget http://squoze.net/UNIX/v6/files/dist.tap
Sous FreeBSD tapez cette commande :
fetch http://squoze.net/UNIX/v6/files/dist.tap

pour télécharger la bande d'installation.

Processus d'installation d'Unix version 6

Installation du système de fichiers racine

Créer fichier install.ini avec votre éditeur de texte dont le contenu est le suivant :

set cpu 11/40
set tm0 locked
att tm0 dist.tap
att rk0 disk0.rk
att rk1 disk1.rk
att rk2 disk2.rk
d 100000 012700
d 100002 172526
d 100004 010040
d 100006 012740
d 100010 060003
d 100012 000777
g 100000
g 0

Booter à partir de install.ini avec simulateur PDP-11 :

pdp11 install.ini

puis appuyez sur la combinaison de touche CTRL+E.

Après le signe = tapez :

tmrk
O
100
1

Le signe = s'affiche à nouveau, tapez :

tmrk
1
101
3999

À l'affichage = tapez CTRL+E.

À l'invite de commande de SimH sim>, tapez :

boot rk0

après le signe @ tapez :

rkunix

pour démarrer Unix à partir du premier disque rk0.

Au login: entrer l'utilisateur :

root

Création des fichiers de périphériques

Utilisation de l'outil mknod :

/etc/mknod /dev/rk0 b 0 0
/etc/mknod /dev/rk1 b 0 1
/etc/mknod /dev/rk2 b 0 2
/etc/mknod /dev/rrk0 c 9 0
/etc/mknod /dev/rrk1 c 9 1
/etc/mknod /dev/rrk2 c 9 2
/etc/mknod /dev/mt0 b 3 0
/etc/mknod /dev/rmt0 c 12 0

Copie des disques suivie de leurs montage

Copiez les disques :

dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100

Montez les disques :

/etc/mount /dev/rk1 /usr/source
mkdir /usr/doc
/etc/mount /dev/rk2 /usr/doc

Édition avec ed de /etc/rc pour le montage des disques au démarrage :

ed /etc/rc
2
a
/etc/mount /dev/rk1 /usr/source
/etc/mount /dev/rk2 /usr/doc
.
w
q

Synchronisation des disques :

sync
sync
sync

puis on coupe le simulateur avec les touches CTRL+E, et enfin :

q

à l'invite sim> de SimH.

Résumé de l'intégralité du processus avec le fichier install.ini

PDP-11 simulator Open SIMH V4.1-0 Current        simh git commit id: d4f85d01
Disabling XQ
/home/beastie/emulateur/simh/Unix-V6/install.ini-3> att tm0 dist.tap
%SIM-INFO: TM0: Tape Image 'dist.tap' scanned as SIMH format
/home/beastie/emulateur/simh/Unix-V6/install.ini-4> att rk0 disk0.rk
%SIM-INFO: RK0: Creating new file: disk0.rk
/home/beastie/emulateur/simh/Unix-V6/install.ini-5> att rk1 disk1.rk
%SIM-INFO: RK1: Creating new file: disk1.rk
/home/beastie/emulateur/simh/Unix-V6/install.ini-6> att rk2 disk2.rk
%SIM-INFO: RK2: Creating new file: disk2.rk

Simulation stopped, PC: 100012 (BR 100012)
=tmrk
disk offset
0
tape offset
100
count
1
=tmrk
disk offset
1
tape offset
101
count
3999
=
Simulation stopped, PC: 137274 (TSTB @#177560)
sim> boot rk0
@rkunix

login: root
# stty erase # kill @
# stty cr0
# /etc/mknod /dev/rk0 b 0 0
# /etc/mknod /dev/rk1 b 0 1
# /etc/mknod /dev/rk2 b 0 2
# /etc/mknod /dev/rrk0 c 9 0
# /etc/mknod /dev/rrk1 c 9 1
# /etc/mknod /dev/rrk2 c 9 2
# /etc/mknod /dev/mt0 b 3 0
# /etc/mknod /dev/rmt0 c 12 0
# dd if=/dev/mt0 of=/dev/rk1 count=4000 skip=4100
4000+0 records in
4000+0 records out
# dd if=/dev/mt0 of=/dev/rk2 count=4000 skip=8100
4000+0 records in
4000+0 records out
# /etc/mount /dev/rk1 /usr/source
# mkdir /usr/doc
# /etc/mount /dev/rk2 /usr/doc
# ed /etc/rc
28
2
/etc/update
a
/etc/mount /dev/rk1 /usr/source
/etc/mount /dev/rk2 /usr/doc
.
w
89
q
# sync
# sync
# sync
# sync
# sync
# 
Simulation stopped, PC: 002502 (MOV (SP)+,177776)
sim> q
Goodbye

Recompilation du noyau et de la configuration du système

Vous pouvez supprimer install.ini et la bande d'installation qui ne sera plus utile :

rm install.ini dist.tap

Créer un fichier boot.ini pour redémarrer le simulateur PDP-11 avec ce contenu :

set cpu 11/40
att rk0 disk0.rk
att rk1 disk1.rk
att rk2 disk2.rk
; att tm0 scratch.tape
; att lpt printer.txt
; att ptp paperout
; att ptr paperin
set dci en
set dci lines=8
att dci 1106
d sr 1
b rk

Lancer le simulateur PDP-11 avec boot.ini :

pdp11 boot.ini

Après le signe @ tapez :

rkunix

Et à la demande du login :

root

Suppression des noyaux inutiles et compilation du nouveau noyau :

rm hpunix rpunix unix
chdir /usr/sys/conf
cc mkconf.c
mv a.out mkconf
cat >myconf
rk
tm
pc
8dc
lp

puis appuyer sur la combinaison de touche CTRL+D pour revenir à l'invite de commande.

mkconf <myconf
as m40.s
mv a.out m40.o
ld -x l.o m40.o c.o ../lib1 ../lib2
mv a.out /unix
sync
sync
sync

puis CTRL+E pour stopper le simulateur.

À l'invite sim> booter sur le disque rk0 :

b rk0

Après le signe @ tapez :

unix

Supprimer noyau rkunix :

rm rkunix

Création des fichiers de périphériques nécessaires avec la commande mknod :

/etc/mknod /dev/lp0 c 2 0
/etc/mknod /dev/pc c 1 0
/etc/mknod /dev/tty0 c 3 0
/etc/mknod /dev/tty1 c 3 1
/etc/mknod /dev/tty2 c 3 2
/etc/mknod /dev/tty3 c 3 3
/etc/mknod /dev/tty4 c 3 4
/etc/mknod /dev/tty5 c 3 5
/etc/mknod /dev/tty6 c 3 6
/etc/mknod /dev/tty7 c 3 7

Modification de /etc/ttys avec ed :

ed /etc/ttys
1,8s/./1/
w
q

Éditer le code source de df, icheck et dcheck pour renseigner les disques que nous avons montés précédemment et compiler ses utilitaires :

chdir /usr/source/s1
ed df.c
/rp/
d
-i
    "/dev/rk0",
    "/dev/rk1",
.
w
q
ed icheck.c
/rp/
d
-i
    "/dev/rrk0",
    "/dev/rrk1",
.
w
q
ed dcheck.c
/rp/
d
-i
    "/dev/rrk0",
    "/dev/rrk1",
.
w
q
cc df.c
mv a.out /bin/df
cc icheck.c
mv a.out /bin/icheck
cc dcheck.c
mv a.out /bin/dcheck

Vous pouvez désormais utiliser Unix version 6 sans problème !

Si vous souhaitez stopper la simulation tapez la combinaison de touches CTRL+E et à l'invite sim> appuyer sur la touche q pour quitter l'émulateur et revenir à votre terminal Linux, BSD.

La commande cd n'était toujours pas existante sous Unix version 6, c'est la commande chdir qui joue le même rôle.

Résumé de l'intégralité du processus avec le fichier boot.ini

PDP-11 simulator Open SIMH V4.1-0 Current        simh git commit id: d4f85d01
Disabling XQ
/home/beastie/emulateur/simh/Unix-V6/boot.ini-11> att dci 1106
%SIM-INFO: Listening on port 1106
@rkunix
mem = 1035
RESTRICTED RIGHTS

Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.

login: root
# rm hpunix rpunix unix
# chdir /usr/sys/conf
# cc mkconf.c
# mv a.out mkconf
# cat >myconf
rk
tm
pc
8dc
lp
# mkconf <myconf
# as m40.s
# mv a.out m40.o
# cc -c c.c
# as l.s
# mv a.out l.o
# ld -x l.o m40.o c.o ../lib1 ../lib2
# mv a.out /unix
# sync
# sync
# sync
# 
Simulation stopped, PC: 002502 (MOV (SP)+,177776)
sim> b rk0
@unix
mem = 1027
RESTRICTED RIGHTS

Use, duplication or disclosure is subject to
restrictions stated in Contract with Western
Electric Company, Inc.

login: root
# rm rkunix
# /etc/mknod /dev/lp0 c 2 0
# /etc/mknod /dev/pc c 1 0
# /etc/mknod /dev/tty0 c 3 0
# /etc/mknod /dev/tty1 c 3 1
# /etc/mknod /dev/tty2 c 3 2
# /etc/mknod /dev/tty3 c 3 3
# /etc/mknod /dev/tty4 c 3 4
# /etc/mknod /dev/tty5 c 3 5
# /etc/mknod /dev/tty6 c 3 6
# /etc/mknod /dev/tty7 c 3 7
# ed /etc/ttys
112
1,8s/./1/
w
112
q
# chdir /usr/source/s1
# ed df.c
1282
/rp/
        "/dev/rp0",
d
-i
    "/dev/rk0",
    "/dev/rk1",
.
w
1301
q
# ed icheck.c
5051
/rp/
        "/dev/rrp0",
d
-i
    "/dev/rrk0",
    "/dev/rrk1",
.
w
5072
q
# ed dcheck.c
3332
/rp/
        "/dev/rrp0",
d
-i
    "/dev/rrk0",
    "/dev/rrk1",
.
w
3352
q
# cc df.c
# mv a.out /bin/df
# cc icheck.c
# mv a.out /bin/icheck
# cc dcheck.c
# mv a.out /bin/dcheck
# df
/dev/rk0 1155
/dev/rk1 940
/dev/rk2 bad free count
192
# 
Simulation stopped, PC: 002656 (MOV (SP)+,177776)
sim> q
Goodbye
wiki/virtualisation_et_emulation/simh/tutos/unix-v6.1759246049.txt.gz · Dernière modification : de Thibault Seguin