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.

27 Oct 2015, 00:00

Vrac sur les fichiers .desktop, les types MIME, le menu MATE et les applications

fichier -> octets magiques -> type MIME -> fichier .desktop -> commande spécifiée à la ligne Exec

Fichiers .desktop

Se trouvent dans /usr/share/applications (system-wide) et ~/.local/share/applications (pour l’utilisateur courant). Peuvent se trouver dans des sous-dossiers. Définissent un programme.

[Desktop Entry]
Type=Application
Name=Super Programme
Exec=/path/to/bin
Icon=/path/to/file.png
Categories=Office;Graphics;
NoDisplay=false
MimeType=application/octet-stream;

La ligne MimeType sert à informer le système du type de fichiers que ce logiciel peut ouvrir. Ces infos sont regroupées dans un fichier inverse mimeinfo.cache, qui référence tous les logiciels pouvant ouvrir tel type mime. Celui-ci peut s’actualiser via la commande update-desktop-database. La ligne Type est indispendable pour que le fichier soit valide.

Le menu (édité par mozo sous MATE) contient toutes les applications .desktop contenues dans /usr/share/applications et ~/.local/share/applications. Pour savoir s’il affiche par défaut l’application ou non, il se réfère à la ligne NoDisplay= .

Par défaut, il propose d’“Ouvrir avec” les applications présentes dans les fichiers mimeinfo.cache (système et utilisateur). Si on souhaite en ajouter de nouvelles, il ne proposera d’ajouter que les fichiers .desktop dont la ligne exec se finit par %u , %U , %f ou %F.

Menu "Ouvrir avec" sous MATE

Les menus sont définis par des fichiers .menu qui :

  • incluent de balises <Menu> </Menu> qui :
    • possèdent un nom (normalement pas utilisé en label)
    • possèdent un Directory (en l’absence de quoi, le nom direct du menu sera utilisé comme label)
    • incluent des fichiers .desktop (soit directement, soit des catégories)
  • sont situés dans
    • /etc/xdg/menus
    • ~/.config/menus

Les fichiers .directory définissent l’aspect de l’entrée de menu. Ils :

  • Incluent une balise [Desktop Entry] suivie d’attributs, par ex :
Version=1.0
Type=Directory
Icon[fr_FR]=folder
Name[fr_FR]=TEST
Name=TEST
Icon=folder
  • sont situés sous
    • /usr/share/desktop-directories
    • ~/.local/share/desktop-directories

Wine

Pour que certaines applis (par exemple Office 2007) ouvrent correctement un fichier, il faut les ouvrir avec une ligne de commande de ce type :

Exec=wine start /ProgIDOpen Word.Document.12 %f

Le Word.Document.12 équivaut à l’extension .docx telle que référencée dans le registre Windows.

14 Sep 2015, 00:00

Accéder à un partage WebDAV avec l'explorateur windows

Windows supporte l’accès aux partages WebDAV via Explorer, à condition que le service WebClient soit démarré. ce dernier est par défaut en mode manuel, et ne démarre pas lorsque l’on fait appel à un url WebDAV. Il faut donc le passer en automatique, et le démarrer à la main si on ne souhaite pas redémarrer.

Il est conseillé d’aller dans le Panneau de Configuration, dans les “Options internet”, onglet “Connexions” puis “Paramètres LAN” et de désactiver la detection automatique de la connexion. En effet, celle-ci attend un timeout de la detection d’un proxy à chaque requête WebDAV, ce qui ralentit énormément la connexion.

Ensuite, nous pouvons accéder à une URL type \\webdav.monserveur.com[@SSL][@80]\mon\dossier\partage ou encore http[s]://webdav.monserveur.com/mon/dossier/partage[:80]. Les caractères entre crochets sont à spécifier si l’on souhaite utiliser une connexion HTTPS sécurisée. De même, il est possible de spécifier un numéro de port non standard.

On peut également le conecter en tant que lecteur réseau. Si l’on coche “Mémoriser les informations d’identification”, le nom d’utilisateur sera conservé, mais pas le mot de passe, qu’il faudra malgré tout entrer à chaque ouverture de session.

Par défaut, Windows n’autorise pas le téléchargement de fichiers de plus d’une certaine taille (un fichier de 60Mo n’est pas passé). Il faut pour cela aller à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters, et passer la valeur ‘FileSizeLimitInBytes’ à 4294967295 (source)

On peut également créer un batch qui permet de libérer une lettre de lecteur et de l’assigner au partage, comme ceci : bat webdav.bat net use Z: /delete net use Z: \\webdav.monserveur.com@SSL\mon\dossier\partage /user:monUser

03 Sep 2015, 00:00

OpenVPN en mode routé sous DD-WRT (build 13064)

Cet article décrit la mise en place d’un serveur OpenVPN configuré en mode routé (sous-réseau distinct) sous DD-WRT, build 13064.Cette build est assez ancienne, mais est la plus récente disponible pour mon WRT54GL. Les manips peuvent changer lors de versions plus récentes. Il ne couvrira que les aspects spécifiques à DD-WRT, et non la mise en place générale d’une structure PKI.

Il a pour but l’accès, à partir de l’extérieur, à tout l’intérieur d’un réseau LAN (pour l’accès aux ressources internes d’une entreprise par exemple). Il n’a PAS pour but la redirection complète du traffic réseau via VPN (usage en proxy). Par ailleurs, il part du principe qu’aucune de règle de pare-feu spécifique n’est déjà configuré.

Tout d’abord, sur un ordinateur, installer OpenVPN, Easy-RSA, et générer les clé et certificats pour le CA et le server, ainsi que les paramètres Diffie-Hellman.

Aller sur l’interface d’administration du routeur, Services -> VPN. Sous OpenVPN Daemon, cocher Enable. Pour le start-type, j’ai mis System car mon install est un peu particulière, et le routeur n’a pas de WAN (ce n’est qu’un bridge wifi). Il est toutefois souvent recommandé de cocher WAN Up.

Sous “Public Server Cert”, coller le ca.crt généré auparavant.

Sous “Certificate Revoke List”, coller le crl.pem.

Sous “Public Client Cert”, coller le server.crt.

Sous “Private Client Key”, coller le server.key.

Sous “DH PEM”, coller le dh2048.pem généré auparavant.

Sous OpenVPN config, coller ce qui suit :

	# if you want to add routes to your client
	# typically for acessing the LAN from the VPN
	push "route 192.168.1.0 255.255.255.0"

	 # definition of the VPN network
	server 10.89.0.0 255.255.255.0

	# tun for routed mode
	dev tun0
	# I always prefer UDP
	proto udp
	keepalive 10 120
	dh /tmp/openvpn/dh.pem
	ca /tmp/openvpn/ca.crt
	cert /tmp/openvpn/cert.pem
	key /tmp/openvpn/key.pem

	# you can choose other values, but it has to be in adequation with your client's config
	cipher AES-128-CBC
	comp-lzo

	# if you want VPN clients to be able to communicate together
	client-to-client

	# Only use crl-verify if you are using the revoke list
	# otherwise comment it out
	crl-verify /tmp/openvpn/ca.crl

	# management parameter allows DD-WRT's OpenVPN Status web page 
	# to access the server's management port
	# port must be 5001 for scripts embedded in firmware to work
	management localhost 5001

Cliquer sur Save, puis “Apply Settings”. On devrait alors voir, sous Status -> OpenVPN, que le serveur a bien démarré. Normalement, les clients peuvent désormais tous communiquer avec le serveur et avec les autres clients. Pour que les clients puissent communiquer avec l’intérieur du LAN cible, il faut rajouter la règle de pare-feu suivante :

	iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
	
	iptables -I INPUT 1 -p udp --dport 1194 -j ACCEPT
	iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
	iptables -I FORWARD -i tun0 -o br0 -j ACCEPT

dans le cadre “Commands”, et cliquer sur Save Firewall.

Il n’y a ensuite plus qu’à configurer les clients. Voici un exemple de config fonctionnel avec les paramètres serveur ci-dessus :

client
dev tun
proto udp
remote my.domain 1194
resolv-retry infinite
nobind
persist-key
persist-tun
float

ca ca.crt
cert client.crt
key client.key
ns-cert-type server
cipher AES-128-CBC
comp-lzo
verb 2

11 May 2015, 00:00

Live-USB Hybrid Debian Jessie

Maintenant que Jessie est sortie, voici les commandes pour la création rapide d’une image Live customisée avec le bureau MATE. Ceci est basé sur la méthode pour Wheezy, avec quelques petites modifications.

sudo aptitude install live-build live-tools
mkdir jessie_live && cd jessie_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 'jessie' \
	--linux-flavours '586 686-pae amd64' \
	--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-ipw2x00 firmware-ivtv 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-pulse gstreamer0.10-pulseaudio mate-settings-daemon-pulse lvm2

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.

07 Apr 2015, 00:00

Installer de nouvelles icônes réseau pour Dia

Cet article est un petit complément à cet article sur le blog admin-linux.org.

Les fichiers .shape proposés dans l’archive ci-présente ont été mis à jour pour intégrer un point d’ancrage principal et sont disponibles ici. Il suffit de décompresser cette archive dans ~/.dia/ pour l’utilisateur courant, et dans /usr/share/dia/ pour les ajouter au niveau système.