Obligement - L'Amiga au maximum

Mercredi 28 janvier 2026 - 06:08  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur Mastodon




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Installation et utilisation de NetBSD sur Amiga 4000
(Article écrit par Sander van der Burg et extrait de sandervanderburg.blogspot.com - février 2025)


Dans mon dernier article, j'ai expliqué comment j'utilisais Linux sur mon Amiga 4000. Faire tourner Linux sur un Amiga a toujours été un cas d'utilisation fascinant pour moi ; je me suis passionné pour ces deux domaines dès mon plus jeune âge.

NetBSD

Peu après avoir acheté mon Amiga 4000 d'occasion en 2022, j'ai découvert un article intéressant sur Reddit indiquant que NetBSD (un autre système d'exploitation de type UNIX) est compatible avec l'Amiga. Le titre de cet article était, à mon avis, quelque peu trompeur, car il laisse entendre que la compatibilité avec l'Amiga a été ajoutée récemment, ce qui est faux : NetBSD gère l'Amiga depuis sa version 1.0 (sortie en 1994). La compatibilité avec l'Amiga a été considérablement améliorée en 2022.

NetBSD est un système d'exploitation intéressant : c'est le premier dérivé de BSD, créé à partir de 386BSD par un groupe de développeurs en 1992, insatisfaits de son processus de développement. FreeBSD est un dérivé créé par un autre groupe de développeurs la même année. OpenBSD est issu de NetBSD en 1995 et DragonFly BSD de FreeBSD en 2003, suite à des désaccords. Chacune de ces distributions dérivées de BSD poursuit des objectifs et des standards différents. NetBSD privilégie la portabilité et la simplicité. Son slogan, "Of course, it runs NetBSD" (Bien sûr, ça tourne sous NetBSD), et son architecture et son infrastructure facilitent grandement le portage vers de nouvelles plates-formes. De ce fait, il a été porté sur de nombreux types de processeurs et d'architectures matérielles, notamment le PC et l'Amiga.

Les autres distributions dérivées de BSD ont des objectifs différents : OpenBSD se concentre sur la sécurité et la fiabilité, tandis que FreeBSD vise à être une distribution dérivée de BSD plus équilibrée et généraliste. DragonFly BSD, quant à lui, met l'accent sur le multi fil d'exécution et la gestion multiprocesseur symétrique.

Un autre aspect intéressant du processus de portage de NetBSD sur Amiga est sa complexité. Pour porter NetBSD sur Amiga, il a fallu au préalable adapter la chaîne d'outils de compilation à AmigaOS. Le résultat de ce processus de portage est un projet de bibliothèque nommée ixemul.library, fournissant une interface d'appels système UNIX pour AmigaOS. ixemul.library est l'élément principal de la distribution Geek Gadgets, qui propose une vaste collection d'utilitaires UNIX utilisables sous AmigaOS. Il y a quelque temps, j'ai utilisé le gestionnaire de paquets Nix pour automatiser la compilation des paquets contenant ces outils afin de porter mon projet de formats de fichiers IFF de Linux vers AmigaOS et de créer un programme de visualisation pour AmigaOS.

Bien que NetBSD soit un système d'exploitation intéressant, je n'ai jamais autant utilisé les dérivés BSD que Linux. Par exemple, je n'en ai jamais utilisé aucun comme système d'exploitation de bureau. C'est FreeBSD que je connais le mieux : je l'ai utilisé pour des serveurs Web, comme cible de portage pour le gestionnaire de paquets Nix afin d'ajouter une cible de compilation à la ferme de compilation de notre université (qui utilise Hydra, le système d'intégration continue basé sur Nix), et comme cible de portage pour mon cadre de travail expérimental de gestion de processus Nix.

Mon expérience avec OpenBSD et NetBSD est plus limitée : le seul cas d'utilisation notable que j'ai eu avec eux est leur utilisation comme cibles de portage pour le gestionnaire de paquets Nix, comme pour FreeBSD. Hormis quelques expériences simples, je n'ai jamais rien fait de significatif avec DragonFly BSD. Compte tenu de l'impact de l'article et de mes expériences passées avec NetBSD, l'essayer sur mon Amiga 4000 figurait en bonne place sur ma liste de choses à faire. Ce fut une expérience enrichissante : outre l'installation de NetBSD, c'était aussi la première fois que je l'utilisais comme système d'exploitation pour travailler, et non comme simple environnement de développement. Dans cet article, je partagerai mon expérience.

1. Premiers pas avec NetBSD pour Amiga

Dans mon précédent article (sur Linux sur Amiga), j'expliquais que la prise en main était un peu compliquée, car la plupart des informations nécessaires étaient obsolètes et éparpillées. Avec NetBSD, le processus de démarrage a été beaucoup plus simple : la page Web de NetBSD pour Amiga est, à mon avis, très bien conçue et permet de télécharger facilement le fichier ISO du CD-ROM d'installation ainsi que les instructions d'installation spécifiques à Amiga. De plus, contrairement à Debian, je peux utiliser la dernière version de NetBSD (la version 10.1 au moment de la rédaction de cet article) sur mon Amiga 4000. Avec Debian, je n'ai pas pu utiliser de version supérieure à 3.1. Pour être précis : le portage m68k a été abandonné après Debian 3.1, puis réintroduit dans Debian 9.0. Malheureusement, les versions 9.0 et suivantes n'ont pas fonctionné sur mon système. La dernière version de Debian est la 12.9 au moment de la rédaction de cet article.

1.1 Installation de NetBSD sur Amiga 4000

La procédure d'installation ne semble pas très conviviale, mais elle n'est pas trop difficile à mon avis si vous avez déjà une certaine expérience d'AmigaOS et d'un système d'exploitation de type UNIX. Pour installer NetBSD sur un Amiga, j'ai suivi leur documentation. En résumé, elle se compose des étapes suivantes :
  • Télécharger un fichier ISO et le graver sur un CD-ROM inscriptible.
  • Démarrer l'Amiga 4000 et créer une configuration de partitions adaptée à NetBSD. Comme pour Linux, NetBSD peut être installé à côté d'une installation AmigaOS existante, sur une partition distincte. Il y a quelques points à prendre en compte :
    • Le partitionnement doit être effectué à l'aide des outils natifs d'AmigaOS, tels que HDToolBox. NetBSD ne fournit pas d'outil de partitionnement intégré.
    • Nous devons utiliser HDToolBox pour spécifier manuellement les identifiants de partition corrects pour la partition d'échange et la partition racine de NetBSD. Cette spécification manuelle est un peu fastidieuse, mais nécessaire : HDToolBox ne reconnaît pas ces types de partitions automatiquement.
    • Nous devons rendre les partitions d'échange ("swap") et racine amorçables. De plus, nous devons autoriser les blocs d'amorçage personnalisés pour ces partitions. Plus d'informations à ce sujet ultérieurement.
    • Les partitions d'échange et racine doivent être inférieures à 4 Go. Cette limite s'avère être une contrainte absolue pour ma machine également : même si ma ROM Kickstart AmigaOS 3.9 modifiée possède un pilote SCSI non limité par les 4 Go, le menu de démarrage ne semble pas reconnaître les partitions amorçables au-delà de cette limite. Pour contourner cette contrainte, j'ai finalement créé une partition AmigaOS de 1 Go contenant le Workbench, suivie d'une partition d'échange pour NetBSD de 128 Mo, puis d'une partition racine NetBSD de 2 Go. L'espace disque restant est utilisé par les partitions AmigaOS.
  • Transfert de l'image du système de fichiers miniroot du CD-ROM vers la partition d'échange. Le système de fichiers miniroot contient une installation minimale de NetBSD permettant d'effectuer l'installation proprement dite de la distribution NetBSD.
  • Démarrer depuis la partition d'échange pour lancer l'installation de NetBSD. L'interface d'installation est en mode texte et pose plusieurs questions. L'installation complète prend plusieurs heures sur mon Amiga.
  • Redémarrage de la machine à partir de la partition racine et finalisation de l'installation de NetBSD.
1.2 Le processus de démarrage de NetBSD

À l'instar de Linux, NetBSD possède un processus de démarrage particulier : son utilisation requiert un noyau en cours d'exécution. Ce noyau n'est pas présent par magie, mais doit d'abord être chargé depuis un emplacement externe. Un chargeur d'amorçage est un programme chargé de faciliter ce processus.

Dans mon précédent article, j'ai expliqué qu'il existe différentes manières de charger un noyau. Plus important encore, il est possible de le charger le plus rapidement possible après la mise sous tension en utilisant le moins de ressources possible de la ROM ou du système d'exploitation natif. C'est ce que j'appellerai le démarrage à froid. De plus, il est possible de démarrer d'abord sur un système d'exploitation existant et de charger une image noyau pendant que ce système est en cours d'exécution. Une fois le noyau chargé, il peut prendre le contrôle du système. C'est ce que j'appelle le démarrage à chaud.

Sur Amiga, il est courant d'effectuer un démarrage à chaud pour Linux (contrairement à Linux sur PC, où le démarrage à froid est la pratique courante). Avec NetBSD sur Amiga, c'est en fait l'inverse : le démarrage à froid est la méthode privilégiée. Comme je l'ai déjà expliqué dans la section précédente, nous devons rendre les partitions d'échange et racine amorçables dans HDToolBox. De plus, nous devons autoriser ces partitions à utiliser des blocs d'amorçage personnalisés.

Au démarrage de mon Amiga, je peux maintenir les deux boutons de la souris enfoncés pour accéder au menu de démarrage. Dans ce menu, je peux sélectionner la partition à partir de laquelle je souhaite démarrer (par défaut, le système parcourt la liste des lecteurs/partitions amorçables de haut en bas et sélectionne la première option disponible).

NetBSD

Dans la capture d'écran ci-dessus, les partitions NetBSD apparaissent également comme partitions de démarrage potentielles.

En sélectionnant "netbsd-root", je peux démarrer depuis ma partition racine NetBSD contenant un bloc de démarrage personnalisé fournissant un chargeur de démarrage. Ce chargeur permet de charger un noyau NetBSD avec les paramètres de ligne de commande souhaités.

NetBSD

Bien que le démarrage à froid soit la méthode recommandée selon la documentation, il est également possible de démarrer un noyau NetBSD à chaud. La commande "loadbsd" permet de le faire : c'est un outil Amiga capable de charger une image noyau depuis une partition Amiga avec plusieurs paramètres. Une fois le noyau chargé, il prend le contrôle du système.

Il existe une autre méthode pour démarrer NetBSD : l'outil en ligne de commande "runbootblock". Cet outil permet d'exécuter automatiquement le code stocké dans un bloc de démarrage d'une partition depuis une session AmigaOS en cours d'exécution. Cette approche se situe entre le démarrage à chaud et le démarrage à froid : il s'agit d'un démarrage à chaud d'un noyau depuis un système d'exploitation en cours d'exécution, utilisant les fonctionnalités d'un démarrage à froid. On pourrait qualifier cette méthode de démarrage tiède.

Bien que j'utilise sans problème le menu de démarrage du Kickstart, je trouve également pratique de démarrer NetBSD directement depuis le Workbench. Pour cela, j'ai créé une icône sur le bureau appelée "StartNetBSD" pour effectuer un démarrage tiède de NetBSD.

NetBSD

L'icône située en bas à droite, en haut, exécute le script suivant :

runbootblock -dscsi.device -u0 -pnetbsd-root

La commande ci-dessus indique que nous souhaitons exécuter le bloc d'amorçage de la partition netbsd-root située sur le premier disque dur. Nous utilisons le pilote scsi.device pour accéder à cette partition.

Le démarrage à chaud fonctionne correctement lorsque j'utilise le jeu de composants de l'Amiga pour le tapon de trame ("framebuffer"). Malheureusement, avec ma carte RTG CyberVision64/3D, l'affichage est altéré. J'ai découvert que l'initialisation de l'affichage VGA par AmigaOS est en cause ; par conséquent, pour utiliser NetBSD avec ma carte RTG, je dois systématiquement effectuer un démarrage à froid complet.

2. Étapes post-installation

Après avoir installé NetBSD, j'ai dû effectuer plusieurs étapes de configuration supplémentaires pour que tous mes cas d'utilisation soient pris en charge. Je me suis largement inspiré de ce guide d'installation de NetBSD 9.2 pour Amiga.

2.1 Désactivation des services inutiles

La première chose que j'ai remarquée après le premier démarrage, c'est que mon installation NetBSD démarre assez lentement. Même après la connexion, la lenteur persiste. En exécutant la commande "ps", j'ai constaté la présence d'un processus en arrière-plan, "makemandb", qui consomme une part importante du temps processeur. De plus, j'ai remarqué que "postfix" mettait un certain temps à démarrer. N'ayant pas besoin de ces services, je les ai désactivés au démarrage en ajoutant les lignes suivantes au fichier `/etc/rc.conf` :

makemandb=NON
postfixe=NON

2.2 Configuration des comptes utilisateurs

Par défaut, il n'existe qu'un seul compte utilisateur : l'utilisateur "root" (racine), qui dispose de tous les privilèges. De plus, aucun mot de passe n'est défini pour l'utilisateur root. Il est possible de configurer le mot de passe root en exécutant la commande suivante :

$ passwd

Nous pouvons configurer un compte utilisateur sans privilèges et définir un mot de passe comme suit :

$ useradd -m -G wheel sander
$ passwd sander

2.3 Activation des wcons

Dans l'installation par défaut, l'interface en ligne de commande est assez rudimentaire : un fond gris avec du texte noir et une seule fenêtre de terminal. Pour améliorer l'expérience en ligne de commande de NetBSD, je peux activer wscons, le pilote de console de station de travail indépendant de la plate-forme pour NetBSD. Il gère l'abstraction complète du clavier et de la souris et permet le multiplexage de terminaux.

Pour activer wscons, il faut d'abord déployer un noyau compatible ; le noyau par défaut ne possède pas cette fonctionnalité. Un noyau compatible wscons est disponible sur le CD-ROM de NetBSD. Je peux remplacer le noyau par défaut en me connectant à mon installation NetBSD et en exécutant les commandes suivantes :

$ mount /dev/cd0a /cdrom
$ cd /
$ cp /cdrom/amiga/binary/kernel/netbsd-WSCONS.gz /
$ gunzip netbsd-WSCONS.gz
$ mv netbsd netbsd-ORIG
$ mv netbsd-WSCONS netbsd

Dans l'extrait de code ci-dessus, je copie le noyau compatible wscons depuis le CD-ROM NetBSD vers le répertoire racine, je le décompresse, je sauvegarde l'ancien noyau et enfin je remplace le noyau par défaut par le nouveau.

Il faut également activer le service wscons au démarrage. Pour cela, ajoutez la ligne suivante au fichier "/etc/rc.conf" :

wscons=YES

Pour utiliser plusieurs terminaux, nous devons ouvrir "/etc/ttys" dans un éditeur de texte et activer les consoles ttyE1, ttyE2 et ttyE3 en passant leurs indicateurs "off" à "on" :

NetBSD

Enfin, nous devons redémarrer le système afin de pouvoir utiliser le noyau compatible wscons.

2.4 Configuration des modes vidéo du tampon de trame

Une autre question m'intrigue : comment configurer le périphérique de sortie et la résolution du tampon de trame ? Par exemple, au démarrage du noyau, NetBSD utilise automatiquement l'affichage de ma carte CyberVision64/3D en résolution 640x480 et en mode couleur 8 bits. Bien que je sois satisfait de l'utilisation de ma carte RTG, je souhaite également pouvoir utiliser le jeu de composants AGA de l'Amiga pour l'affichage. De plus, je souhaite pouvoir basculer entre différents modes graphiques. Sous Linux, cela se fait en passant le paramètre vidéo approprié au noyau. Sous NetBSD, cette configuration s'avère très complexe.

D'après la page de manuel de démarrage (qui décrit les paramètres de démarrage du noyau NetBSD), il n'existe qu'un seul paramètre noyau relatif à l'affichage : -A. La documentation indique que ce paramètre active le mode d'affichage AGA, mais il a en réalité une double fonction : il active bien le mode AGA pour que l'affichage utilise 256 couleurs, mais il configure également l'écran en mode "double NTSC" (640x400, non entrelacé). Sans le paramètre -A , le noyau NetBSD est configuré pour utiliser 8 couleurs et un mode d'affichage NTSC haute résolution entrelacé (640x400). Bien que mon Amiga possède un jeu de composants AGA, mon téléviseur LED ne semble pas accepter les modes d'affichage double NTSC ou double PAL. Outre les possibilités de configuration très limitées du jeu de composants Amiga, je n'ai trouvé aucun paramètre du noyau permettant de sélectionner le périphérique tempon de trame. Après quelques recherches, j'ai compris qu'il n'est pas possible de fournir davantage d'options de mode d'affichage.

En consultant les notes d'installation de NetBSD sur GitHub, j'ai constaté que je ne suis pas le seul à rencontrer des problèmes d'affichage. En résumé, l'auteur explique comment il a ajusté les paramètres d'affichage du mode AGA pour qu'ils correspondent à ceux d'une sortie VGA, en copiant les paramètres du pilote amifb Linux et en compilant le noyau NetBSD pour Amiga. J'ai finalement compilé moi-même un noyau en suivant les mêmes instructions. Pour ce faire, j'ai téléchargé une image ISO de NetBSD 10.1 pour machines x64 et je l'ai installée dans une machine virtuelle VirtualBox sur mon PC. Dans cette machine virtuelle VirtualBox, j'ai téléchargé le code source de NetBSD 10.1 en exécutant la commande suivante :

$ cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P -r netbsd-10-1-RELEASE src

Je peux configurer la chaîne d'outils de compilation croisée en exécutant :

$ cd src
$ ./build.sh -m amiga tools

La commande ci-dessus télécharge automatiquement les dépendances requises (par exemple, les archives sources du compilateur croisé, de l'éditeur de liens croisés, etc.) et les compile.

Mon premier objectif était de vérifier si je pouvais effectuer les ajustements nécessaires pour forcer le noyau à utiliser les puces Amiga pour l'affichage du tampon de trame. J'ai finalement modifié deux fichiers et désactivé plusieurs options. Le premier fichier que j'ai modifié est "sys/arch/amiga/conf/GENERIC". J'y ai commenté les propriétés suivantes :

#options 	RETINACONSOLE	# enable code to allow retina to be console
#options 	CV64CONSOLE	# CyberVision console
#options 	TSENGCONSOLE	# Tseng console
#options 	CV3DCONSOLE	# CyberVision 64/3D console

#options 	GRF_AGA_VGA	# AGA VGAONLY timing
#options 	GRF_SUPER72	# AGA Super-72

#grfrt0		at zbus0		# retina II
#grfrh0		at zbus0		# retina III

#grfcv0		at zbus0		# CyberVision 64
#grfet*		at zbus0		# Tseng (oMniBus, Domino, Merlin)
#grfcv3d0	at zbus0		# CyberVision 64/3D

#grf1		at grfrt0
#grf2		at grfrh0

#grf5		at grfcv0
#grf6		at grfet?
#grf7		at grfcv3d0

#ite1		at grf1			# terminal emulators for grfs
#ite2		at grf2			# terminal emulators for grfs

#ite5		at grf5			# terminal emulators for grfs
#ite6		at grf6			# terminal emulators for grfs
#ite7		at grf7			# terminal emulators for grfs

La propriété la plus importante à commenter est CV3DCONSOLE. Désactiver la console CyberVision64/3D garantit que ma carte CyberVision64/3D ne sera jamais détectée. Par conséquent, NetBSD est forcé d'utiliser le jeu de composants Amiga natif. La désactivation de la console CyberVision64/3D entraîne également la désactivation du pilote graphique couleur correspondant (grfcv3d0), du périphérique tampon de trame (grf7) et du périphérique d'émulation de terminal (ite7).

Outre la CyberVision64/3D, j'ai désactivé plusieurs autres fonctionnalités inutiles. Par exemple, je n'ai pas besoin de la gestion des résolutions non standard (VGA, Super72). Je peux également désactiver la gestion des cartes RTG supplémentaires, car je n'en possède pas. La désactivation de leurs consoles entraîne également la désactivation de leurs pilotes graphiques couleur, périphériques de tampon de trame et périphériques d'émulation de terminal correspondants.

Un autre fichier que je dois modifier est la configuration wscons (sys/arch/amiga/conf/WSCONS) :

no grfrt0		at zbus0
#no grfrh0		at zbus0

#no grf1		at grfrt0
#no grf2		at grfrh0

#no ite1		at grf1
#no ite2		at grf2

#no ite5		at grf5
#no ite6		at grf6
#no ite7		at grf7

Dans le fichier ci-dessus, je dois également désactiver les périphériques graphiques couleur, le tampon de trame et l'émulation de terminal que j'avais commentés dans le fichier de configuration précédent.

Après avoir configuré le noyau, je peux le compiler avec la commande suivante :

./build.sh -m amiga kernel=WSCONS

L'image du noyau résultante se trouve dans "src/sys/arch/amiga/compile/obj/WSCONS/netbsd". Je l'ai copiée sur ma partition racine NetBSD et nommée "netbsd-NORTG".

Si je souhaite utiliser une session NetBSD avec les puces de mon Amiga (en mode d'affichage haute résolution 8 couleurs entrelacées), je peux fournir la commande suivante au chargeur de démarrage :

netbsd-NORTG -Sn2

Ce qui donne lieu à la session NetBSD suivante :

NetBSD

Comme on peut le voir sur l'image ci-dessus, j'ai réussi à forcer le chargeur de démarrage à charger mon noyau NORTG NetBSD personnalisé, ce qui oblige le système d'exploitation à utiliser le pilote d'affichage Amiga.

Après avoir compilé ce noyau, j'ai également expérimenté avec son code source afin de tenter d'éviter l'utilisation du mode d'affichage incompatible "double NTSC". Malheureusement, j'ai découvert que les modes d'affichage sont codés en dur dans le noyau (plus précisément, dans le fichier "src/sys/arch/amiga/dev/grfabs_cc.c"). Après avoir testé différents réglages d'affichage (y compris ceux du moniteur VGA décrits dans le service Gist de GitHub), j'ai constaté qu'en réduisant de moitié le nombre de lignes de balayage pour le mode AGA, j'obtiens un affichage acceptable (du moins dans la console).

Malgré ce résultat, mon mode AGA personnalisé est inutilisable : si je souhaite utiliser le système X Window, le serveur d'affichage ne semble pas reconnaître mon mode d'affichage modifié. Par conséquent, il ne démarre pas. J'ai finalement renoncé à enquêter sur ce problème et j'ai décidé d'utiliser simplement le mode graphique non-AGA.

3. Utilisation du système X Window

L'un des avantages du système X Window sur NetBSD/Amiga est son intégration avec wscons. De ce fait, sa configuration est très simple. Il semble toutefois manquer un fichier de périphérique de pseudo-terminal. Sans ce fichier, xterm refuse de démarrer. Je peux créer ce fichier manquant en exécutant les commandes suivantes :

$ cd /dev
$ ./MAKEDEV pty0

Autre avantage appréciable : contrairement au système X Window pour Debian Linux/Amiga, la version NetBSD gère également le jeu de composants Amiga pour l'affichage graphique. En utilisant une session console du noyau NORTG, il me suffit d'exécuter "startx" et après quelques instants, j'obtiens ceci :

NetBSD

L'image ci-dessus montre une session CTWM avec quelques applications en cours d'exécution. Les deux seuls inconvénients de l'utilisation du système X Window sur Amiga sont son temps de démarrage assez long et l'affichage monochrome uniquement disponible. Pour un affichage couleur, je dois activer le mode AGA. Comme expliqué précédemment, je ne peux pas utiliser ce mode car mon écran ne gère pas les modes double PAL ou double NTSC.

3.1 Réglage des modes d'écran

À ma connaissance, il est impossible de modifier le mode d'affichage en cours d'exécution avec le jeu de composants Amiga. En revanche, avec ma carte CyberVision64/3D, c'est possible. Pour cela, je dois charger un fichier de définition du mode d'affichage. J'ai donc ajouté une ligne au script "/etc/rc.local" pour charger ce fichier au démarrage :

$ grfconfig /dev/grf7 /etc/gfxmodes

Dans l'instruction en ligne de commande ci-dessus, le paramètre "/dev/grf7" correspond au périphérique de tampon de trame CyberVision64/3D (ce fichier de périphérique peut être déterminé en consultant la sortie de la commande "dmesg") et "/etc/gfxmodes" à un fichier de définition de mode d'écran. L'écriture d'un tel fichier est assez fastidieuse. Heureusement, lors de mes précédents essais avec l'outil de préférences Amiga Picasso96Mode, j'ai découvert qu'il permet également de générer des définitions de mode compatibles avec NetBSD 1.2 et 1.3. J'ai constaté que NetBSD 10.1 utilise toujours le même format que NetBSD 1.3.

Pour enregistrer automatiquement ces paramètres de mode dans un fichier, je dois ouvrir une interface de ligne de commande dans mon Workbench et exécuter la commande suivante :

SYS:Prefs/Picasso96Mode >T:gfxmodes

La commande ci-dessus ouvre le programme de préférences Picasso96Mode et redirige la sortie standard vers T:gfxmodes.

NetBSD

Dans l'interface graphique de Picasso96, je dois sélectionner tous les modes d'écran pertinents, puis choisir l'option "Mode -> Print Mode" pour exporter le mode d'écran (comme illustré ci-dessus). Pour une couverture optimale, je commence par la résolution et le mode couleur les plus bas (8 bits). Je passe ensuite à des modes couleur plus élevés, puis à des résolutions plus élevées, etc., jusqu'à couvrir tous les modes d'écran nécessaires.

Après avoir exporté tous les modes d'écran pertinents, je dois ouvrir le fichier "T:\gfxmodes" dans un éditeur de texte et supprimer tous les commentaires et les entrées NetBSD 1.2. Le fichier obtenu présente la structure suivante :

x 26249996 640 480 8 640 688 768 792 479 489 492 518 default
x 43977267 800 600 8 800 832 876 976 599 610 620 638 +hsync +vsync
x 67685941 1024 768 8 1024 1072 1184 1296 767 772 777 798 default

Dans le fichier ci-dessus, chaque ligne représente un mode d'affichage. La première définit une résolution de 640x480, la deuxième de 800x600 et la troisième de 1024x768. Ces trois modes utilisent une palette de couleurs 8 bits. Il est nécessaire d'ajuster légèrement ce fichier pour qu'il soit compatible avec NetBSD : la première colonne (contenant un "x") représente un numéro de mode. Il faut lui attribuer une valeur numérique unique ou un "c" pour définir le mode d'affichage de la console.

Si je souhaite que ma console utilise un mode d'affichage 640x480 tout en conservant les autres modes comme option, je peux modifier le fichier de définition de mode ci-dessus comme suit :

c 26249996 640 480 8 640 688 768 792 479 489 492 518 default
1 26249996 640 480 8 640 688 768 792 479 489 492 518 default
2 43977267 800 600 8 800 832 876 976 599 610 620 638 +hsync +vsync
3 67685941 1024 768 8 1024 1072 1184 1296 767 772 777 798 default

Dans le fichier ci-dessus, j'ai remplacé les caractères "x" par des valeurs numériques uniques et j'ai dupliqué le mode 640x480 pour qu'il corresponde au mode d'affichage de la console. En copiant ce fichier dans "/etc/gfxlogin" sur ma partition racine NetBSD, je peux basculer entre les modes d'affichage si besoin.

J'ai appris que pour utiliser le système X Window avec ma carte CyberVision64/3D, un fichier de définition des modes est également nécessaire. Par défaut, le système X Window utilise le premier mode d'affichage (screen mode : 1). Lorsque je démarre le serveur X, l'affichage suivant apparaît :

NetBSD

4. Installation de paquets personnalisés

Contrairement à Linux, qui est un noyau nécessitant l'ajout de logiciels (par exemple, issus du projet GNU) pour former une distribution fonctionnelle, NetBSD est un système complet. Cependant, j'ai besoin de quelques logiciels supplémentaires pour me faciliter la vie, comme Midnight Commander.

NetBSD inclut le gestionnaire de paquets pkgsrc et un dépôt de paquets proposant une variété de logiciels. Le téléchargement et l'installation automatiques de binaires précompilés et de leurs dépendances sont facilités par l'interface graphique de pkgsrc : pkgin.

Malheureusement, comme je l'ai déjà expliqué dans un précédent article, mon Amiga 4000 ne possède pas de carte réseau. Le seul moyen de le connecter à Internet est un câble null modem, trop lent pour télécharger des paquets. Heureusement, l'interface Web de pkgsrc permet de télécharger manuellement et facilement les paquets souhaités ainsi que leurs dépendances. Par exemple, pour obtenir Midnight Commander, je peux ouvrir la page suivante : ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/mc46/index.html, télécharger l'archive m68k, suivre les dépendances d'exécution, télécharger leurs archives, puis les dépendances transitives, etc.

Pour installer les paquets téléchargés sur NetBSD, je les copie simplement dans un répertoire de mon disque NetBSD. Je peux ensuite les installer avec la commande "pkg_add".

$ pkg_add /root/packages/mc-4.6.1nb28.tgz

Le résultat est que je peux utiliser Midnight Commander sur NetBSD sur mon Amiga :

NetBSD

5. Établissement d'une connexion terminale entre l'Amiga et le PC à l'aide d'un câble null-modem

Dans mon précédent article concernant l'utilisation de Linux sur mon Amiga, j'utilisais un câble null modem pour connecter l'Amiga à mon PC. Avec NetBSD, je peux faire la même chose. Par exemple, sur mon PC Linux, je peux démarrer une session terminal via le port série :

$ agetty --flow-control ttyUSB0 19200

...et j'utilise Minicom sur mon installation NetBSD/Amiga pour m'y connecter à distance.

Je peux également faire l'inverse : activer une console série sur NetBSD en modifiant le fichier "/etc/ttys" et en activant un terminal pour le périphérique /dev/tty00.

tty00 "/usr/libexec/getty std.9600" unknown on secure

Je peux alors utiliser minicom sur mon PC Linux pour me connecter à distance à mon Amiga :

$ minicom -b 9600 -D /dev/ttyUSB0

Le résultat est visible sur l'image suivante :

NetBSD

6. Se connecter à Internet

Comme pour ma configuration Linux, je peux également connecter mon installation NetBSD/Amiga à Internet. La procédure est exactement la même. Je me suis inspiré du guide pratique Linux PPP pour cela. Tout d'abord, je dois configurer un point de terminaison de liaison sur mon Amiga 4000, avec la commande suivante :

$ pppd -detach crtscts lock noauth defaultroute 192.168.1.2:192.168.1.1 /dev/tty00 19200

Je peux ensuite configurer mon PC de bureau (qui est connecté à Internet via une carte Ethernet) :

$ pppd -detach crtscts lock noauth proxyarp 192.168.1.1:192.168.1.2 /dev/ttyUSB0 19200

Je devrais alors pouvoir tester la connectivité de mon PC de bureau depuis l'Amiga en exécutant :

$ ping 192.168.1.1

En suivant quelques étapes supplémentaires, je peux connecter mon Amiga 4000 à Internet en utilisant mon ordinateur de bureau comme passerelle. Tout d'abord, je dois activer le transfert IP sur mon ordinateur de bureau :

echo 1 > /proc/sys/net/ipv4/ip_forward

Ensuite, sur mon PC de bureau, je peux activer la traduction d'adresses réseau (NAT) comme suit :

INTERNAL_INTERFACE_ID="ppp0"
ID_INTERFACE_EXTERNE="enp6s0"

iptables -t nat -A POSTROUTING -o $EXTERNAL_INTERFACE_ID -j MASQUERADE
iptables -A FORWARD -i $EXTERNAL_INTERFACE_ID -o $INTERNAL_INTERFACE_ID -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTERNAL_INTERFACE_ID -o $EXTERNAL_INTERFACE_ID -j ACCEPT

Dans l'exemple ci-dessus, "ppp0" désigne l'interface de liaison PPP et "enp6s0" l'interface Ethernet connectée à Internet.

Pour résoudre les noms de domaine sur l'Amiga 4000, je dois copier les paramètres du serveur de noms depuis le fichier "/etc/resolv.conf" de mon ordinateur vers l'Amiga 4000.

Après cette configuration, je peux, par exemple, utiliser w3m pour accéder à ma page d'accueil.

NetBSD

7. Échange de fichiers

Comme pour ma configuration Amiga/Linux, je souhaite également pouvoir échanger des fichiers entre mon système NetBSD et mon système Amiga, par exemple pour tester des logiciels téléchargés sur Internet. Pour mon système NetBSD, je peux utiliser les mêmes deux méthodes.

7.1 Échange de fichiers avec la carte mémoire de mon PC Linux

Dans mon précédent article, j'ai démontré qu'il est possible d'insérer la carte CompactFlash de mon Amiga (via le périphérique CF2IDE) dans le lecteur de cartes de mon PC. Linux sur mon PC ne reconnaît pas la table de partitions RDB de l'Amiga, mais je peux utiliser GNU Parted pour déterminer les décalages des partitions et utiliser un périphérique de bouclage pour la monter.

$ parted /dev/sdb GNU Parted 3.6 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) unit B (parted) print Model: Generic- USB3.0 CRW-CF/MD (scsi) Disk /dev/sdb: 32019111936B Sector size (logical/physical): 512B/512B Partition Table: amiga Disk Flags: Number Start End Size File system Name Flags 1 56899584B 1130766335B 1073866752B asfs DH0 boot 2 1130766336B 1265338367B 134572032B netbsd-swap boot 3 1265338368B 3953166335B 2687827968B sun-ufs netbsd-root boot 4 3953166336B 6100899839B 2147733504B asfs DH1 5 6100899840B 8248633343B 2147733504B asfs DH2 6 8248633344B 16838664191B 8590030848B asfs DH3 7 16838664192B 32019111935B 15180447744B asfs DH4 (parted) quit Dans l'extrait de code ci-dessus, j'ai utilisé GNU parted pour lire la table de partitions de mon disque Amiga ("/dev/sdb"), j'ai converti l'unité en octets et j'ai affiché la table. La troisième entrée (Numéro 3) correspond à la partition racine NetBSD de mon Amiga 4000.

Linux permet de monter des partitions UFS. Je peux utiliser les champs de décalage "Start" (début) et "Size" (taille) de cette table pour configurer une interface de bouclage ("/dev/loop0") pointant vers la partition NetBSD de mon disque Amiga.

$ losetup --offset 1265338368 --sizelimit 2687827968 /dev/loop0 /dev/sdb

Je peux ensuite monter la partition (via le fichier de périphérique boucle) dans un répertoire :

$ mount /dev/loop0 /mnt/amiga-netbsd-partition

Je peux ensuite lire les fichiers de la partition NetBSD de mon Amiga en accédant à "/mnt/amiga-netbsd-partition". Malheureusement, le module UFS de mon noyau Linux ne semble pas gérer l'écriture ; il semblerait que cette fonctionnalité soit expérimentale et désactivée par défaut. Par conséquent, je ne peux que lire les fichiers de la partition.

Une fois le travail terminé, je dois démonter la partition et déconnecter le périphérique boucle.

$ umount /mnt/amiga-netbsd-partition
$ losetup -d /dev/loop0

J'ai également cherché comment échanger des fichiers avec mon PC si NetBSD était mon système d'exploitation de bureau. J'ai découvert la commande vndconfig permettant de configurer un périphérique de disque virtuel (dont les fonctionnalités sont globalement comparables à celles d'un périphérique boucle Linux), mais je n'ai trouvé aucune option pour configurer les décalages de partition.

7.2 Échange de fichiers entre les systèmes d'exploitation AmigaOS et NetBSD

Comme pour ma configuration disque dur Amiga Workbench 3.1/Linux, je souhaite également pouvoir échanger des fichiers entre mes installations AmigaOS et NetBSD sur le même système. NetBSD sur Amiga gère nativement le montage des partitions du système de fichiers FFS. Par exemple, si je dispose d'une telle partition, je peux la monter automatiquement au démarrage en ajoutant la ligne suivante au fichier "/etc/fstab" :

/dev/wd0d /mnt/harddisk ados rw 0 0

Comme pour mon autre carte CompactFlash, j'ai opté pour SmartFileSystem (SFS) plutôt que pour FastFileSystem, pour les mêmes raisons : j'ai besoin d'un système de fichiers plus adapté aux disques durs de grande capacité. Malheureusement, il semble que NetBSD ne permette pas de lire ni d'écrire sur les partitions SmartFileSystem. Cependant, l'inverse est possible : un gestionnaire Berkeley FastFileSystem pour AmigaOS existe et offre une gestion de la lecture et de l'écriture. L'installation de ce paquet est similaire à celle du gestionnaire Ext2 décrite dans l'article précédent :
  • Décompression du fichier LhA dans un répertoire temporaire.
  • Copie du fichier "l/BFFSFileSystem" vers "L:".
  • Création d'une entrée de montage DOSDriver pour monter la partition.
Créer l'entrée de montage DOSDriver s'est avéré un peu délicat. Voici les étapes que j'ai suivies :
  • J'ai utilisé le fichier "doc/MountList.BFFS" de l'archive LhA comme modèle en le copiant dans "DEVS:DOSDrivers/BH0". Dans le fichier de destination, je dois ajuster un certain nombre de propriétés qu'il nous faut d'abord rechercher.
  • Je peux utiliser HDToolBox pour déterminer les cylindres de début et de fin de la partition racine NetBSD.
  • Je peux utiliser SysInfo pour déterminer le nombre de surfaces et de secteurs par face, en ouvrant la fonction "DRIVES" et en sélectionnant une partition de disque dur aléatoire :

    NetBSD

  • Ensuite, je dois ajuster le fichier DOSDriver de la partition "DEVS:DOSDrivers/BH0" :
    • Je dois supprimer tous les exemples, sauf l'exemple BH0:.
    • Les valeurs de "LowCyl" et "HighCyl" doivent correspondre aux propriétés que nous avons découvertes avec HDToolBox.
    • La propriété "Surfaces" doit correspondre à la valeur de SysInfo.
    • La propriété "BlocksPerTrack" doit correspondre à la propriété "Sectors per side" dans SysInfo.
  • Enfin, je peux créer une icône pour le pilote DOS BH0, en copiant le fichier PC1.info vers BH0.info et en supprimant l'infobulle UNIT=1 (en utilisant la fonction d'information de l'icône).
Le résultat est que je peux accéder à ma partition racine NetBSD depuis AmigaOS :

NetBSD

La capture d'écran ci-dessus montre une session Amiga Workbench 3.9 dans laquelle j'ai ouvert la partition racine NetBSD.

8. Exécution de NetBSD/Amiga dans FS-UAE

Dans mon précédent article, j'ai démontré qu'il est possible d'installer et d'exécuter Linux sur FS-UAE, un émulateur Amiga. L'utilisation d'un émulateur est pratique pour expérimenter et exécuter des logiciels plus rapidement que sur la machine d'origine. Pour exécuter un autre système d'exploitation, il faut modifier la configuration de FS-UAE dans un éditeur de texte et la configurer pour utiliser un fichier disque. De plus, il est nécessaire d'activer l'émulation IDE pour le disque dur et le lecteur CD-ROM.

hard_drive_0 = mydrive.hdf
hard_drive_0_controller = ide
hard_drive_0_type = rdb
cdrom_drive_0_controller = ide1

Les propriétés de configuration ci-dessus spécifient les éléments suivants :
  • Nous voulons utiliser un fichier physique "mydrive.hdf".
  • La propriété "controller" indique que l'émulation du contrôleur IDE est nécessaire ; cette propriété est requise car NetBSD ne fonctionne pas avec les pilotes Amiga. Il souhaite contrôler directement le matériel.
  • La propriété "type" indique que l'image du disque dur contient une table de partition RDB. Cette propriété n'est requise que si le fichier est vide. En règle générale, le type d'un fichier est détecté automatiquement.
Le résultat est que je peux exécuter NetBSD facilement dans FS-UAE :

NetBSD

Comme pour mon installation Linux, je peux également insérer la carte CompactFlash du lecteur CF2IDE de mon Amiga (contenant l'installation de NetBSD) dans le lecteur de cartes de mon PC et l'utiliser avec FS-UAE. Je dois modifier les paramètres du disque dur pour utiliser le fichier de périphérique correspondant à mon lecteur de cartes.

hard_drive_0 = /dev/sdb

Dans l'extrait de code ci-dessus, "/dev/sdb" correspond au fichier de périphérique représentant le lecteur de cartes. Je dois également m'assurer que ce fichier est accessible à un utilisateur non privilégié en lui attribuant des permissions publiques, en exécutant la commande suivante (en tant qu'utilisateur root) :

$ chmod 666 /dev/sdb

Conclusion

Dans cet article, j'ai expliqué comment j'utilise NetBSD sur mon Amiga 4000. J'espère que ces informations seront utiles à tous ceux qui envisagent d'installer NetBSD sur leur Amiga. Comparé à Linux sur Amiga, NetBSD présente des avantages et des inconvénients. Je trouve la page d'accueil et la documentation du portage Amiga de NetBSD d'excellente qualité : tous les éléments nécessaires sont facilement accessibles et la procédure d'installation est bien documentée. De plus, NetBSD 10.1 (sorti en décembre 2024) est nettement plus récent que Debian 3.1r8 (sorti en 2008) et propose des logiciels plus modernes. Par ailleurs, le système X Window de NetBSD gère le jeu de composants Amiga pour l'affichage graphique, contrairement à la version Debian Linux.

NetBSD présente également des inconvénients. Le principal est, à mon avis, sa lenteur : il est considérablement plus lent que mon installation Debian Linux. Ceci est probablement dû au fait que les logiciels modernes sont plus lents que les anciens, et non à une supériorité de Linux sur NetBSD en termes de vitesse. Il est fort probable que si je parvenais à faire fonctionner une distribution Linux moderne sur mon Amiga, elle serait également bien plus lente que Debian 3.1r8. Autre inconvénient : les options de contrôle du tampon de trame sont beaucoup plus limitées sous NetBSD. Sous Linux, je peux facilement sélectionner le périphérique de sortie vidéo, les résolutions et les modes de couleur au démarrage et en cours d'exécution. Sous NetBSD, ces options sont bien plus restreintes.

Outre ces différences observables sur Amiga entre NetBSD et Linux, il existe de nombreuses autres différences entre NetBSD et Debian Linux, mais je ne les aborderai pas dans cet article, car il ne s'agit pas d'un débat NetBSD vs Linux.

Enfin, je tiens à saluer les efforts des développeurs de NetBSD pour améliorer leur portage Amiga. NetBSD est tout à fait utilisable et utile sur Amiga. Il serait souhaitable que certains aspects soient encore améliorés.


[Retour en haut] / [Retour aux articles]