Astuces

Voici une compilation des meilleures astuces tirées du magazine Linux France, de l'Internet et de moi-même. Il existe d'ailleurs un très bon site en français sur le sujet : LinuX Tricks & Tips

De plus, il existe un Tips Howto disponible à l'adresse suivante : http://www.freenix.org/unix/linux/HOWTO/Tips-HOWTO.html

* Ancien répertoire
* Bascule
* Bibliothèques
* Changer les messages d'acceuil
* Chemin de recherche
* Choisir son runlevel
* Contrôle des tâches
* Core
* Créer une disquette de boot
* Des espaces dans les noms
* Deux adresses IP pour une seule carte Ethernet
* Dupliquer deux disques dur ou simplement faire une sauvegarde
* Exécuter une commande répétitivement
* Formater une disquette au format ext2
* Gérer les packages RPM de son système
* J'ai installé Windows 98 sur mon PC et je n'ai plus LILO
* J'ai perdu mon mot de passe root !
* Je ne peux pas installer de partition Dos avec Disk Druid
* Le pavé numérique
* Les alias
* Le syslog sur la console
* LS en couleur
* Man -> PS
* Messages de boot
* Mieux profiter de lftp
* Modifier le prompt de son shell
* Optimisation des vitesse pour les cartes AGP
* Où est mon programme ?
* Plusieurs sessions X en même temps
* Rappel de ip-up ip-down
* Reboot
* Recherche de fichiers
* startx -- -bpp 16 !!
* Trop de core ?
* Une image de fond aléatoire sous X
* Un gestionnaire de fenêtres pour chaque utilisateur
* Un startx automatique
* Utiliser un fichier de swap à la place d'une partition
* Vérifier les connexions réseau entrantes
* Version du noyau
* Voir sans installer


Bibliothèques

Pour connaître les bibliothèques associées à un programme tapez ldd suivi du nom complet du programme.
Exemple :

ldd /bin/vi

libtermcap.so.2 => /lib/libtermcap.so.2 (0x40019000)
libc.so.6 => /lib/libc.so.6 (0x4001e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Le résultat obtenu représente à gauche la bibliothèque recherchée et à droite celle trouvée. Si une bibliothèque manque, la mention Not Found apparaîtra à droite.

Où est mon programme

Il est parfois nécessaire de savoir où se trouve un exécutable sur le disque. Pour savoir directement où se trouve un programme sans le chercher par son nom, tapez type nom du programme. Le chemin complet s'affichera alors à l'écran.
Exemple :

type TkZip

TkZip is /usr/local/bin/TkZip

Version du noyau

Pour connaître la version en cours du noyau, sa date de compilation, le type de processeur, tapez :

uname -a

Ceci affichera les informations en question. La version du noyau est donnée en majeur.mineur.révision, exemple : 2.2.10 (N'oubliez pas que les mineurs impairs sont des versions de développement).

LS en couleur

Voici une astuce bien connue mais toujours utile pour les nouveaux arrivants. Un ls en couleur vous permettra de distinguer plus facilement les répertoires, liens, programmes, etc. Pour avoir un ls en couleur, il faut créer un alias de ls vers ls --color=tty -F -b -T 0 en ajoutant la ligne suivante dans /etc/bashrc :

alias ls='ls --color=tty -F -b -T 0'

Tapez la commande bash pour que le changement soit pris en compte.

Voir sans installer

Il est souvent utile de connaître le contenu d'un fichier .tar.gz (ou .tgz) sans pour autant tout décompresser. Voici une manipulation bien pratique :

tar tzf toto.tar.gz |less

Note: le | est obtenu en appuyant simultanément sur Alt Gr et 6. Et q pour quitter.

Exécuter une commande répétitivement

Lorsque vous téléchargez un fichier en tâche de fond, il est pratique de connaître sa taille sans pour autant taper ls -l ou size à chaque fois. Utilisez la commande watch de la manière suivante :

watch -n 5 size test.tar.gz

Ceci vous permettra de lancer automatiquement size test.tar.gz toutes les 5 secondes. Watch peut, bien sûr, être utiliser avec beaucoup d'autres commandes comme date si vous êtes soucieux de votre ponctualité.

Le syslog sur la console

Il est possible de diriger les messages système (syslog) vers une console. Pour cela ajoutez :

*.* (autant de tabulations qu'il faut) /dev/tty12 dans /etc/syslog.conf

Ensuite, faites un killall -HUP syslogd. Maintenant vous n'avez plus qu'a appuyer sur Alt Ctrl F12 et voilà ...

Messages de boot

Voici une astuce connue des habitués mais toujours utile. Pour revoir les messages affichés au démarrage sous Linux, il vous suffit de taper dmesg | more

Reboot

La séquence de touches Ctrl Alt Suppr destinée à redémarrer le système est décrite dans le fichier /etc/inittab sous la forme :

ca::ctrlaltdel:/sbin/shutdown -t5 -rf now

Ceci permet de lancer la commande shutdown avec une temporisation de 5 secondes (-t5), pour redémarrage (-r comme reboot au lieu de -h comme halt), en mode rapide (f comme fast).

Recherche de fichiers

Pour trouver des fichiers contenant une chaîne de caractères de manière récursive dans tous les répertoires du disque tapez :

find / -name \*toto\*

Ainsi, il cherchera tous les fichiers contenant le texte "toto".

Bascule

Pour basculer d'une session Xwindow à une session du shell faîtes :

Ctrl Alt Fn

n est le numéro de la console virtuelle. Pour revenir à votre session X faîtes alors :

Ctrl Alt F7

La console numéro 7 est habituellement réservée aux sessions X-Window.

Choisir son runlevel

Si vous n'arrivez pas à vous décider entre le démarrage sous X et le shell, éditez votre fichier /etc/inittab, repérez une ligne ressemblant à ceci :

id:3:initdefault

Puis placez un symbole # (dièze) au début. Ceci placera en commentaire cette ligne et le système vous demandera d'entrer le runlevel de votre choix au démarrage.

Un gestionnaire de fenêtres pour chaque utilisateur

Si vous aimez à la fois KDE, Window Maker, After Step, E, etc, simplifiez-vous la tâche en créant autant de nouveaux utilisateurs que de gestionnaires. Ensuite, dans chacun des répertoires personnels, créez un fichier .xinitrc. De cette manière le système ne prendra plus en compte /etc/X11/xinit/xinitrc mais le ~/.xinitrc de l'utilisateur en cours.

Gérer les packages RPM de son système

Deux solutions se présentent à vous pour gérer vos packages, rpm lui-même ou une interface graphique de rpm, comme glint.

A l'aide de rpm

Rappels :

Pour installer un package : rpm -i fichier.i386.rpm
Pour mettre à jour le package : rpm -U fichier-2.i386.rpm

Aller juste un peu plus loin :

Vous ne savez pas si un package est installé sur votre système :

rpm -qa | grep 'nom recherché'

Vous venez simplement de filtrer la sortie de la commande rpm -qa qui renvoie la liste des packages installés. On peut en déduire une seconde commande qui vous donnera le nombre de packages installés :

rpm -qa | wc -w
ou
rpm -qa | wc -l

Les deux solutions sont correctes car rpm -qa renvoie un nom par ligne. (wc (word count) peut compter le nombre de mots (-w) de lignes (-l) ou de caractères (-c)). Il peut ainsi être intéressant de développer encore cette idée de gestion. Ainsi, pour voir l'évolution des programmes installés ou mis à jour durant le temps, on peut dans une crontab par exemple insérer ce tube :

date | tee $HOME/packages | rpm -qa | sort\>> $HOME/packages

L'inconvénient de cette commande est qu'elle écrase à chaque fois l'ancien fichier. Il serait assez simple de l'agrémenter de la commande diff pour construire un script shell légèrement plus utile.

Voici un peu plus d'informations à propos des options de rpm :

-q Information rapide sur les packetages.
-a Se rapporte à tous les packages de la machine.
-V Cette option vous permettra de savoir si un package est bien installé => rpm
-Va Vérifie tous les packages.
-qi Sera plus parlant qu'un simple -q
-ql En plus de -qi vous aurez les noms et chemins d'accès de tous les fichiers du package.
-e Pour supprimer le package, ou plutôt les fichiers qui le composent.

En cas de problème, il existe également les options suivantes :

--force Permet de forcer rpm à installer les fichiers ou les mettre à jour.
--nodeps Permet d'installer ou mettre a jour sans tenir compte des dépendances.
--oldpackage Permet de revenir vers une ancienne version d'un package.
--replacepkgs Remplace le package même s'il est déjà installé sur votre système.
--test Aucune installation. Un simple test pour voir s'il y a des conflits possibles.

Modifier le prompt de son shell

Certains prompts (invite du shell) par défaut ne sont pas toujours très intéressant. Je suis sûr que vous voudriez qu'ils vous soient plus utiles. Pour cela, il en existe des spéciaux à introduire dans la variable d'environnement PS1 (Prompt String 1). Pour connaître sa forme actuelle, tapez les instructions suivantes :

set | grep PS1
ou
echo $PS1

Voici la liste de ces caractères spéciaux :

\t Heure actuelle.
\d Date actuelle.
\n Saut de ligne.
\s Nom du shell.
\W Répertoire de travail.
\u Nom d'utilisateur.
\h Nom de l'ordinateur.
\! Numéro de commande courant.
\nnn Le caractère nnn (base huit) est affiché. Exemple un é s'écrira '\\351'.
\\ Affichage d'un anti-slash.

Les options décrites ci-dessus fonctionnent uniquement pour le bash. Reportez-vous à la man page de votre shell pour connaître les équivalences.

Contrôle des tâches

Linux est, comme vous le savez, un OS parfaitement multitâches et entièrement 32 bits, en attendant le 64 bits avec le Merced. Il est nettement plus efficace en multitâche que son acolyte Windows ainsi que lors des lancements de programme. Pour profiter au maximum de ses avantages, il faut simplement connaître les commandes qui permettent de gérer ces tâches ou ces processus. Une grande quantité d'utilitaires sont déjà installés sur votre machine à cet effet. Voici, par des exemples, comment vous pouvez vous en servir.

jobs

On lance la commande de cette manière :

jobs
ou
jobs -l (plus causant)

Et s'affiche alors les processus en cours et en tâche de fond.

bg, fg, wait

Mettre le processus au numéro de tâche 1 en arrière plan ou encore le remettre au premier plan.

bg %1 : mis en arrière plan (background)
fg %1 : et il revient aussi au premier plan (foreground)

Et si le processus au numéro de tâche 1 (Attention : différent du pid) se fait attendre, tapez :

wait %1

ps (process status) et top

Il n'y a pas grand chose à dire sur cette commande que beaucoup connaissent, si ce n'est les bases :

ps ax : affiche tous les processus en cours et pas seulement ceux que vous avez générés.
ps alx : est plus verbeux et assez compliqué.
top : faut essayer si ce n'est pas déjà fait, c'est très parlant.

nice

Cette commande vous permettra de maitriser la priorité avec laquelle le système va exécuter une commande. Cette priorité se caractérise sur une échelle numérique de 19 (priorité minimale) à -20 (priorité maximale).

nice -n -20 rpm -qa : donne la priorité maximale à rpm -qa.
nice -n 19 ls : donne la priorité minimale à ls

kill

Cette commande caractérise bien le fait que l'on puisse maîtriser ce qui se produit. kill permet d'envoyer un signal (la liste des signaux s'affiche avec un kill -l) à un processus qui sait le lire et qui peut le stopper, le relancer, ou le tuer, ...

kill -SIGINT 254 : envoie au PID 254 un signal d'interruption, identique à un Ctrl C.
kill -SIGKILL 254 : c'est le plus fort des signaux, aucun processus ne peut y résister et se termine.
kill -STOP 254 : stoppe le processus au PID 254, ce dernier pouvant être un numéro de tâche comme pour la commande bg (%1).

time

Cette commande permet de déterminer le temps que met un processus à s'exécuter. Ce temps peut-être du temps réel (real) en secondes, ou le temps (user) que met le processeur pour exécuter les instructions ou encore le temps système (sys). Ce dernier est la durée en secondes qui est nécessaire au processeur pour le traitement des ordres du système d'exploitation.

time -p ls : avec l'option -p les temps sont juste affichés, ce qui clarifie l'information.

J'ai perdu mon mot de passe root !

Y a-t-il un moyen pour le contourner ? Oui, voici la solution :

- Amorcez votre système avec une disquette d'installation ou de secours.
- Montez la partition root.
- Editez le fichier /etc/passwd pour supprimer le mot de passe
(ou éditer le fichier /etc/shadow en cas d'utilisation des shadow password).
- Effacez le contenu du deuxième champ (entre ::), exemple :

root:AsdERfgRtcY:0:0:root:/root:/bin/bash

Effacez AsdERfgRtcY pour obtenir la ligne :

root::0:0:root:/root:/bin/bash

- Sauvegardez les modifications et amorcez de nouveau votre système. Attention, vous n'avez plus de mot de passe sur votre compte root. La première chose à faire est de logger root, puis de lancer la commande passwd pour créer votre nouveau mot de passe.

J'ai installé Windows 98 sur mon PC et je n'ai plus LILO

Le MBR (Master Boot Record) a été écrasé. La méthode consiste à faire de nouveau une installation. Mais au lieu de choisir le mode install, vous allez sélectionner l'option de mise à jour du système. Comme il n'y a aucun package à mettre à jour, vous allez tout de suite passer à la création de la disquette de secours. Répondre par Oui ou Non (peu importe). A présent, vous allez pouvoir configurer LILO. Une fois ces étapes terminées, vous pourrez amorcer de nouveau votre système.

Une autre astuce consiste à booter avec une disquette de démarrage, se logger en mode root et ensuite de taper lilo -v et le tour est joué.

Je ne peux pas installer de partition Dos avec Disk Druid

Version longue : J'ai tenté d'installer Linux en utilisant Disk Druid. J'ai voulu ajouter une nouvelle partition en plus du Dos. Ceci a été refusé en déclarant que la partition ne peut être allouée par manque d'espace disponible, alors que Windows me dit qu'il reste de la place sur mon disque.

Pour que Linux puisse s'installer, il faut que le système trouve de la place sur le disque dur, mais il est très important que cette place disponible ne soit pas déjà affectée à un autre OS. Par exemple, si vous avez un disque de 2 Go et qu'il vous reste 600 Mo (information donnée par le premier OS déjà présent sur la machine), Linux ne pourra pas s'installer, car cet espace, bien que disponible, est en réalité affecté à l'OS en question.

Pour remédier à ce problème, vous devez dans ce cas, soit avec un utilitaire commercial comme Partion Magic ou alors avec l'utilitaire fips qui se trouve livré avec les distributions Linux, réduire la taille de la partition du premier OS. Cet espace ainsi récupéré pourra être ensuite affecté à Linux. Quand vous allez exécuter le programme d'installation de Linux, vous aurez cette fois-ci deux partitions : une partition Dos principale et une partition non encore allouée. Vous devrez à l'aide de Disk Druit ou de fdisk (de Linux) supprimer cette seconde partition avant de pouvoir créer les partitions Linux.

Trop de core ?

Pour peu que vous utilisiez des versions de développement de certaines applications, il peut vous arriver de rencontrer des fautes de segmentation (segfaults) et d'obtenir, par là même, des fichiers core. Ces fichiers sont destinés à débugger l'application et si vous n'êtes pas programmeur, ils ne présentent pas beaucoup d'intérêt.

Pour éviter la création d'un tel fichier, il suffit de renseigner le système sur la taille maximale que le fichier core peut prendre, par exemple zéro, grâce à la commande :

ulimit -c 0

Si oui, vous pouvez constater que :

core file size (blocks) 0

Attention, une fois encore, ceci concerne uniquement le bash. Avec tcsh vous utiliserez plutôt limit et unlimit.

Chemin de recherche

La variable d'environnement $PATH, permettant de spécifier un chemin de recherche pour les binaires (exécutables), possède son alter ego pour les répertoires. En effet, en déclarant une variable $CDPATH (valable pour bash) contenant un ou plusieurs répertoire(s), il est possible de spécifier un chemin. Exemple :

En déclarant une variable par export CDPATH='/opt/moi' nous informons le shell de vérifier l'existence d'un sous-répertoire lorsqu'une commande cd est lancée.

Imaginons que vous avez un sous-répertoire toto dans /opt/moi. Quelque soit l'endroit où vous vous trouvez dans l'arborescence, le simple fait de tapez cd toto vous placera immédiatement dans /opt/moi/toto.

Attention tout de même ! Il est possible que vous rencontriez des problèmes en utilisant cette variable. En effet, les scripts d'auto-configuration (./configure) fonctionnent en mode relatif. De ce fait, si vous compilez The Gimp (par exemple) depuis le répertoire /opt/moi/gimp-1.1.4 et qu'un répertoire /opt/moi/nova existe, vous obtiendrez une erreur lors de la compilation. Un répertoire nova est présent dans les sources. Or, lorsque le Makefile tente d'entrer dans son répertoire nova, il entre en fait dans /opt/moi/nova et là, Make ne trouve rien à faire. Donc, prudence ...

startx -- -bpp 16 !!

C'est un tips que je pensais déjà inclus dans les LTT mais apparament il est passé à la trappe. Une des questions les plus posée à propos de X11 c'est comment faire pour le lancer en 16/24 bits ? Et la réponse est assez simple il suffit de faire un startx -- -bpp 16. Mais je dois avouer qu'à la longue cela est assez pénible. La soluce consiste à utiliser le flag DefaultColorDepth dans le fichier /etc/X11/XF86Config comme ceci :

Section "Screen"
Driver "SVGA"
Device "Matrox Millennium G200 8MB"
Monitor "Primary Monitor"
DefaultColorDepth 16
SubSection "Display"
Depth 8
Modes "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection

Ensuite il n'y a plus qu'à taper startx tout court. Note j'ai également vu pas mal de monde faire des CTRL-ALT-+ pour changer de résolution au démarrage de X . Pourquoi ne pas mettre une fois pour toute le bon truc dans la ligne Modes ?

Optimisation des vitesse pour les cartes AGP

Sur les Pentium Pro/ Pentiumn II il existe ce que l'on appelle les Memory Type Range Registers (MTRRs), qui sont des registres utilisés pour contoler l'accès de la mémore par le processeur. Ces registres sont très utiles sur des cartes PCI ou AGP car ils permettent d'augmenter (~2.5) la vitesse d'écriture dans la mémoire vidéo en utilisant le mode write-combining Pour utiliser ces registres il faut avoir un kernel 2.2 et mettre CONFIG_MTRR à yes .

Voici un exemple pour une carte Matrox G200 en sachant que la mémoire de la carte est 8 Mo et que le frame buffer débute à l'adresse 0xCF000000. C'est info sont fournis par X au démarrage :

(--) SVGA: PCI: Matrox MGA G200 AGP rev 3, Memory @ 0xcf000000, 0xcc000000
(--) SVGA: Linear framebuffer at 0xCF000000
(--) SVGA: MMIO registers at 0xCC000000
(--) SVGA: Video BIOS info block at 0x000c7ce0
(--) SVGA: Found and verified enhanced Video BIOS info block
(--) SVGA: detected an SDRAM card
(--) SVGA: chipset: mgag200
(**) SVGA: videoram: 8192k
(**) SVGA: Option "dac_8_bit"

Il suffit donc de mettre les bonnes valeurs dans les MTRR comme ceci :

echo "base= 0xCF000000 size=0x800000 type=write-combining" >! /proc/mtrr

Voila c'est tout. Il faut bien entendu répéter l'opération à chaque boot et l'on peut vérifier que cela est bon en faisant un cat /prc/mtrr. Pour plus d'infos lisez /usr/src/linux/Documentation/mtrr.txt

Les alias

Bon on connais tous maintenant les alias, mais ils sont en fait un peu dur à gérer, on en fout un peu partout (.xinitrc .bashrc .profile etc) Voila une soluce, stockez les dans un seul fichier, par exemple ~/.alias

alias la='ls -la'
alias rh='telenet rh -u soif'
etc....

Et ensuite il suffit d'y faire appel dans le .bashrc de la manière suivante :

test -e ~/.alias && . ~/.alias

Un startx automatique

Bon moi j'aime bien me loguer en mode texte de temps à autre. Et xdm est un chiant à gérer à la longue. Pourquoi ne pas mettre un startx directement dans le fichier .profile ? Voici ce que j'y ai mis :


if [ -f /tmp/.X0-lock ] ; then
        echo "Un serveur X tourne déjà PID:`cat /tmp/.X0-lock`"
else
        if [ -f ~/.noX ] ; then
          echo "Normal Login No X"
        else
          startx
          exit
        fi

De cette manière si un X tourne déja on se retrouve en mode texte et si on ne veut absolument pas demarrer X, il suffit de faire un touch .noX ce qui créera un fichier vide .noX. Pour revenir à la normale il suffit d'un rm .noX On peut même pousser le vice jusqu'a ce deloguer en automatique à la sortie de X. Voici comment faire avec la fin de mon .xinitrc :

rxvt &
exec wmaker
exit 0

Rappel de ip-up ip-down

Les utilisateurs de Linux ne le connaissent encore pas très bien et c'est pourquoi je fais un rappel. Lors de l'établissement de la connexion Internet, pppd lance le script /etc/ppp/ip-up s'il existe. Et à la fin de la connexion il lance /etc/ppp/ip-down Vous pouvez mettre n'importe quoi dans ces scripts :

xmessage "Vous êtes connecté"
xmessage "Vous êtes déconnecté"

Bon cela peut parraitre con mais on peut par exemple lancer un fetchmail -d 200 et plein d'autres trucs qui doivent être lancés à l'établissement de la connexion et qui doivent être tué à la fin (fetchmail -q) De plus on peut utiliser certaines variables positionnées par pppd à l'appel de ip-up :

---------couper coller de la doc de JC sur sendmail-----------------------
Les paramètres passés à ip-up par pppd (man pppd) :
$1 = nom de l'interface (ppp0)
$2 = périférique utilisé (/dev/modem)
$3 = vitesse de transmission
$4 = adresse IP locale (celle qui nous intéresse)
$5 = adresse IP distante (le serveur de modem du provider, sera notre passerelle vers le reste du monde)
$6 = ipparam (option donnée par l'utilisateur via l'option ipparam de pppd)
------------------------------------------------------------

Rien de plus à dire, à vous de jouer !

Plusieurs sessions X en même temps

Si vous essayez de lancer deux fois X window sur une machine vous allez avoir un message d'erreur du style "One server already running". Il y a plusieurs astuces pour s'en sortir mais la plus élégante est sûrement de taper :

startx -- :1 si le display 0 est déjà occupé ou startx -- -bpp 16 :2 ... et ainsi de suite.

Comment utiliser un fichier de swap à la place d'une partition

En effet, dans tous les bons bouquins (les mauvais aussi) sur Linux on peut lire qu 'il est fortement conseillé de créer une partition de swap lors de l'install de Linux. Cela est très bien, mais le jour où l'on a un "out of memory", que faire ? Ce tirer les cheveux ? prier, pleurer, Non !!! Il suffit juste de créer un fichier de swap en plus. Exemple :

dd if=/dev/zero of=/nom_du_fichier_de_swap bs=1024 count=8208
mkswap /nom_du_fichier_de_swap
sync;sync
swapon /nom_du_fichier_de_swap

Et voilà, on a 8 Mo de mémoire swap en plus... Mais comme dirait Remy Card, le swap ... hem ... Linux ... je me demande s'il en a réellement besoin. Moi j'ai mis 100 Mo sur ibp, une fois il y a écrit 100 Ko, et depuis plus rien. Les syncs ont été rajoutées par Mahdi Nadir mahdi@netliberte.org car sinon il y a un problème avec les gros fichiers de swap.

Comment formater une disquette au format ext2

C'est bien plus pratique de sauvegarder ses fichiers de config sur une disquette Linux que Dos. Mais voilà, le débutant ne sait pas forcément le faire. Voici les commandes a taper :

mkfs.ext2 /dev/fd0 (pour a:)
mount /dev/fd0 /floppy
cp ... /floppy
umount /floppy

Comment faire une disquette de boot

C'est tout simple

cat /boot/kernel > /dev/fd0

Ou alors

dd if=image of=/dev/fd0 bs=512 conv=sync ; sync

N'oubliez pas de mettre une diquette dans le lecteur. Attention, parfois il faut faire un rdev... man rdev pour plus d'infos.

Dupliquer deux disques dur ou simplement faire une sauvegarde

Exemple vous avez deux durs, sur le premier plante95 et sur le second Linux. Mais voilà, c'est la troisième fois cette nuit que vous installez plante95 car DirectZ.6.Apha.Beta fait une registry base error. Agacez, vous prenez pour la quatrième fois les 15 CD-Roms fournis avec la machine, drivers de la SB ... Dix reboot plus loin plante95 est stable (enfin je me comprends) tout est ok. Voici la soluce. Faites une image de ce disque dur sur votre dur Linux avec la commande suivante :

cat /dev/hda | gzip -9 > image.gz

Cela prend longtemps, donc muni toi de café et de cigarettes. Voilà, maintenant, à chaque plantage de plante95 il suffit de faire un :

zcat image.gz > /dev/hda

Plus de fdisk, de format c: de install... vous retrouverez tout dans l'état initial au moment de la sauvegarde. Vous allez me dire oui mais le titre c'était dupliquer deux disques dur ???? Et oui j'ai eu le cas récement : je devais installer 10 postes identiques ayant les meme disques dur. Il suffit alors d'installer une machine, de faire une image et de la balancer sur les 9 durs restants. J'ai même graver l'image obtenue, comme ca en cas de plantage en 1 demi heure tout repart. Cela peut également fonctionner pour des partitions à condition quelles soient identiques et sur des disquettes formatées à n'importe quelle sauce.

Attention ! Tout de même faites gaffe a ce que vous faites. C 'est une copie secteur par secteur. Donc il ne faut pas, par exemple, passer le fichier image.gz a un pote et lui dire d'essayer... S'il n'a pas le même disque dur que toi, même marque et modèle, son disque ira rejoindre le cimetière des disques dur.

Vérifier les connexions réseau entrantes

Cet article est surtout réservé aux paranos. Une fois votre joli Linux installé, et une connexion réseau vers Internet établie, vous pouvez faire un telnet, ftp, sur votre machine depuis l'extérieur (si du moins vous n'avez pas installé un firewall). Ex: je me connecte via ppp a mon provider Internet. J'envois un mail avec netscape à Pat. Lui, de son coté, regarde le header du mail, note mon adresse ip et fait un telnet direct sur ma bécane. Oui mais, lui seul connait mes mots de passe et je lui fait confiance. Si vous tombez sur un pirate, il peut essayé de cracker vos mots de passe. La solution est d'utiliser un fichier dans lequel on stocke tous les appels reseau sur votre machine, afin de pouvoir vérifier que tout va bien. Pour cela il suffit de mettre quelque chose comme ceci dans /etc/host.allow

ALL : ALL@ALL : spawn = (/bin/echo `date` %c granted connection to %d >> /var/log/incomming)

Idem dans /etc/host.deny. Et en inspectant ce fichier, on retrouve des traces du style :

Thu Apr 23 13:16:40 MET DST 1998 root@192.168.1.2 granted connection to in.telnetd

Cela peux également être fait via syslog en ajoutant dans /etc/syslog.conf :

authpriv.* /var/log/incomming

D'ailleurs, je viens de me rendre compte que cela était fait par defaut sous la Red Hat 4.x et pas sur la slack ...

Changer les messages d'acceuil

Red Hat Linux release 5.0 (Hurricane)
Kernel 2.0.32 on an i586
p133 login:

Ca vous dit quelque chose ça, non ? Si l'on veut le changer, il suffit de changer le fichier /etc/issue. Oui mais voilà, si vous avez une Red Hat, ce fichier est généré à chaque boot par le script /etc/rc.d/rc.local (à la fin) :

echo "" > /etc/issue
echo "Red Hat Linux $R" >> /etc/issue
echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
cp -f /etc/issue /etc/issue.net
echo >> /etc/issue

Donc, pour mettre quelque chose de plus fun, c'est là qu'il faut le faire. De plus, lorsque c'est un accès telnet, c'est le fichier /etc/issue.net qui est concerné. Comme tu peux le constater, ces deux fichiers sont identiques sur une Red Hat, mais cela n'est pas obligatoire.

Une image de fond aléatoire sous X

Bon, sous X, avoir une image de fond c'est assez sympa, donc nombreux sont ceux qui ajoutent une ligne du type :

xv -root -quit -max linux.jpg &

dans leur .xinitrc (le -max c'est pour ne pas l'avoir en mosaique). Mais voilà, à la longue, c'est un peu chiant d'avoir toujours la même, alors le flag -random vient à la rescousse !

xv -root -quit -max -random ~/image/*jpg &

Deux adresses IP pour une seule carte Ethernet

Linux peut gérer jusqu'à quatre cartes réseaux, mais dans certains cas précis il est parfois utile de pouvoir utiliser deux adresses IP sur une même carte réseau (d'où le titre de cette astuce :) Pour ce, nous allons utiliser les alias :

On commence par charger le module ip aliases et dans /etc/sysconfig/network-scripts, on définie une autre adresse en duplicant eth0 en eth0:1

Ensuite on reboot (arrgh!) puis ifconfig pour voir ...

Core

Pour savoir d'où vient un fichier core généré par une erreur de programme, tapez "size core" et vous verrez apparaître :

text data bss dec hex filename
45056 295036 0 340092 5307c core (core file invoked as ...)

Ancien répertoire

Dans le shell Bash, pour revenir au répertoire précédent, tapez simplement cd -

Des espaces dans les noms

Il est possible de mettre des espaces dans les noms de fichier. Il suffit pour cela, de mettre des guillemets.
Exemple : echo "bonjour !" > "un espace.txt"

Man -> PS

Pour obtenir une sortie des pages man de Linux vers un fichier Postscript, tapez man -t machine > machine.ps

Le pavé numérique

Si vous aimez avoir le pavé numérique (num lock) activé au démarrage, tapez :

INITTY=/dev/tty[1-8]
for tty in $INITTY; do
setleds -D +num < $tty
done

Mieux profiter de lftp

Vous avez sûrement déjà remplacer le vieillissant ftp par lftp, qui offre beaucoup plus de fonctionnalités. Mais par défaut, le client n'est vraiment pas parlant. En cas de problème, il ne vous indiquera rien. Pour remédier à ce petit inconvénient, avant de vous connecter sur un ftp, tapez la commande debug 3 (pour les différents niveaux de debug, référez vous à la man page). Dans le cas où vous voudriez vous connecter en mode actif, vous avez le choix entre deux commandes. La première, pour lancer directement lftp dans ce mode : lftp -e "set ftp:passive off". La seconde, en étant déjà sous lftp : set ftp:passive-mode 0.