# HP-UX

HP-UX (Hewlett Packard UniX) est une implémentation propriétaire du système d'exploitation Unix, basé sur System V, développée par Hewlett Packard Enterprise. HP-UX est utilisé sur des serveurs et des stations de travail HP 9000 et Integrity, équipés respectivement de processeurs PA-RISC (32 et 64 bits), conçus par HP, et Intel Itanium. HP-UX était également disponible pour des systèmes Apollo et les premières versions fonctionnèrent sur des serveurs HP 9000 de série 200, 300 et 400, basés sur des processeurs Motorola de série 68000, ainsi que sur des HP 9000 de série 500, basés sur les processeurs propriétaires HP FOCUS.

## Description

HP-UX a été le premier Unix avec permissions d'accès aux fichiers de type liste de contrôle d'accès (ACL) comme alternative au système standard de permission Unix. HP-UX a également été un des premiers Unix à inclure un gestionnaire de volumes logiques intégré. HP a une longue relation avec Veritas Software (en) et intègre VxFS en tant que système de fichier principal. HP-UX 11i est un des Unix commerciaux leaders pour la virtualisation intégrée aux services critiques, la performance observée, la haute disponibilité, ainsi que la facilité de gestion.
HP-UX est un concurrent direct de Sun Solaris, d'IBM AIX et de GNU/Linux.
HP-UX utilise XFree86, l'environnement de bureau CDE et de nombreux logiciels libres, dont le logiciel libre Bastille auquel HP contribue (à l'origine développé pour Red-Hat Linux).
La version, publiée en février 2007, est la 11i v3 (aussi connue sous le nom de 11.31). Comme la version précédente, cette version supporte les processeurs PA-RISC et Itanium. La nouvelle version introduit NFSv4 et le support hyperthreading pour les processeurs Itanium.
La dernière version est HP-UX 11i v3 (11.31), dont le dernier update est mai 2017.
Du fait de l'arrêt des processeurs Itanium, HP-UX doit atteindre sa fin de vie d'ici décembre 2025 .

## Environnements d'opération

HP-UX est fourni en quatre versions différentes pré-intégrées et testées.
* L'environnement d'opération de base (base operating environment - BOE) est le système d'exploitation de base, auxquels s'ajoutent de nombreux paquets supplémentaires, tels que SRP (Partitions de ressources sécurisées), Bastille, OpenSSL, Secure Shell (une implémentation d'OpenSSH), IPSec, Fedora Directory Server, Apache, Java, Tomcat, Ignite-UX, etc.
* L'environnement d'opération Haute Disponibilité (High-availibility Operating Environment - HA-OE) est centré autour de la solution de cluster ServiceGuard. Il contient l'environnement d'opération de base ainsi que ServiceGuard (et ses extensions et boites à outils pour NFS, par exemple), MirrorDisk/UX, OnlineJFS et GlancePlus.
* L'environnement d'opération Virtualisation (Virtual Server Environment - VSE-OE) permet aux administrateurs de serveurs HP-UX d'utiliser l'environnement de base, mais, au-delà, d'utiliser les outils de virtualisation vPar et Integrity Virtual Machines. Il inclut également les outils de gestion de charge Global Workload Manager et de consolidation Capacity Advisor.
* Finalement, l'environnement d'opération de centre de données (Datacenter Operating Environment - DCOE) inclut les trois environnements d'opération précédents.

## Virtualisation

Les systèmes HP-UX proposent différentes couches de virtualisation afin de répondre à différents types de charge.
* les nPars (node Partition - partition de nœud) sont uniquement disponibles pour les systèmes Superdome 2 et constituent un groupement logique de plusieurs serveurs en lame physiques. Cette approche offre une granularité au niveau de la cellule (deux processeurs, huit cœurs) et a l'avantage d'une isolation électrique complète entre les composants. Il est possible d'installer HP-UX directement sur la nPar (bare-metal) ou de créer une vPar (voir ci-dessous)
* les vPars (virtual Partitions - partitions virtuelles) sont également uniquement disponibles pour les systèmes Superdome 2. Elles permettent de subdiviser une nPartition avec une granularité d'un cœur de processeur. Il est par exemple possible d'avoir, sur une nPar de deux processeurs/huit cœurs, une vPar d'un cœur et une autre vPar de sept cœurs.
* les Integrity Virtual Machines peuvent être installées sur tout type de serveur HP-UX (excepté les vPars). Le système hôte peut être, par exemple, une nPar ou un serveur HP Integrity en lame ou monté en rack. Les Integrity Virtual Machines (également appelées HPVM) fonctionnent sur le principe d'une architecture complètement partagée. Les ressources (processeurs, mémoire vive, I/O) sont partagées entre machines virtuelles. Ce système présente l'avantage d'être extrêmement flexible : les machines virtuelles peuvent être migrées d'un hôte à un autre sans interruption du système d'exploitation. Elles peuvent également être intégrées à un environnement de clustering MC/ServiceGuard pour créer des machines virtuelles à haute disponibilité.
* Les Secure Resource Partitions (SRP - partitions de ressources sécurisées) permettent d'isoler des applications à l'intérieur même de toute instance du système d'exploitation HP-UX. Les SRP créent des compartiments isolés et permettent d'empêcher toute communication inter-processus (IPC) ou signaux envoyés à des processus envoyés d'une partition à une autre. De plus, elles permettent d'attribuer à une partition, soit des parts de processeur (grâce au mécanisme de FSS - fair share scheduler), soit des processeurs entiers (grâce au mécanisme de pSets - processor sets). Enfin, la mémoire vive, certains systèmes de fichiers, ainsi que les interfaces réseaux peuvent être attribuées exclusivement à une SRP. Des patrons pour Tomcat, SSH et Oracle sont disponibles afin d'intégrer facilement les applications à ces containers.

## Gestion du stockage

Depuis l'introduction d'HP-UX 11i v3, la gestion du stockage est faite au moyen de fichiers spéciaux appelés Persistent Device Special Files (Persistent ou Agile DSF, par exemple : /dev/disk/disk6), par opposition aux Legacy DSF (par exemple /dev/dsk/c2t0d4) utilisés dans les versions précédentes de HP-UX. Ces fichiers assurent la connectivité, par exemple, aux disques locaux ou à des LUN présentées via SAN. Les Persistent DSF assurent le multipathing, permettant aux données de transiter par différents chemins dans la fabrique SAN, ils gèrent le load-balancing entre ces différents chemins, ainsi que le failover, qui assure la continuité du service, même en cas de problème sur un des chemins. De plus, ces fichiers restent constants, même en cas de changements de taille de la LUN. Les produits de gestion du multi-pathing EMC PowerPath, HP Securepath ou Veritas DMP ne sont donc plus nécessaires sur HP-UX 11.31.
Il existe trois choix de systèmes de gestion de volumes logiques (LVM)
* LVM est le système de gestion de volumes logiques (LVM) de base d'HP-UX. Il supporte des volumes physiques jusque 16 To, jusqu'à 2048 groupes de volumes (volume groups - VG) et des volumes logique (logical volumes - LV) d'une taille de 256 To.
* Veritas Volume Manager (VxVM)
* Cluster Volume Manager pour les applications déployées en cluster, par exemple avec ServiceGuard
Au niveau du système de fichiers, HP-UX supporte le système de fichier de base de Veritas (VxFS-lite), le système de fichiers OnlineJFS (le VxFS complet), ainsi que CFS (Clustered File System) et HFS, d'origine HP mais inusité aujourd'hui car manquant de fonctionnalités.

## Administration

HP-UX peut compter sur un écosystème complet d'applications permettant une administration aisée.
Software Assistant (SWA) permet de surveiller le niveau de rustine (patch) de centaines de serveurs afin d'appliquer les changements rapidement après que des alertes, par exemple de sécurité, ont été émises.
Ignite-UX permet de déployer des instances d'HP-UX, soit en installant les paquets un par un, soit en utilisant une image logicielle (golden image), par le réseau Ethernet, utilisant le mécanisme de PXE boot. Il est également possible d'utiliser Ignite pour créer des sauvegardes d'HP-UX dans le cadre d'un plan de reprise d'activité (PRA).
Pour les administrateurs qui ne se sentent pas à l'aise avec la ligne de commande, HP-UX dispose d'une application web appelée System Management Homepage qui permet d'effectuer toutes les tâches quotidiennes d'administration de manière graphique. Par exemple, augmenter la taille d'un volume logique et de son système de fichier peut être réalisé de manière très simple, l'extension du volume logique et du système de fichier étant combiné en une seule action.

## Gestion des logiciels

Software Distributor (SD) est l'outil d'administration des paquets logiciels. Il fournit un ensemble d'outils permettant la création et l'installation de paquets. Ces paquets peuvent être groupés dans un dépôt logiciel (depot). Un serveur peut contenir de multiples dépôts pour l'installation de paquets différents, et même de systèmes complets.
Les outils d'opérations de distribution de logiciel sont en général exécutées à la ligne de commande. Software Distributor inclut les commandes suivantes :
* swacl — l'accès aux produits ou dépôts logiciels peuvent être contrôlés granulairement par une ACL (Access Control List). Cette liste est gérée par la commande swacl
* swask — exécute des scripts de demande de logiciel interactifs et enregistre les réponses pour un usage futur par les fichiers de swinstall et de swconfig
* swconfig — configure ou déconfigure un paquet logiciel installé
* swcopy — copie un paquet logiciel sur un dépôt
* swinstall — installe un ou plusieurs paquets logiciels sur un système local ou distant. Ceci peut causer un redémarrage si les paquets installés l'exigent
* swjob — crée et surveille les tâches batch de Software Distributor
* swlist — liste les produits logiciels installés ou le contenu de dépôts. Un nombre considérable de paramètres de paquets peuvent être affichés en utilisant les arguments appropriés de cette commande
* swmodify — modifie les particularités d'un paquet logiciel installé sur un système ou chargé sur un dépôt
* swpackage — un fichier de spécification est passé à cette commande, indiquant comment ce paquet doit être construit. Le paquet peut ensuite être ajouté à un dépôt ou sur un média pour être envoyé par la poste
* swreg — enregistre ou supprime un dépôt. Seuls les dépôts enregistrés seront affichés en utilisant swlist pour dépôts sur un serveur distant
* swremove — supprime un paquet d'un système ou dépôt. Ceci peut causer un redémarrage si les paquets à supprimer l'exigent
* swverify — teste un produit logiciel pour déterminer si l'état d'installation est normal
Les paquets logiciels sont construits par un fichier de spécification, un groupe de scripts d'installation, et le contenu du logiciel propre. Les scripts d'installation sont exécutés durant l'installation, la vérification, la suppression et peuvent être utilisés afin de préparer un système pour le logiciel ou activer ou désactiver des paquets.
Le fichier de spécification détermine comment le paquet logiciel sera organisé, il liste les endroits des différents fichiers à charger dans le paquet, restreint les systèmes sur lesquels les paquets peuvent être installés et détermine la configuration de sécurité du paquet. Il fournit également de nombreuses informations sur le paquet, tels que son nom, sa version et sa description.
Les paquets logiciels sont organisés en containers, le niveau le plus haut étant un groupement (bundle) ou un produit (product), et le plus bas étant les fichiers. La hiérarchie s'établit comme suit:
* Bundle
** Product(s)
*** Subproduct(s)
**** Fileset(s)
***** Files
En fait, seuls les niveaux « Product » et « Fileset » sont utilisés par la plupart des paquets. Le niveau « Subproduct » (sous-produit) est parfois utilisé pour grouper des « Filesets » (groupes de fichiers), tandis que le « Bundle » fournit un groupement de haut-niveau pour produits reliés entre eux. Un exemple typique est le « Bundle » HP-UX web services, qui contient les « Products » Apache et Tomcat.
Il peut y avoir un ou plusieurs groupes de fichiers dans un Product, et un ou plusieurs Products dans un Bundle. Les groupes de fichiers sont utilisés spécifiquement pour charger les fichiers.
Les groupes de fichiers et produits peuvent être liés par différentes conditions et, dans ce cas, swinstall sélectionne les dépendances automatiquement.
Chaque groupe de fichier peut avoir de nombreux scripts de contrôle spécifiques aux fichiers qu'il va charger. Ces scripts sont exécutés dans l'ordre suivant durant l'installation :
* checkinstall — exécuté durant la phase d'analyse de pré-installation pour vérifier si le groupe de fichiers peut être chargé sur le système
* preinstall — exécuté juste avant le chargement des fichiers dans le groupe de fichiers
* postinstall — exécuté immédiatement après le chargement des fichiers, et avant le redémarrage, si celui-ci est exigé
* configure — exécuté après le script postinstall et après un éventuel redémarrage pour finir la configuration du paquet installé
Il existe un groupe de scripts similaires qui sont exécutés dans l'ordre inverse lors de l'exécution de la commande swremove
* checkremove
* unconfigure
* preremove
* postremove
D'autres scripts incluent d'autres vérifications par l'exécution des commandes swverify, unpreinstall et unpostinstall. Ces scripts peuvent être inclus en totalité, en partie, ou pas du tout dans le paquet, selon les exigences de l'installation. Ils sont utiles pour exécuter un nettoyage de paquets précédents, créer des liens, ajouter le répertoire de logiciel à diverses variables d'environnement de recherche, etc.

## Historique des versions

| Année | Version | Changements |
| 1984 | 1.0 | Prise en charge du PC HP Integral (version ROM embarquée). Le kernel de base fonctionne sur le ROM; les autres commandes sont sur les disques |
| 1987 | 2.0 | Première version pour HP 9000 séries 800. Il y a peut-être eu une version 2.x différente pour les séries 200 à une date différente |
| 1988 | 3.x | Uniquement pour les HP 9000 série 600/800. Note: les versions 2.x/3.x (pour les séries 600/800) furent développées en parallèle aux versions 5.x/6.x (pour les séries 200/300/400). Donc, par exemple, 3.x était contemporain de 6.x. Les deux lignes furent unies à partir de la version 7.x (avec des nombres mineurs différents pour chaque série). Les séries 800 sautèrent de 3.1 à 7.0 et les séries 300 de 6.5 à 7.01 |
| 1985 | 5.0 | Mis à jour et renommé HP-UX pour PC Integral. Prise en charge des séries 200, 300 et 500 |
| 1988 | 6.x | Prise en charge des HP 9000 Series 300 uniquement. Introduction des sockets de 4.3BSD. Cette version (avec la 3.x) apporte également la technologie des fichiers dépendants du contexte -context dependent files (CDF)- feature, une méthode permettant à un serveur de fichier de servir différentes configurations et fichiers exécutables (et même architectures) à différents clients dans un environnement hétérogène. Un répertoire contenant de tels fichiers a son bit suid activé et est caché des processus root et ordinaires dans un usage normal. Ce schéma était parfois utilisé par des hackers pour cacher des exploits. Les CDF et le système de fichier CDF sont abandonnés avec la version 10.00 |
| 1990 | 7.x | Prise en charge des HP 9000 Series 300/400, 600/700 (version 7.03) et systèmes 800. Fournit la bibliothèque graphique OSF/Motif |
| Janvier 1991 | 8.x | Prise en charge des systèmes HP 9000 Series 300/400 600/700/800. Introduction des bibliothèques partagées |
| Juillet 1992 | 9.x | 9.00, 9.02, 9.04 (Series 600/800), 9.01, 9.03, 9.05, 9.07 (Series 300/400/700), 9.08, 9.09, 9.09+ (Series 700 only), 9.10 (Series 300/400 only). Ces versions prennent en charge les systèmes HP 9000 Series 300, 700 et 800. Introduction de SAM. Le gestionnaire de volumes logiques (LVM) est présenté avec 9.00 pour les séries 800 afin de remplacer les anciennes méthodes de gestion de disques. Afin de déterminer si HP-UX fonctionne sur une station de travail ou un serveur, il suffit de regarder le dernier chiffre de la version de l'OS: les nombres pairs indiquent un serveur, les nombres impairs une station de travail. |
| 1995 | 10.00 | Cette version majeure voit la convergence du système d'exploitation entre les systèmes HP 9000 Series 700 (stations de travail) et Series 800 (serveurs). Le système d'exploitation ne supporte plus les séries plus anciennes. Il y a également des changements majeurs dans la disposition des fichiers et dossiers, basés sur l'UNIX d'AT&T System V Release 4 standard. Les applications sont enlevées du dossier /usr et placées dans /opt; les fichiers de configuration de démarrage sont placées sous /etc/rc.config.d; les répertoires des utilisateurs sont placés de /users à /home. Les logiciels pour HP-UX sont maintenant installés sous forme de paquets, envoyés, et installés par les outils de Software Distributor (SD). LVM est également disponible pour les Series 700. HP-UX 10.0 est suivi par 10.01 (1995), 10.02 (1995), 10.03 (1996), 10.08 (1996), 10.09 (1996), 10.10 (1996) et 10.16 (1996). |
| 1996 | 10.20 | Cette version inclut la prise en charge des processeurs PA-RISC 2.0 qui supportent l'adressage de mémoire en 64 bits. Pluggable Authentication Modules (PAM) sont introduits pour utilisation dans CDE. Le système de fichier racine peut être configuré pour utiliser le Veritas File System (VxFS). Pour des raisons techniques et de compatibilité, le système de fichier utilisé pour le démarrage du noyau reste le Hi Performance FileSystem (HPFS; une variation d'UFS) jusqu'à la version 11.23. HP-UX 10.20 supporte également les identifiants d'utilisateurs et de groupes 32-bit. La limite précédente était de 60,000, ou 16-bit. Cette version d'HP-UX, ainsi que les précédentes, sont maintenant officiellement obsolètes et le support par HP prit fin le 30 juin 2003 |
| | 10.24 | Cette version d'HP-UX fournit des fonctionnalités de sécurité améliorées. Virtual Vault est un système d'exploitation compartimenté dans lequel chaque fichier est alloué à un compartiment et où les processus n'ont accès qu'aux fichiers appartenant à leurs compartiments et, à la différence de la plupart des autres Unix, le super utilisateur (root) n'a pas un accès complet au système sans suivre les procédures correctes. |
| 1997 | 10.30 | Cette version est destinée principalement aux développeurs avec diverses améliorations. L'utilisation des PAM continue à augmenter dans les composants de sécurité du système. De nombreux changements aux appels système (system calls) sont également faits. Ce système d'exploitation fournit également la première prise en charge des threads de kernel, avec un modèle de thread 1:1 (chaque utilisateur est lié à un thread du kernel). HP-UX 10.30 est également la première version d'HP-UX compatible avec l'an 2000. |
| 1997 | 11.00 | Cette version d'HP-UX est la première à supporter l'adressage en 64-bit; les versions précédentes étaient uniquement compatibles 32 bits. Les applications 32-bits peuvent cependant fonctionner sur les systèmes 64-bits. Cette version est également compatible an 2000. Elle prend en charge le multiprocessing symétrique, fibre channel, et NFS PV3. Elle contient également des outils et de la documentation afin de convertir du code 32 bits en 64 bits. |
| | 11.10 | Il s'agit d'une version limitée à la prise en charge des systèmes HP 9000 V2500 SCA (Scalable Computing Architecture) et V2600 SCA. Les autres versions prenaient en charge les serveurs HP 9000 V-class dans une configuration de cabinet simpleM; HP-UX 11.10 fonctionne sur les versions SCA où les deux serveurs sont empilés les uns sur les autres, connectés entre eux par une « hyperplane crossbar ». HP-UX 11.10 ajoute également JFS 3.3, la prise en charge de 128 processeurs, AutoFS, et un nouveau ftpd. Elle n'est pas disponible séparément. |
| 2000 | 11.11 (11i v1) | Également connue sous le nom 11i, cette version d'HP-UX introduit le concept d'Operating Environments. Elle est sortie en décembre 2000. Il s'agit de groupes d'applications utilisable pour une utilisation générale. Les OE disponibles sont les OE Mission Critical, Enterprise, Internet, Technical Computing, et Minimal Technical OEs. (les deux derniers destinés aux stations de travail HP 9000). Les principales améliorations incluent le support de partitions physiques, la prise en charge des interfaces gigabit Ethernet, NFS par TCP/IP, les modules noyau chargeables, les paramètres noyau changeables dynamiquement, les notifications d'évènements kernel, et les piles protégées (protected stacks). |
| 2001 | 11.20 | Également connue sous le nom de 11i v1.5, cette version d'HP-UX est la première à supporter la nouvelle ligne de systèmes Itanium (IA-64). Elle n'est pas destinée à des environnements critiques et ne supporte pas le logiciel de cluster d'HP, ServiceGuard. Elle supporte cependant l'exécution d'applications compilées sur plateformes PA-RISC sur des systèmes Itanium et le Veritas Volume Manager 3.1. |
| 2002 | 11.22 | Une version incrémentale de la version Itanium d'HP-UX, elle est aussi connue sous le nom de 11i v1.6. Cette version atteint une scalabilité de 64 processeurs, m:n threads, ajout des paramètres du kernel changeables dynamiquement et prend en charge le gestionnaire de volumes logiques (LVM) d'HP. Elle a été construite sur la branche de code de 11i v1. |
| 2003 | 11.23 (11i v2) | La sortie originale de cette version a lieu en septembre 2003 afin de prendre en charge les systèmes basés sur Itanium. Cette version est également appelée 11i v2. En septembre 2004, ce système d'exploitation est mis à jour afin de prendre en charge les systèmes Itanium et PA-RISC. En plus de fonctionner sur des systèmes Itanium, cette version inclut la prise en charge de ccNUMA, la configuration des éléments et du kernel par une application web, IPv6 et une génération de nombres aléatoires forte. |
| 2007 | 11.31 (11i v3) | Cette version est également nommée HP-UX 11i v3. Cette version prend en charge les systèmes PA-RISC et Itanium. Elle est sortie le 15 février 2007. Les principales nouvelles fonctionnalités incluent la prise en charge du multipathing nativement, un cache de fichier unifié, NFS v4, Veritas ClusterFS, multi-volume VxFS, et la virtualisation intégrée. L'hyperthreading est pris en charge par les processeurs Montvale et Tukwila. HP-UX 11i v3 est conforme aux standards UNIX 03 de l'Open Group. Des mises à jour pour 11iv3 sortent régulièrement, la dernière étant l'update 10, sortie en mars 2012. |