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
- 'quiet' permet un démarrage en mode 'calme', sans tous les messages du kernel.
- 'waitusb=5' permet de laisser 5 secondes au périphériques usb pour s'initialiser.
- 'noswap' spécifie qu'on n'utilisera pas de partition swap ( tout est en ram ).
- 'tz=GMT' règle le fuseau horaire où l'on se trouve
- 'text' fait démarrer TCL en mode ligne de commande (CLI). Une fois démarré en mode CLI, la commande startx permet de lancer l'environnement graphique.
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...