Où sommes nous ?

Installation serveur TCL

Installation d'un serveur de sauvegarde / multimédia avec TinyCoreLinux

J'ai des vieux IBM ThinkCenter qui sont trop lents pour tout usage graphique décent (comment ai-je fait pour utiliser une tellement machine pendant des années ?), mais qui ont l'avantage d'avoir à la fois des ports IDE et SATA : Idéal pour transférer le contenu de vieux disques vers de nouveaux et d'en faire une machine de sauvegarde.

Las, le boitier n'est pas prévu pour héberger plusieurs disques, il faut donc qu'il puisse booter sur le disque SATA ... Et c'est là que les problèmes vont commencer : Leur architecture est totalement bringuebalante voir foireuse !

Bref, ayant mare de perdre mon temps avec ces trucs qui de toute façon ne seront utilisées que très rarement et dont les performances n'auront strictement aucun intérêt, j'ai décidé, en dernier espoir, de voir si TinyCoreLinux pouvait leur redonner le moindre usage ... et ça a marché. 

Installation

Note

L'installation peut se faire manuellement comme expliqué précédemment et j'ai même réussi à le faire sur le ThinkCenter ... sauf pour Grub2 que j'avais installé en montant le disque sur une autre machine. Bref, la procédure ci-dessous se fera entièrement avec les outils de TCL.

Partitions

Le disque faisant 4To, il faut donc obligatoirement une partition GPT mais ... comment ? Vu qu'il n'est pas reconnu par le BIOS ? Et bien Grub2 permet faire croire au BIOs qu'il a ce qu'il demande tout en concernant le GPT.

La procédure qui suit s'applique à tous systèmes pré-UEFI (donc avec un BIOS à l'ancienne) sur lequel on souhaite installer un disque de plus de 2 To.

Pour se faire, il faut créer en tout début de disque, une partition de 1Mo avec de type BIOS boot. Dans mon cas, ca donne

$ fdisk -l /dev/sda
Disk /dev/sda: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: ST4000NE001-2MA1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: C39065ED-A2FA-4A6B-A402-65F5D4523E7E

Device          Start        End    Sectors  Size Type
/dev/sda1        2048       4095       2048    1M BIOS boot
/dev/sda2        4096    2101247    2097152    1G Linux filesystem
/dev/sda3     2101248    3149823    1048576  512M Linux swap
/dev/sda4     3149824 4099149823 4096000000  1.9T Linux filesystem
/dev/sda5  4099149824 7814035455 3714885632  1.7T Linux filesystem

On voit donc :

Quels outils

Le plus pratique pour créer ces partitions est d'utiliser le fameux gparted. Cependant, il semblerait qu'au moment où j'écris ces lignes, il soit incapable d'appliquer le type BIOS boot.

Il faut passer par l'outil cfdisk qui se trouve dans le package util-linux.

Installation de TCL

Le plus simple est d'utiliser l'outil tc-install que l'on installera "on demande" par le gestionnaire de packages.

Attention :

Grub2

On commence par installer le package de Grub2-multi,

tce-load -lwi liblvm2
tce-load -lwi grub2-multi

et on installe le boot loader

sudo grub-install --boot-directory=/mnt/sda2/tce /dev/sda

et on crée le fichier de boot /mnt/sda2/tce/boot/grub/grub.cfg

insmod ext2
set root="(hd0,gpt2)"

menuentry "core Complet" {
linux /tce/boot/vmlinuz tce=sda2 home=sda2 restore=sda2 kmap=azerty/fr-latin1
initrd /tce/boot/core.gz
}

menuentry "core" {
linux /tce/boot/vmlinuz quiet noswap kmap=azerty/fr-latin1
initrd /tce/boot/core.gz
}

Notes

Synchronisation de l'heure

Ces vielles machines de sauvegarde n'auront pas d'uptime important. Synchroniser leur horloge uniquement au démarrage est donc suffisant.

Dans le fichier /opt/bootlocal.sh ajouter

sh -c 'sleep 10 && getTime.sh' &

Attention, il tournera en tâche de fond tant que le serveur de fichier ne peut-être joint.

Accès par SSH

TinyCoreLinux n'installant par défaut que le strict minimum, il faut installer OpenSSH

Création d'un utilisateur

L'utilisateur par défaut, tc, est privilégié, n'a pas de mot de passe et ne peut pas être utilisé pour un accès SSH. La solution de facilité serait de lui en assigner un, il reste plus pratique de créer un utilisateur à l'image de ce que j'ai sur mes autres systèmes.

sudo adduser laurent

Éventuellement le mettre dans les sudoers.

Je l'ai aussi ajouté dans le groupe "Sauvegardes" qui contiendra en plus tous les démons qui gèrent les fichiers de données que j'héberge sur cette machine.

OpenSSH

Mes sources

Configure SSH Server

L'installation automatique au boot d'OpenSSH se fait par la commande :

tce-load -wi openssh

Ensuite il faut créer le fichier de configuration

cd /usr/local/etc/ssh/
sudo cp sshd_config.orig sshd_config

Ne pas oublier d'y modifier les options qui vont bien, en particulier pour interdire de se connecter en tant que root.

En particulier, le serveur sftp qui est mal configuré

Subsystem	sftp	/usr/local/lib/openssh/sftp-server

On lance le serveur une 1er fois, ce qui générera les clefs.

Ne pas rebooter encore, sinon toutes les modifications seront perdues. Voir Persistances en bas de ce billet.

Pour qu'il démarre automatique au boot de la machine, il faut modifier le fichier /opt/bootlocal.sh en ajoutant la ligne.

/usr/local/etc/init.d/openssh start

Résolution de nom par Avahi

Pour faciliter son administration, je veux avoir le moins d'informations statiques que possible sur mon réseau, et ça passe par l'intégration d'Avahi.

Changer le nom de la machine

Dans le fichier /opt/bootsync.sh, changer la ligne sethostname= . Ne pas oublier de synchroniser la persistance.

Avahi

tce-load -wi avahi

Puis configuration de la résolution de nom.

Enfin le démarrage automatique, on rajoute dans le fichier /opt/bootlocal.sh la ligne

/usr/local/etc/init.d/avahi start

Les commandes shell classiques telles que ping ne font pas la résolution de nom. Visiblement, c'est parce que les commandes de busybox ne passent pas par /etc/nsswitch.conf .

La solution la moins foireuse est d'obtenir les adresses IP par les commandes avahi comme suit :

ping $(avahi-resolve-host-name -n4 bpi.local | cut -f2)

Serveur de médias (DLNA)

Le DLNA est la solution la plus pratique que j'ai trouvé pour échanger des médias entre mes machines, ma TV et eventellement les téléphones et tablettes. Il me faut donc un serveur DLNA sur ce "serveur" qui contient aussi  toute ma vidéothèque.

Rygel

Ryget était le seul serveur DLNA packagé pour TCL lorsque j'ai monté cette machine.

Sauf que sa configuration peut se faire par un client lourd, rygel-preference, et, comme elle est incluse d'office, elle entraine un nombre gargantuesque de dépendances. Trop lourd (et parfaitement inutile) pour mon utilisation.

J'ai donc choisi une alternative beaucoup plus légère.

miniDLNA

miniDLNA (aussi connu sous le nom de Ready Media) est un serveur DLNA simplissime et relativement léger. "Relativement", car il nécessite quand même un nombre non négligeable de dépendances requises par tous les formats qu'il reconnait. Mais pas d'interface lourde.

Sa configuration se fait à travers le fichier de configuration /usr/local/etc/minidlna.conf (les commentaires qui s'y trouvent sont suffisamment explicites) et supporte iNotify : les ajouts/suppressions/modification des fichiers seront donc automatique détectés.

Ce fichier doit évidemment être ajouté dans /opt/.filetool.lst

Reconstruire sa base de données

minidlna propose une option pour reconstruire sa base. Cependant, je ne l'ai pas implémenté car n'apportant rien de plus. Pour reconstruire la base, il suffit donc de :

  1. stopper minidlna
  2. supprimer le fichier contenant sa base (indiqué dans le fichier de configuration)
  3. redémarrer minidlna
L'avantage est que les fichiers sont disponibles dès qu'indexés : pas besoin d'attendre plusieurs minutes (voir dizaines de minutes s'il y a beaucoup de fichiers) que tous les fichiers aient été traités.

PubSubFigures

PubSubFigures permet publié l'activité du système par MQTT et donc de l'intégré à ma Domotique.

tce-load -wi PubSubFigures

Modifier le fichier /usr/local/etc/PubSysFigures.conf en fonction des paramètres de l'environnement. Dans mon cas, ca sera

-Hbpi.chez.moi -s30 -g120

et modifier /opt/.filetool.lst pour rajouter ce fichier.

Et pour que le démon se lance automatique, dans le script /opt/bootlocal.sh, ajouter :

/usr/local/etc/init.d/PubSybFigures-1.3 start

Persistances

Gardons tout ca pour le prochain reboot et mettant les entrées suivantes dans le fichier /opt/.filetool.lst :

opt
home
etc/passwd
etc/group
etc/shadow
etc/gshadow
etc/sudoers
usr/local/etc/ssh

Et on sauvegarde le tout

laurent@box:~$ sudo filetool.sh -b
Backing up files to /mnt/sda2//mydata.tgz
Done.

Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.