J’ai un certain nombre de machines Linux, tant à la maison qu’au bureau ou en datacenters. Ces machines sont répartis dans différents environnements (travail, démonstration, production); donc à des niveaux de criticité différents. Sur chacune de ces machines, je suis généralement tour à tour utilisateur et administrateur.
Pour pouvoir me repérer dans tout ce petit monde, j’utilise quelques astuces, que je vais appliquer à travers cet article à nos chers petits Raspberry Pi.
Le principe est d’avoir un écran d’accueil explicite sur chaque machine, et une couleur de prompt (ou invite de commande) qui permet de visualiser immédiatement QUI l’ont est, et OÙ l’on est. La personnalisation du prompt ne requiert aucun package particulier. Tout se fera dans le .bashrc de chaque profil. Pour les écrans d’accueil, je vais utiliser linuxlogo, dont c’est le métier, et qui connaît les Raspberry Pi, en ce sens qu’il dispose d’un logo dédié. Linuxlogo sera lui-même appelé par ~/.profile.
Bannière
Mise à jour du cache d’Aptitude :
1 |
$ sudo apt-get update && sudo apt-get upgrade -y |
Installation de linuxlogo :
1 |
$ sudo apt-get install linuxlogo |
Par défaut, linuxlogo n’est pas compilé avec le logo Raspberry Pi. Nous allons donc télécharger les sources et le recompiler avec tous les logos.
Téléchargement des sources :
1 |
$ git clone https://github.com/deater/linux_logo |
Recompilation, avec tous les logos (les sorties sont données à titre indicatif et sont susceptibles de changer d’une machine à l’autre).
On descends donc dans le dossier des sources :
1 |
$ cd linux_logo/ |
On configure le build :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
$ ./configure /usr/bin/xgettext /usr/bin/gcc CONFIGURING LINUX_LOGO Detected Architecture: armv6l Detected Operating System: Linux Install prefix: /usr/local Install program: /usr/bin/install xgettext: xgettext libsysinfo: libsysinfo-0.2.2 C Compiler : gcc CFLAGS : -Wall -O2 /usr/bin/gcc /usr/bin/ar CONFIGURING LIBSYSINFO Detected Architecture: armv6l Detected Operating System: Linux C Compiler : gcc AR : ar CFLAGS : -Wall -O2 If cross compiling set the CROSS and ARCH variables Done configuring, run 'make' |
Et on build avec tous les logos :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
$ make logos-all find ./logos -type f > logo_config make all make[1]: Entering directory '/home/dmeziere/linux_logo' gcc -Wall -O2 -Ilibsysinfo-0.2.2 -c parse_logos.c gcc -Wall -O2 -Ilibsysinfo-0.2.2 -o load_logo_native.o -c load_logo.c gcc -o parse_logos parse_logos.o load_logo_native.o ./parse_logos Parsing logos from file "logo_config"... + Added logo ./logos/alternate_oses/irix.logo containing "Irix Logo" + Added logo ./logos/alternate_oses/aix.logo containing "AIX Logo" + Added logo ./logos/alternate_oses/bsd.logo containing "FreeBSD Logo" + Added logo ./logos/alternate_oses/openbsd_banner.logo containing "OpenBSD Logo" + Added logo ./logos/alternate_oses/solaris.logo containing "The Default Banner Logos" + Added logo ./logos/alternate_oses/openbsd.logo containing "OpenBSD Logo" + Added logo ./logos/alternate_oses/bsd_banner.logo containing "FreeBSD Logo" + Added logo ./logos/distributions/slackware.logo containing "Slackware Logo" + Added logo ./logos/distributions/debian-banner.logo containing "Debian Banner (white) " + Added logo ./logos/distributions/pld.logo containing "PLD Linux banner" + Added logo ./logos/distributions/sourcemage.logo containing "Source Mage GNU/Linux large" + Added logo ./logos/distributions/mandriva-banner.logo containing "Mandriva(TM) Linux Banner" + Added logo ./logos/distributions/debian.logo containing "Debian Swirl Logos" + Added logo ./logos/distributions/ubuntu.logo containing "Ubuntu Logo" + Added logo ./logos/distributions/suse.logo containing "SUSE Logo" + Added logo ./logos/distributions/mandrakelinux-banner.logo containing "Mandrakelinux(TM) Banner" + Added logo ./logos/distributions/debian-old.logo containing "Debian Old Penguin Logos " + Added logo ./logos/distributions/sourcemage-banner.logo containing "Source Mage GNU/Linux banner" + Added logo ./logos/distributions/sme.logo containing "SME Server Banner Logo" + Added logo ./logos/distributions/gnu-linux.logo containing "Classic GNU/Linux" + Added logo ./logos/distributions/mandrake-old.logo containing "Mandrake(TM) Linux Banner" + Added logo ./logos/distributions/archlinux.logo containing "The ArchLinux Logo" + Added logo ./logos/distributions/core.logo containing "Core Linux Logo" + Added logo ./logos/distributions/redhat-banner.logo containing "RedHat Banner (white) " + Added logo ./logos/distributions/raspi.logo containing "An ASCII Raspberry Pi logo" + Added logo ./logos/classic-no_periods.logo containing "The Classic Logo, No Periods" + Added logo ./logos/banner.logo containing "The Default Banner Logo" + Added logo ./logos/classic.logo containing "The Default Classic Logo" + Added logo ./logos/classic-no_periods_or_chars.logo containing "Classic No Dots Or Letters" + Added logo ./logos/banner-simplified.logo containing "Simplified Banner Logo" Compiling for Linux Edit defaults.h to change Default Values gcc -Wall -O2 -Ilibsysinfo-0.2.2 -DLOCALE_DIR="/usr/local/share/locale" -DUSE_I18N=1 -c linux_logo.c gcc -Wall -O2 -Ilibsysinfo-0.2.2 -c load_logo.c cd libsysinfo-0.2.2 && make make[2]: Entering directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2' cd all && make make[3]: Entering directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2/all' gcc -Wall -O2 -I.. -c bogomips.c gcc -Wall -O2 -I.. -c fix_mhz.c gcc -Wall -O2 -I.. -c parsing.c gcc -Wall -O2 -I.. -c sysinfo_common.c gcc -Wall -O2 -I.. -c uname.c make[3]: Leaving directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2/all' cd Linux && make make[3]: Entering directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2/Linux' gcc -Wall -O2 -o cpuinfo.o -c cpuinfo_arm.c gcc -Wall -O2 -c sysinfo_linux.c make[3]: Leaving directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2/Linux' ar crus libsysinfo.a ./Linux/*.o ./all/*.o make[2]: Leaving directory '/home/dmeziere/linux_logo/libsysinfo-0.2.2' gcc -o linux_logo linux_logo.o load_logo.o -Llibsysinfo-0.2.2 ./libsysinfo-0.2.2/libsysinfo.a cd po && make make[2]: Entering directory '/home/dmeziere/linux_logo/po' xgettext --default-domain=linux_logo --add-comments --keyword=_ --keyword=S_ ../*.c ../*.h; if cmp -s linux_logo.po linux_logo.pot; then rm -f linux_logo.po; else mv linux_logo.po linux_logo.pot; fi msgfmt -o da.mo da.po msgfmt -o de.mo de.po msgfmt -o es.mo es.po msgfmt -o fr.mo fr.po msgfmt -o nb.mo nb.po msgfmt -o nl.mo nl.po msgfmt -o it.mo it.po msgfmt -o pl.mo pl.po msgfmt -o pt_BR.mo pt_BR.po msgfmt -o ru.mo ru.po msgfmt -o sv.mo sv.po msgfmt -o uk.mo uk.po msgfmt -o zh_TW.mo zh_TW.po make[2]: Leaving directory '/home/dmeziere/linux_logo/po' make[1]: Leaving directory '/home/dmeziere/linux_logo' |
Nous pouvons maintenant tester tout cela et visualiser la future bannière d’accueil de notre Raspberry Pi :
1 |
$ ./linux_logo -L raspi |
Nous allons ensuite localliser l’emplacement par défaut de »linuxlogo » :
1 |
$ which linuxlogo |
Et l’écraser avec notre version fraîchement compilée :
1 |
$ sudo cp ./linux_logo /usr/bin/ |
Le message d’accueil d’une Raspberry Pi sous Raspian est géré par défaut par »~/.profile » pour les sessions SSH. Nous allons donc l’y ajouter à la fin :
1 2 3 4 5 |
$ linux_logo -L raspi echo '' |
Note: J’aime bien l’option »-f » de linux_logo, qui vide l’écran avant d’afficher la bannière. C’est une question de goût.
Vous pouvez tester la bannière d’accueil en fermant puis en rouvrant votre session SSH.
Invite de commande
Le format du prompt est défini dans le fichier ~/.bashrc. Il s’agit de la variable PS1, qui, sous Raspian, vaut par défaut :
1 |
C’est à dire, pour faire simple utilisateur@machine:chemin ; le tout en vert.
Pour pouvoir me repérer entre toutes mes machines, j’ai pour habitude de mettre :
- Le nom d’utilisateur en bleu, ou en rouge s’il s’agit de root,
- Le nom de la machine en vert, jaune, ou rouge selon son niveau de criticité (vert pour une dev ou integ, jaune pour une ou recette ou préprod, rouge pour une prod),
- Le chemin en violet pour bien le détacher du reste.
Pour se faire je modifie le .bashrc de chaque utilisateur de cette manière :
1 |
Où :
- »�33[00;34m » est la séquence d’échappement du bleu pour les utilisateurs non root;
- »�33[00;37m » celle du gris utilisé pour les séparateurs;
- »�33[00;33m » celle du jaune utilisé pour un nom d’hôte relativement critique (31 pour le rouge, 32 pour le vert);
- »�33[00;35m » celle du violet utilisé pour le chemin.
Nom d’hôte
Le nom d’hôte est le nom réseau de votre machine. Non seulement il est pertinent de le préciser, avec ce que l’on appelle un FQDN (nom de domaine complètement qualifié), par exemple pour y faire fonctionner un serveur web; mais il apparaît aussi sur votre nouvel écran d’accueil et votre prompt.
Indiquer le changement de nom au système :
1 |
$ sudo hostname hote |
Corriger le nom dans ce fichier :
1 |
$ sudo vim /etc/hostname |
Corriger éventuellement aussi le fichier »hosts », pendant local d’un serveur DNS.
1 |
$ sudo vim /etc/hosts |
Localiser ces deux lignes parmis les autres, et corrigez-les comme suit :
1 2 3 |
127.0.0.1 localhost hote.domaine hote 127.0.1.1 hote.domaine hote |
Après redémarrage, vous devez voir le nouveau nom de machine sur l’écran d’accueil et l’invite de commande.