Un serveur web sur une clé usb de 32mo avec tinycorelinux

site web - téléchargement de la dernière version

Cet article est une traduction du tutoriel en anglais qui se trouve aux adresses suivantes :

Tiny Core Linux (TCL) est une très bonne distribution GNU/Linux. Mon serveur web apache tourne dessus et utilise un total de 43 Mo de mémoire. Le tout démarre depuis une clé usb de 32Mo et se charge dans la ram de la machine, à travers seulement 7 processus . Du fait de sa faible taille ( <10Mo ) TCL n'apporte pas le même support matériel que la plupart des distributions.Il peut être judicieux de vérifier la compatibilité de votre matériel en gravant un live-cd ou en créant une clé usb bootable en suivant les indications ci-dessous.

Préparation de la clé USB

J'ai utilisé une clé USB de 32 Mo qui trainait sur mon bureau sur laquelle j'ai simplement créé une unique partition formatée en FAT16 ( Le FAT32 nécessite un nombre de secteurs que ma clé n'a pas...) Pour le formatage de la clé USB, il est possible d'utiliser un outil comme Gparted.

Rendre la clé bootable avec Syslinux

Dans un premier temps, il faut installer l'utilitaire syslinux :

sudo apt-get install syslinux

sudo syslinux /dev/sdb1

Dans toutes les étapes qui suivent, on considère que la clé usb est sur /dev/sdb1. À remplacer dans les commandes par le bon chemin.

Pour le connaitre :

df -h 

puis chercher la ligne de votre clé usb en fonction de sa taille/système de fichier

Installation de TCL

Il faut ensuite télécharger la dernière version du fichier .iso de TCL, et le monter comme un cd-rom (loopback).

# creation du repertoire de montage du fichier iso
sudo mkdir /mnt/tcl 
# montage de l'image iso
mount -t iso9660 tinycore-current.iso /mnt/tcl -o loop

tinycore-current.iso correspond ici au nom du fichier .iso téléchargé.

Reste à monter la clé usb et à copier le répertoire /boot de l'iso :

# creation du repertoire de montage de la cle
sudo mkdir /mnt/usb 
# montage de la cle usb
sudo mount -t vfat -F 32 /dev/sdb1 /mnt/usb 
# copie du dossier boot de l'iso vers cle usb
cp -r /mnt/tcl/boot /mnt/usb/

Pensez à bien remplacer /dev/sdb1 par le bon chemin Il faut ensuite déplacer quelques fichiers syslinux dans le répertoire racine de la clé usb et faire un peu de nettoyage :

# on se rend dans le bon dossier 
cd /mnt/usb/boot/isolinux 
# on deplace les fichiers
mv boot.msg f2 f3 isolinux.cfg ../../ 
# on retourne a la racine de la cle
cd /mnt/usb 
# on renomme le fichier de cfg
mv isolinux.cfg syslinux.cfg 
# on supprimer le dossier syslinux et son contenu
rm -r boot/isolinux

Enfin, on va modifier les options de démarrage de l'image linux dans le fichier /mnt/usb/syslinux.cfg en l'ouvrant dans un éditeur de texte :

# si on utilise nano
sudo nano /mnt/usb/syslinux.cfgs

Chercher la ligne contenant append initrd=/boot/tinycore.gz puis la modifier en ajoutant les options suivantes :

 append initrd=/boot/tinycore.gz quiet waitusb=5 noswap tz=GMT text 

Finalisation de l'installation

On redémarre sur la clé usb, en entrant dans le prompt qui s'affiche :

tinycore tce=sda1 

Cette dernière opération n'est à effectuer qu'une fois, pour régler la persistance des fichiers ( on indique en fait au système ou enregistrer les changements à chaque extinction de la machine )

Les démarrage suivants se feront automatiquement sans avoir à entrer d'option particulière.

Installation de nano

Par défaut, vi est installé comme éditeur de texte. Si on n'est pas trop à l'aise avec ce dernier, on peut installer nano qui est plus accessible :

 tce-load -wi nano.tcz 

Installation et configuration d'Apache

Pour installer Apache, on peut passer par la ligne de commande ou par l'interface graphique.

MĂ©thode CLI :

 tce-load -wi apache2.tcz 

MĂ©thode GUI :

Il faut lancer l'environnement graphique en entrant "startx" puis en utilisant l'outil "AppBrowser".

Cherchez apache2 et cliquez sur "OnBoot".

Un dossier 'htdocs' devrait apparaître dans /home/tc.

VĂ©rification du fonctionnement d'Apache

On présuppose que vous avez configuré votre réseau comme il faut, ou que vous connaissez au moins l'ip de la machine sur laquelle vous travaillez. Démarrez le serveur apache (/usr/local/bin/httpd):

 apachectl -k start 

et sur une autre machine, pointez un navigateur web sur l'adresse ip de votre serveur TCL. Vous devriez avoir droit Ă  un belle page blanche avec un simple message "It Works !".

DĂ©marrage automatique d'apache

Pour qu'apache se lance automatiquement au démarrage, il faut ajouter une ligne au fichier "/opt/bootlocal.sh" :

 /usr/local/bin/apachectl -k start 

Tous les réglages d'apache se feront directement dans le fichier de configuration /usr/local/conf/httpd.conf . Pour que les réglages d'apache persistent, il faut ajouter cette ligne au fichier /opt/.filetool.lst.

usr/local/conf/httpd.conf 

Ce fichier contient en fait une liste des dossiers/fichiers Ă  sauvegarder Ă  chaque extinction de la machine.

Notez que le '/' au début de '/usr/local/conf/httpd.conf' est volontairement supprimé.

Installation de Dropbear pour un accès distant SSH

On va installer dans un second temps le serveur Dropbear :

 tce-load -wi dropbear.tcz 

On ajoute la ligne suivante Ă  "/opt/bootlocal.sh" pour le lancement automatique :

 /etc/init.d/dropbear start 

on ajoute la ligne suivante Ă  "/opt/.filetool.lst" pour la persistance:

 etc/init.d/dropbear 

Configuration de dropbear

On change la ligne suivante dans le fichier "/etc/init.d/dropbearfile" pour qu'elle ressemble à ça:

 OPTIONS="-w -g -p 1066" 

où -p 1066 définit le port d'écoute du serveur SSH. Il est préférable de ne pas utiliser le port par défaut ( 22 ), histoire d'échapper au scripts kiddies et autres bots qui parcourent le réseau.

Enregistrement des changements

Jusque-là, toutes ces opérations sont en ram. Nous devons indiquer au système d'écrire ces changements sur la clé usb, pour qu'ils survivent à un redémarrage.

Encore une fois, deux possibilités :

MĂ©thode CLI

Spécifiez le périphérique de sauvegarde "sda/" en éditant le fichier /opt/.backup_devicefile puis entrez la commande :

 /usr/bin/filetool.sh backup 

MĂ©thode GUI

Lancez l'environnement graphique avec la commande "startx", puis utilisez l'outils "Backup" du "Panel" de la barre d'outils. Specifiez 'sda/' comme périphérique de sauvegarde.

Aller plus loin...

Vous avez maintenant un serveur web minimaliste qui saura servir des pages html. Mais il est possible de parvenir à un véritable serveur GLAMP en installant php et mysql :

 tce-load -wi apache2-mod-php5.tcz   tce-load -wi mysql.tcz 

Vous pouvez Ă©galement passer par un autre serveur web comme lighttpd, installer un serveur ftp, samba, smtp, proxy ...

Pour connaitre la liste des paquets disponibles sur TCL, rendez vous ici: http://distro.ibiblio.org/tinycorelinux/3.x/tcz/index.html

Enfin, un lien vers un tutoriel en anglais pour installer un serveur samba sur TCL : http://www.parkytowers.me.uk/thin/Igel2110/IgelLinux.shtml

Le nombre de paquets disponibles pour cette distribution rend virtuellement possible toute utilisation de votre machine ( serveur, bureautique, console de jeu, lecteur vidéo...) en ne disqualifiant pas les vieilles configurations...