Table des matières

Linux

Bépo

Pour avoir du bépo dès grub

http://bepo.fr/wiki/Console_GNU/Linux

claviers :

xorg

Ça se passe dans les préférences de clavier

grub

Dans /etc/default/grub

# ajout d'après http://bepo.fr/wiki/Console_GNU/Linux
GRUB_TERMINAL_INPUT=at_keyboard

Dans /etc/grub.d/40_custom

# Aj DC (http://bepo.fr/wiki/Console_GNU/Linux)
insmod keylayouts
# faut d'abord générer ce fichier bepo.gkb, avec (en root), et le mettre dans la partition racine
# (pas dans /boot s'il est séparé)
# ckbcomp fr bepo | grub-mklayout -v -o /root/grub/bepo.gkb
keymap /root/grub/bepo.gkb

console single mode

Dans une console sous X, c'est X qui décide, mais en single mode faut avoir fait un

# choisir UTF-8 puis dvorak puis dvorak french bepo
# (pas la variante UTF-8 qui déclenche une erreur sous stretch)
dpkg-reconfigure console-data

keymap

Et pour mettre <> en accès direct faut modifier /usr/share/X11/xkb/symbols/fr (cf http://bepo.fr/wiki/Trucs_et_astuces)

debian install sans cd

Il faut juste avoir un grub qui marche déjà, récupérer l'initrd.gz et le vmlinuz nécéssaire au 1er boot (par exemple sur http://debian.osuosl.org/debian/dists/etch/main/installer-i386/current/images/netboot/debian-installer/i386/), et ajouter dans le menu du grub qui marche (remplacer (hd0,0)/boot/newinstall/ par le bon chemin).

title  Debian Install
kernel (hd0,0)/boot/newinstall/vmlinuz root=/dev/ram0 ramdisk_size=12000
initrd (hd0,0)/boot/newinstall/initrd.gz

cf http://www.us.debian.org/releases/stable/i386/ch05s01.html.fr#boot-initrd

Avec une clé USB, c'est simple aussi (cf http://wiki.debian-facile.org/wiki/doku.php?id=manuel:installation:installusb), pour une lenny, avec la clé dans /dev/sdf

wget http://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz
wget http://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-506-i386-netinst.iso
zcat boot.img.gz > /dev/sdf
mount /dev/sdf /mnt/test
cp debian-506-i386-netinst.iso /mnt/test
umount /mnt/test

Y'a plus qu'à booter sur la clé…

Dans cette exemple, la clé se retrouve avec 256Mo, ça doit être possible de partitionner la clé avant et de faire un zcat boot.img.gz > /dev/sdf1 pour pouvoir mettre une iso + grosse sur /dev/sdf2 (pas testé)

Clé USB live

cf http://live.debian.net/manual/current/html/live-manual/the-basics.fr.html

Pour créer une clé bootable avec un installer et un environnement complet

mkdir debian-live-64
cd debian-live-64/
# pour une clé usb, le bootloader est forcément isolinux, et il ne supporte que ntfs en --binary-filesystem 
lb config --clean --apt apt --binary-images iso-hybrid --binary-filesystem ntfs --debian-installer cdrom --distribution wheezy --debian-installer-gui true --bootappend-live "locales=fr_FR.UTF-8 keyboard-layouts=fr" --updates true --backports true
 
# en root
lb build
 
# #using-usb-extra-space
# On branche la clé, df ou mount pour vérifier le X de /dev/sdX, ATTENTION à pas se gourer !
# en la laissant montée
cp binary.hybrid.iso /dev/sdX
# pour créer une 2e partition
gparted ${USBSTICK}

Gestion des paquets debian

quelques exemples

On peut combiner ça, par exemple pour voir pourquoi les paquets marqués auto sont installés :
aptitude search -F ”%p“ ~i~M | while read p; do echo -e “\n$p”; aptitude why $p; done;
ou pour voir ceux qui ne sont là “que” par recommandation
aptitude search -F ”%p“ ~i~M | while read p; do aptitude why $p; done |grep Recommends (long et gourmand)

Marquer tous les libXX en auto : aptitude -F ”%p“ search ^lib~i\!~M > list; aptitude markauto $(<list); rm list

récupérer la liste des paquets pour réinstall à l'identique

# on récupère la liste aptitude -F "%p" search ~i\!~M > liste

et sur l'autre machine on installe tous ces paquets aptitude install $(<liste) (de Gilles Mocellin via debian-user-french _ad_ lists.debian.org)

Pour avoir cette liste depuis un backup qui ne tourne pas, on peut faire

dpkg --admindir=/path/to/backup/var/lib/dpkg -l

(merci à Roberto C. Sánchez de la liste debian-user-french _ad_ lists.debian.org)

backports

Cf http://backports.debian.org/

package pinning

Depuis que les backports sont officiels, le package pinning n'est plus très utiles (et y'a parfois des pbs de libc entre une version et la suivante qui rend le pinning impossible sans recompilation, du coup il vaut mieux récupérer ponctuellement des sources et les reconstruire avec apt-build par ex), je laisse ça là pour mémoire

Le pinning ou comment mélanger les debian stable/testing/unstable en limitant les risques

Package: *
Pin: release a=testing
Pin-Priority: 990
 
Package: *
Pin: release a=unstable
Pin-Priority: 99

d'après http://www.bxlug.be/articles/194 (vu ailleurs aussi)

Rmq : un attribut intéressant, le o=Debian pour préciser l'origine debian des paquets (pour les distinguer par exemple de o=dotdeb), et une commande pour voir les attributs des différentes sources :
for f in /var/lib/apt/lists/*Release; do echo "$f :"; cat $f; echo; done;

sources.list et préférences apt

Mon sources.list lenny (en squeeze on mettra plutôt les ajouts dans des /etc/apt/sources.list.d/truc.list)

deb http://mir2.ovh.net/debian/ lenny main contrib non-free
deb-src http://mir2.ovh.net/debian/ lenny main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb ftp://ftp.debian-multimedia.org lenny main non-free

# backports devenu officiel, cf http://backports.debian.org/
# on prend le mirror debian.netcologne.de en ftp
deb ftp://debian.netcologne.de/debian-backports/ lenny-backports main contrib non-free

et dans /etc/apt/apt.conf (pour squeeze on mettra ça plutôt dans un fichier de /etc/apt/apt.conf.d/, par ex 80no_reco_ni_sugg pour passer après les autres)

// on veut pas des recommandés ou suggérés
APT::Install-Recommends "0";
APT::Install-Suggests "0";

Et pour /etc/apt/preferences (en squeeze préférer des fichier comme /etc/apt/preferences.d/openoffice)

Package: openoffice.org openoffice.org-gnome
Pin: release a=lenny-backports
Pin-Priority: 999

Rq: on ne peut pas utiliser de wildcard ici, faut lister tous les paquets. Comme c'est fastidieux, pour les avoir tous on pourra lancer par ex

aptitude -t lenny --disable-columns -F "%p" search 'openoffice.org-'|tr '\n' ' '

Création de paquet debian

Pour faire des paquets plus proprement qu'avec checkinstall (à la sauce debian pour de vrai), cf http://www.catapulse.org/articles/view/81, http://boisson.homeip.net/faireunpaquet.html, http://alp.developpez.com/tutoriels/debian/creer-paquet/, http://fr.wikipedia.org/wiki/Utilisateur:Sbrunner/Cr%C3%A9ation_de_paquets_Debian et bien sûr la doc officielle pour faire tout bien comme il faut http://www.debian.org/doc/manuals/maint-guide/ch-start.fr.html

transfert de clés gpg

Pour exporter ses clés : gpg --export -o fichier
et on récupère avec gpg --import fichier

modif image iso

cf http://linux.jpvweb.com/imageiso.html

et un autre tuto détaillé sur la gravure http://www.labo-linux.org/articles-fr/la-gravure-sous-linux/gravure-de-dvd

SysRq

cf http://aplawrence.com/Words2005/2005_04_13.html

The “Magic Sysrequest key” is Alt (left or right Alt key) and Sysrq (up there under Print Screen, next to F12 on most keyboards). To use it, you need to have it enabled in your kernel (CONFIG_MAGIC_SYSRQ). It usually is; if you have a file called '/proc/sys/kernel/sysrq' you have this. To ENABLE the magic functions, you need a “1” in that file. If it has 0, Alt-SysRq just returns you to the previous console you were using.

If you have this enabled, it can be useful in the case where the system has escaped your control and nothing else is working. The following sequence may be better than just hitting the power button:

I can remember that with “So Everything Is Unusual - Boot!”

Un billet sur le mirroring de dépots (ubuntu, mais idem pour debian), pour une install ailleurs sans adsl : http://blog.racoon97.net/index.php?2007/04/07/90-installer-ubuntu-sans-connexion-internet-a-partir-des-depots-sur-un-disque-dur-externe

Raccourcis clavier

Mac OS X

Le reste sur http://www.prendreuncafe.com/blog/post/2007/05/19/Petit-pense-bete-des-raccourcis-Mac-OS-X

screen

http://www.amitu.com/blog/2004/12/screen-howto.html

sudo

Juste un exemple de /etc/sudoers, plus rapide qu'un long discours

# des alias de commandes
Cmnd_Alias NET=/sbin/ifconfig,/usr/sbin/iftop,/usr/bin/gnome-ppp
Cmnd_Alias HALT=/sbin/halt,/sbin/reboot
Cmnd_Alias OTHERBIN=/usr/bin/ionice,/usr/bin/renice,/usr/bin/truecrypt

# et on donne le droit au user daniel d'exécuter depuis n'importe quel host (ALL), 
# en tant que root et sans mot de passe les commandes suivantes
daniel ALL=(root) NOPASSWD:NET,NOPASSWD:HALT,NOPASSWD:OTHERBIN

# et on donne le droit aux users du groupe adm d'exécuter ces commandes en root
# (mais ils devront fournir leur mot de passe)
%adm ALL=(root) NET,HALT,OTHERBIN

iptables

Pour se simplifier iptables : http://firehol.sourceforge.net/commands.html, avec un exemple de port forwarding http://mel.icious.net/blog/2007/07/10/give-me-a-reason-to-stop-playing-with-your-heart/

D'autres utilitaires pour iptables http://wiki.debian.org/Firewalls

howto iptables http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

exemples

iptables -t nat -A POSTROUTING -s ip.privee.de.la.vm -o vmbr0 -j SNAT --to ip.publique.a.utiliser
iptables -t nat -A PREROUTING -p tcp -d ip.publique --dport $port_ip_pub -j DNAT --to-destination ip.privee.de.la.vm:$port_ip_privee

(on peut aussi ajouter -i $interface si on veut se limiter à cette interface)

Et pour virer ces règles, remplacer le -A par -D

tunnel ssh

explications tunnels ssh http://www.institut.math.jussieu.fr/informatique/tunnel/tunnel_ssh.html

Port local redirigé vers ailleurs

ssh -f -N -L $localPort:$destServer:$destPort $user@$sshServer (souvent, $sshServer et $destServer sont identiques, mais c'est pas obligé, et c'est même pratique pour rerouter un port vers une machine sur laquelle on a pas de compte ssh, le tunnel étant entre la machine locale et $sshServer)

Pour garder la connexion active, même sans traffic, ssh -o ServerAliveInterval=300 -f -N -L $localPort:$destServer:$destPort $user@$sshServer (envoie un ~ping toutes les 5min).

Port distant redirigé vers ailleurs

ssh -f -N -R $remotePort:$destServer:$destPort $user@$remoteServer

Redirection IP

S'il n'y a pas besoin de chiffrer les communication, c'est bcp plus simple de rediriger le trafic avec iptables (source utilisée)

# vérifier que ça répond 1
cat /proc/sys/net/ipv4/ip_forward
# exemple en redirigeant le trafic arrivant sur le port 80 vers $newIP
iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination $newIP
iptables -t nat -A POSTROUTING -p tcp -d $newIP –dport 80 -j MASQUERADE

label disques

uuid

Si vous utiliser les uuid (dans grub2 par ex, ou dans votre fstab), et que vous faites des backup restaurations avec partimage, vous pouvez vous retrouver avec 2 partitions ayant le même UUID (sdaN backupée et restaurée sur sdbM), et là c'est pas terrible ;-)

Mais ça peut s'arranger (http://doc.ubuntu-fr.org/uuid_et_label#modifier_manuellement_l_uuid_d_un_systeme_de_fichiers)

# pour voir les uuid (et les labels)
blkid
# ls -l /dev/disk/by-uuid/ donne les mêmes infos
# on a sda3 et sda5 avec le même UUID, on en veut un nouveau pour sda5
# on en génère un avec uuidgen
newu=$(uuidgen)
echo $newu #pour voir ;)
# puis on l'affecte à sda5 avec tune2fs
tune2fs -U $newu /dev/sda5

(penser à modifier /boot/grub/grub.cfg et /etc/fstab en conséquence)

nb montages avant check disque

Backup simple d'une partition

simplement avec dd if=/dev/sdX | gzip > /mnt/backup/bkp_sdX_avec_dd.gz, que l'on récupère (sur la même machine) avec zcat /mnt/backup/bkp_sdX_avec_dd.gz | dd of=/dev/sdX

Ça marche d'une machine à l'autre sur des partitions de même taille, si le /dev/sdX cible est plus grand que l'origine, ça fait de la place perdue, et s'il est plus petit je sais pas trop, mais je déconseillerais ;-)

Pour faire des images de partitions restaurables sur d'autres partitions de taille différentes, utiliser plutôt partimage.

Manipulation MBR

MBR : Master Boot Record, c'est ce qui permet d'appeller le lanceur de l'OS, grub, lilo ou celui de windows).

Normalement, c'est le bootloader du 1er disque (le 1er déclaré dans le bios) qui est lu, et s'il est vide celui de la partition active de ce disque. Pour ceux qui ont plusieurs OS et veulent conserver à chacun son bootloader, ça peut être pratique de le mettre dans le MBR de la partition de boot (/boot plutôt que / si c'est différent) de l'OS concerné, histoire d'être sûr qu'il se fera pas écraser par le bootloader d'un autre OS installé ensuite. Reste ensuite, éventuellement, à mettre un bootloader sur le disque complet qui ne fait que du chaînage vers les différents bootloader des différents OS sur leur partitions respectives).

Par ex un linux sur sda1 avec son grub sur sda1, un autre linux sur sdb3 avec son grub2 sur sdb3, et un grub (ça marche même si les partitions changent de taille, mais pas si son menu.lst disparait) ou un lilo (n'a pas besoin de menu.lst mais ne marchera plus si les partitions sont plus à la même place) sur sda qui ne fait que du chainloader +1 vers sda1 ou sdb3.

Pour sauvegarder le MBR (446 octets de bootloader + 64 octets de table des partitions + 2 octets de signature, cf http://www.cyberciti.biz/faq/howto-copy-mbr/)

# sauvegarde du MBR de sda (COMPLET car 512 octets, prendre 446 pour bootloader only)
dd if=/dev/sda of=/mnt/bkpdisk/mbr-sda.bak bs=512 count=1
# récup du MBR complet de sda
dd if=/mnt/bkpdisk/mbr-sda.bak of=/dev/sda bs=512 count=1
# recup du bootloader only (sans table des partitions) que l`on met sur un autre disque (sdb)
dd if=/mnt/bkpdisk/mbr-sda.bak of=/dev/sdb bs=446 count=1

Et pour effacer un MBR (le bootloader mais pas les partitions), on met juste des 0 dedans avec

dd if=/dev/zero of=/dev/sdX bs=446 count=1

Créer une partition chiffrée

Pour créer un volume lvm (ici toto dans vg3) et une partition chiffrée avec luks dedans (cf http://www.debian-administration.org/articles/469)

# le volume
lvcreate -n toto --size 200G vg3
 
# On le chiffre (ça efface tout s’il y avait qqchose dedans)
cryptsetup luksFormat /dev/vg3/toto
 
# On l’ouvre en lui donnant un nom (ici toto aussi, mais ça peut être ce que l’on veut)
cryptsetup luksOpen /dev/vg3/toto toto
# On a alors un /dev/mapper/vg3-toto qui est le volume lvm
# et un /dev/mapper/toto qui est le volume luks (et pourrait avoir un autre nom)
 
# On peut créer un filesystem dedans
mkfs.ext4 /dev/mapper/toto
 
# et le monter normalement
mount /dev/mapper/toto /toto

Redimensionner un volume luks

Cf http://www.gigahype.com/resize-luks-encryped-lvm-partition/

# On démonte
umount /dev/mapper/toto
 
# On check
fsck.ext4 -f /dev/mapper/toto
 
# On ferme le volume luks
cryptsetup luksClose toto
 
# On agrandit le volume lvm
lvextend -L +20G /dev/vg3/toto
# idem lvextend -L +20G /dev/mapper/vg3-toto
 
# On rouvre luks
cryptsetup luksOpen /dev/vg3/toto toto
 
# resize luks
cryptsetup --verbose resize toto
 
# On peut vérifier le fs si on est méfiant
fsck.ext4 -f /dev/mapper/toto
 
# et le monter
mount /dev/mapper/toto /toto

Montage de partitions chiffrées

Pour monter une partition chiffrée avec luks (le système de chiffrement proposé par debian à l'install), bien utile pour de la maintenance quand on boot sur usb (pour modifier les tailles de partitions, les backuper, etc.).

Attention, ici c'est un volume luks, sur une partition physique, qui contient des lv (ce que fait l'installeur debian), plus haut on parlait de lv qui contiennent du luks, les deux sont possible (mais pour avoir du luks dans un lv, il faut avoir un système qui tourne et a lancé lvm avant).

# on crée le device mapper qui va bien (nommé ici "crypt") pour sda2 (par ex)
crypsetup luksOpen /dev/sda2 crypt
# ça crée un /dev/mapper/crypt
# si c`est du lvm dedans 
vgscan
# doit suffire à retrouver les volumes, suffit de vérifier avec 
lvdisplay
# mais faut encore les rendre actifs (créer les /dev/vg/lv qui vont bien)
vgchange -ay
# et ensuite on peut les monter normalement

Raid soft

Un peu de doc et des liens sur isalo et linuxpedia

mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sda1 /dev/sdb1

mdadm –detail –scan –verbose, cat cat /proc/mdstat donne aussi des infos utiles (UU ⇒ 2 disques en Usage, OK)

mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1 (si y'a du lvm dedans, faudra probablement lancer des pvscan et vgscan + activation des lv avec vgchange -ay)

cp -a /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.$(date '+%F').bak && mdadm –detail –scan –verbose > /etc/mdadm/mdadm.conf

mdadm –manage /dev/md0 –remove /dev/sdb1

mdadm –manage /dev/md0 –add /dev/sdb1

sensors

Avec un Carte mère Asus P5QL pro, sensors ne détecte que la température des 4 cœurs du CPU, avec un petit w83627ehf force_id=0x8860 ça va nettement mieux, merci à cet |article qui reprenait cette info.

Pb de connexion ssh

Depuis buster, j'ai régulièrement des connexions ssh qui échouent (il n'utilise pas la clé et me demande un pass), lancer

gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg,ssh

règle le pb (il me demande alors bien le pass de la clé à utiliser)