OmniCube: Guide d'installation et de configuration

EFit-partners

Mars 2026

Chapter 1
Architecture générale

1.1  Packaging

1.1.1  Dépôts IPS

OmniOS adopte une approche par couches pour le packaging. En plus du logiciel assez minimaliste fourni avec le système d'exploitation de base, des packages supplémentaires sont fournis via des dépôts supplémentaires. Il existe un dépôt supplémentaire géré par l'OmniOS Association et plusieurs autres gérés par des tiers.
Une installation de base d'OmniOS présente ses dépôts comme suit:
user@server:~$ pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
omnios                      origin   online F https://pkg.omnios.org/r151054/core/
extra.omnios                origin   online F https://pkg.omnios.org/r151054/extra/

Miroirs

Il existe également un miroir américain pour les dépôts de packages OmniOS de base et supplémentaires. Pour ajouter ce miroir à la configuration de l'éditeur, utilisez l'option -m de set-publisher comme indiqué ci-dessous, en remplaçant r151054 par la version que vous utilisez:
~# pkg set-publisher -m https://us-west.mirror.omnios.org/r151054/core/ omnios
~# pkg set-publisher -m https://us-west.mirror.omnios.org/r151054/extra/ extra.omnios

Hypercube

Comme tous les éléments de l'Hypercube sont packagés, pour pouvoir l'installer, il suffit d'ajouter son dépôt aux serveurs:
~# pkg set-publisher -m https://omnios.efit-partners.eu/r151054/ hypercube

La configuration de publishers est alors la suivante:
user@server:~$ pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
omnios                      origin   online F https://pkg.omnios.org/r151054/core/
extra.omnios                origin   online F https://pkg.omnios.org/r151054/extra/
hypercube                   origin   online F https://omnios.efit-partners.eu/r151054/

LTS: Long Term Support

Les versions paires d'OmniOS sont stables et les versions impaires sont instables (bloody). Une version stable sur quatre est une version de support à long terme (LTS). Les versions LTS bénéficient d'un support pendant trois ans.
Bien que l'utilisation des dépôts OmniOS soit parfaitement compatible avec l'Hypercube, l'utilisation de versions LTS est recommandée pour leur stabilité dans le temps.
Cependant, comme tout logiciel libre, OmniOS est en constante évolution ce qui signifie qu'une version installée sur un nouveau serveur pourrait varier légèrement des précédentes. Pour permettre une homogénéité des versions à travers de tous les nodes d'un Hypercube, il est possible d'utiliser les dépôts proposant toutes les différentes versions des LTS, actuellement sans limite dans le temps.
Pour ce faire, il suffit de remplacer les dépôts d'OmniOS comme suit:
user@server:~$ pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
omnios                      origin   online F https://pkg.omnicube.org/r151054/
extra.omnios                origin   online F https://pkg.omnicube.org/r151054/
hypercube                   origin   online F https://pkg.omnicube.org/r151054/

Chapter 2
Installation d'OmniOS

2.1  Nouvelle installation

Les captures d'écran suivantes décrivent l'installation du système d'exploitation OmniOS1 sur un disque dur vierge à l'aide du programme d'installation standard basé sur les dialogues. Il reste toutefois possible d'utiliser l'ancien programme d'installation en texte simple.
Pour effectuer cette installation, il est possible d'utiliser un CD bootable, une clé USB ou PXE. Les images pour ces formats sont disponibles sur la page de téléchargements2.
Les informations ci-dessous concernent l'installation de la version r151026. L'installation de la version LTS r151054 peut légèrement différer sans toutefois présenter de différence rédhibitoire pour l'utilisateur.
Même s'il n'est a priori pas conçu à cet effet, OmniOS fonctionne sans problème dans un environnement virtualisé tel que Virtualbox, VMware, Xen, Hyper-V, KVM ou Bhyve. La configuration suivante est recommandée pour de tels déploiements.

2.2  Démarrage à partir de l'image

Lors du démarrage à partir d'un CD, d'une clé USB ou d'un PXE, le programme d'installation d'OmniOS affiche plusieurs options de démarrage. Pour procéder à l'installation, il suffit d'appuyer sur la touche return ou de laisser s'écouler le temps nécessaire pour que l'installation se poursuive.

Figure 2.1: Écran du loader
Une fois le programme d'installation démarré, il est possible d'utiliser l'ancien programme d'installation en mode texte en appuyant sur T dans les 10 secondes. Si l'on presse la touche return ou si le délai expire, le programme d'installation par défaut en mode dialogue sera lancé.

Figure 2.2: Selection de l'installer
Sélectionnez la disposition de clavier souhaitée dans le menu affiché. Les touches fléchées permettent de se déplacer vers le haut et vers le bas, ou la première lettre de la sélection souhaitée permet de passer aux entrées commençant par cette lettre; appuyez plusieurs fois pour faire défiler les dispositions commençant par la même lettre. Une fois votre choix effectué, appuyez sur return pour continuer.

Figure 2.3: Selection du type de clavier
Après avoir sélectionné la disposition du clavier, le menu d'installation de niveau supérieur s'affiche. Cela offre plusieurs options, mais pour une installation simple sur un disque dur vierge, sélectionnez l'option en surbrillance Find disks, create rpool, and install OmniOS (Rechercher les disques, créer un rpool et installer OmniOS) et appuyez sur return.

Figure 2.4: Install, shell ou reboot
L'écran suivant affiche la liste des disques durs détectés par le système. Sélectionnez les disques à utiliser pour l'installation en vous déplaçant vers le haut et vers le bas à l'aide des touches fléchées et en appuyant sur la barre d'espace pour cocher la case en regard de chaque élément. Une fois terminé, appuyez sur return pour continuer.
Si plusieurs disques sont sélectionnés, vous serez invité à choisir le niveau RAID souhaité sur l'écran suivant.

Figure 2.5: Sélection des disques
Ensuite, si plusieurs disques ont été sélectionnés, choisissez le type de configuration RAID souhaité pour le pool racine. Les options affichées ici dépendront du nombre de disques sélectionnés à l'étape précédente.

Figure 2.6: Sélection du RAID
Entrez un nom d'hôte pour le nouveau système, puis appuyez sur return.

Figure 2.7: Choix du hostname
Pour sélectionner un fuseau horaire, choisissez d'abord un continent ou un océan dans le menu affiché, puis sélectionnez une région et enfin le fuseau horaire souhaité. Si vous souhaitez entrer directement une chaîne de fuseau horaire POSIX, sélectionnez la dernière option affichée (none) ou, si vous souhaitez utiliser UTC, choisissez directement cette option.
Il est important de noter ici que, si la fonctionnalité de snapshot automatique de l'Hypercube est utilisée, le fuseau horaire doit être UTC. Dans le cas contraire, lors du passage de l'heure d'été à l'heure d'hiver, des snapshots seront perdus.

Figure 2.8: Choix du fuseau horaire
Le programme d'installation commence alors à installer l'image du système d'exploitation sur le disque dur et affiche la progression à l'écran.

Figure 2.9: Barre de progression
Une fois l'écriture sur le disque dur terminée, le programme d'installation affiche des informations sur l'état d'avancement. Appuyez sur return pour continuer.

Figure 2.10: Installation complète
Le menu post-installation offre la possibilité de configurer certains paramètres système de base avant le premier démarrage, ainsi que des options pour redémarrer ou arrêter le système.

Figure 2.11: Post-installation
La sélection de la première option affiche un menu permettant de configurer certains paramètres système initiaux tels que l'adresse IP et les mots de passe.

Figure 2.12: Post-configuration
Une fois terminé, le système peut être redémarré via le menu.
L'écran de démarrage qui s'affiche à partir du disque dur est presque identique à celui du CD ou de la clé USB. Vous pouvez appuyer sur return ou attendre la fin du délai pour démarrer le système d'exploitation.

Figure 2.13: Premier boot
Au premier démarrage, la base de données des manifestes des services est créée et un compte à rebours s'affiche. Les démarrages suivants seront beaucoup plus rapides.

Figure 2.14: Chargement des SMF
Sauf configuration explicite dans le menu de configuration post-installation, le mot de passe de l'utilisateur root sera vide (appuyez simplement sur return). L'installation est terminée et root est connecté.

Figure 2.15: Connecté comme root

Chapter 3
Installation de l'Hypercube

3.1  Prérequis

3.1.1  NTP

Tous les nodes constitutifs de l'Hypercube doivent être parfaitement synchronisés via NTP.

3.2  Installation du premier node

3.2.1  Installation des packages

Installer ces packages pour le bon fonctionnement des machines virtuels.
~# pkg list *brand*
NAME (PUBLISHER)                                  VERSION                    IFO
system/zones/brand/bhyve                          0.5.11-151046.0            im-
system/zones/brand/ipkg                           0.5.11-151046.0            i--
system/zones/brand/lipkg                          0.5.11-151046.0            i--
system/zones/brand/lx                             0.5.11-151046.0            im-
system/zones/brand/lx/platform                    0.5.11-151046.0            i--
system/zones/brand/sparse                         0.5.11-151046.0            i--

Le package hypercubed est celui qui va analyser l'état du serveur et traiter les demandes utilisateur.
~# pkg install hypercube/hypercubed
           Packages to install:  4
            Services to change:  2
       Create boot environment: No
Create backup boot environment: No

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                4/4     6794/6794    33.0/33.0  1.0M/s

PHASE                                          ITEMS
Installing new actions                     8384/8384
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Updating search index                            4/4
Updating package cache                           3/3

Ce paquet installe d'autres paquets en tant que dépendance.
~# pkg list | grep hypercube
hypercube/ethutils (efit-partners)                1.10-151054.0              i--
hypercube/go-ethereum (efit-partners)             1.10.26-151054.0           i--
hypercube/hypercubed (efit-partners)              1.10-151054.0              im-
hypercube/node_modules (efit-partners)            1.3-151054.0               i--

ethutils
est composé de plusieurs scripts qui permet de configurer la blockchain.
go-ethereum
est le paquet de la blockchain en tant que tel.
hypercubed
est le daemon qui va populer la blockchain et gérer les demandes utilisateur.
node_modules
est composé de certains modules Javascript pour le fonctionnement de l'interface graphique.

3.2.2  Configuration du premier node

Il est temps maintenant de configurer le premier node, c'est-à-dire, l'initialisation de la blockchain.
~# /opt/hypercube/utils/hc-init

Intial configuration for the first node of a Hypercube. To add new nodes, use hc-join.

Configuration of a new Hypercube installation. If this machine is already configured as an Hypercube node, its current configuration will be destroyed.
  Proceed? (y/N): y
Generating password... done.
Configuring account...
INFO [05-14|21:30:38.721] Maximum peer count                       ETH=50 LES=0 total=50
INFO [05-14|21:30:38.721] Smartcard socket not found, disabling    err="stat /var/run/pcscd/pcscd.comm: no such file or directory"
INFO [05-14|21:30:38.733] Set global gas cap                       cap=50,000,000
Unlocking account cacbb1621b535e129a3647e0e5f901d046d86b87 | Attempt 1/3
!! Unsupported terminal, password will be echoed.
Password:
INFO [05-14|21:30:39.313] Unlocked account                         address=0xcacbb1621b535e129A3647E0e5F901D046d86b87
Please give a new password. Do not forget this password.
Password:
Repeat password:

done.
Updating svc:/hypercube/ethereum:geth... done.
Updating /etc/opt/hypercube/geth/genesis.json... done.

Entrez un numéro d'ID de réseau qui sert à séparer des blockchains en cas d'installations multiples.
Enter your network ID: 42
Initializing a new genesis block...

INFO [05-14|21:31:28.318] Maximum peer count                       ETH=50 LES=0 total=50
INFO [05-14|21:31:28.318] Smartcard socket not found, disabling    err="stat /var/run/pcscd/pcscd.comm: no such file or directory"
INFO [05-14|21:31:28.332] Set global gas cap                       cap=50,000,000
INFO [05-14|21:31:28.333] Allocated cache and file handles         database=/var/opt/hypercube/geth/chaindata cache=16.00MiB handles=16
INFO [05-14|21:31:28.375] Opened ancient database                  database=/var/opt/hypercube/geth/chaindata/ancient/chain readonly=false
INFO [05-14|21:31:28.375] Writing custom genesis block
INFO [05-14|21:31:28.376] Persisted trie from memory database      nodes=1 size=148.00B time="73.006µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [05-14|21:31:28.376] Successfully wrote genesis state         database=chaindata                         hash=6b2ae2..a6b3f9
INFO [05-14|21:31:28.376] Allocated cache and file handles         database=/var/opt/hypercube/geth/lightchaindata cache=16.00MiB handles=16
INFO [05-14|21:31:28.420] Opened ancient database                  database=/var/opt/hypercube/geth/lightchaindata/ancient/chain readonly=false
INFO [05-14|21:31:28.420] Writing custom genesis block
INFO [05-14|21:31:28.421] Persisted trie from memory database      nodes=1 size=148.00B time="40.541µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [05-14|21:31:28.421] Successfully wrote genesis state         database=lightchaindata                         hash=6b2ae2..a6b3f9

done.

Entrez le numéro correspondant à l'adresse IP sur laquelle la blockchain devra être utilisée.
1) 127.0.0.1/8
2) 10.255.0.14/24
3) 10.155.252.14/24
4) ::1/128
What is the network dedicated to the Hypercube? 3

Starting svc:/hypercube/ethereum:geth... done.
Deploying the smart contract... done.
svcs: Pattern 'svc:/hypercube/gui' doesn't match any instances

Si vous connaissez les informations LDAP/AD, entrez-les pour configurer l'authentification de l'interface graphique.
Do you want to configure the LDAP/AD authentication? (y/N): y
Enter the url of your LDAP server (ex: ldaps://...): xxxxxxxxxx
Enter the LDAP admin (ro) user (ex: CN=...,OU=...): xxxxxxxxxx
Enter the LDAP admin user password: xxxxxxxxxx
Enter the LDAP search attribute (ex: samAccountName): xxxxxxxxxx
Enter the LDAP search base (ex: OU=...,DC=...): xxxxxxxxxx
Enter the LDAP group Domain Name (ex: CN=...,OU=...): xxxxxxxxxx
Enter the full pathname for the certificate (default: /etc/ssl/cacert.pem): xxxxxxxxxx

La configuration est terminée. Pour vérifier si le service de blockchain a bien été initialisé, vérifiez l'état du service.
~# svcs -xv *"hypercube"*
svc:/hypercube/hypercubed:default (Hypercube daemon)
 State: disabled since May 14, 2025 at 09:24:07 PM UTC
Reason: Disabled by an administrator.
   See: http://illumos.org/msg/SMF-8000-05
   See: man -M /usr/share/man -s 8 hypercubed
   See: https://www.efit-partners.eu/
Impact: This service is not running.

svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
 State: online since May 14, 2025 at 09:32:50 PM UTC
   See: man -M /usr/share/man -s 8 geth
   See: https://geth.ethereum.org/
   See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.

Le service ëthereum" (la blockchain) a bien démarré, il faut maintenant démarrer le service "hypercubed" afin de populer la blockchain.
~# svcadm enable svc:/hypercube/hypercubed:default
~# svcs -xv *"hypercube"*
svc:/hypercube/hypercubed:default (Hypercube daemon)
 State: online since May 14, 2025 at 09:38:36 PM UTC
   See: man -M /usr/share/man -s 8 hypercubed
   See: https://www.efit-partners.eu/
   See: /var/svc/log/hypercube-hypercubed:default.log
Impact: None.

svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
 State: online since May 14, 2025 at 09:32:50 PM UTC
   See: man -M /usr/share/man -s 8 geth
   See: https://geth.ethereum.org/
   See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.

3.3  Installation d'un nouveau node

Afin d'ajouter un nouveau node à l'hypercube, il faudra d'abord récupérer certaines informations sur un node qui a déjà été configuré.
~# /opt/hypercube/utils/hc-info

From SMF svc:/hypercube/ethereum:geth
  Account:    0xcacbb1621b535e129a3647e0e5f901d046d86b87
  Password:   xxxxxxxxxx
  Contract:   0xB97B8c694987EC48338eA1E61b7081c5EbC3fAAB
  Network:    10.155.252.0/24

From /etc/opt/hypercube/geth/geth.toml
  Network ID: 42
  Boot nodes: []
  ListenAddr: 10.155.252.14:30303

From the local block chain
  Enode:      enode://367db11c75793852667381f2b5d3e7839a728e76ebfef483362dfae985245e1150ac5e511d6fdbb0c35f02913d5fe070f6159b40087f6691d0aec513a74e142b@10.155.252.14:30303
LDAP/AD config
  url: 'xxxxxxxxxx',
  adminUser: 'xxxxxxxxxx',
  adminPassword: 'xxxxxxxxxx',
  searchAttribute: 'xxxxxxxxxx',
  searchBase: 'xxxxxxxxxx',
  groupDN: 'xxxxxxxxxx',
  caCertPath: 'xxxxxxxxxx'

Grâce à ces informations, le nouveau node peut maintenant rejoindre la blockchain.
~# /opt/hypercube/utils/hc-join

Intial configuration for a secundary node of a Hypercube. To configure the first node, use hc-init.

Join an existing Hypercube installation. If this machine is already configured as an Hypercube node, its current configuration will be destroyed.
  Proceed? (y/N): y
Enter your ethereum account (default: 0xcacbb1621b535e129a3647e0e5f901d046d86b87): 0xcacbb1621b535e129a3647e0e5f901d046d86b87
Enter the password: xxxxxxxxxx
Enter the contract: 0xB97B8c694987EC48338eA1E61b7081c5EbC3fAAB
Configuring account...

INFO [05-14|21:46:40.117] Maximum peer count                       ETH=50 LES=0 total=50
INFO [05-14|21:46:40.117] Smartcard socket not found, disabling    err="stat /var/run/pcscd/pcscd.comm: no such file or directory"
INFO [05-14|21:46:40.129] Set global gas cap                       cap=50,000,000
Unlocking account cacbb1621b535e129a3647e0e5f901d046d86b87 | Attempt 1/3
!! Unsupported terminal, password will be echoed.
Password:
INFO [05-14|21:46:40.786] Unlocked account                         address=0xcacbb1621b535e129A3647E0e5F901D046d86b87
Please give a new password. Do not forget this password.
Password:
Repeat password:

done.
Updating svc:/hypercube/ethereum:geth... done.

Enter your network ID: 42

Initializing a new genesis block...

INFO [05-14|21:47:02.508] Maximum peer count                       ETH=50 LES=0 total=50
INFO [05-14|21:47:02.509] Smartcard socket not found, disabling    err="stat /var/run/pcscd/pcscd.comm: no such file or directory"
INFO [05-14|21:47:02.528] Set global gas cap                       cap=50,000,000
INFO [05-14|21:47:02.529] Allocated cache and file handles         database=/var/opt/hypercube/geth/chaindata cache=16.00MiB handles=16
INFO [05-14|21:47:02.551] Opened ancient database                  database=/var/opt/hypercube/geth/chaindata/ancient/chain readonly=false
INFO [05-14|21:47:02.551] Writing custom genesis block
INFO [05-14|21:47:02.553] Persisted trie from memory database      nodes=1 size=148.00B time="177.353µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [05-14|21:47:02.554] Successfully wrote genesis state         database=chaindata                         hash=6b2ae2..a6b3f9
INFO [05-14|21:47:02.554] Allocated cache and file handles         database=/var/opt/hypercube/geth/lightchaindata cache=16.00MiB handles=16
INFO [05-14|21:47:02.571] Opened ancient database                  database=/var/opt/hypercube/geth/lightchaindata/ancient/chain readonly=false
INFO [05-14|21:47:02.571] Writing custom genesis block
INFO [05-14|21:47:02.572] Persisted trie from memory database      nodes=1 size=148.00B time="106.512µs" gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [05-14|21:47:02.573] Successfully wrote genesis state         database=lightchaindata                         hash=6b2ae2..a6b3f9

done.

Les informations : - Account - Password - Contract - Network ID peuvent toutes être trouvées dans les informations du premier node.
Comme pour le premier node, entrez le numéro correspondant à l'adresse IP sur lequel la blockchain devra être utilisée.
1) 127.0.0.1/8
2) 10.255.0.16/24
3) 10.155.252.16/24
4) ::1/128
What is the network dedicated to the Hypercube? 3

La dernière information à donner est le "boot node", il s'agit de l'adresse du premier node blockchain, trouvable dans ses informations.
Enter a boot node: enode://367db11c75793852667381f2b5d3e7839a728e76ebfef483362dfae985245e1150ac5e511d6fdbb0c35f02913d5fe070f6159b40087f6691d0aec513a74e142b@10.155.252.14:30303

Starting svc:/hypercube/ethereum:geth... done.
svcs: Pattern 'svc:/hypercube/gui' doesn't match any instances

Pour vérifier si le service a bien démarré, entrez la même commande que sur le premier node.
~# svcs -xv *"hypercube"*
svc:/hypercube/hypercubed:default (Hypercube daemon)
 State: disabled since May 14, 2025 at 09:42:39 PM UTC
Reason: Disabled by an administrator.
   See: http://illumos.org/msg/SMF-8000-05
   See: man -M /usr/share/man -s 8 hypercubed
   See: https://www.efit-partners.eu/
Impact: This service is not running.

svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
 State: online since May 14, 2025 at 09:51:56 PM UTC
   See: man -M /usr/share/man -s 8 geth
   See: https://geth.ethereum.org/
   See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.

Il faut maintenant démarrer le service "hypercubed" pour populer la blockchain avec les informations du deuxième node.
~# svcadm enable svc:/hypercube/hypercubed:default
~# svcs -xv *"hypercube"*
svc:/hypercube/hypercubed:default (Hypercube daemon)
 State: online since May 14, 2025 at 09:54:26 PM UTC
   See: man -M /usr/share/man -s 8 hypercubed
   See: https://www.efit-partners.eu/
   See: /var/svc/log/hypercube-hypercubed:default.log
Impact: None.

svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
 State: online since May 14, 2025 at 09:51:56 PM UTC
   See: man -M /usr/share/man -s 8 geth
   See: https://geth.ethereum.org/
   See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.

3.4  Installation de l'interface graphique

Il manque encore l'interface graphique en tant que telle.
~# pkg install hypercube/gui
           Packages to install:  1
            Services to change:  2
       Create boot environment: No
Create backup boot environment: No

Planning linked: 0/1 done; 1 working: zone:test-lipkg-second
Linked image 'zone:test-lipkg-second' output:
`
Planning linked: 1/1 done
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                1/1   28741/28741    46.1/46.1  544k/s

Downloading linked: 0/1 done; 1 working: zone:test-lipkg-second
Downloading linked: 1/1 done
PHASE                                          ITEMS
Installing new actions                   32888/32888
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Updating search index                            1/1
Executing linked: 0/1 done; 1 working: zone:test-lipkg-second
Executing linked: 1/1 done
Updating package cache                           3/3

Il ne reste plus qu'à démarrer le service de l'interface graphique.
~# svcadm enable svc:/hypercube/gui:default
~# svcs -xv *"hypercube"*
svc:/hypercube/gui:default (node_guid daemon and vue server)
 State: online since May 14, 2025 at 10:01:01 PM UTC
   See: man -M /usr/share/man -s 8 node_gui
   See: https://www.efit-partners.eu/
   See: /var/svc/log/hypercube-gui:default.log
Impact: None.

svc:/hypercube/hypercubed:default (Hypercube daemon)
 State: online since May 14, 2025 at 09:54:26 PM UTC
   See: man -M /usr/share/man -s 8 hypercubed
   See: https://www.efit-partners.eu/
   See: /var/svc/log/hypercube-hypercubed:default.log
Impact: None.

svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
 State: online since May 14, 2025 at 09:51:56 PM UTC
   See: man -M /usr/share/man -s 8 geth
   See: https://geth.ethereum.org/
   See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.

L'interface graphique est désormais accessible via l'adresse IP du node ou de la zone sur lequel elle a été installée.

Chapter 4
Patching

4.1  Patching d'OmniOS

4.1.1  Élévation des privilèges

OmniOS est livré avec deux méthodes différentes pour l'élévation des privilèges. pfexec est la norme Solaris/OmniOS/Illumos qui utilise des profils pour spécifier les privilèges, mais sudo est également inclus et pris en charge.
Si un utilisateur a été créé via le menu post-installation, il a été demandé si vous souhaitiez attribuer le rôle Administrateur principal à cet utilisateur. Il s'agit d'un profil utilisateur qui permet à l'utilisateur d'accéder au compte root via pfexec. Les exemples présentés dans la suite de cette page utilisent pfexec. Si vous avez configuré sudo, vous pouvez l'utiliser à la place.

4.1.2  Mettre à jour tous les paquets

La première chose à faire après avoir installé OmniOS est de s'assurer que tous les paquets sont à jour. Les paquets dans OmniOS sont gérés à l'aide de l'utilitaire de ligne de commande pkg. Commencez par vous assurer que la liste des paquets disponibles est à jour
~$ pfexec pkg refresh
Actualisation du catalogue 1/1 omnios

et affichez les mises à jour disponibles (aucun privilège requis)
~$ pkg list -u
NOM (ÉDITEUR)                                  VERSION                    IFO
archiver/gnu-tar                                  1.29-0.151024              i--
...

et pour appliquer toutes les mises à jour, il suffit de
~$ pfexec pkg update

Si l'une des mises à jour nécessite un redémarrage, un nouvel environnement de démarrage sera créé et cela sera indiqué dans la sortie. Un clone d'OmniOS existe et a été mis à jour et activé. Au prochain démarrage, l'environnement de démarrage omnios-1 sera monté sur « / ». Redémarrez lorsque vous êtes prêt à passer à cet environnement de démarrage mis à jour.
Redémarrez à l'aide de shutdown ou init:
~$ pfexec init 6...

ou ...
~$ pfexec shutdown -i 6

Ne soyez pas tenté d'utiliser reboot now, car cela entraînerait le chargeur d'amorçage à essayer de charger un noyau nommé "now", ce qui échouerait et le ferait passer à son quatrième interpréteur avec une invite ok. Si vous faites cela, la récupération est possible via les deux commandes suivantes
ok set bootfile=platform/i86pc/kernel/amd64/unix
ok boot

4.1.3  Configuration de l'environnement de développement

Si vous souhaitez compiler des logiciels, vous devrez installer un compilateur et des utilitaires de support. Pour voir la liste des compilateurs disponibles, interrogez le système de paquets comme suit Si vous souhaitez compiler illumos ou OmniOS, consultez la page Building OmniOS.
~$ pkg list -a “developer/gcc?”
NAME (PUBLISHER)                                  VERSION                    IFO
developer/gcc5                                    5.5.0-0.151024             ---
developer/gcc6                                    6.4.0-0.151024             ---

puis installez la version souhaitée avec le paquet system/header
~$ pfexec pkg install developer/gcc6 system/header

Cela vous permettra de compiler des logiciels simples, mais vous pouvez également installer les paquets suivants pour disposer d'utilitaires supplémentaires.
~$ pfexec pkg install \
    developer/build/autoconf \
    developer/build/automake \
    developer/build/gnu-make \
    developer/build/make \
    developer/lexer/flex \
    developer/object-file \
	  developer/parser/bison

À partir d'OmniOS r151026, un méta-paquet build-essential sera disponible pour installer la dernière version du compilateur ainsi que d'autres paquets généralement requis pour un environnement de développement.
Si vous installez plusieurs versions de gcc, vous pouvez alors basculer les liens dans /usr/bin entre les versions en modifiant le médiateur du système pkg. Vous pouvez également utiliser une version spécifique en l'invoquant directement ou en modifiant votre PATH.
~$ gcc -v
gcc version 6.4.0 (GCC)
~$ pfexec pkg set-mediator -V 5 gcc
~$ gcc -v
gcc version 5.5.0 (GCC)

4.2  Patching de l'Hypercube

Chapter 5
Intégration Active Directory

5.1  Introduction

OmniOS peut s'intégrer dans un domaine Active Directory en tant que serveur de fichiers SMB et utiliser un serveur Active Directory à la fois pour l'authentification de connexion, pour fournir des services de noms aux comptes utilisateurs et pour le contrôle d'accès basé sur les rôles (RBAC).

5.2  Prérequis

Pour pouvoir gérer la plupart des fonctionnalités listées ci-dessus dans l'AD, il est nécessaire de modifier le schéma de ce dernier en utilisant ADextend.ldif. L'explication pour modifier un schéma AD dépasse le cadre du présent document.

5.3  Préparation du système

5.3.1  DNS

Utilisez votre AD comme serveur DNS ou un server qui redirige les requêtes de votre domaine ad-domain.intra et _msdcs.ad-domain.intra.
# cat <<CFG_END >/etc/resolv.conf
nameserver 10.1.1.1
domain ad-domain.intra
search ad-domain.intra
CFG_END

5.3.2  NTP

Activez NTP, car une heure précise est essentielle pour le fonctionnement de Kerberos. La synchronisation peut être forcée en cas de forte différence de temps.
~$ pfexec su -
~#pkg install pkg:/service/network/ntpsec
~# ntpdate -b 10.0.0.1
~# svcadm enable network/ntp

5.3.3  LDAP

Le plugin OmniOS Active Directory ne prend pas en charge l'intégration complète de la connexion. Nous devons donc configurer un utilisateur ldap proxy, puis configurer le client LDAP pour activer les connexions Unix avec des comptes LDAP. L'utilisateur AD proxy doit disposer des droits appropriés pour lire les entrées du compte utilisateur.

5.3.4  Kerberos

5.3.5  PAM

Enfin, PAM doit être configuré pour utiliser kerberos lorsque cela est approprié via /etc/pam.conf. Les entrées sont probablement déjà présentes, il vous suffit de supprimer le caractère de commentaire #3.
login   auth sufficient         pam_krb5.so.1
krlogin auth required           pam_krb5.so.1
krsh    auth required           pam_krb5.so.1
ktelnet auth required           pam_krb5.so.1
other   auth sufficient         pam_krb5.so.1

5.3.6  Utilisateurs

Pour chaque utilisateur (SAMAccountName ou uid), il y a lieu de créer un home directory et d'y copier les skeletons.
~$ pfexec su -
~# mkdir /export/home/{SAMAccountName}
~# cp -p /etc/skel/.[a-z]* /export/home/{SAMAccountName}
~# chown -R {SAMAccountName}:other /export/home/{SAMAccountName}

Éventuellement, l'utilisateur peut se voir attribuer les droits d'administrateur (root) par ajout de [SAMAccountName]::::type=normal;profiles=Primary Administrator à un fichier nommé librement dans le directory /etc/user_attr.d/
~$ pfexec vi /etc/user_attr.d/

5.3.7  SMB

Activer le partage de fichiers SMB. Pour nous assurer que nous avons les mêmes identifiants utilisateur partout, nous voulons les conserver dans Active Directory.
~# svccfg -s svc:/system/idmap setprop config/directory_based_mapping=astring: idmu
~# svcadm refresh svc:/system/idmap

~# sharectl set -p lmauth_level=5 smb
~# sharectl set -p system_comment=« My Funny Fileserver » smb
~# svcadm enable -r smb/server

5.3.8  Tests

Votre serveur OmniOS devrait maintenant être accessible en tant que serveur de fichiers smb depuis les clients Windows, permettant ainsi l'accès SSO. Sur la ligne de commande OmniOS, vous devriez voir tous les comptes utilisés avec getent passwd.

5.4  Multifactor Authentication (MFA)

Une fois OmniOS connecté à un directory quelqu'il soit, c'est ce dernier qui prendra en charge le Multifactor Authentication. Bien que nombre de produit implémente leur propre système d'authentification voir un MFA indépendant, cette approche est délétère simplement parce qu'elle nécessite de maintenir les comptes utilisateurs dans plusieurs produits différents. L'Hypercube n'a pas vocation à se substituer à un directory mais bien à l'utiliser pour l'authentification.

Chapter 6
Configuration d'une console série

6.1  Introduction

De nombreuses cartes mères modernes prennent en charge l'accès à une console à distance. Intel appelle sa solution « Baseboard Management Controller » (BMC). HPE la nomme Integrated Lights-Out (iLO), ... Outre leur interface Web conviviale, BMC/iLO offrent également une fonctionnalité appelée SOL SSH. Celle-ci permet d'accéder au premier port série (ttya/com1) via ssh. Une fois configurée, vous pouvez accéder aux paramètres du BIOS et à d'autres éléments liés au démarrage, tels que la sélection du support de démarrage, via ssh, ce qui est très pratique. Mais mieux encore, vous pouvez également configurer OmniOS pour fournir un accès à une console série via ce chemin. Ce qui constitue une excellente option de récupération. Les exemples suivants sont des captures d'écran d'une carte mère Intel S2600ST utilisant donc BMC.

6.2  Configuration du BMC

Configurer le port SSH SOL

Figure 6.1: Configuration du port SSH SOL
Activer SSH SOL

Figure 6.2: Activation du port SSH SOL

6.3  Paramètres BIOS

Activer le port série

Figure 6.3: Activation du port série
Activer la redirection de la console. Comme nous exécutons la console sur une interface Ethernet dédiée, SOL est uniquement activé à cet endroit.

Figure 6.4: Activation du port série

6.4  Configurer la console série dans OmniOS

Configurer les ports ttya.
~# sttydefs -r ttya
~# sttydefs -a ttya -i '115200 hupcl opost onlcr ofill' -f '115200'

Configurez une nouvelle instance de connexion à la console
~# svccfg -s svc:/system/console-login delete -f ttya
~# svccfg -f - <<EOF
select svc:/system/console-login
add ttya
select svc:/system/console-login:ttya
addpg ttymon application
setprop ttymon/device = astring: /dev/term/a
setprop ttymon/terminal_type = astring: xterm
setprop ttymon/label = astring: ttya
setprop ttymon/modules = astring: ldterm,ttcompat
setprop ttymon/nohangup = boolean: true
setprop ttymon/prompt = astring: "`uname -n` ttya login:"
addpg general framework
EOF

Activez les nouvelles connexions à la console
~# svcadm enable svc:/system/console-login:ttya

Autorisez les connexions root sur toutes les consoles
~# perl -i -p -e 's/\s*(CONSOLE.+)/# $1/' /etc/default/login

6.5  Configurez le boot loader pour utiliser la console série

Vous pouvez également configurer le chargeur de démarrage d'Omnios pour communiquer via la série:
~# cat >/boot/conf.d/serial <<EOF
boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
os_console="text"
console="ttya,text"
ttya-mode="115200,8,n,1,-"
EOF

Enfin effectuez un update du boot archive et redémarrez
~# bootadm update-archive
~# init 6

6.6  Tests

. Vous pouvez maintenant vous connecter en ssh sur la console
~# ssh -p 66 server-console-ip

6.7  Redimentionnement de la console

Si vous avez essayé vim sur votre nouvelle console série, vous avez probablement été déçu: l'écran s'est affiché de manière confuse.
Cela s'explique par le fait que, via la connexion à la console série, stty ne semble pas être correctement informé de la taille de l'écran et de ses modifications. Exécutez stty et il indiquera que le nombre de lignes et de colonnes est égal à 0, ce qui n'est pas idéal.
Il existe toutefois un moyen de résoudre ce problème. Le plus simple est de taper resize pour régler le problème... Malheureusement, la commande resize fait partie du paquet xterm qui n'est probablement pas installé sur votre GZ OmniOS. Si vous utilisez bash, il existe toutefois une autre solution en passant par une petite fonction shell que vous n'aurez qu'à mettre dans votre profile.
# .bash_profile
if [ ! -f /usr/bin/resize ]; then
resize() {
  old=$(stty -g)
  stty -echo
  printf '\033[18t'
  IFS=';' read -d t _ rows cols _
  stty "$old"
  stty cols "$cols" rows "$rows"
}
fi
# resize terminal
if [ "$(tty)" = '/dev/term/a' ]; then
   resize
fi


Footnotes:

1Traduit de https://omnios.org/setup/freshinstall.html
2https://omnios.org/download.html
3Voir man pam_krb5 pour plus de détails