====== 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.debpuis : sudo dpkg -i simh_3.8.1-6.1_amd64.deb && sudo apt-get -f installToutefois 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.uueun 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.iniet 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...