06 Jan 2018, 00:00

Live-USB Hybrid Debian Stretch

Quelques petites variations par rapport à Jessie, notamment le fait que la construction d’une image avec double architecture semble échouer. il faut donc d’abord créer une image complète en architecture i386 (ainsi le système complet sera 32 bits, mais exploitable par un noyau 64 bits), puis créer une image 64 bits dont on extraiera le noyau et l’initrd.

sudo aptitude install live-build live-tools
mkdir stretch_live && cd stretch_live
mkdir auto && cp /usr/share/doc/live-build/examples/auto/* ./auto/

Editer le fichier auto/config pour qu’il contienne ceci :

#!/bin/sh

set -e

lb config noauto \
	--architectures 'i386' \
	--archive-areas 'main contrib non-free' \
	--bootappend-live 'boot=live config locales=fr_FR.UTF-8 keyboard-layouts=fr' \
	--binary-images 'iso-hybrid' \
	--distribution 'stretch' \
	--linux-flavours '686-pae' \
	--source 'false' \
	"${@}"

Entrer la commande lb config, puis aller éditer le fichier config/package-lists/live.list.chroot et ajouter les paquets désirés. Je propose ceci :

live-boot
live-config
live-config-systemd
vlc mdadm rdesktop conky nmap rcconf network-manager-gnome firmware-linux firmware-atheros firmware-b43-installer firmware-bnx2x firmware-brcm80211 firmware-intelwimax firmware-iwlwifi firmware-libertas firmware-myricom firmware-netxen firmware-qlogic firmware-ralink firmware-realtek gparted hfsprogs ntfs-3g hfsplus hfsutils dosfstools hplip system-config-printer xsane simple-scan lightdm mate-desktop-environment bash-completion chntpw caja-open-terminal dcfldd bootlogd less mesa-utils numlockx ethtool grub2 mesa-utils ssh gdisk testdisk python-tk iftop nethogs pm-utils dmraid chromium engrampa unrar pluma aptitude apt-file chromium-l10n smartmontools debootstrap pciutils usbutils cifs-utils e2fsprogs mtools screen pulseaudio pavucontrol pavumeter mate-media-common mate-media mate-settings-daemon-dev mate-settings-daemon-common mate-settings-daemon lvm2 bluez blueman pulseaudio-module-bluetooth

Puis entrer la commande sudo lb build.

A noter qu’il est possible de décomposer la commande sudo lb build en la succession suivante :

sudo lb bootstrap
sudo lb chroot
sudo lb binary

Il est possible d’aller modifier/ajouter manuellement des fichiers entre l’étape chroot et l’étape binary. Par exemple, pour créer /home/user/ , /home/user/Bureau/ et y ajouter des fichiers, qui seront disponibles directement sur le bureau du live.

Si on souhaite recommencer la création du live, on peut utiliser la commande sudo lb clean qui ne conserve que le cache des paquets, du bootstrap et la config. On peut aussi utiliser les options --binary ou bien --chroot pour conserver les étapes antérieures.

14 Sep 2017, 00:00

Carte SD non reconnue si branchement à chaud

J’ai sur ma tour un lecteur de carte SD USB qui, depuis Stretch, ne monte plus automatiquement les cartes SD à la volée. Celles-ci sont bien lisibles lorsqu’elles sont déjà insérées lors du boot, mais l’ejection du media est définitive.

La solution, trouvée ici est d’ajouter le paramètre suivant à la ligne GRUB_CMDLINE_LINUX_DEFAULT= du fichier /etc/default/grub :
GRUB_CMDLINE_LINUX_DEFAULT="block.events_dfl_poll_msecs=2000"

Il faut ensuite lancer sudo update-grub pour actualiser le fichier de conf.

Si on veut appliquer le changement sans rebooter, on peut aussi entrer le paramètre 2000 au fichier /sys/module/block/parameters/events_dfl_poll_msecs

31 Aug 2017, 00:00

Identifier si une session est ouverte sous Wayland ou X11

Il suffit de taper la comande suivante : loginctl show-session $XDG_SESSION_ID -p Type

06 Dec 2016, 00:00

Mise en veille de l'écran récalcitrante

Il arrive, sous Linux, particulièrement après une install neuve ou bien une upgrade du système, que l’écran se mette en veille au bout d’un certain temps d’inactivité, quand bien même l’économiseur d’écran et l’extinction d’écran sont désactivés. Ceci est dû à la fonction DPMS de l’écran, qui se gère de manière distincte des 2 réglages précédents.

Pour la gérer, on utilise le programme xset. Pour sonder les paramètres actuellent en usage, on utilise xset q. Il est assez probable que les lignes suivantes apparaissent :

DPMS (Energy Star):
  Standby: 600    Suspend: 600    Off: 600
  DPMS is Enabled
  Monitor is On

Si on souhaite simplement désactiver dpms, il suffit de lancer xset -dpms, et les soucis de mise en veille intempestive de l’écran devraient disparaître ! Il est bien sûr possible de gérer les paramètres plus finement avec la sommande xset.

18 Sep 2016, 00:00

Recherche et suppression de doublons avec fdupes

Suite à un usage parallèle et complètement désorganisé de 2 disques (appelés ici arbo1 et arbo2), ces derniers contiennent en gros les mêmes données, mais la version la plus récente d’un document peut se trouver dans arbo1 ou dans arbo2.

Je souhaite donc, pour simplifier le travail de fusion de ces 2 dossiers (et mise en place d’une sauvegarde correcte ;) )à supprimer tous les fichiers de l’arborescence 2 qui sont déjà existants et identiques dans l’arborescence 1.

La première étrape va consister à s’assurer qu’il n’y ait aucun doublon dans l’arbo1 elle-même, puis dans l’arbo2 elle-même. Nous utiisons pour ça fdupes, inclus dans les dépôts Debian, qui liste les fichiers dupliqués via vérification md5.

D’abord, nous les listons :

fdupes -r ./arbo1

Selon la quantité de doublons nous pouvons choisir la version à conserver à la main, via le paramètre -d, ou bien supprimer le prompt et ne garder que la “première” occurence, en ajoutant l’option -N. Par exemple, pour ne pas s’embeter :

fdupes -rdN ./arbo1

Nous faisons la même opération dans l’arborescence 2

fdupes -rdN ./arbo2

Ainsi, nous sommes sûrs que s’il reste des fichiers dupliqués, il y aura au moins une occurence du fichier dans chacune des arborescences, les doublons locaux étant supprimés. Nous allons donc pouvoir utiliser fdupes sur les 2 arborescences en même temps, et supprimer automatiquement celles situées dans arbo2. J’ai préféré utiliser grep avec le chemin souhaité pour isoler les fichiers à supprimer, plutôt que d’utiliser le paramètre -f qui considérait comme “première occurence” un coup un fichier de arbo1, un coup un ficher de arbo2.

D’abord on liste uniquement les fichiers situés dans arbo2 (mais qui existent à l’identique dans arbo1 ) :

fdupes -r ./ | grep './arbo2'

Les guillemets simple autour de arbo2 permettent de gérer si le dossier comporte un espace.

Enfin, nous pouvons les piper avec la commande rm, via l’intermédiaire de read qui permet de prendre en compte les noms de fichier/dossier contenant des espaces :

fdupes -r ./ | grep './arbo2' | while read f; do rm "$f"; done

Ainsi, tous les fichiers subsistants dans “arbo2” sont des fichiers uniques, n’existant pas dans arbo1, ou bien pas à la même version, et qu’il faudra donc trier manuellement (en tout cas dans le cas ci-présent d’absence totale d’organisation).
Pour simplifier ce tri, on peut également supprimer tous les répertoires vides de arbo2 via cette commande :

find './arbo2/' -type d -empty -print -delete

18 Sep 2016, 00:00

Utilisation de ddrescue pour dumper un disque en train de lâcher.

GNU ddrescue est un utilitaire conçu pour dumper intelligemment des disques ou partitions (ou autres périphériques de bloc), en sautant de zone, repartant de la fin du disque lorsqu’il rencontre une erreur ou des zones lentes, et y revenant plus tard, lorsque les secteurs encore lisibles ont été récupérés. Ce paragraphe de la page de man explique en détail l’algorithme utilisé (trimming, scraping etc).

Je dois beaucoup de ma compréhension du logiciel à ce très bon thread sur linuxfr

On commence par installer soft, et l’interface graphique qui permet de surveiller l’avancement, avec des jolis petits carrés de couleur.

sudo aptitude install gddrescue ddrescueview

On réfléchit à si on souhaite dumper le disque complet, ou bien une partition. Dans cet exemple, une partition. Le support qui recevra le dump doit bien sûr être plus gros que le support source.

Première passe :

sudo ddrescue -n -f -b 512 /dev/sdi1 ./file.img mapfile

L’option -n dit à ddrescue de ne pas scraper les secteurs qu’il n’arrive pas à lire. Si j’ai bien compris, ça permet en gros de ne pas s’acharner maintenant sur ce qui n’est pas lisible.
L’option -f est inutile ici, car on écrit dans un fichier. Elle est cependant nécessaire si l’output est un block device (disque ou partition), c’est un garde-fou pour éviter d’écraser une partition par erreur.
L’option -b sert à spécifier la taille physique de secteurs du dique. C’est souvent 512, et c’esla valeur par défaut, mais il faut vérifier sur le disque en question.
Le journal de la récupération est écrit dans le fichier mapfile précisé (on peut mettre le nom qu’on souhaite).

On peut surveiller l’avancement grace à ddrescueview, si on ouvre mapfile.

Une fois que c’est fini, on lance la 2ème passe :

sudo ddrescue -d -r3 -f /dev/sdi1 ./file.img mapfile

L’option -d dit à ddrescue d’utiliser des accès directs au disque, en shuntant le cache du noyau, permettant dans certains cas une meilleure lecture. L’option -r3 dit à ddrescue d’essyer 3 fois la lecture sur les secteurs qu’il n’arrive pas à lire, avant de passer au suivant. Lors de cette phase, les secteurs seront “scrapés”, permettant soit leur récupération, soit leur classement en secteurs defectueux.

Durant la récupération de donées qui sert de support à cet article, j’ai été conronté à un autre problème : bien que toujours branché et detecté par l’OS (sdi), le disque s’est complètement arrêté de répondre. J’avais donc récupéré environ 100 Go de la partition, dont quelques secteurs en état “non-trimmed”, mais les 400 Go restant ont été classés d’office “failed”, chouette surprise au réveil.
Après avoir débranché le disque, l’avoir laissé reposer quelques minutes, je l’ai branché et il est redevenu lisible. Dans le but de limiter les accès, j’ai voulu conserver les 100 Go de données récupérées, tout en forçant ddrescue à repasser sur les zones marquées “failed”. Le paramètre -M sert dans ce cas, en marquant les blocs “failed” comme “non-trimmed”, et ils seront donc relus lors du processus. Ça donne :

sudo ddrescue -M -n -f /dev/sdi1 ./file.img mapfile

On peut aussi utiliser le paramètre -A, qui marque tous les blocs qui n’ont pas été lus avec succès comme “non-tried”. Ceci aurait cependant fait relire les secteurs sur lesquels il avait déjà buté avant que le disque arrête de répondre et qui avaient été marqués “non-trimmed” à raison.

14 Sep 2016, 00:00

Packages utiles après install Jessie
# environnement de bureau 
lightdm mate-desktop-environment simple-scan system-config-printer caja-open-terminal network-manager-gnome pulseaudio pavucontrol paprefs ffmpegthumbnailer

# utils
sysvinit-core  # pour se passer (en bonne partie) de systemd
hplip firmware-realtek firmware-ralink firmware-brcm80211 firmware-linux anacron firmware-iwlwifi firmware-samsung python-gpgme gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly ntfs pepperflashplugin-nonfree ttf-mscorefonts-installer unrar libmp3lame0 lame build-essential linux-headers-amd64

# softs
libreoffice libreoffice-l10n-fr chromium chromium-l10n pepperflashplugin-nonfree wine vlc asunder clementine gparted

17 Jul 2016, 00:00

Généralités réseau sous Linux

Nom des interfaces réseau

Depuis Stretch, udev possède un mécanisme de noms prédictifs d’interfaces réseau, qui devient activé par défaut, et qui nous donne des noms de type enp6s0. Ceci peut se désactiver via un paramètre à donner à grub dans le fichier /etc/default/grub :

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"

Source (qui explique plusieurs mécanismes réseau)

Une fois ce mécanisme supprimé, nous pouvons choisir le nom “standard” (eth0) que udev donnera aux interfaces réseau via le fichier /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="1c:6f:65:4f:d1:d2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Il suffit de modifier l’adresse mac et le nom souhaité pour qu’ils soient opérationnels au prochain boot.

Interaction de Network-Manager avec /etc/network/interfaces

Depuis quelques versions, Network-Manager gère les connexions qui ont été fixées dans /etc/network/interfaces. Ceci peut s’avérer perturbant si on a besoin d’une connexion complètement fixe en parallèle de NM (par exemple pour du wifi pour du réseau secondaire). Ce comportement peut se désactiver. Pour ceci, il faut que le fichier /etc/NetworkManager/NetworkManager.conf contienne ceci :

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

13 Jun 2016, 00:00

Son en sourdine à chaque démarrage sous Debian Jessie

Pour que le niveau de son retrouve à chaque démarrage le niveau qu’il avait lors de l’extinction, il est nécessaire que les 3 paquets suivants soient installés : alsa-base alsa-utils alsa-tools , que l’on utilise Pulseaudio ou non.

08 Mar 2016, 00:00

Installer complètement Pulseausio pour MATE

Pour Jessie, il suffit d’installer les paquets pulseaudio pavucontrol pavumeter mate-media-pulse gstreamer0.10-pulseaudio mate-settings-daemon-pulse. Ainsi, tout passera par Pulseaudio, et le contrôleur de volume sera celui de Pulseausio également.