Entendez Temporary File System, est implémenté dans le noyau 2.6 et se base sur ramfs, il propose une limite de taille mémoire allouable fixée au moment du montage modifiable à la volée et utilisant le swap si nécéssaire.
Le gros avantage de tmpfs par rapport à ramfs est l'allocation dynamique de la mémoire permettant ainsi de ne pas utiliser la mémoire si cela n'est pas nécéssaire.
Je m'explique si vous allouez 1Go de ram à un montage tmpfs, que vous y écrivez un fichier de 100Mo, les 900Mo restant seront allouable aux autres ressources.
Je vous invite à regarder les options spécifiques de montage de tmpfs avec man mount.
Par défaut, si vous ne spécifiez pas de valeur de taille, la moitié de votre ram sera allouée.
[warn]Il me semble une trés mauvaise idée d'allouer toute votre ram à tmpfs, cela risque en cas de saturation de l'obliger à swapper et, de fait, d'obtenir des performances inverses...[/warn]
Bien, passons aux exemples.
[titre1]Portage[/titre1]
Par défaut, portage utilise le repertoire de travail temporaire /var/tmp/portage afin d'y décomprésser les sources d'un paquet et d'y faire son travail de compilation (make), mais aussi son installation (make install), ensuite seulement il copie les fichiers installés dans votre système.
Je pense que vous aurez compris le bénéfice en terme de rapidité lors d'un emerge, d'écrire ces fichiers temporaires directement dans la mémoire via tmpfs plutôt que sur le disque dur sachant que généralement votre mémoire devrait être quelque chose comme 200 fois plus rapide que votre disque...
Dans la pratique, vous avez deux solutions : utiliser /dev/shm , ou créer un point de montage spécifique pour votre portage.
[titre2]/dev/shm[/titre2]
/dev/shm alloue la moitié de votre ram avec tmpfs.
Pour ce faire il vous suffit de modifier votre ficher /etc/make.conf avec les valeurs suivantes :
Montez-le avant de lancer l'installation d'un paquet :
# mount -v /var/tmp/portage
[warn]Certain paquets tels que gcc ou openoffice auront besoins de plus d'1Go d'espace temporaire, ou encore si vous avez beaucoup de paquets à mettre à jour, n'utilisez pas cette technique car vous arriverez vite à saturation des 1Go faisant ainsi planter vos installations[/warn]
[titre1]/tmp[/titre1]
Une autre utilisation est de monter tout votre /tmp avec tmpfs améliorant passablement les performances des logiciels ou du système lors de l'utilisation de ce repertoire.
Ce qui, comme expliqué plus haut, allouera la moitié de votre mémoire à ce repertoire.
Je ne saurais trop vous conseillez dans ce cas d'ajouter une crontab root purgeant régulièrement le repertoire /tmp au cas où certaines applications ne le fassent pas correctement :
# vidage du repertoire /tmp des fichiers vieux de 24H toutes les 12H 0 */12 * * * find /tmp -type f -mmin +1440 -delete > /dev/null
[titre1]MySQL[/titre1]
Sous gentoo, la configuration par défaut de MySQL est d'utiliser le repertoire /tmp, donc si vous utilisez déjà tmpfs sur /tmp passez votre chemin... ;-)
Si en revanche vous désirez séparer le repertoire de travail temporaire de MySQL, modifiez votre fichier /etc/mysql/my.cnf :
# mount -v /var/tmp/mysql && /etc/init.d/mysql restart
[titre1]Conclusion[/titre1]
tmpfs est trés simple à utliser et peux du coup être adapté à tous vos besoins à condition d'avoir, vous l'aurez compris, une quantité de ram conséquente... ;-)
lsof permet de lister les fichiers et repertoires ouverts mais aussi les sockets (TCP et UDP)...
[titre1]Introduction[/titre1]
Ne vous est-il jamais arrivé de vouloir supprimer un repertoire ou de démonter une partition et que cela vous soit refusé même en tant que root ? Probablement que si car c'est un problème qui survient lorsque la ressource est utilisée par une application ou un utilisateur, et c'est là que lsof intervient...
Regardons par quelques exemples ce dont il retourne...
[titre1]Installation[/titre1]
# emerge -av lsof
La Gentoo c'est quand même formidable !
[titre1]Utilisation[/titre1]
Imaginons que vous vouliez reformater la partition correspondant au repertoire /home et que vous n'arrivez pas à la démonter.
Nous avons dernièrement pris notre courage à deux mains afin de mettre un peu à jour notre site... Et quel ne fut pas notre stupeur de constater que les forums ouverts étaient pollués de liens en tout genre allant de la location de voiture, aux agences de voyage, en passant par des vendeurs de logiciels, de cheveaux, de médicaments... et vite fait avec ça ! en 24 heures quelques robots chasseur de pagerank nous avaient pourri notre site !
Et en particulier sur l'article Clavier Dvorak dont nous avions des liens entrants venant de sites pornographiques... Quelle horreur ! :-D
Mesures d'urgence, fureteurs lancés : suppression des forums non pertinents, fermeture de tous les forums en attendant de les re activer avec moderation 'a priori'... bref, quelques heures de nettoyage... pas toujours désagréables... :-D
Ouais m'enfin le net c'est quand même une sacrée jungle des fois...
A côté de cela, nous en avons profité pour remettre à jour la documentation DHCP + LDAP : les liens cassés (merci à Etienne Lafore) et ajout d'un ebuild dhcp-4.0.0 non testé (la compilation est passée sur x86) dont le patch proviens du cvs Redhat.
L'extension a2ps-print permet d'imprimer sous l'editeur Emacs [1].
[titre1]a2ps dans emacs[/titre1]
Pour installer a2ps-print sur votre Gentoo, il suffit d'installer le paquet a2ps :
# emerge -av a2ps
Le fichier contenant l'extension propose quelques exemples de configuration pour votre fichier .emacs. Elle ne marchent pas toutes en tout cas avec gentoo , voici ce que j'ai mis dans mon .emacs :
a2ps-print.el utilise par défaut l'impression en mode paysage en double page, or en général quand on est dans emacs on veut imprimer du texte en mode portrait , donc pour cela , il faut :
(une petite sauvegarde du fichier original en cas de boulette...) # cp /usr/share/emacs/site-lisp/a2ps-print.el /usr/share/emacs/site-lisp/a2ps-print.el_ORI
Editer en root /usr/share/emacs/site-lisp/a2ps-print.el
Ajouter à la fin du fichier, juste aprés (concat "-d") et en passant à la ligne : (ligne 96) (concat "-1Rf12") et enregistrez
Revenir sur la liste du répertoire et mettre son curseur sur a2ps-print et éxécuter la commande "Byte-compile" avec : "B"
Redemarrez emacs
ouvrir un fichier et faire "f12 a" pour imprimer tout le buffer
ou mettre une zone en surbrillance et l'imprimer en faisant : "f12 z"
Vous pouvez changer ces macros à votre convenance dans .emacs.
[1] Emacs ou Editing MACroS est une famille d'éditeurs de texte disposant d'un ensemble extensible de fonctionnalités et qui est très populaire parmi les programmeurs (wikipédia)
Free conseille le lecteur Vlc pour l'utilisation de son service multiposte. Ce lecteur permet de lire une multitude de formats vidéos et d'audios, DVD, VCD... et en ce qui nous intéresse ici un flux réseau.
[titre2]Configuration des use de vlc et du masque pour certaines versions de live[/titre2]
Avant d'installer vlc, nous allons déjà configurer correctement les USE pour que vlc puisse lire le flux de free pour la télévision.
# echo "media-video/vlc live stream">> /etc/portage/packages.use
Nous vous conseillons aussi les USE :
oggvorbis, theora, mpeg, ffmpeg, flac, matroska, win32codecs : support du format ogg, ogg, théora, mpeg, matroska, et différents codecs windows.
dvd : support des dvd
dts : support de dts
cdda, cddb : support des cd audio et récupération des informations des cds
wxwindows : interface graphique de vlc
Pour avoir plus d'informations sur les USE, vous pouvez utiliser la commande (euse est disponible dans le paquet gentoolkit) : # euse -i use
Le paquet live, qui permet la lecture des flux rtp/rctp/rts utilisés pour le multiposte, connait des bugs dans les versions supérieurs à 2005.11.11. C'est pourquoi, avant d'installer vlc, nous allons masquer ces versions :
# echo ">media-plugins/live-2005.11.11" >> /etc/portage/package.mask
[titre2]Installation[/titre2]
Enfin il ne vous reste plus qu'à installer vlc :
# emerge -av vlc
[titre2]Utilisation[/titre2]
Pour l'utilisation, vous n'avez normalement rien à configurer. Pour lancer la télévision, la commande est la suivante :
# vlc http://mafreebox.freebox.fr/freeboxtv/playlist.m3u
Le 6 juillet 2008 l'équipe de Gentoo annonce la sortie de sa première version pour l'année 2008 : 2008.0.
Cette version a pour nom de code "It's got what plants crave".
L'on notera la sortie de la version 2008.0-r1 deux jours plus tard, le 8 juillet 2008, corrigeant deux bugs critiques (Bug #230998, Bug #231024).
Cela dit, les nouveautés sont une fois de plus au rendez-vous, heureusement me direz-vous, attendu que la dernière version stable (2007.0) date de mai 2007...
Parmis ces nouveautés, l' "installeur" a été mis à jour en version 0.6.6, on trouve aussi la version 2.1.4.4 de portage, le noyau 2.6.24 avec lui un support matériel plus complet, Xfce 4.4.2, gcc 4.1.2 et la glibc 2.6.1.
Les gentooistes ayant déjà un système à jour savent que cela n'a pas une grande importance car ces versions ne sont en fait que des clichés à un instant donné de Gentoo Linux.
Ces derniers n'ayant qu'à mettre à jour leur profile qui, à mon sens, est la grosse nouveauté de cette version, car il a été completement restructuré apparaissant maintenant sous la forme /usr/portage/profiles/default/linux/ alors qu'avant il s'agissait du chemin /usr/portage/profiles/default-linux/.
Je vous invite d'ailleurs à vous reporter au guide de migration afin de mettre à jour votre profile.
La libATA est une bibliothèque utilisée sous le noyau linux pour le support des controlleurs et périphériques ATA. Elle permet de gérer les transferts ATA et ATAPI via le sous-système SCSI.
[titre1]Introduction[/titre1]
La libATA est une bibliothèque du noyau linux pour le support des controlleurs et périphériques ATA. Elle permet de gérer les transferts ATA et ATAPI via le sous-système SCSI.
Apparue dans le noyau 2.6.18, à la base développée pour le support des disques Serial ATA, elle s'est imposée comme le futur standard des disques Paralell ATA (entendez les disques à interfaces IDE).
De fait à terme les drivers IDE seront probablement amenés à disparaitre du noyau au détriment de la libATA.
Un des gros avantages, est de n'avoir à paramétrer qu'un seul format de périphérique peu importe le type d'interface IDE, SATA, ou SCSI : tout sera vu en /dev/sd* et /dev/sr* pour les lecteurs et graveurs CD DVD.
[titre1]Configuration[/titre1]
[titre2]Le Noyau[/titre2]
Nous allons donc dans un premier temps changer la configuration du noyau :
# cd /usr/src/linux # make menuconfig
Si vous n'avez que des disques SATA et que vous utilisez des clés USB, alors votre configuration noyau est déjà trés proche de celle ci-dessous, pensez à désativer le support ATA/ATAPI... et à activer le support des lecteurs de CDROM SCSI.
Sélectionnez les options suivantes afin de n'activer que le support libATA :
Device Drivers ---> < > ATA/ATAPI/MFM/RLL support ---> SCSI device support ---> -*- SCSI device support <*> SCSI target support [*] legacy /proc/scsi/ support <*> SCSI disk support <*> SCSI CDROM support [*] Enable vendor-specific extensions (for SCSI CDROM) <*> SCSI generic support [*] SCSI logging facility [*] Asynchronous SCSI scanning <*> Serial ATA (prod) and Parallel ATA (experimental) drivers ---> (sélectionnez le support de votre chipset à l'aide de la commande lspci, dans notre exemple un intel) <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Ensuite recompilez votre noyau :
# make -j2 && make modules_install
[titre2]Le fichier /etc/fstab[/titre2]
C'est là que cela se complique un peu puisque les disques IDE seront vus comme des disques SCSI, si vous n'aviez que des disques IDE, alors ce sera relativement simple puisque d'une manière générale, /dev/hda deviendra /dev/sda, /dev/hdb -> /dev/sdb... en revanche, si vous mixiez disques SATA et disques IDE alors il va falloir trouver un moyen de savoir comment seront nommés les disques.
Une méthode serait de labeliser vos partitions c'est-à-dire de donner un nom à ces partitions afin de pouvoir nommer la partition /boot en BOOT par exemple.
L'opération de mettre des labels sur vos partitions doit impérativement se faire sur des partitions non montées, le mieux est donc depuis un liveCD.
Pour ce faire utilisez les outils suivant :
sur ext2/3 : tune2fs (16 caractères maximum)
# tune2fs -L BOOT /dev/hda1
sur reiserfs : reiserfstune (16 caractères maximum)
# reiserfstune -l ROOT /dev/hda2
sur xfs : xfs_admin (12 caractères maximum)
# xfs_admin -L USR /dev/hda3
sur jfs : jfs_tune (16 caractères maximum)
# jfs_tune -L VAR /dev/hda6
Pour la partition de swap :
# mkswap -L SWAP /dev/hda5
Modifiez ensuite le fichier /etc/fstab :
[...] LABEL=ROOT / reiserfs noatime 0 2 [...]
Autre méthode est d'utiliser la dénomination par UUID (entendez Universal Unique IDentifier) des partitions.
Pour les connaître :
# ls -lh /dev/disk/by-uuid/ total 0 lrwxrwxrwx 1 root root 10 mai 11 18:44 136cea0d-4971-45f7-a22f-184c28325e0d -> ../../hdb1 lrwxrwxrwx 1 root root 10 mai 11 18:44 19f589de-5fe1-4ef8-886e-5407bdd09242 -> ../../hda6 lrwxrwxrwx 1 root root 10 mai 11 18:44 23522038-ec20-4d27-b082-2cb7cb01d18f -> ../../hda7 lrwxrwxrwx 1 root root 10 mai 11 18:44 28176ab9-04a4-4661-ae7b-aad4e2adc4e3 -> ../../hda3 lrwxrwxrwx 1 root root 10 mai 11 18:44 81b59432-398e-40fd-8098-f6f7b4abc52a -> ../../hda5 lrwxrwxrwx 1 root root 10 mai 11 18:44 88f09f52-b4f6-4ee3-b96f-d86b6d4b1e57 -> ../../hda1 lrwxrwxrwx 1 root root 10 mai 11 18:44 c422bb01-014d-46b2-98cd-73071234df6f -> ../../hda8 lrwxrwxrwx 1 root root 10 mai 11 18:44 d605fa56-f3bb-416c-9b65-27cde7a703f6 -> ../../hda2
Remplacez donc dans le fichier /etc/fstab vos /dev/hd* par les UUID correspondantes :
A ce niveau il ne vous reste plus qu'à rebooter...
Ceci dit, pensez à vérifier vos configurations hdparm et lvm...
Dans le pire des cas vous ne verrez aucune différence en terme de performances, en revanche dans le meilleur des cas ces dernières seront améliorées.
Baselaout-2 et OpenRC dans l'arbre portage (en testing).
Annoncé officielement le 11/04/08, www.gentoo.org affirme de nouveau dans la newsletter du 24/04/08 l'insertion de Baselayout-2 et OpenRC en testing dans l'arbre de portage.
Ceci semble laissé croire à une prochaine stabilisation de ce véloce gestionnaire de services, voire comme Le futur gestionnaire de services de gentoo...
OpenRC est un nouveau système d'init, reprenant les mêmes fonctionnalités de baselayout (le système d'init par défaut de Gentoo) c'est-à-dire la gestion, le démarrage et l'arrêt des services. Il est developpé en C contrairement à baselayout qui lui est en bash. Cela permet d'augmenter la rapidité de la gestion des dépendances et le lancement des services.
Une autre qualité est de supporter les services supportés par baselayout mais aussi par l'init des BSD, ce qui permet une migration douce et simple. Il permet aussi le lancement parallèle des services, augmentant la vitesse du démarrage.
OpenRC est maintenant supporté par Gentoo, vous trouverez les paquets dans l'arbre portage.
[warn] Lancez bien etc-update ou dispatch-conf selon votre choix, pour remplacer les nouveaux fichiers de configuration de openrc et les services.[/warn]
[titre1]Configuration[/titre1]
Ceci dit, pensez à vérifier certains de vos fichiers de configuration :
Le fichier /etc/conf.d/hostname pour le nom du système :
hostname="gentoo1"
Le fichier /etc/hosts pour, en partie, le nom complet du système :
127.0.0.1 gentoo1.gentoofr.org gentoo1
Le fichier /etc/conf.d/keymaps pour la configuration du clavier :
keymap="fr" ...
Le fichier /etc/conf.d/hwclock le remplaçant du fichier /etc/conf.d/clock :
clock="local"
par ailleurs, pour spécifier la variable TIMEZONE qui n'est plus présente dans le fichier /etc/rc.conf, créez le fichier /etc/timezone :
Europe/Paris
Attention, à la fin de l'installation, emerge vous dit que le fichier /etc/modules.autoload.d/kernel-2.6 est obsolete. OpenRC utilise un nouveau fichier pour la liste des modules à charger au démarrage : /etc/conf.d/modules. La syntaxe du fichier change : elle devient plus cohérente, dans le sens où on peut lister les modules à charger pour tel ou tel noyau. Par exemple :
modules_2_6_24_gentoo_r3="applesmc nvidia tun" # et pour passer un argument à un module modules_nvidia_args-2_6_24_gentoo_r3=""
Sinon, vous pouvez aussi les mettre dans la variable modules, mais ils seront chargés pour n'importe quel noyau :
modules="applesmc nvidia tun"
Concernant la configuration réseau, il vous faudra modifier le ficher /etc/conf.d/net comme ce qui suit.
Pour une configuration par DHCP :
config_eth0="dhcp"
Pour une configuration fixe (avec iproute2 dans l'exemple) :
modules="iproute2" config_eth0="192.168.0.2/24" routes_eth0="default via 192.168.0.254"
Pour les utilisateurs de x11-apps/xinit, vous définirez la variable XSESSION dans le fichier /etc/env.d/99xsession.
Et, pour finaliser, ne pas oublier de définir les variables PAGER et EDITOR qui ne se trouvent plus dans le fichier /etc/rc.conf. Elles sont définies par défaut par le fichier /etc/profile, mais vous pouvez les définir par utilisateur dans un .bashrc ou un .zshrc, sinon globalement en créant le fichier /etc/env.d/99editor :
PAGER="/usr/bin/less" EDITOR="/usr/bin/vim"
Pour les utilisateurs de reiser4, pensez à modifier le fichier /etc/conf.d/fsck pour passer le bon argument à reiser4fsck :
elogv est un utilistaire en ligne de commande permettant de lire et de gérer les méssages générés par portage lors de l'installation d'un paquet.
Pour installer app-portage/elogv, il suffit de taper la commande qui suit :
# emerge -av app-portage/elogv
Pour la configuration, éditez le fichier /etc/make.conf et ajoutez-y les lignes suivantes :
PORTAGE_ELOG_SYSTEM="save" PORTAGE_ELOG_CLASSES="warn error info log qa"
Vous pouvez bien sûr enlevez certaines options, pour leurs détails reportez-vous au fichier /etc/make.conf.example.
Lancez, par exemple, la compilation du paquet mail-mta/postfix, une fois terminée, lancez elogv, vous obtiendrez les méssages d'informations, de warnings et d'érreurs s'il y en a.
Tapez F1 pour afficher l'aide, et ainsi voir toutes les commandes disponibles...
En conclusion cet utilitaire s'avère trés pratique après de grosses mise à jour afin de pouvoir lire les méssages des ebuilds.