10 Dec 2019, 00:00

Raccourcis de démarrage pour les Macs

https://support.apple.com/fr-fr/HT201255
https://support.apple.com/fr-fr/HT204904

Alt : Boot menu
: Mode sans échec
Super+S : Mode monoutilisateur (root en CLI)

Super+R : Récupération via partition de récup (OS actuel)
Alt+Super+R : Récupération via internet (OS le plus récent compatible)
+Alt+Super+R : Récupération via internet (OS d’origine, ou le plus proche encore disponible sur les serveurs)

Alt+Super+P+R : reset PRAM
Alt++Ctrl : reset SMC

D : AHT
Alt+D : AHT via internet

01 Dec 2019, 00:00

Réinitialiser la prise en compte du TPM par Windows

Suite à un changement de carte-mère, et donc à un remplacement de la puce TPM dedans, il peut arriver d’avoir des messages d’erreur (notamment 0x80090016) à l’ouverture de session Windows, ou Outlook (ou autre ?).

Ceci semble lié au fait que les infos d’identification étaient chiffrées grâce à un jeu de clés situé matériellement dans la puce TPM.
Pour corriger ceci, il faut renommer le dossier

C:\users\%username%\AppData\Local\Packages\Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy

en .OLD (ou le supprimer…). Puis fermer la session.

Les infos d’identification seront redemandées au prochain lancement de la session ou de l’appli (et, je suppose, chiffrées grace au nouveau jeu de clés de la nouvelle puce).

Source

Il semble que dans certains cas (visiblement en lien avec la protection par code PIN), la solution soit plutôt (ou aussi ?) de supprimer le contenu du dossier

C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc\

14 Oct 2019, 00:00

Prévoir la taille des données à déplacer lors d'une réduction de partition NTFS
/sbin/ntfsresize --force --no-action -s 100G /dev/sdX1 | grep -e ERROR -e relocations

--force peut ne pas être nécessaire
-s indique la nouvelle taille de partition, par défaut en octets, et peut être suivi des suffixes k,M,G,ki,Mi ou Gi

On peut aussi

23 Sep 2019, 00:00

Obtenir tous les numéros de série des disques

Avec 12 disques (a -> l)

for i in {a..l}; do echo sd$i; udevadm info --query=all --name=/dev/sd$i | grep ID_SERIAL_SHORT; done

19 Jun 2019, 00:00

Désactiver la mise en veille de la carte son sous Linux

Sous Linux, il arrive que, pour économiser de l’énergie, la carte son se mette en veille après quelques temps d’inactivité. Ceci génère chez moi des craquements assez désagréables lors de sa remise en fonctionemment, ou parfois un craquement très régulier tout le long de la veille.

Pour voir si la mise en veille est activée :

cat /sys/module/snd_hda_intel/parameters/power_save

S’il contient autre chose que 0, alors le mode powersave est activé.

Pour le désactiver, on peut ajouter le fichier /etc/modprobe.d/snd_disable_powersave.conf et entrer dedans la ligne suivante :

options snd_hda_intel power_save=0

Puis redémarrer, ou bien décharger/recharger le module.

07 Jan 2019, 00:00

Notes rapides sur récupération mdadm

Disques tous en spare

Après une panne d’éléctricité, un RAID6 de 12 disques (dégradé, avec 1 disque manquant) a refusé de se remettre en route. Après vérification (par live-cd) via un cat /proc/mdstat, les 11 disques étaient tous en spare (se manifeste par un [S] ).
Pour ce raid sont utilisées les 2e partitions de chaque disque de sda -> sdk. J’ai vérifié l’état de synchronisation de tous les volumes : sudo mdadm --examine /dev/sd[abcdefghijk]2 | grep Events

Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752

Ils sont bien synchronisés, mais pas assemblés. J’ai alors testé
sudo mdadm --assemble --force /dev/md126 /dev/sd[abcdefghijk]2
mais ai obtenu 11 jolis “Device or ressource busy”. Ce qui est normal, les disques étant intégrés dans le RAID, mais en spare. J’ai alors lancé
sudo mdadm --stop /dev/md126
suite à quoi la commande d’assemblage précédemment citée a bien fonctionné, le RAID s’est resynchronisé sans perdre de données, en prenant toutefois son temps.

RAID fonctionnel qui ne se synchronise pas tout seul

Dans un autre cas, où le RAID était resté fonctionnel mais dans lequel un volume manquait (sdl2, détecté mais non intégré/synchronisé), j’ai pu le réintégrer avec la commande sudo mdadm --re-add /dev/md126 /dev/sdl2 (si re-add ne fonctionne pas, add devrait fonctionner mais prendre plus de temps).

Dans encore un autre cas, un seul disque était intégré au RAID, mais non synchronisé, car il restait en “spare”. J’ai pu forcer la réintégration avec la commande
echo check > /sys/block/md126/md/sync_action
De la lecture intéressante se trouve sur cette page.

Ici aussi : https://robbat2.livejournal.com/231207.html?nojs=1

Exclure disque d’un raid

Il doit être marqué en failed ; soit par mdadm suite à erreur de lecture ou autre, soit manuellement par :

sudo mdadm /dev/mdX --fail /dev/sdX

Il peut alors être retiré :

sudo mdadm /dev/mdX --remove /dev/sdX

06 Jan 2019, 00:00

Ripper des cd audio avec abcde et intégrer l'image dans les fichiers

Suite à quelques soucis de recherche dans la base CDDB avec Asunder, voici un mini-tuto pour abcde. Déjà,

sudo apt install abcde lame eyed3 glyrc imagemagick cdparanoia

Les préférences d’extraction se définissent dans le fichier /etc/abcde.conf ou bien dans un fichier user qui outrepassera le précédent, et que nous éditons ici : pluma ~/.abcde.conf

# VBR bonne qualité
LAMEOPTS='-V 0'
# On extrait la couverture
ACTIONS=default,getalbumart
# On range les fichiers finaux dans ce dossier :
OUTPUTDIR="/path/to/music/dir"
# On encode en mp3
OUTPUTTYPE=mp3
# Arborescence type Artiste/Album/01 - Morceau.mp3
OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'
# On ne remplace PAS les espaces par des underscores (et autres modifs)
mungefilename ()
{
echo "$@"
}

On peut ensuite lancer abcde ou encore abcde -d /dev/sr1 si on spécifie manuellement le lecteur CD.

Enfin, dans le dossier final, si on souhaite intégrer la pochette au fichier :

for i in *.mp3
do
eyeD3 --add-image cover.jpg:FRONT_COVER "$i"
done

(cf cette page)

30 Dec 2018, 00:00

Freeze du poste avec Optimus lorsque bumblebee est installé

Habituellement, lorsque je souhaite installer une Debian sur un pc avec double carte graphique Intel-Nvidia (système Optimus), il suffit d’installer bumblebee via apt install bumblebee bumblebee-nvidia (ou simplement bumblebee si on souhaite essayer avec les pilotes libres Nouveau, ce qui m’a semblé fonctionner moins souvent).
La configuration des paquets met en place toute la configuration nécessaire (glx, alternatives, modprobe/blacklist etc). Ceci installe également un module noyau bbswitch, dont le but est d’éteindre ou d’allumer à la demande la carte graphique dédiée.

Cependant, sur un poste, après avoir installé ces paquets, le pc freezait au démarrage, que le pilote soit nouveau ou nvidia. Comme le pc démarrait correctement en mode recovery, j’ai désactivé le lancement automatique du gestionnaire de connexion graphique. Ainsi, le pc démarrait correctement, je pouvais me connecter, mais dès le moindre service lightdm start ou startx, il freezait à nouveau. Après pas mal de lecture, j’ai appris que le fichier /proc/acpi/bbswitch contenait entre autre l’état de la carte graphique (ON ou OFF), et que la commande tee /proc/acpi/bbswitch <<<ON permettait de l’allumer à la demande.
Et j’ai constaté que la carte était en OFF à chaque démarrage, que si on essayait de lancer un programme graphique (même une interface graphique qui tourne sur la carte intégrée au CPU) alors que la carte dédiée était OFF, alors ça freezait. Si par contre on allumait manuellement la carte avant, on pouvait lancer l’interface, et ensuite ça fonctionnait, même si la carte était coupée. Mais si on souhaitait simplement se déconnecter, comme ceci coupe puis relance l’interface graphique, alors ça freezait à nouveau…

Mais avec le détail des cas où ca plantait, j’ai facilement trouvé ce rapport de bug, et après moult tests, modifier la ligne dans le fichier /etc/default/grub pour qu’elle ressemble à ceci :

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=! acpi_osi='Windows 2009'"

suivi d’un update-grub a bien fonctionné ! Les graphiques standards sont bien lancés sur le gpu intégré, le gpu dédié est éteint la plupart du temps, allumé correctement lorsqu’on lance un programme avec optirun, et bien éteint lorsque ce programme se termine.

07 Nov 2018, 00:00

Réinitialiser le mot de passe BIOS sur certains portables HP

HPBR

Un outil nommé HP Bios Reset permet, sur certains modèles, notamment des Probook et des Elitebook, de réinitialiser le mot de passe du bios. Lien vers le thread mydigitallife.
Et un exemplaire de HPBR mirroré chez moi

Il faut déjà créer la clé bootable.
Depuis Windows, il suffit de lancer l’exécutable, de brancher la clé (qui sera effacée), la sélectionner, cliquer sur Restore, choisir le fichier image fourni dans l’archive.
Sous Linux, je n’ai pas testé, mais je présume que l’image se dumpe simplement sur la clé avec dd.

On boote l’ordinateur sur la clé. Au lancement, il faut en trer les commandes suivantes :

cd ..
HPBR

Dans “reprogram” on peut sauvegarder les informations actuelles (fichiers .sav dans le répertoire HPBR).
Dans “first run” on peut lancer la réinit du mot de passe du bios en choisissant le bon modèle.

Forcer l’upgrade du bios

Dans mon cas, le bios était trop vieux, et n’était pas supporté par HPBR. J’ai donc du faire la mise à jour, mais la procédure standard me demandait le mot de passe, que je n’avais toujours pas.

Pour ceci, des indications données sur ce post peuvent être utiles. Les images et signatures de BIOS sont stockées dans le dossier Hewlett-Packard/BIOS/Current. L’image HPBR en contient certains, mais pas tous. On peut donc rajouter celui d’un autre modèle.
J’ai donc récupéré le bios le plus récent sur le site de support de HP.
J’ai extrait le fichier exe, puis le fichier rom.cab.
Dedans, il y’a un fichier “ver.txt”, on trouve dedans le numéro de la ROM, par exemple _ROM_ 68PDD v0F.20 12/07/2011 ROLL_BACK_WARNING
Dans ce cas, c’est “68PDD”. On renomme rom.bin par 68PDD.bin et efibios.sig par 68PDD.sig, on copie ces 2 fichiers dans “Current” (à noter que sur un clé usb vierge en fat32, l’arborescence et ces 2 fichiers suffisent pour la MAJ du BIOS, pas besoin de HPBR).
On éjecte la clé proprement.

Ensuite, il faut faire booter l’ordi sur la clé, mais pas par le boot habituel. Il faut, ordi éteint, brancher la clé, maintenir Super+B, allumer le pc en maintenant les touches enfoncées, normalement la LED de VerrMaj clignote, puis le voyant de la clé usb (s’il y’en a un…) va commencer à clignoter. C’est le moment de relacher les touches.

Normalement l’écran reste noir, pendant au maximum 2 minutes (selon le readme), puis devrait redémarrer tout seul et informer du succès de la mise à jour. Il est alors possible de reset le mot de passe via HPBR
Si rien ne se passe au bout de 10 minutes (soyons précautionneux…) ,c’est que la MAJ n’a pas réussi, et il faut redémarrer le poste.

29 Oct 2018, 00:00

Utilisation de ddrutility pour identifier les secteurs contenant de la données NTFS pour une utilisation optimale de ddrescue

EDIT

Il semblerait que partclone permette aussi de créer le fichier domaine, sur plusieurs systèmes de fichiers, avec la syntaxe :

sudo partclone.FSTYPE -s /dev/sdX_1 -D --offset_domain=1048576 -o ./domain.log

L’option -s (sdX_1) précise la source, c’est-à-dire la partition à cartographier (par ex sdb1 ou loop0p1),
-D précise que nous souhaitons créer un fichier de domaine,
l’offset calculé de la même manière qu’expliqué plus loin dans l’article (et utile seulement si on dumpe le disque entier),
-o nomme le fichier de sortie.
A noter que le fichier créé est par défaut non lisible par les non-root. De plus; le fichier de domaine n’intégrera pas (contrairement à ddrutility) les zones à lire pour identifier correctement la table de partition et les débuts/fins de partitions.

———

Cet article se penche sur l’utilisation de ddrutility pour créer un fichier de carte de domaine à utiliser avec ddrescue, afin de focaliser ce dernier sur les secteurs qui contiennent effectivement des données. Dans cet exemple, je ne parle que du ntfs.

L’ensemble d’utilitaires ddrutility peut être installé depuis les dépôts Debian à partir de Buster, ou bien compilé depuis la source disponible ici.

L’utilitaire qui nous intéresse : ddru_ntfsbitmap qui va créer un fichier de domaine, c’est-à-dire une liste des secteurs à lire sur la partition ntfs (secteurs effectivement utilisés). Concrètement, ce fichier a le même format qu’un fichier mapfile de ddrescue, mais où les secteurs censés contenir des données sont déterminés grâce à l’analyse du MBR et de la MFT, et sont marqués comme “finished” (lus), bien que rien ne soit effectivement lu.

Ceci ne fonctionnera que si ddrescuelog est présent dans la release de ddrescue (à partir de la version 1.15, normalement)

Création du fichier de délimitation du domaine

Voici la syntaxe pour une partition seule :

sudo ddru_ntfsbitmap /dev/sdX1 ./domain_ntfs.log

Dans mon cas, j’ai l’habitude de dumper le disque en entier, y compris la table de partitions. Pour ceci, il faut calculer l’offset de la partition (en octets) avec des maths assez simples : multiplier le secteur de démarrage de la partition par la taille d’un secteur en octets. Pour ceci : sudo fdisk -lu /dev/sdX qui nous donne par exemple :

Disk /dev/sdX: 465,7 GiB, 500074283008 bytes, 976707584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0004a183

Device     Boot Start       End   Sectors   Size Id Type
/dev/sdX1        2048 976707583 976705536 465,7G  7 HPFS/NTFS/exFAT

On voit que la partition démarre au secteur 2048, et que chaque secteur (logique) pèse 512 bytes (octets).
Dans le cas où les valeurs logique et physique sont différentes, il faut prendre la valeur logique.
On multiplie donc : 2048*512 = 1048576, puis on passe l’argument -i à ddrutility, ce qui donne la commande

sudo ddru_ntfsbitmap /dev/sdX ./domain_ntfs.log -i 1048576

Ceci va aller lire le secteur de boot de la partition ntfs, puis la section bitmap afin de déterminer quels sont les clusters sur lesquels des données sont stockées.
Selon la doc de ddrutility, si des secteurs du bitmap sont illisibles, alors ddrutility va les remplir avec le motif 0xFF (soit uniquement des 1), ce qui signifie que les secteurs en question sont utilisés pour stocker des données. Ainsi, en l’absence de certitude (grâce à la lecture correcte du bitmap) qu’un secteur est inutilisé, alors il sera extrait par ddrescue. On a ainsi le “risque” de lire des secteurs inutilisés, mais beaucoup moins de risque de sauter des secteurs sur lesquels des données sont effectivement stockées !

On obtient plusieurs fichiers en résultat :

  • __bootsec qui est un dump du secteur de boot de la partition (et est utilisé pour trouver l’emplacement de la MFT

  • __bootsec.log : la mapfile ddrescue utilisée pour l’extraction du secteur de boot

  • __mftshort : dump de la MFT

  • __mftshort.log : mapfile utilisée par ddrescue pour dumper la MFT

  • __bitmapfile : dump du fichier $BitMap de la partition

  • _partX__bitmapfile.log : fichier mapfile utilisé par ddrescue pour dumper le fichier $BitMap. Il est possible qu’il y en ait plusieurs si le fichier $BitMap est fragmenté

  • ntfsbitmap_rescue_report.log : résumé des différentes passes de ddru

  • domain_ntfs.log : le fichier à donner à ddrescue lors de la réelle tentative de récupération de données. Le nom dépend de la ligne de commande invoquée.

Utilisation de ce fichier avec ddrescue

Il faut impérativement penser à accorder la ligne de commande ddrescue avec celle utilisée par ddrutility pour obtenir le fichier domaine. Notamment déterminer si on dumpe une partition ou bien un disque entier. Dans mon cas, c’est un disque entier.

Une fois le fichier obtenu, on peut lancer la récupération de données avec ddrescue avec l’option -m, comme ceci :

sudo ddrescue -m ./domain_ntfs.log /dev/sdX ./disk_image.img mapfile.log

Si on souhaite suivre l’avancement en graphique avec ddrescueview, il est possible dans le menu de ce dernier d’ouvrir une mapfile de domaine (et séléctionner domain_ntfs.log). Ainsi, le secteurs hors domaine seront coloriés en grisé.

À noter qu’il est possible de combiner cette méthode avec ddrescue sans carte de domaine, en utilisant le même fichier source (disque défectueux), la même destination et la même mapfile. Après avoir laissé tourner ddrescue séquentiellement sur le disque, et une récupération extremement lente (quelques ko/s), j’ai repris l’avancement en cours en rajoutant l’argument de la carte de domaine. Il est également possible de reprendre le dump du disque sans carte de domaine une fois que tous les secteurs sur la carte de domaine ont été correctement récupérés (même si cela devrait théoriquement être inutile).

Analyse des secteurs défectueux pour connaître les fichiers affectés

Le disque dur sur lequel je travaillais m’a donné un taux de récupération supérieur à 99%, mais toutefois incomplet.
Pour connaître la liste des fichiers dont certains secteurs peuvent être manquants, ddrutility propose un autre utilitaire, ddru_ntfsfindbad.

Bien qu’il puisse fonctionner directement sur le disque, il est plutôt prévu pour être utilisé sur l’image résultant de la récupération avec ddrescue. En effet, à ce stade, l’image devrait être suffisamment complète pour ne pas avoir à refaire de lecture lente et incertaine sur le disque défaillant.

De la même manière que ddru_ntfsbitmap, cet utilitaire va avoir besoin de connaître l’offset de la partition, et de pouvoir lire la MFT ntfs (si cette dernière est endommagée, le processus risque d’être compliqué et infructueux…).

Pour ceci, je lance : ddru_ntfsfindbad ./disk_image.img mapfile.log -i 1048576
Le fichier disk_image.img doit être précisément celui créé par ddrescue.
Le fichier mapfile.log doit aussi être celui utilisé par ddrescue.
L’offset (-i) doit être le même que celui determiné à l’étape ddru_ntfsbitmap (si seule la partition du disque défaillant est dumpée, alors il vaut 0 et n’a pas besoin d’être précisé).
Seront comptabilisés comme secteurs non lisibles au moins les secteurs “non-trimmed” et les secteurs “failed”, mais pas les “non-tried”.

L’outil va ensuite créer un fichier ntfsfindbad.log, qui contient la liste des fichiers/dossiers dont la récupération est incomplète, et qu’il suffit de lire pour obtenir les informations !
Notons enfin que l’outil est prévu pour lister les fichiers qui sont dans la corbeille (et qui seront clairement affiché comme présents dans le dossier “$RECYCLE.BIN”), mais PAS les fichiers supprimés (pour ceci, un outil du genre testdisk ou photorec est plus adapté).