Archives de catégorie : Linux

Kubuntu 17.04 to 18.04: hidden empty LVM logical volume, no boot

After the update from Kubuntu 17.04 to 18.04 and a reboot, my system refused to boot and only gave me « emergency mode ». Long story short: for an unknown reason I had an empty volume « pvmove0 » that the new version did not like, and after removing it it worked.

What was in the journal?

I had a look at the system journal with this command (the LANG is to have all messages in English, which is easier to find on the net than French):

LANG="en_GB.UTF-8" journalctl -xb

I had lines like that:

May 04 20:46:05 mymachine lvm[415]: LV pvmove0: has no segment.
May 04 20:46:05 mymachine lvm[415]: Couldn't read all logical volumes for volume group fablvm.

Also, most of the LVM commands could not read the Physical Volume (PV) and the Logical Volumes (LV) on this disk: they told me that the physical volumes did not belong to a Volume Group and they had no size.

The mysterious Logical Volume pvmove0

As Kubuntu 17.10 (on an USB stick) could still read all my PV and LV, I had the idea to backup the Volume Group metadata in Kubuntu 17.10 and restore it from Kubuntu 18.04.

vgcfgbackup -f path/to/my/backup.vg my_vg

Then I looked at the backup file and (holy cow!) I saw that I had an empty Logical Volume called « pvmove0« .

pvmove0 {
 id = "Jp8y0E-RYIU-g4s0-PdUs-LEdo-N110-MLBwmQ"
 status = ["READ", "WRITE", "PVMOVE", "LOCKED"]
 flags = []
 allocation_policy = "contiguous"
 segment_count = 0
}

I searched on the net « pvmove0 » and found that someone had the same problem and remove it by:

  • doing a backup of the metadata (see above)
  • editing the file by removing the pvmove0 section
  • restoring the edited backup with vgcfgrestore.
  • rebooting (and celebrating)

Apparently, having such an empty logical volume breaks things at several levels (among others, the graphical tool system-config-lvm would not start).

Submit songs to Libre.fm with lastfmsubmitd (fork) and Amarok2LibreFM (fork)

Amarok (Linux music player) does not have a native support to submit played songs to Libre.fm. It was possible with the script Amarok2LibreFM for Amarok and the service lastfmsubmitd. But I discovered (March 2018) that it stopped submitting songs. So I modified both of them:

  • lastfmsubmitd: This modified version only submit songs to Libre.fm, but works again (based on pylast library for submitting song).
  • Amarok2LibreFM: Submit the correct song length, and handle a bug that was present in Amarok 2.5 and 2.6.

I suggest the following installation procedure:

  • Download my copy of lastfmsubmitd in a directory in your home.
  • Create a file ~/.lastfmsubmitd/conf with the your name and password like that:
[account]
user = my_account_name_in_lowercase
password = my_password
  • Download my copy of Amarok2LibreFM in this directory: « /home/MY_USER_NAME/.kde/share/apps/amarok/scripts« . So you will have a directory « Amarok2LibreFM » under the directory « script« .
  • Modify the file « Amarok2LibreFM/main.js » so the variable « SUBMIT_CMD » points to your installation of lastfmsubmitd.
  • Find a way to start automatically lastfmsubmitd when you open your session. You can for example do that graphically using the KDE settings, or manually by creating a link « /home/MY_USER/.config/autostart-scripts/lastfmsubmitd » that will point on the lastfmsubmitd script.
  • Just for this time, manually start lastfmsubmitd.
  • Restart Amarok and play a song.

Kubuntu 16.04 à 17.04: mise à jour laborieuse

Danger, La mise à jour de Kubuntu 16.04 à 17.04 peut échouer, ça a été le cas pour moi. Voila les tâches que j’ai eu à faire.

Au redémarrage, plus d’interface graphique et plus de réseau. Comme la résolution ne semblait pas évidente (les logs n’étaient pas parlants, et il se pouvait que des composants systèmes importants aient changé), je suis parti sur une réinstallation (en gardant mon /home). Stratégie:

  • formater les partitions /boot et /tmp
  • créer de nouvelles partitions / et /var en gardant les anciennes de côté (pour migrer les données)
  • garder /home et autres partitions de stockage.

Une fois la réinstallation faite, plusieurs mauvaises surprises:

  • Anki ne fonctionne plus en version .deb (il lui faut PyQt4 QtWebKit qui a disparu). Je me suis donc rabattu sur la distribution statique du site d’Anki.
  • Il faut remettre en place l’entrée du japonais. Pour faire marcher à nouveau ibus, j’ai du supprimer le répertoire « ~/.cache/ibus », sans quoi le daemon ibus ne démarrait pas. J’utilisais avant ibus et anthy, et suivre mes procédures précédentes n’a pas marché. J’ai donc utilise UIM/anthy à la place, après une mise en place laborieuse et avec un comportement peu ergonomique et bugué pour le moment. Par exemple:
    • le basculement français/japonais se fait par programme (comme sous Windows), beurk.
    • dans les programmes GTK (comme firefox ou vscode), la boîte de suggestion n’apparaît pas.
  • Le couple (non-maintenus) lastfmsubmitd/Amarok2LibreFM (qui permettent de stocker mes stats de musique) doivent être bidouillés à nouveau.
  • J’ai du refaire mes barres d’outils KDE.

KDE: Firefox ouvre les répertoires avec Nautilus et pas Dolphin

Voilà un bug un peu irritant, dû au fait que Firefox n’utilise pas un moyen standard pour déterminer quel gestionnaire de fichier utiliser. Il y a plusieurs moyens de résoudre ça (de manière peu élégante):

  • Pas terrible: désinstaller Nautilus.
  • Mieux mais pas pérenne: lancer au démarrage de la session KDE un service Dolphin avec la commande « /usr/bin/dolphin --daemon ». Cela se fait dans « Configuration du système / Démarrage et arrêt / Ajouter un programme ».

C’est ce genre de problème qui fait qu’utiliser Linux au quotidien est tristement pavé de bugs et comportements bizarres…

Kubuntu 16.04: configurer ibus et anthy pour taper en Japonais

Kubuntu et KDE ne permettent pas de configuration facile pour taper du japonais (c’est le bug 329032, pas d’intégration de KDE avec les méthodes de saisie). Voila comment faire depuis une nouvelle installation.

1) Installer « ibus » et « anthy »

Ibus est une « méthode de saisie », un composant du système qui permet de taper des caractères complexes. Anthy est un greffon (aussi appelé « plugin ») pour taper du japonais.

Pour l’installer en ligne de commande, taper ceci puis rentrer son mot de passe:

sudo apt-get install ibus ibus-anthy

Note: si vous préférez la méthode « mozc », rajouter « ibus-mozc » ou bien remplacez « ibus-anthy » par celui-ci.

On peut sûrement l’installer de manière graphique, mais je n’ai pas l’impression que les outils de base de Kubuntu (« Logithèque / Découvrir ») le permettent.

Note pour ceux ayant fait une mise à jour vers Kubuntu 17.04: si ibus ne démarre pas en suivant la procédure ci-dessous, supprimez le répertoire « .cache/ibus » (et peut-être aussi « ~/.config/ibus »).

2) L’activer au lancement de la session

Il faut qu’ibus soit lancé automatiquement quand on se connecte.

  • Aller dans « Configuration du système » et dans la section « Démarrage et arrêt »

  • Cliquer sur « Ajouter un programme » et dans la boîte « Choisir une application » taper « ibus-daemon » puis « ok ».

ibus-02-config-sys

  • Dans la boîte suivante liée à ce programme, cliquer « ok ». Si vous avez une boîte d’erreur vous indiquant une erreur d’écriture, pas de problème. Maintenant vous avez « ibus-daemon » dans la liste de programme de démarrage.

3) Configuration pour les programmes

Il faut un réglage additionnel pour que les programmes utilisent ibus. En ligne de commande, exécuter la commande:

im-config -n ibus

Cela créera dans votre répertoire personnel un fichier « .xinputrc ». Il sera lu par je-ne-sais quel programme, et aura pour effet de remplir les variables d’environnement suivantes:

CLUTTER_IM_MODULE=xim
GTK_IM_MODULE=ibus
QT4_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

4) Déconnectez-vous

Et ouvrez une nouvelle session afin d’avoir les configurations ci-dessus activées.

5) Configurez les langues de ibus

Normalement vous devriez avoir dans la « boîte à miniature » une icône ibus.ibus-03-config-sys

  • Clic droit, « Préférences »
  • Dans l’onglet « Méthode de saisie », cliquer sur « Ajouter », aller à « japonais » et sélectionner « Anthy ».
  • Note 1: Vous pourriez préférer la méthode « Mozc ». Il parait qu’elle aurait ses avantages, mais elle a l’inconvénient rédhibitoire de ne pas taper par défaut en hiragana (et ce n’est pas configurable), donc je ne vous la recommande pas.
  • Note 2: dans l’onglet « Général », j’ai choisi la combinaison de touche « <Control><Alt> Down » (sic) pour passer d’une langue à une autre. Cela évite d’avoir à cliquer sur l’icône pour changer de langue.

6) Utilisez

Maintenant, dans la plupart des programmes (mais pas les programmes Java), quand la méthode Anthy est activée, vous taperez en hiragana (taper au clavier «toukyou» donne «とおきょう»). Une fois les hiraganas d’un mot tapés, taper « espace » une ou plusieurs fois pour qu’il vous propose différentes écritures en kanji. Taper « entrée » pour choisir l’une d’entre elles.

On peut configurer les raccourcis d’Anthy (dans la fenêtre de configuration d’ibus). Par exemple, j’ai choisi « control-h » et « control-k » pour basculer respectivement en hiragana et en katakana.

Firefox: problematic extensions, slow closing, extensions data loss

For (at least) several months, the first start-up of Firefox after a Linux logout gives me a session-restore page, indicating that it did not stopped properly. It also causes data loss in some add-ons. After some investigation, it turned out the causes were the following:

  • Some add-ons made closing Firefox very slow (about 1 minute!): there is a conflict between « Privacy Badger » et « Self Destructing Cookies« , and also « Tab Memory Usage » by itself is a problem.
  • When closing the Linux session, the session managers of the desktop environments (KDE, XFCE, Unity) gives the programs some time to shutdown properly (7-15 seconds I think). In my case, Firefox was killed every single time. This timeout not being configurable (without modifying the code et recompiling), the only solutions were either make the closing faster or manually closing Firefox before disconnecting. I find the way Windows handles it better: after the timeout, it asks the user if he wants to kill the remaining programs.
    Now that I disabled « Self Destructing Cookies » and « Tab Memory Usage », it takes a bit less that 10s for Firefox to stop, which it still not enough for it to close properly 100% of the time.
  • The add-ons using the « Simple storage » API (like MyKanji) save their data on the disk when the browser stops (even if the data was not modified recently!), and the data may be lost if the browser is killed at this moment.

Conclusions:

  • It may be one of the reasons why Mozilla wants to normalize the add-ons API (in addition to the security and the multi-process browser). Investigating the conflicting add-ons can be time-consuming, and a majority of users may think that Firefox itself is slow. Once I disabled the offending add-ons, my browser had a second youth.
  • Hard-coded time-outs (also known as « magic numbers ») are bad. It’s better to have a default value and a configurable setting (even if not documented).

Firefox: extensions problématiques, fermeture lente, perte de données d’extensions

Depuis plusieurs mois (au moins), le premier démarrage de Firefox suivant une fermeture de session Linux m’accueille avec une page de restauration de session (due à un incident lors de la fermeture). Cela entraînait également la perte de données de certaines extensions. Après investigation, les causes étaient les suivantes:

  • Certaines extensions rendaient la fermeture très lente (1 minute!): d’une part il y a un conflit entre « Privacy Badger » et « Self Destructing Cookies », et d’autre part « Tab Memory Usage » en lui-même pose problème.
  • Lors de la fermeture de session, les gestionnaires de session des différents environnements de Linux (KDE, XFCE, Unity) laissent aux programmes un délai limité (7-15 s je crois) pour se fermer proprement avant de les tuer. Et donc dans mon cas, Firefox était tué à tous les coups. Ce délai n’étant pas configurable (sauf modification et recompilation), les seules solutions sont soit de rendre la fermeture plus rapide, soit de fermer manuellement Firefox avant de se déconnecter. J’aurais préféré que ce soit comme sous Windows: qu’après le délai, le système demande à l’utilisateur si il veut vraiment tuer les programmes restant.
    Maintenant que j’ai désactivé « Self Destructing Cookies » et « Tab Memory Usage », le temps de fermeture de session est d’un peu moins de 10 s, ce qui reste toujours trop pour clore la session avec succès à tous les coups.
  • Les extensions utilisant l’API « Simple storage » (comme « Mes Kanjis ») sauvent sur disque leurs données à la fermeture du navigateur (même si les données n’ont pas été modifiées récemment !), et si le navigateur est tué à ce moment, les données peuvent être perdues.

Conclusions:

  • Ça donne une explication supplémentaire à la volonté de Mozilla de normaliser les API des extensions (en plus de la sécurité et de la répartition sur plusieurs processus). Partir à la chasse aux conflits peut être fastidieux, et de nombreux utilisateurs tireront la conclusion que Firefox est un navigateur poussif. Une fois les extensions fautives désactivées, mon navigateur a connu une seconde jeunesse.
  • Les délais en dur dans le code (aussi connu sous le nom de « nombre magique »), c’est mal. Mieux vaut avoir une valeur par défaut pouvant être remplacée par une valeur configurable (même si celle-ci n’est pas documentée).

Mise à jour Kubuntu 16.04: du mieux

Bravant tous les risques, j’ai mis à jour ma Kubuntu de 15.10 à 16.04. Moins de surprises que lors des mises à jour précédentes: la seule erreur que j’ai eu est la reconfiguration de PhpMyAdmin qui échoue… parce que MySQL est arrêté (pas encore mis à jour). Une bonne surprise même: plus de pause de plusieurs secondes en branchant/débranchant un écran, et plus de crashs de programmes à ce moment. Par contre un nombre de problèmes restent.