Table des matières
Linux
Bépo
Pour avoir du bépo dès grub
http://bepo.fr/wiki/Console_GNU/Linux
claviers :
- redox ou ergodox chez falbatech (~300€)
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
- doc aptitude pour les pattern de recherche https://www.debian.org/doc/manuals/aptitude/ch02s04s05.fr.html#exampleSearchEqual
- d'autres exemples sur http://doc.ubuntu-fr.org/aptitude#motifs_de_recherche_utilisation_avancee
quelques exemples
truc ~i
paquets dont le nom contient “truc” qui sont installés,?name(truc) ~i
est équivalent et recommandé (mais le raccourci est quand même pratique)?exact-name(apt)
pour avoir apt mais pas apt-get ni aptitude~c
configurés et pas installés (y'a eu install puis remove sans purge)aptitude search '!?origin(debian) ~i'
pour voir tous les paquets non debian (dotdeb, mongo, nginx & co)~o
pour les paquets obsolètes (qui ne sont pas dans les dépôt actuels), en général les deb installés localement, mais ça peut être un ancien paquet installé sorti de debian depuisaptitude search '?narrow(?installed, !?archive(stable))'
trouver tous les paquets installés qui ne sont pas dans stable (de toutes origines)aptitude -F “%p” search “$pattern”
-F pour le formatage de sortie, on ne veut que les noms de paquets- ~i ⇒ les paquets installés
- !~M ⇒ mais pas les paquets automatiquement installés (on peut mettre '~i!~M' au lieu de ~i\!~M, mais attention de ne pas quoter avec “ sinon bash va interprêter le !)
?depends(python) ~i
tous les paquets qui dépendent de python- ?for permet du récursif
?for x: ?depends(?recommends( ?=x ) ) ~i
pour lister les paquets installés qui ont en dépendance un paquet qui le recommande (pas d'une utilité folle, mais c'est un exemple)
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
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
- mettre les sources testing et unstable dans le sources.list
- créer un fichier /etc/apt/preferences avec par ex (ici pour favoriser testing)
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.
- 'r' - Turns off keyboard raw mode and sets it to XLATE.
- 'k' - Secure Access Key (SAK) Kills all programs on the current virtual console. NOTE: See important comments below in SAK section.
- 'b' - Will immediately reboot the system without syncing or unmounting your disks.
- 'o' - Will shut your system off (if configured and supported).
- 's' - Will attempt to sync all mounted filesystems.
- 'u' - Will attempt to remount all mounted filesystems read-only.
- 'p' - Will dump the current registers and flags to your console.
- 't' - Will dump a list of current tasks and their information to your console.
- 'm' - Will dump current memory info to your console.
- '0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
- 'e' - Send a SIGTERM to all processes, except for init.
- 'i' - Send a SIGKILL to all processes, except for init.
- 'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system will be non-functional after this.)
- 'h' - Will display help (actually any other key than those listed above will display help. but 'h' is easy to remember
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:
- Alt+SysRq+s - sync the disk
- Alt+SysRq+e - try to nicely kill processes (wait a little bit here)
- Alt+SysRq+i - no more mister nice guy
- Alt+SysRq+u - unmount disks (wait a bit here, too)
- Alt+SysRq+b - reboot
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
- | → shift + alt + L
- { → alt + (
- [ → alt + shift + (
- \ → alt + shift + :
Le reste sur http://www.prendreuncafe.com/blog/post/2007/05/19/Petit-pense-bete-des-raccourcis-Mac-OS-X
screen
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
- Pour bloquer une ip, c'est
iptables -A INPUT -s ip.un.peu.louche -j DROP
, - et pour la débloquer c'est
iptables -D INPUT -s ip.un.peu.louche -j DROP
- Pour qu'une VM avec une ip privée puisse “sortir” sur internet
iptables -t nat -A POSTROUTING -s ip.privee.de.la.vm -o vmbr0 -j SNAT --to ip.publique.a.utiliser
- Et pour qu'une connexion sur $port_ip_pub arrive sur un port d'une ip privée
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
- donner un label à une partition :
tune2fs -L monlabel /dev/hda1
- monter d'après le label dans fstab :
LABEL=monlabel
(à la place de /dev/… ou UUID=…)
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
- check tous les 90 mounts ou 3 mois (le 1er qui arrive)
tune2fs -c 90 -i 3m /dev/hda1
.
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
- créer un raid1 sur md0 avec les partitions sda1 et sdb1
mdadm –create /dev/md0 –level=1 –raid-devices=2 /dev/sda1 /dev/sdb1
- Voir l'état des raid
mdadm –detail –scan –verbose
, cat cat /proc/mdstat
donne aussi des infos utiles (UU ⇒ 2 disques en Usage, OK)
- récupérer un raid existant non détecté (ex avec le précédent)
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
)
- Après une modif du raid, faut enregistrer la conf pour que ça redémarre correctement au prochain boot
cp -a /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.$(date '+%F').bak && mdadm –detail –scan –verbose > /etc/mdadm/mdadm.conf
- Enlever une partition
mdadm –manage /dev/md0 –remove /dev/sdb1
- Ajouter une partition
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)