====== NetBSD, le système d'exploitation le plus Portable ====== **Logo** de **NetBSD** : {{ :wiki:systemes_d_exploitation:bsd_unix:netbsd.png?nolink&240 |}} ===== 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) : * [[https://www.netbsd.org/|Projet NetBSD]] * [[https://www.netbsd.org/docs/guide/en/|Le Guide NetBSD]] en anglais * [[https://wiki.netbsd.org/|Wiki NetBSD]] * [[https://man.netbsd.org/|Les pages du Manuel]] * [[https://www.netbsd.org/docs/misc/index.html|FAQs et HOWTOs]] * [[https://www.netbsd.org/changes/|Les News de NetBSD]] * [[https://www.pkgsrc.org/|pkgsrc]] est à la base de la **gestion de logiciels** sous **NetBSD** mais **pkgsrc** va plus loin, il a en autres été ''porté'' sur **GNU/Linux**, **Solaris** (et **illumos**), **macOS**. Je vous suggère de consulter le [[https://www.pkgsrc.org/wip/|Projet pkgsrc-wip]]. * [[https://www.netbsd.org/community/|Liens Communautaires sur NetBSD]] ===== 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 : * **modstat** permet d'avoir la liste des **modules** chargés dans le **noyau NetBSD**. * **modload** permet de charger un **module** et ses **modules dépendants**. * **modunload** permet au contraire de décharger un **module** et ses **modules dépendants**. ==== 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'' : * **aarch64** pour les **processeurs** **ARM** ''64 bits'' pour les **appareils informatiques** récents, tel que les **nano-ordinateurs** actuels, genre **Raspberry Pi**, **Orange Pi**, **BeagleBone** ou les **smartphones**/**tablettes**. * **x86_64** pour les **processeurs** de la famille **x86** tel que **Intel** ''64 bits'' et **AMD** ''64 bits''. * **evbarm** pour les **processeurs** **ARM** ''32 bits'' tel que les **processeurs** des **nano-ordinateurs** tel que le **Raspberry Pi** par exemple. * **evbmips** pour les **processeurs** **MIPS** qui fonctionnent sur certains **nano-ordinateurs**. * **evbppc** pour les **processeurs** **PowerPC** comme la **Nintendo Wii**. * **hpcarm** pour les **processeurs** **ARM** ''32 bits'', plus précisément **Intel StrongARM** et **XScale** pour le **PDA**. (**//Personal Digital Assistant//**, **assistant personnel** en français), comme le **Jornada** de **Hewlett-Packard**. * **i386** pour les anciens **processeurs** de type **x86**, **Intel** et **AMD** ''32 bits''. * **sparc64** pour les **processeurs** **SPARC** ''64 bits'' des **stations de travail** et **serveurs** basé sur **Sun UltraSPARC**. * Et **xen** pour les **VM** (**machines virtuelles**) de l'**hyperviseur** **Xen**. * Les **ports** de ''Niveau II'' : * **acorn32** pour les **processeurs** **ARM** ''32 bits'' des **RiscPC**, **A7000** de l' ''entreprise'' **Acorn**. * **alpha** pour les **processeurs** **DEC Alpha** de **DEC** (**//Digital Equipment Corporation//**). * **amiga** pour les **processeurs** **M68k** des **ordinateurs** **Amiga** de **Commodore**. * **amigappc** pour les **processeurs** **PowerPC** des **ordinateurs** **Amiga**. * **atari** pour les **processeurs** **M68k** des **ordinateurs** **Atari TT030**, **Falcon** et **Hades** * **hpcmips** pour les **processeurs** **MIPS** des **PDA** à l'origine sous **Windows CE**. * **dreamcast** pour les **processeurs** **SuperH** (**SH-3**) de **Hitachi** pour la **console de jeux** **Dreamcast** de **Sega**. * **ia64** pour les **processeurs** **Intel Itanium** ''64 bits''. * **riscv** pour les **processeurs** **RISC-V** utilisés par certains **nano-ordinateurs**. * **vax** pour les **ordinateurs** **VAX** de **DEC**. * et bien d'autres... * Les **ports** de ''Niveau III'' : * Se sont des **ports** d'**ordinateurs** ou de **processeurs** qui ne sont plus ''produits'' et devenus ''obsolètes'' tel que l'**ordinateur** **PDP-11** de **DEC**. C'est très souvent du **matériel informatique** que **NetBSD** ne peut pas se procurer. 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** : - 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. - Le premier **menu** propose la selection de la **langue** à utiliser puis la **disposition du clavier**. - 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''. - 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 [[wiki:systemes_d_exploitation:bsd_unix:netbsd:tutoriels_sur_netbsd|tutos]]. - 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**. - 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. - 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 : * Le **BIOS** (**//Basic Input Output System//**) ou **UEFI** (**//Unified Extensible Firmware Interface//**) démarre le **noyau NetBSD** qui initialise tous les **périphériques** au démarrage et invoque le premier **processus** du nom de **init**, puis **init** exécute le **script shell** ''/etc/rc''. * Le **script** ''/etc/rc'' démarre les **daemons** dans ''/etc/rc.conf'' ou ''/etc/rc.d/''. * Le **script** ''/etc/rc'' peut égalemant faire appel à ''/etc/rc.local'' qui contient des **daemons** locaux qui ne sont pas compatibles avec le **script shell** ''/etc/rc.conf''. * Aprrès toute cette précédure, **init** invoque les **processus** **getty** qui initialisent les **consoles** (**terminaux** ''virtuelles'') listées dans ''/etc/ttys''. À 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 : * **Veriexec** (**Verified Executables**) qui permet la **signature des fichiers binaires**, si un exécutable ne correspond pas à son **empreintes digitales**, il n'est pas exécuter. * Le **pilote** de **périphérique cryptographique** du nom de **CGD** qui permet de crypter tout type de **périphérique de stockage** (y compris les **CD/DVD**). * Des ''fonctionnalités'' de **réduction des vulnérabilités** de type **ASLR** (**//Address Space Layout Randomization//**), **KASLR**, **restricted mprotect** et **Segvguard** tous venant du **projet** **PaX**. * Le **framework** (**cadriciel**) **Kernel Authorization** (**//Kauth//**), qui est un sous-système pour les **demandes d'autorisation** à l'intérieur du **noyau**, il permet en autres aux **modules** externes du **noyau** de se ''connecter'' au **processus d'autorisation**. * Les **extensions** du **compilateur** **GCC** du nom de **Stack Smashing Protection** aussi connu sous le nom de **ProPolice** qui est un **protection** contre les **dépassements de tampon**. * D'un **contrôle d'accès** au niveau des **fichiers** et des **ressources système**. * Des **systèmes** de **détection d'intrusion** tel que **Snort**. * La **ségrégation des privilèges** qui permet aux processus de s'exécuter avec des **privilèges** bien spécifique. * La **bibliothèque** du nom de **PAM** (**//Pluggable Authentication Modules//**). * **NetBSD** à son propre **pare-feu** du non de **NPF** (**//NetBSD Packet Filter//**) qui est un **fork** de **PF** (**//PacketFilter//**) du **système BSD** nommé **OpenBSD**. ==== 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''. * **pkgsrc** est un **système** de **compilation** qui permet d'installer un **logiciel** et toutes ses **dépendances** de manière ''automatisée'' par **compilation** avec de simple **Makefiles** (**fichiers** d'instructions de **compilation**) et l'**utilitaire Unix** des plus célèbres, **make**. Vous pouvez installer **pkgsrc** à la fin de l'installation de **NetBSD** à condition d'être connecté à **Internet**. * **pkgin** est un **gestionnaire de paquets** ''binaire'', **paquets** disponibles dans les **dépôts** **NetBSD** de **pkgsrc**. **pkgin** est un **gestionnaire de paquets** qui a pris comme base le **système** **APT** de **Debian** et est très ''similaire'' à se dernier. Vous pouvez également installer **pkgin** à la fin de l'installation de **NetBSD**, également à condition d'être connecté à **Internet**. Pour installer des **logiciels** sous **NetBSD** référez vous à se [[wiki:systemes_d_exploitation:bsd_unix:netbsd:tutoriels_sur_netbsd:tutos_netbsd_sur_l_admnistration_systeme:gestion_de_logiciels_sous_netbsd|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**. * **SSH** (**//Secure Shell//**), précisément **OpenSSH** sous **NetBSD** est un **protocole** qui permet en autres de se connecter à un **ordinateur** distant ayant un **serveur SSH** en **ligne de commande**, comme l'ancien **Telnet** ou **Rlogin** mais de manière ''sécurisée'' en utilisant la **cryptographie asymétrique**. * **HTTP** (**//Hypertext Transfer Protocol//**), **NetBSD** dispose d'un **serveur Web** par défaut du nom de **bozotic HTTP server** (**bozohttpd**). * **FTP** (**//File Transfer Protocol//**), en autres, **protocole** de **transfert de fichiers** à ''distance''. * **TFTP** (**//Trivial File Transfer Protocol//**) est un **protocole** ''simplifié'' de **transfert de fichiers**. * **Telnet** qui permet en autres, tout comme **SSH**, de se connecter à un **ordinateur** distant mais de manière ''non sécurisé'', les **mots de passe** transitent en ''clair''. Mais **Telnet** peut toujours être pratique pour faire des tests de ''connexion'' à un **ordinateurs** distant. * **Rlogin** permet de se connecter en **ligne de commande** à une vielle **station UNIX** qui ne bénéfie pas d'un **serveur SSH**. * **Postfix** est un **serveur de messagerie électronique**, plus facile à ''appréhender'' que **Sendmail**. * **Inetd** est en quelque sorte un **serveur** de **serveur** qui lance les **daemons** des **serveurs** qui ne sont pas utilisés à grande échelle. Le **fichier de configuration** de **inetd** est ''/etc/inetd.conf''. * et beaucoup d'autre **protocoles**. 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**. * **sysinst** : il vous faut un **média d'installation** de type **CD/DVD** ou **Clé USB** par exemple puis au moment du démarrage de l'**installateur** il vous est proposé soit d' ''installer'' **NetBSD** ou de le ''mettre à jour'' (à ''niveau''), chosissez ''mettre à jour'' puis suivez les ''instructions''. L'avantage de **sysinst** est qu'il permet de ''mettre à niveau'' **NetBSD** sans connexion à **Internet** (il tout de même préférable d'être connecté à **Internet**). * **sysupgrade** : après avoir installer **sysupgrade** via **pkgsrc** ou **pkgin**, qui permet de ''mettre à niveau'' un **système** **NetBSD** en cours d'exécution, connecté à **Internet**. Dans l'exemple nous mettrons à ''niveau'' **NetBSD 9.3** vers **NetBSD 10.0** sur un **ordinateur** doté d'un **processeurs** **Intel** ou **AMD** ''64 bits'' (**architecture** la plus courante sur **PC**), voici la marche à suivre (toutes les **commandes** sont à exécuter en tant qu' ''utilisateur'' **root**, l'**invite de commande** doit être précédée du signe ''#''.), tapez les **commandes** en **root** : * sysupgrade auto https://cdn.NetBSD.org/pub/NetBSD/NetBSD-10.0/amd64 * sysupgrade fetch https://cdn.NetBSD.org/pub/NetBSD/NetBSD-10.0/amd64 * sysupgrade kernel * sysupgrade modules * reboot * sysupgrade sets * sysupgrade etcupdate * sysupgrade postinstall * sysupgrade clean * reboot 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 [[wiki:systemes_d_exploitation:bsd_unix:netbsd:tutoriels sur NetBSD]].