====== Installation de 4.2BSD du CSRG sur VAX-11/780 via SimH ======
**4.2BSD** sortie en août 1983 est la première version officielle du **CSRG** (**//Computer Systems Research Group//**) de l’Université de Californie à Berkeley à avoir une pile **TCP/IP** totalement exploitable développée en grande partie par **Bill Joy**. C'est à dire que c'est la première version (hors version intermédiaire) à pouvoir se connecter à l'**ARPAnet** (**//Advanced Research Projects Agency Network//**), l'ancêtre d'Internet. Évidemment internet est compatible mais sur cette version, cela demande un configuration assez poussée comparé à [[[[wiki:virtualisation_et_emulation:simh:tutos:4.3BSD_orig|4.3BSD]].
{{ :wiki:virtualisation_et_emulation:simh:tutos:capture_d_ecran_du_2025-09-17_22-47-23.png?nolink&1000 |}}
===== Prérequis à l'installation de 4.2BSD sous SimH =====
* Un interpréteur **perl** pour pouvoir lancer le script ''mkdisttap.pl''.
* Le logiciel d'archivage **tar** et l'utilitaire de compression/décompression **gzip**.
* Le logiciel **uudecode** présent par défaut sous **BusyBox** et dans le paquet GNU **sharutils**.
* Le code d'amorçage de 4.2BSD déchiffrable avec **uudecode**.
* Un éditeur de texte de votre choix comme **nano** ou **vim**.
* L'émulateur **SimH** qui comprend le simulateur pour **VAX-11/780** du nom de **vax780**.
* Le logiciel de téléchargement **wget** pour télécharger les set 4.2BSD.
* Et enfin les sets de 4.2BSD disponible sur **The Unix Heritage Society** :
* ''ingres.tar.gz''
* ''miniroot.gz''
* ''new.tar.gz''
* ''rootdump.gz''
* ''src.tar.gz''
* ''srcsys.tar.gz''
* ''stand.gz''
* ''usr.tar.gz''
* ''vfont.tar.gz''
===== Installation, configuration et téléchargement des éléments nécessaires =====
==== Installation des logiciels nécessaires ====
Installation des logiciels sous Debian :
sudo apt install perl tar gzip busybox vim wget simh
Installation des logiciels sous FreeBSD :
sudo pkg install perl busybox vim wget simh
Vous pouvez bien évidemment installer un autre éditeur de texte comme **nano** ou même **gedit** en interface graphique. Sous FreeBSD vous pouvez également installer le paquet **open-simh** qui a nettement plus de simulateur.
J'ai constaté que le paquet **simh** a été retiré de Debian 13. Si souhaitez récupérer et installer le paquet ''.deb'' faîtes ceci : wget http://ftp.fr.debian.org/debian/pool/main/s/simh/simh_3.8.1-6.1_amd64.deb
puis : sudo dpkg -i simh_3.8.1-6.1_amd64.deb && sudo apt-get -f install
Toutefois il est préférable de compiler **SimH** pour la prise en charge du réseau local et internet.
==== Construction des répertoires pour 4.2BSD et téléchargement des sets 4.2BSD ====
Création répertoires 4.2BSD :
mkdir -p emulateur/simh/4.2BSD
Se rendre dans le répertoire 4.2BSD :
cd emulateur/simh/4.2BSD
Téléchargement des sets de 4.2BSD :
wget -r -np https://www.tuhs.org/Archive/Distributions/UCB/4.2BSD/
Déplacer les sets de 4.2BSD dans le répertoire courant :
mv -v www.tuhs.org/Archive/Distributions/UCB/4.2BSD/*.gz .
Suppression du répertoire ''www.tuhs.org'' devenu inutile :
rm -rf www.tuhs.org/
==== Décompression des sets, création de la bande 4.2BSD et décodage du code d'amorçage ====
Décompression des sets 4.2BSD avec gzip :
gzip -d *.gz
Fichier perl pour créer la bande :
#!/usr/bin/perl -w
use strict;
# Based on mkdisttap.pl
# ftp://ftp.mrynet.com/pub/os/PUPS/PDP-11/Boot_Images/2.11_on_Simh/211bsd/mkdisttap.pl
#
# $Id: mkdisttap.pl,v 1.1 2006/09/16 23:33:46 kirk Exp kirk $
#
# Based on the example in the HOWTO using dd. Does not work!
# add_file("cat mtboot mtboot boot |", 512);
# Based on the maketape.c program and the maketape.data data file.
add_file("stand", 512);
end_file();
add_file("miniroot", 10240);
end_file();
add_file("rootdump", 10240);
end_file();
add_file("srcsys.tar", 10240);
end_file();
add_file("usr.tar", 10240);
end_file();
add_file("vfont.tar", 10240);
end_file();
add_file("src.tar", 10240);
end_file();
add_file("new.tar", 10240);
end_file();
add_file("ingres.tar", 10240);
end_file();
end_file();
sub end_file {
print "\x00\x00\x00\x00";
}
sub add_file {
my($filename, $blocksize) = @_;
my($block, $bytes_read, $length);
open(FILE, $filename) || die("Can't open $filename: $!");
while($bytes_read = read(FILE, $block, $blocksize)) {
if($bytes_read < $blocksize) {
$block .= "\x00" x ($blocksize - $bytes_read);
$bytes_read = $blocksize;
}
$length = pack("V", $bytes_read);
print $length, $block, $length;
}
close(FILE);
}
Sous FreeBSD il faut modifier le **shebang** (première ligne du fichier) ''#!/usr/bin/perl -w'' par ''#!/usr/local/bin/perl -w'' du fichier ''mkdisttap.pl''.
Création du fichier ''mkdisttap.pl'' afficher ci-dessus avec votre éditeur de texte préféré :
vim mkdisttap.pl
Rendre le script perl ''mkdisttap.pl'' exécutable :
chmod 755 mkdisttap.pl
Création de la bande d'installation pour 4.2BSD :
./mkdisttap.pl > 42bsd.tap
Suppression des fichiers devenus inutiles :
rm -rf *.tar mkdisttap.pl rootdump stand
Fichier [[wiki:virtualisation_et_emulation:simh:tutos:4.2bsd:boot42.uue]] à créer et à décoder avec **uudecode** :
-création du fichier ''boot42.uue'' :
vim boot42.uue
-décodage du fichier ''boot42.uue'' :
uudecode boot42.uue
-ou avec BusyBox :
busybox uudecode boot42.uue
un fichier binaire ''boot42'' a dû être créé.
Supprimer fichier ''boot42.uue'' désormais inutile :
rm boot42.uue
===== Processus d'installation et de configuration de 4.2BSD =====
==== Première phase de boot et configuration ====
Création du fichier [[wiki:virtualisation_et_emulation:simh:tutos:4.2bsd:install.ini]] :
vim install.ini
Boot via le fichier ''install.ini'' avec le simulateur **vax780** de **SimH** :
vax780 install.ini
=== Restauration du rootdump (à l'intérieur du simulateur) ===
cd /dev
./MAKEDEV ra1
cd /
disk=ra1 type=ra81 tape=ts xtr
sync
sync
sync
=== Quitter le simulateur ===
Tapez les touches ''CTRL+E''
Puis à l'invite de commande ''sim>'' tapez :
sim> q
Supprimer fichier ''miniroot'' :
rm miniroot install.ini
==== Seconde phase de boot et configuration ====
Création du fichier [[wiki:virtualisation_et_emulation:simh:tutos:4.2bsd:boot.ini]] :
vim boot.ini
Relancer le simulateur **vax780** :
vax780 boot.ini
=== Préparation du disque virtuelle (à l'intérieur du simulateur) ===
disk=ra
name=ra0h;type=ra81
cd /dev
./MAKEDEV ts0;sync
cd /
newfs $name $type
=== Restauration de la tranche usr ===
mount /dev/$name /usr
cd /usr
mkdir sys
cd sys
mt rew
mt fsf 3
tar xpbf 20 /dev/rmt12
cd ..
mt fsf
tar xpbf 20 /dev/rmt12
Ne soyez pas surpris si cette commande prend énormément de temps.
cd /
chmod 755 / /usr /usr/sys
rm -rf sys
ln -s /usr/sys sys
umount /dev/$name
fsck /dev/r$name
=== Configuration du fstab ===
cd /etc
cp fstab.ra81 fstab
newfs ra0g ra81
sync
sync
sync
reboot
Puis à l'invite de commande ''sim>'' tapez :
sim> q
Vous pouvez désactiver la bande d'installation ''42bsd.tap'' comme ceci :
vim boot.ini
et ajoutez un '';'' devant la ligne ''att ts 42bsd.tap''.
Et supprimer la bande :
rm 42bsd.tap
===== Premier démarrage multi-utilisateur =====
Lancer 4.2BSD en mode multi-utilisateur :
vax780 boot.ini
Voici le démarrage de 4.2BSD :
VAX 11/780 simulator Open SIMH V4.1-0 Current git commit id: a944a4bc
loading ra(0,0)boot
Boot
: ra(0,0)vmunix
199488+56036+51360 start 0x11a0
4.2 BSD UNIX #9: Wed Nov 2 16:00:29 PST 1983
real mem = 8384512
avail mem = 7073792
using 102 buffers containing 835584 bytes of memory
mcr0 at tr1
mcr1 at tr2
uba0 at tr3
hk0 at uba0 csr 177440 vec 210, ipl 15
rk0 at hk0 slave 0
rk1 at hk0 slave 1
uda0 at uba0 csr 172150 vec 774, ipl 15
ra0 at uda0 slave 0
ra1 at uda0 slave 1
zs0 at uba0 csr 172520 vec 224, ipl 15
ts0 at zs0 slave 0
dz0 at uba0 csr 160100 vec 300, ipl 15
dz1 at uba0 csr 160110 vec 310, ipl 15
dz2 at uba0 csr 160120 vec 320, ipl 15
dz3 at uba0 csr 160130 vec 330, ipl 15
root on ra0
WARNING: should run interleaved swap with >= 2Mb
Automatic reboot in progress...
Sat Sep 17 15:30:34 PDT 1983
/dev/ra0a: 326 files, 3569 used, 3860 free (20 frags, 480 blocks)
/dev/rra0h: 3735 files, 25550 used, 336310 free (166 frags, 84036 blocks)
/dev/rra0g: 2 files, 9 used, 77750 free (14 frags, 9717 blocks)
Sat Sep 17 15:30:40 PDT 1983
check quotas: done.
local daemons: routed telnetd ftpd talkd syslog sendmail.
preserving editor files
clearing /tmp
standard daemons: update cron accounting mail printer.
starting network: rshd rexecd rlogind rwhod.
Sat Sep 17 15:30:42 PDT 1983
4.2 BSD UNIX (myname)
login:
Pour le moment il y a seulement l'utilisateur **root** d'installé par défaut, donc tapez :
login: root
Et vous arriverez à l'invite de commande :
login: root
4.2 BSD UNIX #9: Wed Nov 2 16:00:29 PST 1983
Would you like to play a game?
You have mail.
Don't login as root, use su
myname#
**Enjoy !!!**
Et pour éteindre le système, tapez tout simplement :
shutdown -h now
Vous arriverez sur l'invite de **SimH** :
myname# shutdown -h now
Shutdown at 15:40 (in 0 minutes) [pid 131]
myname#
*** FINAL System shutdown message from root@myname ***
System going down IMMEDIATELY
System shutdown time has arrived
syncing disks... done
halting (in tight loop); hit
^P
HALT
Infinite loop, PC: 800216DA (BRB 800216DA)
sim>
Il vous suffit de valider par ''q'' à cette invite pour revenir à votre hôte.
Ajout à venir pour une configuration plus poussée de 4.2BSD...