J'ai testé pour vous… les conteneurs systemd (nspawn).
Ça marche à peu près, on sent quand même que c'est tout frais (sous Debian Jessie, systemd 215).
Principalement, problème de conf avec journald, sous Debian apparemment le journal propre à systemd (le binaire) est dans du non-persistant (/run), et donc quand l'unit nspawn persistante cherche à lier les journaux host/guest, entre eux, boum. Il suffit de copier l'unit systemd, mettre "auto" à l'option de journal et zou, le conteneur se lance bien avec un start et machined le voit bien (si on met dans /var/lib/container et pas /var/lib/machines).
Ça a l'air pratique d'un côté d'avoir ça intégré aux outils habituels (journal, unit, …), à voir comment ça évolue, je vais aussi tester un peu plus.
Quand on crée une dummy (ip link add type dummy), il charge automatiquement le module qui va bien. Sauf que le module créée de base dummy0. Et si la commande doit créer dummy0 elle aussi ? Eh bien, elle passe pas. Parce que dummy0 existe déjà ! Donc avant la commande, dummy0 existe pas et… la commande se plaint que dummy0 existe déjà :)
Pratique aussi pour aptitude -f install quand on est dans un chroot sur une machine qui boot plus.
Virer initctl :
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
Remettre :
rm /sbin/initctl
dpkg-divert --local --rename --remove /sbin/initctl
"On a BIOS/GPT configuration a BIOS boot partition is required. GRUB embeds its core.img into this partition."
Oui bref donc une seule partition pour tout le RAID5, ça passe pas. Heureusement, GPT demande apparemment 2048 secteurs vides pour aligner au début. Si on savait pas et qu'on a la flemme de refaire toute l'installation, on peut créer une mini-partition là-dedans (dans l'espace d'alignement), qui commence au secteur 63 et finit au 2047, en mettant le flag type qui va bien (4 dans fdisk). GRUB peut alors enfin poser tout ce dont il a besoin pour charger un empilement RAID/LVM.
Donc procédure complète de resize (agrandissement) de VM sans rebooter, avec ou sans LVM et avec ext4 (qui supporte l'agrandissement à chaud) :
Basé sur ce post, ici une ligne pour ajouter quelque chose dans le rc.local automatiquement en dernier (donc avant la dernière ligne qui a exit 0).
sed -i '$!{p;d;};i'"$COMMAND" /etc/rc.local
Pour éviter que dpkg pose des question ou les préconfigurer à l'avance. Pratique. Il y a aussi debconf-show.
Exemple :
debconf-set-selections <<< "debconf grub-pc/install_devices string /dev/vda"
… et oui ça marche, avec gdb on peut apparemment call une fonction, donc close(). Donc quand on a un bout de code mal foutu qui leak des FDs et qu'on a pas trop d'idée de comment le fix (pour le moment), on peut s'amuser et feel le power en les lui closant à la gueule directement en live. :)
Il faut le pid du programme en question (ça vous savez tous le trouver), et un fichier de commandes gdb pour pas se palucher à la main tous les 1023 - 3 FD. Attention bashisme ! :P
for ((i=3; i<=1023; i++)); do echo "call close($i)"; done > fixfds.gdb
gdb -p 4242 --command=fixfds.gdb --batch
Ah et pour voir les FDs ouverts, il suffit de regarder dans /proc/<pid>/fd
Bon alors moi naïvement je croyais que hosts.{deny, allow} c'était un truc global au système, utilisé par la libc par exemple (comme resolv.conf quoi). Hé bin non. Uniquement par la libwrap des TCP wrappers.
Au moins apparemment sur RH-like, on a droit à un commentaire bien explicite au début de ces fichiers, sur du Debian j'ai rien vu d'évident, y compris dans le man hosts_access.
un mythe s'effondre
… et du coup j'ai repéré de la place libre derrière une de mes partitions trop pleines, et j'ai eu le courage de faire la manip pour l'utiliser. Par contre, j'ai eu le même truc bizarre de bornes/intervalle et dû faire le +1 aussi.
Un petit résumé des snapshot avec libvirt. Il faut dire qu'avec le man j'ai pas compris exactement ce qu'il se passait (quand on avait un snapshot RAM+disque et pas juste disque, ce que sont exactement les "metadata", ce genre de choses). Ici on sait exactement quoi (à la fin, un résumé).
Donc si on veut juste faire un snapshot disque pour pouvoir reprendre plus tard sans s'embêter, il suffit de faire :
snapshot-create <domain>
avec la VM stopped. Le snapshot est alors fait directement dans le qcow, utilisant justement le cow (copy on write). Il y a aussi des snapshots avec RAM, ou dans un qcow séparé (notion de fichier de base + delta) pratique pour backup par exemple.
Pour reprendre à un snapshot :
snapshot-revert <domain> <snapshotname>
Article d'un journaliste (versé dans la technologie) qui explique très bien comment il est passé de Windows à Mac et maintenant au logiciel libre.
Il y a plein d'articles du genre mais je trouve qu'il sait garder la tête froide, avoue qu'il a encore besoin de solutions proprio de temps en temps mais fait souvent le parallèle avec les solutions libres (il mentionne f-droid, openstreetmap, …). Il est aussi soucieux de la tournure que prend cyanogenmod, mais reste confiant qu'il y aura d'autres projets communautaires pour repartir.
Je pense qu'il est aussi lucide de dire « But I’ve given up the idea that free software and open hardware will become the norm for consumers anytime soon, if ever » (alors qu'en tant que libriste on est souvent tenté d'y croire) en ajoutant « we collectively seem to prefer convenience to control » qui est effectivement bien ce que je ressens aussi en discutant avec les autres.
Et de conclure : « Liberty takes some work, but it’s worth the effort. ».
Bref tout ça pour dire que c'est un discours libriste mais qui ne fait pas du tout engagé et donc permet probablement de faire passer le message d'une autre manière que nos discours enflammés habituels :)
Tiens le prochain Linux sera Linux 4.0, pourquoi pas. De toutes façons la numérotation veut rien dire alors allons-y. :)
Ça y est j'ai pris le temps de flasher la fonera qu'on m'avait passé avec un openwrt récent. Le tuto marche bien.
J'avais la flemme de passer par TFTP alors j'ai essayé la méthode d'envoi de l'image en HTTP (oui c'est moche) de la doc sur la fonera-tout-court (pas 2 quoi) et ça passe tout seul.
Le plus dur était d'arriver dans le bootloader (telnet sur le port 9000 ok mais avec timeout de 2 sec). Il faut aussi être très patient, le flash du squashfs a pris quelque chose comme 750 secondes (d'après l'interruption dans le ping).
Les commandes que j'ai exécutées sont donc :
ip_address -h 192.168.1.42
fis init
load -r -v -b 0x80041000 -m http /openwrt-atheros-vmlinux.lzma
fis create kernel
load -r -v -b 0x80041000 -m http /openwrt-atheros-root.squashfs
fis create rootfs
fconfig boot_script_data
fis load -l kernel
exec
reset
Si on a accès au daemon MySQL on peut ignorer tout ce qui est permissions en le lançant avec l'option "--skip-grant-tables". Bon à savoir quand on reprend un MySQL et qu'on n'a pas eu le mot de passe root.
mysqldbcopy, copie d'une database mysql d'un coup, pratique pour faire des tests sans casser la prod. :)
Packagé dans Debian dans le paquet mysql-utilities.
Galère avec Galette (gestionnaire d'adhérents pour asso). À la mise à jour, les accents se sont mis à déconner… en 2015 on n'est toujours pas sortis de ces merdes.
J'ai demandé sur IRC, on m'a renvoyé sur la ML (https://mail.gna.org/public/galette-discussion/2014-11/msg00076.html) et effectivement il y a un thread là-dessus mais orienté Windows, phpmyadmin etc. donc pas top. J'ai donc cherché un peu (2h quoi) et au final, en deux commandes c'était bon (j'avais pas envie de faire de dump mais au final quand même…).
mysqldump -u root -p --skip-set-charset --default-character-set=latin1 galette > galette-dump.sql
mysql -u root -p --default-character-set=utf8 galette < galette-dump.sql
Tout ça pour une double-conversion…
… et quand le serveur en face veut pas de startssl, bah on a quand même besoin de AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS :)
Dans ce rapport il y a aussi une commande super pratique pour debug :
echo blah | exim4 -d+all some@adress
qui permet de faire un run debug en live, sans l'activer dans le daemon. On a donc tout le détail de ce qu'il se passe, sans polluer de log ou devoir reload.
Bah voila des commandes sympa avec exim :)
C'est mignon les trucs comme exiwhat, exiqsumm etc.