Table des matières

NetBSD, le système d'exploitation le plus Portable

Logo de NetBSD :

Présentation de NetBSD

NetBSD est un système d'exploitation de type BSD Unix étant basé à l'origine sur 386BSD 0.1 et 4.3BSD Net/2, désormais basé sur 4.4BSD Lite Release 2. Si le projet NetBSD a été crée, c'était à la base parce que Lynne et William Jolitz, les fondateurs de 386BSD n'était pas enclin à intégrer des patchkits (correctifs) proposés par des développeurs externes de 386BSD, ce qui a motivé Chris Demetriou, Theo de Raadt (créateur d'OpenBSD), Adam Glass et Charles Hannum à créer NetBSD, FreeBSD a été créée pour les mêmes raisons mais pour des objectifs différents.

Les premières versions de NetBSD basée sur 386BSD 0.1 et 4.3BSD Net/2, sont NetBSD 0.8, publiée le 20 avril 1993 et NetBSD 0.9 publiée le 23 août 1993. À partir de NetBSD 1.0, NetBSD fût basé sur 4.4BSD Lite, puis NetBSD 1.3 c'est basé sur 4.4BSD Lite Release 2, la dernière version BSD du CSRG à l' université de Berkeley. L' intégration complète de 4.4BSD Lite Release 2 a été finalisée avec la version NetBSD 1.4.

Dès le départ NetBSD était prévu pour fonctionner sur un maximum de machines différentes, déjà, à partir de NetBSD 1.0 le système fonctionnait sur l' ordinateur Amiga, jusqu'à l' Amiga 4000 et l' ordinateur macintosh pour l' architecture processeur du Motorola M68k, sur le processeur Intel 80386, l' ordinateur Sun4c à architecture SPARC V7 de l' entreprise Sun Microsystems, l' ordinateur HP 300 de Hewlett-Packard, l' ordinateur PC532 avec processeur NS32532 de l' entreprise National Semiconductor.

La dernière version de NetBSD est NetBSD 10.1 publiée le 16 décembre 2024 sous licence BSD à 2 clauses, elle inclut énormément de nouveautées.

NetBSD est l'OS BSD Libres le moins mis en avant parmis les 3 principales distributions BSD et c'est fort dommage car NetBSD a énormément de fonctionnalités par défaut, comme un noyau de type monolithique modulaire et une compatibilité binaire avec Linux en autres, chose que n'a pas OpenBSD. À cause du manque de visibilité de NetBSD, il n'y a malheureusement pas beaucoup de logiciels tiers à installer mais mis à part ça, c'est un OS idéal pour faire revivre de vieilles stations UNIX et il est également très stable, robuste, sécurisé pour les machines récentes. NetBSD n'est pas moins performant que les autres BSD et est autant adapté pour les ordinateurs récents !!!

Sites Internet dédiés à NetBSD

Le site officiel (en anglais) :

Caractéristiques et spécificités de NetBSD

Bref Résumé de NetBSD

Comme tous les BSD Libres, NetBSD est un OS complet, développé par la même entité, la Fondation NetBSD, il est composé de tous les composants propre à un système UNIX, comme un noyau de type monolithique modulaire, système d'initialisation de type init (rc.d), de plusieurs shell Unix (par défaut sh, ksh et csh), des systèmes de fichiers (UFS et ZFS à l'installation par défaut), tous les utilitaires Unix de base et plus, des bibliothèques logicielles, des daemons (services) comme SSH ou NFS, des protocoles réseau, des journaux de log, un hyperviseur appelé NVMM (NetBSD Virtual Machine Monitor) piloté avec l'émulateur QEMU, d'un gestionnaire de paquets, du compilateur GCC de GNU et sous NetBSD, vous avez également la possibilité d'installer par défaut un serveur X (serveur d'afficahge) en l'occurence X.Org associé au gestionnaire de fenêtre du nom de CTWM (Claude's Tab Window Manager) qui est une améliotation du gestionnaire de fenêtre nommé twm (Tab Window Manager) qui était le gestionnaire de fenêtre par défaut sous les principaux BSD, dont NetBSD.

Il est important de mentionner que NetBSD, comme la plupart des BSD a un compte qui a exactement les mêmes privilèges et le même ID (identifiant de compte) que le superutilisateur nommé root du nom de toor. toor permet en autres d'avoir un autre shell Unix pour le compte root comme le célèbre bash par exemple via les logiciels tiers donc bash s'installe dans le répertoire /usr/pkg/bin ce qui n'est pas un problème pour une utilisation courante mais le devient si vous devez dépanner votre NetBSD et dans se cas vous devez booter (démarrer) en mode single user (mono-utilisateur et en l'occurence avec le compte root) mais dans se mode vous n'avez seulement accès au système de base et pas aux shells contenus dans /usr/pkg/bin, d'ailleurs vous n'avez même plus aucun accès au répertoire /usr/pkg dans sa totalité, se qui en résulte, c'est que si vous associez directement bash au compte root et bien vous n'avez accès à plus aucun shell Unix vu que bash se trouve dans /usr/pkg/bin. Pour vous connecter au compte toor depuis une session multi-utilisateur, il suffit de se conncecter en root en tapant cette commande : su - puis cette commande su - toor.

NetBSD est composé de plusieurs parties de l'OS que l'on appelle des sets dans le jargon BSD. Les sets indispensables au fonctionnement de NetBSD, sont : le set base (qui contient tous les utilitaires Unix de base), etc (qui contient tous les fichiers de configuration dans etc.), et kern-GENERIC (qui contient le noyau de base de NetBSD) puis les sets fortement recommandés : le set comp, debug, games (pas essentiel), gpufw (pas essentiel), man, misc, modules (modules ajoute des fonctionnalités au noyau), rescue (qui comporte tous les utilitaires Unix standard et d'administration de base de manière statique, très utile pour réparer une installation NetBSD cassée) et text. Tous ses sets sont suffisants pour avoir un NetBSD complètement fonctionnel mais si vous souhaitez faire de NetBSD un poste de travail, il faut ajouter ses sets : xbase (qui contient des utilitaires graphiques de base, tel que : xcalc, xclock, xkill,…), xcomp, xdebug, xfont, xetc (qui contient les fichiers de configutations dans /etc liés à X) et xserver (contient le serveur X en lui même, qui est X.Org).

Le Noyau de NetBSD

Le noyau de NetBSD est un noyau monolithique modulaire, modulaire dans le sens où il permet d'activer ou installer des fonctionnalités via des modules, qui ne sont pas activées par défaut sous le noyau NetBSD. Le noyau NetBSD prend en charge SMP (Symmetric Multiprocessing, multiprocesseur symétrique en français) qui n'a cessé d'être amélioré au fil de l' évolution de NetBSD, qui consiste à multiplier les processeurs identiques au sein d'un ordinateur, de manière à augmenter la puissance de calcul, tout en conservant une unique mémoire.

Pour la gestion de modules du noyau, on peut citer les utilitaires en console suivants :

Un grand Atout de NetBSD, la Portabilité

La grande force de NetBSD réside dans sa grande portabilité, NetBSD est disponible pour un nombre très impressionnant d'architecture processeur comme les familles: x86, ia-64, m68k, arm, riscv, powerpc, sparc, mips, alpha, hppa, vax et sh3, on décompte pas moins de 12 architectures processeurs différentes et environ 60 plates-formes matérielles, ce qui est énorme pour un seul et même OS.

Les ports (architecture processeur sous NetBSD) ont trois niveaux de compatibilité, ses trois niveaux sont :

Les ports de Niveau I : sont les ports prioritaires sous NetBSD qui bénéficient du meilleur support. Dans ses ports se trouvent les appareils informatiques les plus récents et utilisés.

Les ports de Niveau II : sont les ports qui sont jugés comme secondaires et qui bénéficient d'un support moins important, car les appareils informatiques de ses ports ne sont plus en utilisés et produits pour la production et qui sont également peu utilisés pour un usage personnel.

GNU/Linux est le seul OS qui est porté sur autant de processeurs différents mais contrairement à NetBSD, il n'y a aucune distribution Linux qui supporte à elle seule autant de processeurs et d'ordinateurs que NetBSD ! Il est important de mentionner que la puce (SoC) Apple M1, c'est à dire que la première génération d'ordinateurs d'Apple sous processeur ARM 64 bits sont théoriquement compatible avec NetBSD.
Les ports sous NetBSD, n'ont pas la même signification que sous FreeBSD. Sous NetBSD, les ports signifient les machines (avec processeurs différents) sur lesquels fonctionnent NetBSD alors que sous FreeBSD les ports signifient les applications portées sur cet OS.
Sachez qu'il est tout à fait possible de compiler la totalité du système NetBSD (espace utilisateur et noyau NetBSD compris, enfin tout) à partir de n'importe quel Unix ou de Type Unix via le framework et script shell nommé build.sh qui permet en plus la compilation croisée, c'est à dire que l'on peut par exemple compiler entièrement un système NetBSD prévu pour un processeurs de type ARM 64 bits sur un ordinateur sous un système GNU/Linux doté d'un processeur Intel ou AMD 64 bits (architecture amd64). build.sh est un petite révolution !!!

L'Installateur de NetBSD

L'installateur de NetBSD se nomme sysinst c'est un installateur qui a une interface de type Curses et qui est relativement complet (il peut paramétrer très finement l'installation de NetBSD) mais un peu complexe pour les non-initiés, qui permet tout type d'installation, pour les serveurs informatiques ou les postes de travail. Un cours résumé pour installer NetBSD :

  1. Les touches et combinaisons de touche du clavier à utiliser pour naviguer sont : la touche Tabulation (), la combinaisons de touche Ctrl+N (N = Next) pour aller sur l'occurence suivante et Ctrl+P (P = Previous) pour l'occurence précédente et la touche Entrer () pour valider un choix ou une opération.
  2. Le premier menu propose la selection de la langue à utiliser puis la disposition du clavier.
  3. Installer NetBSD sur le média de stockage de votre choix et valider par Oui en appuyant sur Entrer, ensuite on vous propose de selectionner le périphéque de stockage (si vous en avez plusieurs) nommé wd0, wd1,…, vous pouvez confirmer la géométrie du disque et choisir d'utiliser le disque entier ou partitionner votre média de stockage. Si vous choisissez d'installer NetBSD sur le disque entier vous pouvez directement passer à la partie 5.
  4. Pour partitionner votre média de stockage, vous pouvez partitionner seulement deux slices (partitions étendues sous BSD) sur la partition principale pour le bon fonctionnement de NetBSD, le slice pour la partition racine / nommé a et le slice pour la partition d'échange (swap, qui est utile quand la mémoire vive est saturée) nommé b, le slice c représente toujours la partition dans son intégralité et d le disque entier (c et d sont indentiques si il n'y a pas de partition de type MBR). Pour le swap je vous conseille de créer un slice de 1,5 fois la taille de la mémoire vive (RAM) et le reste pour votre partition racine. Pour des installations plus spécifique référez vous aux tutos.
  5. Chosissez d'utiliser le BIOS de la console, vous avez la possiblité de faire une installation complète, une installation sans X11, une installation minimale ou une installation personnalisée. A vous de voir selon vos besoins informatiques.
  6. Ensuite ont vous demande à partir de quel support d'installation, vous installez NetBSD. Vous avez au choix, l'installation par CD/DVD/Clé USB, par HTTP, FTP, par disquette (floppy en anglais), par le biais d'un répertoire local qui a tous les sets de NetBSD. Une fois le média chosi, l'extraction des sets commencent.
  7. Il vous est désormais possible de faire les denières configurations du système installé. Vous pouvez configurer votre réseau, le fuseau horaire (timezone), le shell Unix du compte root, modifier le mot de passe de root, activer l'installation des paquets binaires via pkgin, installer les paquets sources de pkgsrc, activer le serveur SSH, activer le serveur NTP, lancer ntpdate au démarrage de NetBSD, activer mdnsd, activer le gestionnaire de session xdm, activer cgd pour crypter les partitions, le gestionnaire de volumes logiques LVM, activer raidframe pour les fonctionnalités de RAID logiciel, et enfin ajouter un utilisateur standard (indispensable pour un système UNIX récent) en plus du compte root. Une fois votre configuration terminée, choisissez Configuration terminée et redémarrer votre NetBSD fraichement installé. Et voilà c'est terminé !

Initialisation de NetBSD

Le système d'initialisation de NetBSD est de type rc.d plus précisément rc.d-ng qui n'a été inégré qu'à partir de NetBSD 1.5 sortie le 6 décembre 2000 (utilisé également par les autres BSD Libres) qui est en autres composé de init, rc et des script shell des daemons dans /etc/rc.conf ou /etc/rc.d. Pour résumé, le système d'initialisation se déroule ainsi :

À l'époque de 4.3BSD ou 4.4BSD, les daemons des système BSD était tous intégré directement dans le fichier /etc/rc mais à lépoque il n'y avait beaucoup moins de daemons incluent par défaut au sein des BSD mais tout de même, le script /etc/rc etait bien chargé.

Stockage sous NetBSD

NetBSD inclut évidement comme système de fichiers spécifique au BSD, UFS (Unix File System) plus précisément UFS2 mais aussi ZFS (beaucoup plus avancé) provenant d'OpenSolaris (une version open source de l'UNIX Solaris) qui a été incorporé par défaut à NetBSD en 2009 et le protocole de stockage iSCSI (Internet Small Computer Systems Interface). NetBSD a égalament CHFS comme système de fichiers pour mémoire de stockage de type Flash, idéal pour SSD, carte SD, clé USB,…etc

UFS et ZFS sont les systèmes de fichiers proposés à l'installation de NetBSD mais NetBSD reconnait un grand nombre de systèmes de fichiers comme, ext, ext2, ext3 et ext4 en ce qui concerne Linux, 9p de Plan 9, v7fs de Unix version 7, tous les systèmes de fichiers FAT (FAT32 le plus utilisé) et NTFS de Windows, ISO9660 pour CD/DVD, UDF (Universal Disk Format), HFS d'Apple,…etc. NetBSD gère aussi par défaut UnionFS (Union File System) qui permet de fusionner plusieurs points de montage mais également le système de fichiers NFS (Network File System) qui est un système de fichiers réseau créée par la défunte entreprise Sun Microsystems.

NetBSD a sa propre version de FUSE (Filesystem in Userspace) nommé puffs (Pass-to-Userspace Framework File System) qui utilise la bibliothèque nommée refuse qui est une réimplémentation de libfuse. puffs tout comme FUSE monte un système de fichiers en espace utilisateur. FUSE est un gestionnaire de système de fichiers en espace utilisateur qui permet très souvent de prendre en charge des systèmes de fichiers qui ne le sont pas par défaut.

Le pilote de pseudo-périphérique nommé bio, qui a comme commande shell bioctl qui permet de gérer pleinement la technologie RAID (Redundant Array of Inexpensive Disks) qui est intégré à NetBSD depuis 2007 et le pilote CCD qui permet à l'utilisateur de concaténer plusieurs disques physiques en un seul pseudo-volume.

NetBSD à comme gestionnaire de volumes logiques issue de Linux, LVM (Logical Volume Management), qui est une réimplémentation spécifique à NetBSD.

Périphériques sous NetBSD

Le système NetBSD a pour outil de base en console, wscons qui est un logiciel de type cadriciel (framework) qui gère l' interaction entre le système et les périphériques d' entrée/sortie tel que les claviers, souris, écrans, il a comme fichier de configuration /etc/wscons.conf. wscons est en autres le pilote de console sous NetBSD (également sous OpenBSD), il permet la création et la gestion des consoles virtuelles (getty), la configuration du clavier tel que sa disposition ou layout (AZERTY,QWERTY,…), la gestion de la souris, la configuration de l'écran et le support des types de terminaux tel que VT100, VT220,…

Le Réseau sous NetBSD

NetBSD à une pile TCP/IP, très stable, robuste qui c'est basé originellement sur 4.3BSD Net2, pour finir par intégrer la pile TCP/IP de 4.4BSD Lite Release 2 qui a été constamment améliorée par le projet NetBSD. NetBSD prend évidement en charge le protocole de communication de type Ethernet mais également le Wifi, la pile TCP/IP prend en charge IPv4 et IPv6.

NetBSD est le seul BSD Libres à prendre en charge les puces Wi-Fi des différents modèles de Raspberry Pi (puce Broadcom). Et ça c'est un grand atout pour tous les projets possibles avec un Raspberry Pi !!!

Sécurité sous NetBSD

Tout d'abord NetBSD à de base un code source d'une extrême qualitée, l'une des nombreuses raisons vient du fait que NetBSD est extrêmement portable, les processus s'exécutent avec les privilèges les plus restreints possibles, réduisant ainsi la surface d'attaque, il y a des mises à jour régulière et une communauté très active.

Parmi les mécanismes de sécurité, NetBSD intègre :

Gestionnaire de Paquets sous NetBSD

NetBSD utilise deux méthodes d'installation de paquets, soit sous forme de compilation avec pkgsrc ou sous forme binaire avec l'utilitaire en ligne de commande du nom de pkgin. Tous les logiciels tiers, installés par pkgsrc ou pkgin se retrouvent dans le répertoire /usr/pkg.

Pour installer des logiciels sous NetBSD référez vous à se tuto.

La collection de logiciels de pkgsrc n'est pas seulement disponible sur NetBSD, vous pouvez installer pkgsrc sous Linux, macOS, FreeBSD, OpenBSD, Solaris et illumos, MINIX, HP-UX de HP, AIX d'IBM,…

Compatibilité Binaire avec d'autres OS sous NetBSD

L'OS NetBSD est pouvu d'une compatibilité binaire avec Linux en implémentant l'ABI (Application Binary Interface) de Linux ce qui permet d'exécuter des applications prévues pour Linux de façon quasi natives. La compatibilité binaire avec Linux est activé par défaut dans le noyau GENERIC de NetBSD sous le nom de COMPAT_LINUX, elle est aussi bien compatible avec les logiciels 32 bits et 64 bits. Il y a peu, depuis NetBSD 10.0 sortie le 28 mars 2024, il y a aussi une compatibilité binaire avec Linux pour les processeurs ARM 64 bits. Par défaut, en passant par les sources via pkgsrc ou par les binaires via pkgin, donc les logiciels tiers, NetBSD installe une distribtion OpenSUSE, le FHS (Filesystem Hierarchy Standard) est installé dans /emul/linux qui est un lien symbolique qui pointe vers /usr/pkg/emul/linux, c'est à dire toute l'arborescence de Linux, les répertoires, les fichiers,… Vous avez également la possibilité d'installer la distribution Linux de votre choix, par exemple pour Debian GNU/Linux utilisez l'outils en ligne de commande du nom de debootstrap pour faciliter le téléchargement de la distro.

Vous avez également la possiblité d'installer et d'utiliser des binaires prévus pour Windows via les logiciels tiers du nom de Wine, disponible sur la plupart des OS de Type Unix. Là encore, ce n'est pas une émulation à proprement parler mais une implémentation de l'ABI de Windows. Cela peut-être pratique pour des logiciels uniquement disponible sous Windows, en particulier les jeux et les logiciels de grand éditeur tel que Photoshop d'Adobe. Mais en ce qui concerne les logiciels hors jeux vous avez souvent des alternatives mais je comprends que certaines personnes ayant passées du temps à apprendre à utiliser un logiciel n'est pas forcément l'envie ni le courage de passer à un autre logiciel et d'être obligé de tout réapprendre.

Virtualisation sous NetBSD

Depuis peu, NetBSD à son propre hyperviseur maison, intégré au noyau du nom de NVMM (NetBSD Virtual Machine Monitor) qui utiliste la bibliothèque nommée libnvmm et qui est exécutable via l'émulateur QEMU, pour le moment, il ne supporte que les processeurs Intel ou AMD de type x86. Il y a un utilitaire en console qui permet aussi de gérer NVMM du nom de nvmmctl, nvmmctl permet de controler les VM (machines virtuelles).
Avec QEMU, NetBSD peut aussi utiliser l'hyperviseur Intel HAXM.

L'hyperviseur Xen est intégré à NetBSD depuis la version NetBSD 3.0, il est pleinement fonctionnel, il gère les Dom0 et les DomU.

Quelques Protocoles Réseaux Applicatifs intégrés par Défaut sous NetBSD

Tous les protocoles réseaux applicatifs comprennent à la fois le client et le serveur.

Il est important de savoir que tous les serveurs intégrés à NetBSD sont désactivés par défaut, pour activer les serveurs sous NetBSD, il faut les renseigner dans /etc/rc.conf. Exemple pour activer le daemon et serveur OpenSSH : echo sshd=YES » /etc/rc.conf.

Mise à Jour ou à Niveau de NetBSD

Pour mettre à jour ou à mettre à niveau vous pouvez utilisez l' installateur de NetBSD nommé sysinst ou utilisez un logiciel tiers du nom de sysupgrade, que vous pouvez soit installer via pkgsrc ou pkgin.

Pour une documentation plus poussée sur sysupgrade, veuillez consulter le manuel (page de man) avec la commande : man sysupgrade (évidement il faut que le paquet sysupgrade soit installer sur votre système NetBSD).

Documentation supplémentaire sur NetBSD

Pour une documentation complète référez vous aux tutoriels sur NetBSD.