Préférences système -> Utilisateurs -> Ouverture
/Library/LaunchAgents
et ~/Library/LaunchAgents
/Library/StartupItems
/Library/LaunchDaemons
/var/db/launchd.db/
Pour consulter : launchctl list |more
Préférences système -> Utilisateurs -> Ouverture
/Library/LaunchAgents
et ~/Library/LaunchAgents
/Library/StartupItems
/Library/LaunchDaemons
/var/db/launchd.db/
Pour consulter : launchctl list |more
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
Il suffit de taper la comande suivante :
loginctl show-session $XDG_SESSION_ID -p Type
Le tuto suivant a pour but d’installer Windows 8.1 sur un disque externe. En effet, bien que ce soit impossible via une install traditionnelle (par DVD ou clé USB), il est possible de déployer une install Windows sur un disque externe via l’utilitaire DISM, et le disque acceptera alors de booter.
Il est probable, mais non testé, que ce tuto fonctionne avec Windows 10, et il est adaptable pour Windows 7 (avec l’utilitaire Imagex.exe au lieu de DISM).
Prérequis :
Etapes (penser à adapter les lettres des commandes si nécessaire) :
G:
dism /get-wiminfo /wimfile=G:\sources\install.wim
diskpart
pour partitionner le disque externe.list disk
select disk 1
clean
create partition primary size=350
format fs=fat32 quick
active
assign letter=B
create partition primary
format fs=ntfs quick
assign letter=Z
exit
.dism /Apply-Image /ImageFile:G:\sources\install.wim /Index:1 /ApplyDir:Z:\
bcdboot Z:\Windows /s B: /f all
/f
sert à spécifier le type de démarrage. Avec ALL, on install aussi bien un boot BIOS qu’un boot UEFI.Il n’y a plus qu’à démarrer sur le disque externe ! (en espérant que le BIOS/UEFI de votre pc soit suffisamment clair et souple pour permettre le démarrage sur n’importe quel disque, y compris externe, ce qui n’est pas toujours gagné…)
Sources : Article sur Slice42 et article sur Bleeptobleep
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 commande xset.
Il suffit de faire une recherche google de ce type :
"nom a chercher" -inurl:(htm|html|php) intitle:"index of" +"last modified" +"parent directory"
Si on trouve une adresse intéressante, il suffit ensuite de lancer
wget -c -r --no-parent http://adresse-interessante.com/folder/
pour récupérer l’ensemble des fichiers (avec un peu de tri à faire)
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
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 le 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 (fdisk -l).
Le journal de la récupération est écrit dans le fichier mapfile précisé (on peut mettre le nom qu’on souhaite).
Si on veut cibler la récupération de données, par exemple si on a peu de données sur un gros disque, et qu’on suspecte qu’elles soient au début du disque, on peut spécifier une position de départ avec -i
et une taille à couvrir par la recherche avec l’option -s
. Par exemple :
sudo ddrescue -n -f -b512 -i0 -s30GiB /dev/sdi1 ./file.img mapfile
pour forcer le départ du début du disque et ne tester que les 30 premiers gibioctets.
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 -r -1 -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 -r -1
dit à ddrescue d’essyer indéfiniment la lecture sur les secteurs qu’il n’arrive pas à lire, avant de passer au suivant. On peut aussi passer un entier positif en argument, pour un nombre de fois (par exemple -r3).
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.
Enfin, j’ai eu le cas d’un disque qui avait très peu de secteurs défectueux, mais dont la lecture était extrêmement lente, entre 6 et 10ko/s, probablement à cause de défaillances électroniques. Suite à la lecture de ce post, j’ai pu réduire le timeout et le error-handling timout du disque grâce aux commandes suivantes, en root :
echo 1 > /sys/block/<deviceName>/device/timeout
echo 1 > /sys/block/<deviceName>/device/eh_timeout
Ce qui m’a fait passer à une moyenne de 30ko/s, avec seulement 10 jours de récupération de données :D
# 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
Depuis stretch, la commande ifconfig n’est plus installée par défaut. Pour la remettre :
sudo aptitude install net-tools
sudo apt install iputils-ping
pour avoir la commande ping4.
On peut spécifier l’interface de départ d’une requête ICMP via l’option -I , par exemple
ping -I 10.88.2.1 10.88.0.64
Permet de vérifier la résolution des noms de domaine.
Pour l’installer : sudo apt install dnsutils
.
On peut demander une résolution simplement avec :
dig example.org
Par défaut, dig renvoie le champ A s’il existe, et le champ SOA (Start Of Authority) si le domaine demandé n’existe pas.
On peut demander un champ précis en le spécifiant :
dig MX example.org
On peut spécifier un serveur DNS à interroger avec :
dig @1.2.3.4 example.org
On peut demander une résolution inverse :
dig -x 1.2.3.4
On peut aussi demander une résolution inverse avec l’adresse IP inversée, et le suffixe in-addr.arpa
, mais il faut alors spécifier le champ PTR :
dig PTR 4.3.2.1.in-addr.arpa
Avec netcat :
sudo apt install netcat ## dummy package for netcat-openbsd
puis
nc -z -v example.org 80
ou
nc -z -v -u example.org
pour de l’UDP (ne semble pas indiquer de message d’erreur en cas d’échec ; met environ 3s à conclure à un test réussi ; on peut passer l’option -w 1
pour n’attendre qu’une seconde)
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=0 biosdevname=0"
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", ATTR{address}=="11:22:33:44:55:66", NAME="eth-motherboard"
Il suffit de modifier l’adresse mac et le nom souhaité pour qu’ils soient opérationnels au prochain boot.
(il peut éventuellement être nécessaire de update-initramfs -k all -u
?)
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 en 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
Il m’est arrivé qu’une interface refuse de se reconfigurer selon les paramètres du fichier /etc/network/interfaces.
La commande service networking restart renvoyait, de mémoire, “Interface non configurée”. Pareil avec ifup, ifdown.
Finalement, le problème a été résolu grâce à la commande
ip addr flush dev enp4s0
enp4s0 étant évidemment l’interface posant problème.
echo dummy >> /etc/modules
Au chargement du module, un périphérique dummy0
est automatiquement créé, avec une adresse MAC aléatoire.
Comme l’adresse MAC change à chaque boot, on ne peut pas utiliser la méthode via Udev.
On peut donc créer un script qui va créer l’interface, et la renommer, et même changer l’adresse MAC
#!/bin/sh
ip link add dummy0 type dummy
ip link set name my-dummy dev dummy0
ip link set my-dummy address 02:01:02:03:04:08
Ce script peut être appelé manuellement, au boot, ou via le paramètre “pre-up” dans le fichier /etc/network/interfaces
Il faut déjà installer le paquet bridge-utils :
sudo apt install bridge-utils
Exemple pour une interface TAP (OpenVPN) :
auto my-bridge
iface my-bridge inet dhcp
bridge_ports eth0 tap0
pre-up openvpn --mktun --dev tap0
bridge_hw 01:02:03:04:0:06 # non obligatoire
post-down openvpn --rmtun --dev tap0
allow-hotplug eth0
Exemple de pont entre une carte physique et une carte virtuelle
auto my-bridge
iface my-bridge inet static
bridge_ports eth0 dummy0
address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
pre-up ip link add dummy0 type dummy
post-down ip link delete dummy0
Les interfaces réseau utilisées n’ont pas besoin d’être mentionnées ailleurs dans le fichier.
La mention “auto” sert à démarrer automatiquement la connexion. Si elle n’est pas mentionnée, il faudra ifup my-dev
Pour que le système accepte de transférer les paquets d’un réseau vers un autre (si le poste est conecté à 2 réseaux), il faut activer le forxard IPv4. On peut le faire à la volée avec sudo sysctl -w net.ipv4.ip_forward=1
, et le rendre persistent avec la commande (en root) echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.d/10-network.conf
.
Pour désactiver l’IPv6, echo net.ipv6.conf.all.disable_ipv6=1 >> /etc/sysctl.d/10-network.conf
.