Fri May 7 14:53:46 2021 UTC

Le script install-nutyx

Introduction

Le script peut être démarré depuis une NuTyX déjà installée ou depuis une autre distribution.

Assurez-vous d'utiliser l'interpréteur de commande Bash, sinon le script ne fonctionnera pas.

Assurez-vous que la distribution utilise la version glibc 2.32 au minimum, sinon le script ne fonctionnera pas.

Il doit être lancé depuis le compte root.

Ce script permet l'installation d'une NuTyX de base dans un dossier.

Sa signature peut être vérifiée en téléchargeant le fichier http://www.nutyx.org/install-nutyx.md5sum

Si vous choisissez systemD comme system d'init, assurez-vous d'ajouter le point de montage de NuTyX dans le fichier /etc/fstab de celle-ci, sinon NuTyX démarrera en lecture seule par défaut.

Faisons simple pour commencer

Le traditionnel exemple tout simple histoire de se faire rapidement une idée

Le script permet d'installer une NuTyX de base dans le dossier /mnt/hd. La commande est tout simplement:

bash install-nutyx

L'installation commence immédiatement.

Variables de configuration

Actuellement 9 variables sont configurables, elles permettent l'adaptation du script.

  • Le chemin d'installation défini par la variable LFS.
  • L'adresse url où se trouvent les binaires défini par la variable URL.
  • La version à installer (rolling ou testing) définie par la variable VERSION.
  • Le kernel que l'on souhaite installer (autre que celui par défaut) défini par la variable KERNEL.
  • Le chemin local des binaires téléchargés défini par la variable DEPOT.
  • Le chemin local du dépot des paquets à utiliser défini par la variable MOUNT. Le script installera les paquets depuis ce dépot local. Cette variable permet donc l'installation d'une NuTyX sans connection internet.
  • L'architecture que l'on souhaite installer défini par la variable ARCH.

    La variable ARCH sera utilisée si l'on souhaite installer une NuTyX 32 bits à partir d'une OS 64 bits. L'inverse n'est pas possible.

  • La liste des paquets à installer en chroot défini par la variable CHROOT.
  • Si l'on souhaite générer une ISO depuis cette l'installation, on spécifiera le nom de l'iso à générer via la variable ISO.

Le script va analyser le contenu du fichier /etc/install-nutyx.conf si il existe et en utiliser les variables définies dans ce dernier. Voici un exemple complet du fichier /etc/install-nutyx.conf:

URL="http://localhost"
DEPOT="/DEPOT"
LFS="/mnt/lfs"
VERSION="rolling"

Utilisation typique du script: Installer NuTyX sur une partition

  • On ouvre une session en root de manière temporaire
    sudo bash
  • Formater la partition libre
    mkfs.ext4 /dev/sda2
  • Téléchargement du script et de sa signature
    wget http://www.nutyx.org/install-nutyx{,.md5sum}
  • Vérification de sa signature
    md5sum -c install-nutyx.md5sum
  • Montage de la partition de destination (ici /dev/sda2 par exemple)
    mkdir -p /mnt/hd
    mount /dev/sda2 /mnt/hd
  • Installation de la NuTyX de base
    bash install-nutyx
  • Une fois l'installation terminée, on peut à nouveau entrer dans la NutyX fraîchement installée via la commande:
    bash install-nutyx -ec
  • Ajuster le fichier /etc/fstab si vous choisissez d'utiliser systemD comme system d'initialisation:
    echo "/dev/sda2     /     ext4    defaults    0   0"  >> /etc/fstab

Le script peut être utilisé pour les deux architectures 32 ou 64 bits. Par défaut, ce sera l'architecture de la machine hôte qui sera choisie. Il est possible d'installer une NuTyX 32 bits à partir d'une machine hôte 64 bits mais pas l'inverse. Pour installer une NuTyX 32 bits depuis une machine hôte 64 bits, on utilise la variable ARCH:

ARCH="i686" bash install-nutyx

Par défaut, ce sera la branche rolling qui sera choisie à l'installation, il est possible de spécifier la branche que l'on souhaite installer. Pour installer une version spécifique de NuTyX, on utilise la variable VERSION. A condition que la version existe sur le miroir de dépot:

VERSION="development" bash install-nutyx

Par défaut, ce sera l'URL par défaut qui sera utilisée lors du téléchargement et la configuration de la NuTyX. Pour spécifier une URL personalisée, on utilise la variable URL

URL="http://192.168.0.254" bash install-nutyx

Par défaut, ce sera le dossier /mnt/hd qui sera utilisé pour l'installation, la variable LFS permet de spöcifier un nouveau dossier de destination:

LFS="/MA-NUTYX" bash install-nutyx
Le dossier sera automatiquement créé si il n'existe pas.

On peut spécifier plusieurs variables:

LFS="/MINI-ISO" \
VERSION="rolling" \
URL="http://192.168.0.254" \
ARCH="i686" \
CHROOT="acl attr expat" \
bash install-nutyx

Si vous souhaitez pousser la configuration encore plus loin, il est également possible de placer des fichiers de configuration personnalisés dans le dossier /etc/install-nutyx.conf.d/.

Le script va analyser le contenu du fichier /etc/install-nutyx.conf si il existe et en utiliser les variables définies dans ce dernier. Lors de l'installation de NuTyX, le script utilisera les fichiers trouvés dans ce dossier en place des fichiers par défaut

Liste des fichiers de configuration reconnus:
cards.conf /etc/cards.conf
pkgmk.conf /etc/pkgmk.conf
fstab /etc/fstab
.bashrc /root/.bashrc et /home/<nomutilisateur>/.bashrc
bashrc /etc/bashrc
profile /etc/profile
hosts /etc/hosts
inputrc /etc/inputrc
rc_site /etc/sysconfig/rc_site
.bash_profile /root/.bash_profile et /home/<nomutilisateur>/.bash_profile
.dmrc /etc/skel/.dmrc
shells /etc/shells
dircolors.sh /etc/profile.d/dircolors.sh
extrapaths.sh /etc/profile.d/extrapaths.sh
readline.sh /etc/profile.d/readline.sh
umask.sh /etc/profile.d/umask.sh
modules /etc/sysconfig/modules
createfiles /etc/sysconfig/createfiles
mouse /etc/sysconfig/mouse

En conclusion:

[Important] Si vous ne souhaitez pas que le script utilise les fichiers présents Veuillez penser à supprimer/revoir les fichiers /etc/install-nutyx.conf et contenu du dossier /etc/install-nutyx.d/ si necessaire.

Générer une ISO personnalisée

[Important] La génération d'une ISO n'est possible que sur une NuTyX. Autrement dit il n'est pas possible d'utiliser une autre distribution pour construire une ISO.

Comme précisé plus haut, la variables ISO permet de spécifier le nom de l'ISO à générer.

Par exemple, la commande ci-dessous:

sudo ISO=gnome bash install-nutyx
installera et produira une NuTyX gnome dans le dossier /mnt/hd

Les noms d'ISO possible sont:

strict, mini, base, cli, gui, xorg, gui_extra, openbox, jwm, lxde, xfce4, mate, gnome et kde5

Il est possible de faire un test de la commande et ainsi de visualiser toutes les commandes qui sont concernées.

ISO=gnome bash install-nutyx -t

List of variables: 

LFS        : /mnt/hd
URL        : http://downloads.nutyx.org
VERSION    : rolling
KERNEL     : 
DEPOT      : /var/lib/pkg/depot
MOUNT      : 
SHELL      : /bin/bash
DEPOT_BASE : http://downloads.nutyx.org/x86_64/rolling/base
CHROOT     : nutyx busybox curl gcc bzip2 glibc zlib lz4 xz zstd \
libarchive openssl cards
CORE       : acl attr bash coreutils readline expat ncurses lzo gmp \
flex file gzip mpc mpfr grep sed findutils binutils inetutils diffutils \
shadow bc less libcap util-linux kmod kbd pam gdbm e2fsprogs libpipeline \
gettext procps-ng psmisc sudo tzdata iproute2 iana-etc groff man-db \
cards.man nutyx.man dialog cpio squashfs lsb-release grub eudev sysklogd \
sysvinit kernel efibootmgr linux-firmware systemd runyx wireless-tools \
wpa-supplicant gpm gpm.service dosfstools make-ca xdg-user-dirs \
sound-theme-freedesktop ntp ntp.service flcards gvfs network-manager-applet \
xorg-xinit xorg-xf86-input-synaptics xorg-xf86-input-wacom \
xorg-xf86-video-ati xorg-xf86-video-fbdev xorg-xf86-video-intel \
xorg-xf86-video-nouveau xorg-xf86-video-vesa xorg-xrandr xorg-setxkbmap \
firefox thunderbird gparted leafpad scrot vlc telegram gnome epiphany \
seahorse-nautilus evolution simple-scan gnome-weather gnome-chess balsa
DEVEL      : 
for k in $(ls /lib/modules/)
do
  mkinitramfs $k -nf
done
sed -i "s@kernel-419@$KERNEL@g" /sbin/setup-nutyx
cards purge
for d in opt bin etc lib lib64 root run sbin usr var home
do
  rm -f /ISO/boot/$d.squashfs
  mksquashfs /$d /ISO/boot/$d.squashfs
done
exit 0
ISO        : GNOME
STRICT     : kernel
MINI       : dhcpcd
BASE       : efibootmgr linux-firmware systemd runyx wireless-tools \
wpa-supplicant
CLI        : gpm gpm.service dosfstools make-ca xdg-user-dirs \
sound-theme-freedesktop ntp ntp.service
GUI        : flcards gvfs network-manager-applet
GUI_EXTRA  : firefox thunderbird gparted leafpad scrot vlc telegram
XORG       : xorg-xinit xorg-xf86-input-synaptics xorg-xf86-input-wacom \
xorg-xf86-video-ati xorg-xf86-video-fbdev xorg-xf86-video-intel \
xorg-xf86-video-nouveau xorg-xf86-video-vesa xorg-xrandr xorg-setxkbmap
GNOME_EXTRA: epiphany seahorse-nautilus evolution simple-scan \
gnome-weather gnome-chess balsa
KDE5_EXTRA : kdenlive k3b
JWM        : lxdm jwm
LXDE       : lxdm lxde
XFCE4      : lxdm xfce4 xfce4-extra
MATE       : lightdm mate
GNOME      : gnome
KDE5       : kde5
ISO Filename /mnt/hd/NuTyX_x86_64-21.03.0-rc4-GNOME.iso

Comme on peut le voir, de nouvelles variables sont désormais disponible. Celles-ci peuvent également être redéfinies à votre convenance:

STRICT, BASE, CLI, GUI, GUI_EXTRA, XORG, GNOME, GNOME_EXTRA, KDE5, KDE5_EXTRA, OPENBOX, JWM, LXDE, XFCE4, MATE.

Chaque variable spécifie un jeu de paquets à installer. Chaque nom d'ISO utilise un ensemble de ces variables pour assembler l'ISO spécifiée. Cela signifie que, en spécifiant vos propres jeux de paquet pour certaines ou toutes ces variables, vous générer votre ISO personnalisée.

La table ci-dessous montre quelle combinaison de variables est utilisée pour chaque ISO.

Combinations des variables disponibles pour chaque nom d'ISO:
STRICT STRICT
MINI STRICT + MINI
BASE STRICT + BASE
CLI STRICT + BASE + CLI
GUI STRICT + BASE + CLI + GUI
XORG STRICT + BASE + CLI + GUI + XORG
JWM STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + JWM
OPENBOX STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + OPENBOX
LXDE STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + LXDE
XFCE4 STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + XFCE4
MATE STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + MATE
GNOME STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + GNOME + GNOME_EXTRA
KDE5 STRICT + BASE + CLI + GUI + GUI_EXTRA + XORG + KDE5 + KDE5_EXTRA

Quelques exemples

sudo ISO=KDE5 install-nutyx

installe et produit une ISO kde5 standard dans le dossier /mnt/hd

sudo \
ISO="lxde" \
XORG="xorg-xf86-input-synaptics" \
BASE="linux-firmware wireless-tools wpa-supplicant" \
GUI="xorg-xrandr" \
GUI_EXTRA="deadbeef geany firefox" \
DEVEL="&& setup-nutyx start && echo 'ready ?' && read a" \
CLI="dhcpcd openssh git cdrtools syslinux libisoburn dosfstools" \
LFS="/MyIso" \
DEPOT="/media/www/x86_64/rolling" \
MOUNT="/media/www/x86_64/rolling" \
install-nutyx

installe et produit une ISO lxde personalisée. Les variables BASE, CLI, GUI, XORG, GUI_EXTRA, DEVEL, LFS, MOUNT et DEPOT sont redéfinies.