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

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: