Installer manuellement 0linux

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 de 0linux, voyez la page Téléchargements pour cela.

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/eta/x86_64/<depot>/<paquet>/<paquet>.spack .

Récupérez d'abord les paquets critiques, à savoir :

  • a/busybox
  • a/base-systeme
  • b/glibc
  • b/ncurses
  • b/readline
  • d/bash
  • a/sgml-common
  • a/0outils

Ou alors synchronisez l'ensemble du dépôt de 0Linux (qui représenteplus de 4,5 Go de paquets - pour 0Linux eta début 2014)


Créer une partition pour 0linux

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

Monter les systèmes de fichiers virtuels

Bien qu'optionnel, monter les systèmes de fichiers virtuels de l'hôte (tmpfs, proc, sys, etc.) est chaudement recommandé car cela va permettre aux scripts de post-installation de chaque paquet d'accéder aux périphériques spéciaux de l'hôte comme /dev/null.

On monte donc avec l'option –bind de mount qui va permettre de monter à un autre emplacement un système de fichiers déjà monté ailleurs. Le contenu est ainsi synchronisé à 2 emplacement différents. /run est facultatif. Le système de fichiers le plus important reste /dev :

mkdir -p /mon_0linux/{dev,proc,run,sys}
mount --bind /dev  /mon_0linux/dev
mount --bind /proc /mon_0linux/proc
mount --bind /sys  /mon_0linux/sys
mount --bind /run  /mon_0linux/run

On fera bien attention à démonter ces systèmes de fichiers une fois qu'on aura terminé.


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.

Si vous êtes sur le système autonome de 0linux, vous disposez déjà de spackadd, ignorez cette section. Sinon, récupérons les sources de Spack sur le site du développeur http://requiescant.tuxfamily.org/, par exemple :

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

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. C'est ce qu'on va considérer ici. Sinon, ajoutez le chemin du script spackadd dans chaque appel.

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 lib64 et /sbin:

spackadd --root=/mon_0linux /home/moi/0linux/paquets/a/busybox-*.spack
spackadd --root=/mon_0linux /home/moi/0linux/paquets/a/base-systeme-*.spack
spackadd --root=/mon_0linux /home/moi/0linux/paquets/b/glibc-*.spack
spackadd --root=/mon_0linux /home/moi/0linux/paquets/b/readline-*.spack
spackadd --root=/mon_0linux /home/moi/0linux/paquets/b/ncurses-*.spack
spackadd --root=/mon_0linux /home/moi/0linux/paquets/d/bash-*.spack

Installons tous les paquets de z/base-abonnement, ils figurent dans le fichier .dep (les 6 paquets déjà installés afficheront une erreur qui sera ignorée) :

for f in $(cat base-abonnement-x-x86_64-1.dep); do
  spackadd --root=/mon_0linux $(find /home/moi/0linux/paquets -type f -name "${f}*.spack")
done

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

Vous pouvez également passer par 0g en lui passant la variable ROOT :

ROOT=/mon_0linux 0g busybox base-systeme glibc etc.

Puis installer base-abonnement, par exemple.


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/0linux/locale 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 ! On peut aussi appeler le script 0locale une fois dans le chroot (voir plus bas). Exemple pour les français de France :

locale
LANG="fr_FR.UTF-8"
LC_ALL="fr_FR.UTF-8"

Renseignons une police ainsi qu'une disposition de clavier dans /mon_0linux/etc/0linux/clavier et /mon_0linux/etc/0linux/police. Personnellement, je recommande une police « latin-9w » avec une taille entre 12 et 16 pixels, avec une préférence pour 16. On peut aussi appeler le script 0clavier une fois dans le chroot (voir plus bas).

clavier
CLAVIER="fr-latin9"

Et pour la police (On peut aussi appeler le script 0police une fois dans le chroot (voir plus bas).) :

police
POLICE="lat-9w-16"

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 On peut auss appeler le script 0horloge une fois dans le chroot (voir plus bas).

Le réseau a besoin d'une configuration basique dans le fichier /mon_0linux/etc/0linux/reseau. Créez-le simplement avec un :

touch /mon_0linux/etc/0linux/reseau

…ou bien appelez le script 0reseau une fois dans le chroot (voir plus bas).


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 :

(Vous avez peut-être déjà monté ces systèmes de fichiers plus haut dans cette page, dans ce cas ignorez cette étape).

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

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

chroot /mon_0linux

On utilisera de préférence 0g pour installer des paquets ou des abonnements. 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) :

umount /mon_0linux/dev
umount /mon_0linux/proc
umount /mon_0linux/proc
umount /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.x.x
lrwxrwxrwx 1 root root      11 11 mai   11:37 vmlinuz -> noyau-3.x.x

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. SI vosu utilisez d emultiples systèmes d'exploitations Linux, dans le doute, choisissez plutôt le noyau lui-même, nommé (ici) noyau-3.8.1. Utilisez le lien vmlinuz permet de profiter de chaque mise à niveau du noyau de 0Linux sans avoir à reconfigurer quoi que ce soit. Le noyau de 0linux ne nécessite aucun « initrd », le maximum d'options étant déjà activées ou compilées en tant 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

Installer des dépôts

Voyez man 0g ou bien Outils de 0linux : 0g afin d'installer des logiciels supplémentaires, notamment un environnement graphique

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&

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: