Installer manuellement 0linux

:!: Ce document a certainement besoin de précisions ou d'actualisation, n'hésitez pas à signaler tout problème ou procédure pas assez claire.

0linux est installable manuellement en suivant la méthode qui suit. Cela peut être utile si l'on souhaite installer une version de développement de 0linux, qu'on ne dispose pas de l'installateur ou bien qu'on veuille l'installer depuis une autre distribution de Linux. Réservez-vous une partition confortable pour installer le système ; 20 Go, par exemple. Passez en root ou utilisez sudo pour suivre ce document.

L'installateur du système autonome n'étant pas encore prêt, vous pouvez également procéder à l'installation depuis le système autonome (ou LiveCD / LiveUSB) de 0linux, dont l'image est téléchargeable sur les FTP - choisissez la plus récente de préférence : http://ftp.igh.cnrs.fr/pub/os/linux/0linux/iso/. Il faudra alors adapter par endroits les commandes de ce document à votre environnement « live ».


Se procurer les paquets

Récupérez tous les paquets *.spack de 0linux, c'est-à dire tout le contenu des 3 dépôts principaux base, opt et xorg. On pourra installer des dépôts supplémentaires venant de apps plus tard grâce à 0g.

Si vous êtes sur le système autonome 0linux, dhcpcd est censé avoir établi une connexion (filaire uniquement) à internet. On dispose aussi sur le système autonome de wireless-tools pour établir une connexion sans-fil manuellement.

On peut facilement récupérer les paquets grâce à rsync :

mkdir -p /home/moi/0linux/paquets
cd /home/moi/0linux/paquets
rsync -a rsync://ftp.igh.cnrs.fr/0linux/paquets/x86_64/{base,opt,xorg} .

Créer une partition pour 0linux

:!: 0linux n'est pas encore adapté aux disques GPT et aux EFI ! Seules les disques MBR et les BIOS traditionnels sont pris en charge pour le moment.

Si la partition qui va accueillir 0linux n'existe pas, il faudra la créer, par exemple avec :

cfdisk

Notons qu'on doit ajouter le périphérique à la suite de le commande cfdisk si le disque dur n'est pas le premier sur la machine. Créons une partition primaire Linux (par défaut) et facultativement une partition swap (type 82) ; on écrit la table de partitions, on confirme et on quitte cfdisk.

Puis on formate la racine, par exemple pour la partition /dev/sda1, avec un système de fichiers au choix (ext4 est recommandé) parmi les suivants. La consultation des manuels montre qu'on peut en plus nommer les systèmes de fichiers via une étiquette ou « label », ce qui peut être pratique.

mkfs.ext2 /dev/sda1    # OU
mkfs.ext3 -j /dev/sda1 # OU
mkfs.ext4 /dev/sda1

On crée le répertoire qui va recevoir notre installation de 0linux. On va considérer qu'on installe 0linux dans le répertoire /mon_0linux :

mkdir -p /mon_0linux

Et on y monte la partition désirée, ici /dev/sda1 :

mount /dev/sda1 /mon_0linux

Installer le tout dans un coin

On va utiliser l'option –root= de Spack, le gestionnaire de paquets de 0linux, pour installer les paquets dans une racine différente de / grâce à la commande spackadd.

spackadd est un simple script, inoffensif pour votre hôte. Si votre distribution est un tant soit peu standard, le script devrait se comporter correctement. Au pire, il ne créera rien sur votre machine. Notez que vous aurez besoin de certains logiciels comme cpio ou xz, généralement inclus dans les distributions Linux les plus répandues, pour faire fonctionner Spack.

Récupérons les sources de Spack sur le site du développeur http://requiescant.tuxfamily.org/, par exemple pour la version 3.9 :

wget http://requiescant.tuxfamily.org/files/spack-3.9.tar.gz
tar xf spack-3.8.tar.gz
cd spack-3.8

Nous n'avons besoin que du script nommé spackadd. Rendons-le donc exécutable :

chmod +x spackadd

Notez que vous pouvez copier ce script par exemple dans /sbin sur votre hôte pour faciliter les appels à spackadd. On considère que vous ne le faites pas et que vous ne changez pas de répertoire.

On commence par installer les paquets critiques de base. Si on ne les installe pas en premier, certains problèmes peuvent survenir par la suite. Notons que busybox et base-systeme sont à installer obligatoirement en premier afin de créer les liens symboliques vitaux /bin, /lib et /sbin:

./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/busybox-*
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/base-systeme-*
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/eglibc-*
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/readline-*
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/ncurses-*
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/bash-*

Installons tous les paquets des dépôts principaux de 0linux dans notre partition dédiée grâce à la commande suivante (les 6 paquets déjà installés afficheront une erreur qui sera ignorée :

./spackadd --root=/mon_0linux /home/moi/0linux/paquets/base/*.spack
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/opt/*.spack
./spackadd --root=/mon_0linux /home/moi/0linux/paquets/xorg/*.spack

On a désormais un système complet isolé dans /mon_0linux.


Paramétrer les montages

Écrivons ensuite un fichier /mon_0linux/etc/fstab correct afin de monter les partitions racine et swap au minimum, en plus des 3 lignes obligatoires sur les systèmes de fichiers virtuels. Au final, on devrait avoir un fichier fstab ressemblant à celui-ci :

fstab
# Système de fichiers spéciaux obligatoires:
devpts	/dev/pts		devpts	gid=5,mode=620		0 0
proc	/proc		proc	defaults		0 0
tmpfs	/dev/shm		tmpfs	defaults		0 0
 
# Racine et partition d'échange « swap » :
/dev/sda1  /            ext4       defaults           1     1 # Notre racine système
/dev/sda2  swap         swap       defaults           0     0 # Notre partition d'échange « swap »
 
# Partie facultative à adapter selon la configuration :
 
# Montages Linux :
/dev/sda3  /home        ext4       defaults           1     2 # Exemple de partition séparée pour /home
/dev/sda6  /sauvegarde  reiserfs   defaults           1     2 # Exemple de partition de sauvegarde
 
# Autres montages :
/dev/sda5  /windoz      ntfs-3g    umask=000          1     0 # Exemple de partition NTFS montée en lecture-écriture pour tous

Configurer le système

Renseignons notre langue dans /mon_0linux/etc/locale.conf en renseignant $LANG et $LC_ALL. Utilisez systématiquement une « locale » UTF-8 si vous voulez éviter de GROSSES surprises : tous les fichiers sont commentés en français et rédigés en UTF-8, donc gare ! Exemple pour les français de France :

locale.conf
# Localisation et langue du système. Ce fichier est renseigné d'ordinaire via
# le programme '0locale'.
# La liste des « locales » supportées sur ce système sont disponibles via la commande :
# 	locale -a
LANG="fr_FR.UTF-8"
LC_ALL="fr_FR.UTF-8"

Renseignons une police ainsi qu'une disposition de clavier dans /mon_0linux/etc/vconsole.conf. Personnellement, je recommande une police « latin-9w » avec une taille entre 12 et 16 pixels, avec une préférence pour 16 :

vconsole.conf
FONT="lat-9w-16"
KEYMAP="fr-latin9.map"

Les claviers disponibles se trouvent dans le répertoire /mon_0linux/lib/kbd/keymaps/i386 ou /mon_0/usr/share/kbd/keymaps/i386 de la distribution (l'un pointant sur l'autre).

On peut aussi paramétrer l'horloge système/fuseau horaire en créant un lien /etc/localtime → ../usr/share/zoneinfo/Europe/Paris dans /mon_0linux.


Configurer

Pour passer sur le nouveau système, par exemple pour créer un utilisateur avec 0nouvel_utilisateur ou bien, de manière plus conventionnelle, avec useradd et plus généralement configurer le système fraîchement installé, vous pouvez utiliser chroot. Il convient de s'assurer que les systèmes de fichiers virtuels soient aussi montés sur cette nouvelle racine, notamment, /dev, /proc et /sys. On va pour cela simplement utiliser l'option mount –bind pour monter les systèmes de fichiers déjà existants de l'hôte sur la nouvelle racine :

mount --bind /dev /mon_0linux/dev
mount --bind /proc /mon_0linux/proc
mount --bind /sys /mon_0linux/sys

On peut ensuite passer sur un système 0linux « pleinement » fonctionnel :

chroot /mon_0linux

On quittera le nouveau système avec un simple :

exit

Il faudra bien penser à démonter ensuite les systèmes de fichiers virtuels pour éviter tout blocage sur l'hôte (un système de fichiers en utilisation ne peut être démonté proprement) :

mount --bind /dev /mon_0linux/dev
mount --bind /proc /mon_0linux/proc
mount --bind /sys /mon_0linux/sys

Rendre amorçable

Paramétrez ensuite votre chargeur d'amorçage (GRUB, LILO, Syslinux…) pour pouvoir amorcer 0linux. Vous pouvez également installer extlinux, le chargeur d'amorçage unique de 0linux. Le noyau de 0linux se nomme toujours noyau-VERSION avec un lien générique standard vmlinuz pointant sur lui. Regardons le contenu de /boot :

$ ls -l /boot/
-rw-r--r-- 1 root root 5125296 11 mai   11:27 noyau-3.8.1
lrwxrwxrwx 1 root root      11 11 mai   11:37 vmlinuz -> noyau-3.8.1

Vous pouvez donc indiquer l'un ou l'autre des ces fichiers à votre chargeur d'amorçage. Attention cependant si vous avez d'autres distributions Linux installées, le lien vmlinuz étant standard, il se peut que vous ayez aussi ce lien, mais pointant vers un autre noyau. Dans le doute, choisissez plutôt le noyau lui-même, nommé (ici) noyau-3.8.1. Le noyau de 0linux ne nécessite aucun « initrd », le maximum d'options étant déjà activées ou compilées entant que modules.

Voyez la page Amorçage pour en savoir plus sur les méthodes d'amorçage.

N'oublions pas de démonter les volumes avant de redémarrer :

umount /mon_0linux
reboot

Démarrage sous X

Définissez un bureau par défaut ainsi qu'un gestionnaire de connexion graphique grâce à la commande 0bureau, si vous avez installé certains dépôts comme enlightenment, kde ou xfce. Il faut lancer cette commande pour chaque utilisateur créé. Pour cela connectez-vous en tant qu'utilisateur et lancez simplement 0bureau. Lancer cette commande en tant que root vous permettra de configurer également un gestionnaire de connexion graphique par défaut (KDM; Slim, etc.).

Le clavier sous X se configure dans /etc/X11/xorg.conf.d/90-keyboard.conf ; voyez donc la doc, ce fichier ou bien notre ami Google. Par exemple, j'utilise un clavier français étendu. J'ai donc ces lignes :

90-keyboard.conf
# Configuration par défaut du clavier pour X : 
Section "InputClass"
        Driver "evdev"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        # Français étendu :
        Option "xkb_layout" "fr-latin9"
        # Variante OSS permettant certains caractères avec ALTGR :
        Option "xkb_variant" "oss"
        Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Le pilote graphique à charger est normalement deviné par Xorg. En cas de problème, voyez le fichier /etc/X11/xorg.conf.d/graphique.conf.


Discussion

denis, 20-05-2013 13:04

Il faudrait ajouter en préliminaire qu'il faut que sut le système hôte /bin/sh doit pointer vers bash et pas dash par ex

appzer0, 20-05-2013 16:25

base-systeme a été corrigé pour fonctionner avec dash et les autres shells.

denis, 20-05-2013 13:18

remplacer le rsync par un wget par ex…

denis, 20-05-2013 13:19

la version de spack dispo est la 3.9

appzer0, 20-05-2013 13:28

Ah en effet, merci, je le corrige

Entrer votre commentaire. La syntaxe wiki est autorisée: