GRML est une superbe distribution linux live pour nous les administrateurs réseau, comme client d'un serveur de clonage ou système d'intervention rapide c'est top moumoute. Il faut néanmoins graver l'iso sur un CDR pour pouvoir l'utiliser :/ ... Vu qu'on a toujours un sublime serveur PXE sous Debian (running gag cf 2 posts précédents), pourquoi ne pas y faire tourner GRML ...
Je sais ... GRML propose une fonction live "grml-terminalserver" permettant cela, mais une distrib live qui distribue des clients live ouachahh c'est chaud et pas optimal... et dans mon cas, j'ai déjà un serveur PXE qui tourne sur mon réseau et on ne peut pas en avoir plus d'un sinon c'est un peu n'importe quoi ...
Booter sur GRML via PXE
Sur notre serveur PXE (192.168.1.199) :
- Créer un dossier /home/live
# mkdir /home/live
- Copier l'iso de GRML dans /home/live
# ls /home/live/
grml_0.6.iso
- Créer un dossier /home/live/grml
# mkdir /home/live/grml
- Monter l'iso de GRML dans /home/live/grml
# mount -o loop grml_0.6.iso /home/live/grml
Ici on utilise l'iso de GRML fraichement téléchargée de grml.org, sans rien décompresser, c'est pratique je trouve ...
- Installer un serveur NFS :
# apt-get install nfs-kernel-server nfs-common portmap
# /etc/init.d/nfs-common start
# /etc/init.d/nfs-kernel-server start
- On indique à NFS le dossier à rendre public pour GRML (le dossier que GRML utilisera à la place du CDROM)
# nano /etc/exports
[...]
/home/live/grml *(ro,root_squash)
[...]
# exportfs -a
- On ajoute GRML au menu de démarrage PXE :
# nano /home/tftpboot/pxelinux.cfg/default
[...]
LABEL grml
KERNEL linux26
APPEND ramdisk_size=16384 root=/dev/ram0 rw init=/etc/init nfsdir=192.168.1.199:/home/live/grml nodhcp noprompt noeject noautoconfig apm=power-off nomce initrd=minirt26.gz vga=791 ssh=123
[...]
Sur un poste booté avec GRML :
- On lance une fois le serveur PXE de GRML pour transférer les fichier de Boot sur notre serveur PXE
# grml-terminalserver
# find / -name pxelinux.0 => /ramdisk/var/lib/tftpboot
# cd /ramdisk/var/lib/tftpboot
# scp linux26 root@192.168.1.199:/home/tftpboot/linux26
# scp minirt26.gz root@192.168.1.199:/home/tftpboot/minirt26.gz
Pour peu que l'on fasse cette dernière opération sous VMWare on aura même pas besoin de graver GRML ...
Voilà c'est tout, maintenant il suffit de démarrer un client PXE et de taper GRML et ohhh ca boot sans CD youpi :) on est content ...
[ Ajouter un commentaire ] ( ( 1 vue ) ) | [ 0 Trackbacks ] | Lien permanent
Pourquoi ce post sur PXE ? Il existe effectivement des tas de tutoriels sur PXE, je le sais il m'en a fallu au moins quinze pour réussir à faire tourner une config serveur PXE qui au final est extremement simple... cela n'aurait pas dû me demander autant de lectures/temps/gros mots...
Donc au moins ici je poste ma config qui marche et ca sera ptet cinq tutoriels de gagnés pour toi lecteur qui cherche à installer PXE ;)
La théorie vite fait (bien fait ?) :
Un serveur PXE consiste en fait en deux services serveur distincts :
Un serveur DHCP et un serveur TFTP
Le serveur DHCP (paquet dhcp3-server) distribuera les adresses IP aux clients PXE (et aux autres d'ailleurs), il fournira aux clients PXE le nom du système d'exploitation à charger par le réseau.
Le serveur TFTP (paquet atftpd) hébergera et tiendra à disposition des clients PXE, les systèmes d'exploitation à charger via le réseau. On souhaite que la racine du serveur TFTP soit dans /home/tftpboot.
Syslinux (paquet syslinux) est un « bootloader » linux, également capable de charger d'autres OS. Il est souvent utilisé sur les cdrom, disques usb, disquettes et via PXE donc ...
La pratique :
Pour changer on va bosser sous Debian/Ubuntu ;) . Pour installer tout ce qu'il faut :
# apt-get install syslinux dhcp3-server atftpd pxe
Mon serveur PXE a pour IP 172.16.0.1 (c'est aussi ma passerelle), on installera la racine du serveur tftp dans /home/tftpboot, atftpd nous demande si il faut s'installer via inet.d, j'ai répondu NON. DHCP ne démarrera pas à sa première tentative et c'est normal, il faut le configurer convenablement avant via son fichier de conf ...
Voici les fichiers de conf :
/etc/pxe.conf
# which interface to use
interface=eth0
default_address=172.16.0.1# the multicast ip address to listen on
multicast_address=224.0.1.2# mtftp info
mtftp_address=224.1.5.1
mtftp_client_port=1758
mtftp_server_port=1759# the port to listen on
listen_port=4011# enable multicast?
use_multicast=1
# enable broadcast?
use_broadcast=0# user prompt
prompt=Press F8 to view menu ...
prompt_timeout=30# service=
, , , , # tftpd base dir
tftpdbase=/home/tftpboot# domain name
domain=localnet
/etc/dhcp3/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;# option definitions common to all supported networks...
option domain-name "localnet";
option domain-name-servers 172.16.0.1;server-identifier 172.16.0.1;
next-server 172.16.0.1;
option root-path "/home/tftpboot/";
filename "/home/tftpboot/pxelinux.0";default-lease-time 36000;
max-lease-time 72000;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.# This is a very basic subnet declaration.
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.8.100 172.16.8.250;
option routers 172.16.0.1;
}
/etc/default/atftpd
USE_INETD=false
OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.200-250 --mcast-ttl 1 --maxthread 100 --verbose=5 /home/tftpboot"
Que mettre à la racine du serveur tftp ?
Memdisk et pxelinux.0 que l'on trouvera sur notre machine suite à l'installation de syslinux.
Des images de systèmes d'exploitation (pas trop gros), par exemple une image d'une disquette de boot DOS générée avec la commande :
# dd if=/dev/floppy of=monimage.img
Quelques commandes pour vous faire voir ce qu'il y a à la racine du serveur tftp :
root@nono /home/tftpboot # ls -lh
total 53M
drwxr-sr-x 3 root staff 1,0K 2006-01-24 08:07 debian-installer
-rw-r--r-- 1 root staff 50M 2006-01-25 09:29 dsl21.img
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f1
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f2
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f3
-rw-r--r-- 1 root staff 23K 2006-01-23 11:49 memdisk
-rw-r--r-- 1 root staff 445 2006-01-25 08:19 messages
-rw-r--r-- 1 root staff 1,5M 2006-01-24 09:05 netboot56.img
-rw-r--r-- 1 root staff 1,5M 2006-01-24 08:28 netboot.img
-rw-r--r-- 1 root staff 12K 2006-01-23 11:12 pxelinux.0
drwxr-sr-x 2 root staff 1,0K 2006-01-23 11:32 pxelinux.cfg
drwxr-sr-x 3 root staff 1,0K 2006-01-24 09:11 ubuntu-installer
root@nono /home/tftpboot # cd pxelinux.cfg
root@nono /home/tftpboot/pxelinux.cfg # cat default
PROMPT 1
DEFAULT 1
DISPLAY messages
F1 f1
F2 f2
F3 f3
TIMEOUT 300
label 0
LOCALBOOT 0
label 1
KERNEL memdisk keeppxe
APPEND initrd=netboot56.img
label 2
KERNEL memdisk
APPEND initrd=netboot.img
label 3
kernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
label 4
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw --
root@nono /home/tftpboot/pxelinux.cfg # cat ../messages
=========================== Menu ===========================
0 - local
1 - netboot ( netbootdisk 5.6 )
2 - netboot ( netboot fred )
3 - debian installer
(mirror : deb http://192.168.1.21/debian/ sarge main contrib non-free)
4 - ubuntu installer
(mirror : deb http://192.168.1.21/ubuntu/ breezy main)
===========================================================
Les fichiers texte messages, f1, f2, f3 ... s'afficheront sur les clients respectivement au démarrage du boot PXE ou en pressant la touche correspondante.
Le fichier de démarrage « pxelinux.cfg/default » peut gérer un menu, l'utilisateur choisira l'image à booter, les entrées de menu sont définies par les « labels »
Certains systèmes d'exploitation comme debian ou ubuntu fournissent des fichiers initrd.gz permettant de lancer une installation via PXE.
Les scripts de démarrage pour tout ca :
# /etc/init.d/atftpd start|stop|restart
# /etc/init.d/dhcp3-server start|stop|restart
# /etc/init.d/pxe start|stop|restart
Certifié fonctionnel par Fred.
[ Ajouter un commentaire ] ( ( 7 vues ) ) | [ 0 Trackbacks ] | Lien permanent
Ce matin j'ai eu envie de faire parler mon ordinateur, pour le faire parler anglais c'est déconcertant de simplicité, sous Debian / Ubuntu on tape juste :
apt-get install festival
puis :
echo "bonjour je suis l'ordinateur de Fred" | festival --tts
et le PC parle... mais ... avec l'accent anglais :)
Mais moi je veux qu'il me parle français ... et là ca se corse un peu... mais on y arrive ...
Il y a des tas de TTS (Text To Speach) j'ai choisi MBROLA associé à LLIAPHON ... pour leur relative simplicité tant à installer qu'à utiliser, et parce qu'ils sont plus ou moins libres :
MBROLA : code source fermé mais libre pour utilisation non commerciale et non militaire.
LLIAPHON : code source ouvert, GPL.
Mbrola et Lliaphon auront besoin l'un de l'autre, lliaphon va transformer/codifier du texte en phonèmes et latences, mbrola va transformer en son les fichiers générés par lliaphon.
Comment ca se passe ?
1. Installation d'MBROLA
J'ai téléchargé mbrola et des voix pour mbrola sur http://www.tcts.fpms.ac.be/synthesis/mbrola/ dans /home/fred/tts/mbrola/
J'ai maintenant les fichiers :
mbr301h.zip, fr1-...zip, fr2-...zip, fr3-...zip, fr4-...zip
Il faut créer le répertoire d'installation de MBROLA :
mkdir /opt/mbrola
Se placer dans ce répertoire :
cd /opt/mbrola
Décompresser les fichiers :
unzip -d .
unzip -d .
unzip -d .
unzip -d .
unzip -d .
On pourrait se contenter d'une seule voix mais ca peut etre sympa de changer ...
fr1 et fr3 sont des voix de gars et fr2, fr4 des voix de filles, enfin il parait ...
Perso j'ai renommé tout ca pour que ca soit plus "parlant" et attention il y a un piège, fr4 est compacté sans sous dossier éponyme à l'inverse de toutes les autres voix ...
pour que toutes les voix soient au même niveau (dans /opt/mbrola/) on tapera :
cd /opt/mbrola
mv ./fr1/fr1 ./bob
mv ./fr2/fr2 ./eva
mv ./fr3/fr3 ./max
mv ./fr4 ./zia
On fait un lien vers la version d'mbrola qui va bien, moi je suis sur PC donc :
ln -s mbrola-linux-i386 mbrola
Des fichiers de test sont donnés ... testons :
./mbrola zia TEST/kundera.pho kundera.wav
Si tout marche bien vous devez avoir un kundera.wav dans /opt/mbrola/
Lisons ce fichier wav, si vous avez ALSA pour gérer votre son sous linux tapez :
aplay kundera.wav
A ce stade vous devriez entendre une femme parler de philosophie ...
C'est bien sauf que si on s'amuse beaucoup on va poluer notre /opt/mbrola/ avec un tas de fichiers wav
On peut se contenter de convertir directement un fichier pho en audio sans créer de fichier audio en utilisant la sortie stdout de mbrola :
mbrola zia TEST/bonjour.pho -.au|aplay
C'est bien mais pour des feignasses comme nous c'est bien trop long à taper, on va faire un script "dire" qui va faire la même chose :
nano dire
On écrit notre ligne de commande dans "dire" :
/opt/mbrola/mbrola /opt/mbrola/bob $1 -.au|aplay
J'utilise des chemins absolus pour que ca marche de n'importe où ...
ensuite je rends mon script exécutable :
chmod +x dire
et j'utilise mon script :
./dire TEST/bonjour.pho
Bon, on est content sauf qu'on ne peut faire dire à notre ordinateur que les exemples donnés avec mbrola, c'est pas fun très longtemps ...
Ca serait bien qu'on puisse phonétiser nos propres textes, pour cela, on va installer LliaPhon.
2. Installation de LLIAPHON
J'ai téléchargé LliaPhon sur http://download.gna.org/lliaphon/ dans /home/fred/tts/lliaphon/
lliaphon-0.3.5.20041129.tar.gz
on décompresse l'archive :
tar zxvf lliaphon-0.3.5.20041129.tar.gz
on va voir ce que ca donne :
cd lliaphon-0.3.5.20041129
ls
on installe :
./configure
make
make install
en fin d'installation on voit qu'il nous a déposé lliaphon dans :
/usr/local/bin/lliaphon
Testons lliaphon :
cd /home/fred/
echo "bonjour moi c'est Fred et toi ?" > test.txt
lliaphon test.txt
Normalement lliaphon doit nous créer un fichier test.txt.ola
et ce .ola on peut le lire, comme les .pho avec Mbrola, ou avec un script qui se nomme play_ola lui aussi dans /usr/local/bin/
sauf que ce script n'est pas forcément bien configuré par défaut ...
nano /usr/local/bin/play_ola
aux environs de la ligne 15 vous avez une variable qui se nomme MBROLA_VOICE, il faut la renseigner correctement, pour nous ca sera "/opt/mbrola/bob"
et tout à la fin du script on a 2 appels au programme mbrola, on va les remplacer par "/opt/mbrola/mbrola"
(on pourrait aussi mettre mbrola dans le PATH ...)
et on a aussi un appel au programme "play" nous on utilise "aplay" donc on remplace ...
on enregistre et on ferme nano
ensuite on peut faire un play_ola :
play_ola /home/fred/test.txt.ola
bon c'est pas mal déjà mais pour faire parler mon ordi il faut que j'écrive un fichier texte, que je le donne à lliaphon et que le ola généré par lliaphon je le donne à mbrola et que mbrola donne à aplay le son à jouer.
et comme on est toujours feignasses, ca ne nous plait pas, c'est bien trop long tout ca ...
et puis nous en plus on veut pouvoir choisir la voix avec laquelle faire parler notre ordi ...
on va donc faire un petit script nommé "dire" qui marchera comme ca :
./dire "ce que je veux faire dire à mon ordinateur" eva
et comme on est vraiment des feignasses on veut avoir une voix par défaut pour pouvoir se contenter de :
./dire "ce que je veux faire dire à mon ordinateur"
notre script "dire" ressemblera à ca :
#!/bin/sh
#voix par défaut si argument 2 absent
if [ ! "$2" ]
then
DefVoice=bob
else
DefVoice=$2
fiMBROLA_VOICE=/opt/mbrola/$DefVoice
#tranformation du texte par lliaphon pour mbrola
echo $1 > /tmp/lliaphon_dire
/usr/local/bin/lliaphon /tmp/lliaphon_dire/opt/mbrola/mbrola -I /usr/local/share/lliaphon/initfile.lia \
$MBROLA_VOICE /tmp/lliaphon_dire.ola -.au |
aplay -t au -rm /tmp/lliaphon_dire
rm /tmp/lliaphon_dire.ola
ensuite je rends mon script exécutable :
chmod +x dire
et j'utilise mon script :
./dire "youpi ca marche, je parle, merci à toi humain de m'avoir donné la parole"
Et voilà on est content notre ordi nous parle, il est pas plus intelligent pour autant, il faut toujours tout lui souffler mais bon ...
[ Ajouter un commentaire ] | [ 0 Trackbacks ] | Lien permanent

Calendrier



