Méthodes et outils de diagnostic

Apprivoiser et soigner les bobos de son ordinateur avec des logiciels libres !

Sommaire (1)

Sommaire (2)

Sommaire (3)

GLOSSAIRE

memtest86plus_logo Vérification de la mémoire

sysinfo_logo Sysinfo

gnome_system_monitor_logo Moniteur système

gnome_system_monitor_logo Moniteur système

gnome_system_monitor_logo Moniteur système

hardinfo-logo Hardinfo : vue détaillée + benchmark

stacer-logo Stacer : infos + monitoring + outils

utilities-terminal Mesurer la mémoire utilisée par un programme

Manque de mémoire ?

Boot-Loader : comment démarre un ordinateur ?

BIOS libre ?

Les combinaisons selon l'âge et le modèle de la machine

uefi-logo L'UEFI

$ efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0002
Boot0000* debian        HD(1,GPT,f85104c8-fb59-4526-b921-ed16cb3dc5c3,0x600,0x20000)/File(\EFI\debian\shimx64.efi)
Boot0002  UEFI: Built-in EFI Shell      VenMedia(5073b95c-db36-429b-a648-be47694c8012)..BO

Comparaison des systèmes MBR et GPT

grub_logo Chargeur de démarrage GNU GRUB

grub_logo GRUB avec table partitions MBR

grub_logo GRUB avec table partitions GPT

grub_logo GRUB : comparaison MBR/GPT

grub_logo GRUB : comparaison versions

GRUB 0.97 (legacy)

GRUB 2.0

Fichier de config

/boot/grub/grub.conf ou /boot/grub/menu.lst

/boot/grub/grub.cfg (Généré par « update-grub »)

Numéro de partition

Commence à 0

Commence à 1

1er périphérique identifié hd0 dans les deux GRUB.

Réglages généraux

via grub.conf

via /etc/default/grub

Menus personnalisés

via grub.conf

via /etc/grub.d/40_custom

Notation partition dans grub.cfg

hda/sda/etc...

Prends en charge les UUID

Récapitulatif des utilitaires

system-search Vérification MBR

# dd if=/dev/sda bs=512 count=1 > mbr && file mbr
1+0 enregistrements lus
1+0 enregistrements écrits
512 octets (512 B) copiés, 0,000757801 s, 676 kB/s
mbr: DOS/MBR boot sector
# dd if=/dev/sda bs=512 count=1 | strings |grep -i grub
1+0 enregistrements lus
1+0 enregistrements écrits
512 octets (512 B) copiés, 0,00104736 s, 489 kB/s
GRUB

reparation Réparer amorçage GRUB2 boot legacy

fdisk -l                      # pour vous aider à trouver la partition sur laquelle est votre ubuntu
mount /dev/sdaX /mnt          # montage de celle-ci en remplaçant le X par le bon numéro de partition
mount --bind /dev /mnt/dev    # lien symbolique du dossier /dev en cours d'utilisation vers le disque monté
mount --bind /dev/pts /mnt/dev/pts   # lien symbolique du dossier /dev/pts en cours d'utilisation vers le disque monté
mount --bind /sys /mnt/sys    # lien symbolique du dossier /sys en cours d'utilisation vers le disque monté
mount -t proc /proc /mnt/proc # Pour que Grub2 trouve /proc/mounts
chroot /mnt /bin/bash         # mise à la racine du disque monté
mount -a                           # montage des partitions dans le chroot
apt install grub-pc            # installation du logiciel Grub2 (sur le disque maintenant à la racine)
update-grub                        # création d'un nouveau fichier de configuration : grub.cfg
grub-install /dev/sda              # installation de grub sur le MBR

Si la dernière commande sort une erreur, tapez :

grub-install --force /dev/sda

Démontez les partitions montées dans le chroot :

umount -a

(Ignorez les éventuelles erreurs signalées.)

À partir de là, vous pouvez sortir du disque monté en effectuant ctrl+D. Puis, démontez ce disque :

sudo umount /mnt/{dev/pts,dev,sys,proc}
sudo umount /mnt

reparation Réparer amorçage GRUB2 boot UEFI

fdisk -l                      # pour vous aider à trouver la partition sur laquelle est votre ubuntu
mount /dev/sdaX /mnt          # montage de celle-ci en remplaçant le X par le bon numéro de partition
mount --bind /dev /mnt/dev    # lien symbolique du dossier /dev en cours d'utilisation vers le disque monté
mount --bind /dev/pts /mnt/dev/pts   # lien symbolique du dossier /dev/pts en cours d'utilisation vers le disque monté
mount --bind /sys /mnt/sys    # lien symbolique du dossier /sys en cours d'utilisation vers le disque monté
mount -t proc /proc /mnt/proc # Pour que Grub2 trouve /proc/mounts
chroot /mnt /bin/bash         # mise à la racine du disque monté
mount -a                           # montage des partitions dans le chroot
apt install grub-efi-amd64            # installation du logiciel Grub2 en version EFI (sur le disque maintenant à la racine)
# ou grub-efi-amd64-signed pour la version secureboot
# ou grub-efi-ia32 pour la version 32bit (à priori non-secureboot)
update-grub                        # création d'un nouveau fichier de configuration : grub.cfg
grub-install              # installation de l'entrée grub dans l'UEFI
efibootmgr -v           # pour vérifier l'ajout de l'entrée

Démontez les partitions montées dans le chroot :

umount -a

(Ignorez les éventuelles erreurs signalées.)

À partir de là, vous pouvez sortir du disque monté en effectuant ctrl+D. Puis, démontez ce disque :

sudo umount /mnt/{dev/pts,dev,sys,proc}
sudo umount /mnt

uefi-logo Le mécanisme UEFI SecureBoot

uefi-logo Schéma d'amorçage en mode UEFI + secureboot

Fonctionnement générique d'une signature électronique

uefi-logo Secureboot avec ses propre clefs de bout en bout

Actualité : faille secureboot-grub2 BootHole

Démarrage du noyau et système d'init

systemd-logo Diagnostic systemd

login@ma-machine:~$ systemctl status
● ma-machine
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Fri 2020-08-28 18:04:11 CEST; 27min ago
   CGroup: /
           ├─937 bpfilter_umh
           ├─user.slice
           │ └─user-1000.slice
           │   ├─user@1000.service
           │   │ ├─gvfs-goa-volume-monitor.service
           │   │ │ └─2462 /usr/lib/gvfs/gvfs-goa-volume-monitor
           │   │ ├─xdg-permission-store.service
           │   │ │ └─2374 /usr/libexec/xdg-permission-store
           │   │ ├─evolution-calendar-factory.service
           │   │ │ ├─2682 /usr/lib/evolution/evolution-calendar-factory
           │   │ │ └─2770 /usr/lib/evolution/evolution-calendar-factory-subprocess --factory all --bus-name org.gnome.evolution.
           │   │ ├─gvfs-daemon.service
           │   │ │ ├─2242 /usr/lib/gvfs/gvfsd
           │   │ │ ├─2247 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
           │   │ │ ├─2655 /usr/lib/gvfs/gvfsd-trash --spawner :1.22 /org/gtk/gvfs/exec_spaw/0
           │   │ │ ├─2863 /usr/lib/gvfs/gvfsd-network --spawner :1.22 /org/gtk/gvfs/exec_spaw/8
           │   │ │ └─2996 /usr/lib/gvfs/gvfsd-dnssd --spawner :1.22 /org/gtk/gvfs/exec_spaw/21
<...plein d'autre lignes...>
login@ma-machine:~$ systemctl --failed
  UNIT                         LOAD   ACTIVE SUB    DESCRIPTION
● systemd-modules-load.service loaded failed failed Load Kernel Modules

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

1 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

systemd-logo Diagnostic systemd (suite)

login@ma-machine:~$ systemctl status systemd-modules-load.service
● systemd-modules-load.service - Load Kernel Modules
   Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2020-08-28 19:10:39 CEST; 5s ago
     Docs: man:systemd-modules-load.service(8)
           man:modules-load.d(5)
  Process: 7852 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
 Main PID: 7852 (code=exited, status=1/FAILURE)

août 28 19:10:39 ma-machine systemd[1]: Starting Load Kernel Modules...
août 28 19:10:39 ma-machine systemd-modules-load[7852]: Failed to find module 'ashmem_linux'
août 28 19:10:39 ma-machine systemd-modules-load[7852]: Failed to find module 'binder_linux'
août 28 19:10:39 ma-machine systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
août 28 19:10:39 ma-machine systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
août 28 19:10:39 ma-machine systemd[1]: Failed to start Load Kernel Modules.

login@ma-machine:~$ journalctl -b    # pour voir toute la séquence du dernier démarrage (un peu comme dmesg, mais avec les services systemd en plus)

login@ma-machine:~$ journalctl -p 3 -b   # "emerg" (0), "alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6), "debug" (7)
-- Logs begin at Sat 2019-11-09 19:45:52 CET, end at Fri 2020-08-28 18:43:34 CEST. --
août 28 18:04:11 ma-machine systemd-modules-load[347]: Failed to find module 'ashmem_linux'
août 28 18:04:11 ma-machine systemd-modules-load[347]: Failed to find module 'binder_linux'
août 28 18:04:22 ma-machine spice-vdagent[2480]: Cannot access vdagent virtio channel /dev/virtio-ports/com.redhat.spice.0
août 28 18:04:23 ma-machine dring[2731]: Can't find a usable accelerated H265/HEVC codec, disabling.
août 28 18:04:23 ma-machine dring[2731]: NAT-PMP: Can't remove all port mappings: NOGATEWAYSUPPORT
août 28 18:04:23 ma-machine dring[2731]: NAT-PMP: Can't remove all port mappings: NOGATEWAYSUPPORT
août 28 18:04:47 ma-machine pulseaudio[2328]: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error

login@ma-machine:~$ journalctl -u grub-common.service --since "2 days ago"
-- Logs begin at Sat 2019-11-09 19:45:52 CET, end at Fri 2020-08-28 19:11:40 CEST. --
août 28 17:01:59 ma-machine systemd[1]: Starting LSB: Record successful boot for GRUB...
août 28 17:01:59 ma-machine grub-common[1009]:  * Recording successful boot for GRUB
août 28 17:01:59 ma-machine grub-common[1009]:    ...done.
août 28 17:01:59 ma-machine systemd[1]: Started LSB: Record successful boot for GRUB.
août 28 18:03:45 ma-machine systemd[1]: Stopping LSB: Record successful boot for GRUB...
août 28 18:03:45 ma-machine systemd[1]: Stopped LSB: Record successful boot for GRUB.
-- Reboot --
août 28 18:04:13 ma-machine systemd[1]: Starting LSB: Record successful boot for GRUB...
août 28 18:04:13 ma-machine grub-common[1087]:  * Recording successful boot for GRUB
août 28 18:04:13 ma-machine grub-common[1087]:    ...done.
août 28 18:04:13 ma-machine systemd[1]: Started LSB: Record successful boot for GRUB.

login@ma-machine:~$ journalctl --list-boots
<...>
-1 12b3a9e55b374baebdd0757d3e0f436e Sun 2020-09-20 12:12:09 CEST—Mon 2020-09-20 19:05:55 CEST
 0 0fe95512438a423d9a21a7812d3ca991 Mon 2020-09-21 17:15:52 CEST—Mon 2020-09-21 22:45:51 CEST

tux-logo Options de démarrage du noyau Linux

C-states

systemd-logo Optimiser le temps de démarrage

1 : État des lieux

dmesg
$ sudo systemd-analyze                 # affiche la durée de démarrage du système, sans détail.
Startup finished in 4.310s (kernel) + 28.745s (userspace) = 33.056s
graphical.target reached after 28.730s in userspace

$ sudo systemd-analyze blame           # affiche la durée des processus lors du démarrage.
 20.789s plymouth-quit-wait.service
 17.433s apt-daily-upgrade.service
  9.893s apt-daily.service
  5.626s NetworkManager-wait-online.service
   948ms snapd.service
   753ms keyboard-setup.service
   589ms dev-sdb1.device
   570ms lm-sensors.service
   538ms snap-chromium-1213.mount
   531ms snap-dosbox\x2dx-569.mount
   462ms snap-gtk2\x2dcommon\x2dthemes-9.mount
   457ms snap-core-9665.mount
   426ms snapd.seeded.service
   367ms snap-gtk2\x2dcommon\x2dthemes-13.mount

systemd-logo Optimiser le temps de démarrage

2 : chemin critique

$ sudo systemd-analyze critical-chain  # affiche la durée des processus du "chemin critique"
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @28.730s
└─multi-user.target @28.730s
  └─rc-local.service @7.735s +202ms
    └─network-online.target @7.732s
      └─NetworkManager-wait-online.service @2.090s +5.626s
        └─NetworkManager.service @1.760s +319ms
          └─dbus.service @1.676s
            └─basic.target @1.661s
              └─sockets.target @1.661s
                └─snapd.socket @1.660s +1ms
                  └─sysinit.target @1.657s
                    └─snapd.apparmor.service @1.635s +21ms
                      └─apparmor.service @1.300s +333ms
                        └─local-fs.target @1.296s
                          └─run-user-1000-gvfs.mount @9.397s
                            └─run-user-1000.mount @2.107s
                              └─local-fs-pre.target @979ms
                                └─keyboard-setup.service @225ms +753ms
                                  └─systemd-journald.socket @223ms
                                    └─system.slice @223ms
                                      └─-.slice @221ms

iso-logo Diagnostic : méthodologie "pure"

logviewer-logo Diagnostic via lecture des journaux

  1. Pour chaque couche du modèle OSI, on essaye de trouver des fichiers journaux (logs)
    • /var/log
    • /home/<user>/.<nomdelappli> # plus "old-school"
    • /home/<user>/.config/<nomdelappli> # plus "moderne"
    • etc...
  2. Lancement plus "verbeux" d'un programme (verbosity)
    • monapplication -v # par exemple
  3. Analyse syntaxique des logs
    • /!\ ne pas bloquer l'écriture d'un fichier en cours d'utilisation
    • Comprendre la structure du log avant d'analyser le contenu (syslog, log4j, etc..)
    • tail -f <nomdufichierlog> # affiche en continu les nouvelles lignes
    • head # afficher le début du fichier
    • grep <motclef> <nomdufichierlog>
    • zgrep <motclef> <nomdufichierlog.gz>
    • find -(i)name
    • rechercher dans vi
      • /<mot clef> # rechercher mot clef
      • :<numéro-ligne> # aller à la ligne <numéro-ligne>
    • afficher les lignes 15 à 18 d'un fichier
      • sed -n 15,18p <nomdufichier>
    • nano/emacs/whatelse...
    • comparaison avec un log "valide"
      • si on arrive à produire des logs d'un démarrage "normal" par ailleurs (autre profil, etc...)
  4. On recherche la documentation sur les messages trouvés (codes erreurs, niveau de debug)
    • warning : pas forcément bloquant
    • error : à regarder avec plus d'attention
    • mots clefs : troubleshoot, verbose, <code>, <application>, <version>
    • bugtrackers
    • forums
    • manuels
    • etc...

logviewer-logo Diagnostic : exemple logs dmesg

# 1. lancer la commande dmesg avec l'option de suivi des nouveaux événements

root@machine:~# dmesg --follow
<les derniers éléments sont affichés, et le programme fonctionne toujours>

# 2. branchez la clé USB : de nouveaux événements apparaissent

[2165634.791468] scsi 5:0:0:0: Direct-Access              USB DISK 2.0     PMAP PQ: 0 ANSI: 0 CCS
[2165634.802119] sd 5:0:0:0: Attached scsi generic sg3 type 0
[2165635.042119] sd 5:0:0:0: [sdc] 8036352 512-byte logical blocks: (4.11 GB/3.83 GiB)
[2165635.042726] sd 5:0:0:0: [sdc] Write Protect is off
[2165635.042738] sd 5:0:0:0: [sdc] Mode Sense: 23 00 00 00
[2165635.042743] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[2165635.051244] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[2165635.051264]  sdc: sdc1
[2165635.106004] sd 5:0:0:0: [sdc] Assuming drive cache: write through
[2165635.106019] sd 5:0:0:0: [sdc] Attached SCSI removable disk

bluetooth_logo Debug : casque+micro bluetooth

Symptomes

Questions à se poser ?

$ lsusb   # avant/après branchement du dongle pour trouver la ligne s'il y en a hésitation)
ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth
$ uname -a; lspci -nnk | grep -iA2 net; lsusb; dmesg | grep -i bluetooth; dmesg | grep -i firmware; lsmod | grep bluetooth

On s'aperçoit qu'il y a une erreur de chargement de firmware :

[    2.510816] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0a5c-216f.hcd failed with error -2
[    2.510820] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0a5c-216f.hcd not found

bluetooth_logo Debug : casque+micro bluetooth

Schéma de la "pile" bluetooth

bluetooth_logo Debug : casque+micro bluetooth

Hypothèse

Procédure de résolution

$ tail -f kern.log
$ hex2hcd BCM20702A1_001.002.014.1443.1467.hex -o BCM20702A1-0b05-17cb.hcd
$ sudo cp BCM20702A1-0b05-17cb.hcd /lib/firmware/brcm/

bluetooth_logo Debug : casque+micro bluetooth

[ 4011.892911] usb 1-3.1: New USB device found, idVendor=0b05, idProduct=17cb, bcdDevice= 1.12
[ 4011.892917] usb 1-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4011.892921] usb 1-3.1: Product: BCM20702A0
[ 4011.892924] usb 1-3.1: Manufacturer: Broadcom Corp
[ 4011.892928] usb 1-3.1: SerialNumber: 5CF37090798B
[ 4012.020044] Bluetooth: hci0: BCM: chip id 63
[ 4012.021039] Bluetooth: hci0: BCM: features 0x07
[ 4012.037041] Bluetooth: hci0: BCM20702A
[ 4012.038055] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
[ 4012.038151] bluetooth hci0: firmware: direct-loading firmware brcm/BCM20702A1-0b05-17cb.hcd

Conclusion

reseau Réseau : utilitaires

login@machine:~$ ip a   # ifconfig étant déprécié
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:ae:c5:00:01:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.40/24 brd 192.168.1.255 scope global dynamic noprefixroute enp5s0
       valid_lft 33014sec preferred_lft 33014sec
    inet6 2001:910:1234:12::490/128 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::6dc7:ac87:b34c:7cf/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
login@machine:~$ ip -6 r
::1 dev lo proto kernel metric 256 pref medium
2001:910:1234::490 dev enp5s0 proto kernel metric 100 pref medium
2001:910:1234:12::/64 dev enp5s0 proto ra metric 100 pref medium
fe80::/64 dev enp5s0 proto kernel metric 100 pref medium
fe80::/64 dev enp5s0 proto kernel metric 256 pref medium
default via fe80::1234:abcd:f13a:4321 dev enp5s0 proto ra metric 100 pref medium

login@machine:~$ ip r
default via 192.168.1.1 dev enp5s0 proto dhcp metric 100
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.40 metric 100

reseau Réseau : fichiers de configuration

/etc/network/interfaces     # fichier principal
/etc/network/interfaces.d/  # dossier pouvant contenir des fichiers personnalisés séparés

login@machine:~$ cat /etc/network/interfaces         # celui-ci peut être minimaliste
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
/etc/network/if-down.d/
/etc/network/if-pre-up.d/
/etc/network/if-post-down.d/
/etc/network/if-up.d/
/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
/etc/init.d/network-manager
/etc/dnsmasq.d/network-manager
/etc/systemd/system/multi-user.target.wants/NetworkManager.service
/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
/etc/init/network-manager.conf
/etc/NetworkManager/NetworkManager.conf
/etc/NetworkManager/system-connections/    # fichiers de configuration de connexions "utilisateur" (wifi ou filaire)

reseau Réseau : interface NetworkManager

reseau Réseau : accessibilité, latence, gigue

ping

login@machine:~$ ping 2001:67c:288::2    # ou www.graoulug.org
PING 2001:67c:288::2(2001:67c:288::2) 56 data bytes
64 bytes from 2001:67c:288::2: icmp_seq=1 ttl=59 time=132 ms
64 bytes from 2001:67c:288::2: icmp_seq=2 ttl=59 time=97.5 ms

traceroute

login@machine:~$ traceroute6 www.graoulug.org
traceroute to www.graoulug.org (2001:67c:288::2) from 2001:910:1234:12::490, 30 hops max, 24 byte packets
 1  2001:910:1234:12::1 (2001:910:1234:12::1)  0,535 ms  0,459 ms  0,393 ms
 2  lns.fdn.fr (2001:910:8ff:ffff::1)  60,561 ms  45,818 ms  45,258 ms
 3  x-ray.gitoyen.net (2001:910::4)  45,081 ms  123,179 ms  241,864 ms
 4  fdn-whiskey.gitoyen.net (2001:910:0:800::209)  68,036 ms  170,16 ms  85,212 ms
 5  octopuce.par.franceix.net (2001:7f8:54::94)  45,464 ms  292,608 ms  99,522 ms
 6  brassens.heberge.info (2001:67c:288::2)  45,838 ms  45,581 ms  106,93 ms

reseau Réseau : latence et chemin

mtr

login@machine:~$ mtr www.graoulug.org
                                               My traceroute  [v0.92]
ma-machine (2001:910:1234:12::490)                                                             2020-08-16T13:54:23+0200
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                                              Packets               Pings
 Host                                                                       Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. AS20766  2001:910:1234:12::1                                             0.0%    68    0.5   0.5   0.4   5.6   0.7
 2. AS20766  lns.fdn.fr                                                      4.4%    68   45.2 114.1  44.1 519.7 101.3
 3. AS20766  x-ray.gitoyen.net                                               1.5%    68   44.0 113.7  44.0 460.9 108.3
 4. AS20766  fdn-whiskey.gitoyen.net                                         1.5%    67   49.9 117.2  43.7 438.5 105.6
 5. AS???    octopuce.par.franceix.net                                       3.0%    67   45.9 120.1  44.4 424.8  94.6
 6. AS28855  brassens.heberge.info                                           3.0%    67   45.4  96.8  44.6 418.8  83.3

reseau Réseau : résolution de noms DNS

dig

login@machine:~$ dig @2001:913::8 -t AAAA www.graoulug.org

; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> @2001:913::8 -t AAAA www.graoulug.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9399
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: dc432c203d33be878ae8e4cb5f3920299da7d33707957235 (good)
;; QUESTION SECTION:
;www.graoulug.org.             IN      AAAA

;; ANSWER SECTION:
www.graoulug.org.      3600    IN      AAAA    2001:67c:288::2

;; Query time: 47 msec
;; SERVER: 2001:913::8#53(2001:913::8)
;; WHEN: Sun Aug 16 14:01:45 CEST 2020
;; MSG SIZE  rcvd: 101
login@machine:~$ ls -alh /etc/resolv.conf
lrwxrwxrwx 1 root root 29 nov.   1  2017 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

       * DoH : dans Mozilla Firefox par exemple (=> plusieurs résolveurs selon l'application utilisée...)
               * https://www.bortzmeyer.org/8484.html
               * https://www.bortzmeyer.org/doh-et-ses-adversaires.html
       * DoT : via stubby par exemple
               * https://www.bortzmeyer.org/7858.html
       * https://fr.wikipedia.org/wiki/EDNS
       * https://www.bortzmeyer.org/   (comme si on avait pas déjà remarqué ! )

reseau Réseau : test ports TCP/UDP

netcat

# le port TCP_443 est ouvert
login@machine:~$ nc -zvv www.graoulug.org 443
Connection to www.graoulug.org 443 port [tcp/https] succeeded!

# mais pas le TCP_1234
login@machine:~$ nc -zvv www.graoulug.org 1234
nc: connect to www.graoulug.org port 1234 (tcp) failed: Connection refused

telnet

login@machine:~$ telnet www.graoulug.org 443
Trying 2001:67c:288::2...
Connected to www.graoulug.org.
Escape character is '^]'.

login@machine:~$ telnet www.graoulug.org 1234
Trying 2001:67c:288::2...
Trying 91.194.60.2...
telnet: Unable to connect to remote host: Connection refused

nmap

reseau Réseau : test de débit

iperf

# sur le "serveur"
login@monserveur.lan:~$ iperf3 --server
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 2001:910:1234:12::490, port 45142
[  5] local 2001:910:1234:12::491 port 5201 connected to 2001:910:1234:12::490 port 45144
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   111 MBytes   928 Mbits/sec
[  5]   1.00-2.00   sec   111 MBytes   928 Mbits/sec
[  5]   2.00-3.00   sec   111 MBytes   927 Mbits/sec
[  5]   3.00-4.00   sec   110 MBytes   928 Mbits/sec
[  5]   4.00-5.00   sec   111 MBytes   928 Mbits/sec
[  5]   5.00-6.00   sec   111 MBytes   928 Mbits/sec
[  5]   6.00-7.00   sec   111 MBytes   927 Mbits/sec
[  5]   7.00-8.00   sec   111 MBytes   928 Mbits/sec
[  5]   8.00-9.00   sec   110 MBytes   927 Mbits/sec
[  5]   9.00-10.00  sec   111 MBytes   927 Mbits/sec
[  5]  10.00-10.00  sec   121 KBytes   893 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.08 GBytes   928 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

# sur le "client"
login@monclient.lan:~$ iperf3 -c monserveur.lan
Connecting to host monserveur.lan, port 5201
[  4] local 2001:910:1234:12::490 port 45144 connected to 2001:910:1234:12::491 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   113 MBytes   950 Mbits/sec    0    443 KBytes
[  4]   1.00-2.00   sec   111 MBytes   929 Mbits/sec    0    466 KBytes
[  4]   2.00-3.00   sec   111 MBytes   931 Mbits/sec    0    537 KBytes
[  4]   3.00-4.00   sec   111 MBytes   928 Mbits/sec    0    537 KBytes
[  4]   4.00-5.00   sec   111 MBytes   928 Mbits/sec    0    537 KBytes
[  4]   5.00-6.00   sec   111 MBytes   928 Mbits/sec    0    537 KBytes
[  4]   6.00-7.00   sec   111 MBytes   927 Mbits/sec    0    537 KBytes
[  4]   7.00-8.00   sec   111 MBytes   929 Mbits/sec    0    562 KBytes
[  4]   8.00-9.00   sec   111 MBytes   928 Mbits/sec    0    588 KBytes
[  4]   9.00-10.00  sec   111 MBytes   927 Mbits/sec    0    588 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  1.08 GBytes   931 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  1.08 GBytes   928 Mbits/sec                  receiver

iperf Done.

reseau Réseau : ARP + scan réseau IPv4

arp

login@monserveur.lan:~$ arp -a
libreCMC.lan (192.168.10.1) à 1a:2b:3c:12:34:56 [ether] sur enp5s0
machine.lan (192.168.10.182) à 4d:3c:2b:65:43:21 [ether] sur enp5s0

netdiscover

login@monserveur.lan:~$ sudo netdiscover -r 192.168.10.0/24

Currently scanning: Finished!   |   Screen View: Unique Hosts

2 Captured ARP Req/Rep packets, from 2 hosts.   Total size 120
_____________________________________________________________________________
  IP            At MAC Address     Count     Len  MAC Vendor / Hostname
-----------------------------------------------------------------------------
192.168.10.1    1a:2b:3c:12:34:56      1      60  Unknown vendor
192.168.10.182  4d:3c:2b:65:43:21      1      60  Nom de vendeur matériel

reseau Réseau : NDP + scan réseau IPv6

atk6-passive_discovery6

login@monserveur.lan:~$ sudo atk6-passive_discovery6 enp5s0

Started IPv6 passive system detection (Press Control-C to end) ...

Detected: 2001:1234:abc::12ab
Detected: fe80::24a1:fa21:32ed:12a4
Detected: 2001:913::3
Detected: 2620:0:862:ed1a::1
Detected: 2620:0:862:ed1a::2:b

ping adresses multicast

login@monserveur.lan:~$ ping ff02::1%enp5s0   # Toutes les machines du lien local (link-local)
PING ff02::1%enp5s0(ff02::1%enp5s0) 56 data bytes
64 bytes from fe80::1ab2:cd3f:123a:54ca%enp5s0: icmp_seq=1 ttl=64 time=0.049 ms
64 bytes from fe80::24a1:fa21:32ed:12a4%enp5s0: icmp_seq=1 ttl=64 time=0.282 ms (DUP!)
64 bytes from fe80::1ab2:cd3f:123a:54ca%enp5s0: icmp_seq=2 ttl=64 time=0.096 ms
64 bytes from fe80::24a1:fa21:32ed:12a4%enp5s0: icmp_seq=2 ttl=64 time=0.364 ms (DUP!)

login@monserveur.lan:~$ ping ff02::2%enp5s0   # Tous les routeurs du lien local (link-local)
PING ff02::2%enp5s0(ff02::2%enp5s0) 56 data bytes
64 bytes from fe80::24a1:fa21:32ed:12a4%enp5s0: icmp_seq=1 ttl=64 time=0.248 ms
64 bytes from fe80::24a1:fa21:32ed:12a4%enp5s0: icmp_seq=2 ttl=64 time=0.246 ms

reseau Réseau : capture et analyse de trafic réseau

reseau Réseau : aperçu wireshark wireshark-logo

Gestionnaires de paquets conventionnels

Autres gestionnaires de paquets

appimage-logo Appimage

flatpak-logo Flatpak

snap-logo Snap

nix-logo Nix

fwupd-logo fwupd

dpkg_logo dpkg : commandes pratiques

dpkg = Debian Package

# Lister les paquets installés
$ dpkg -l
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom            Version      Architecture Description
+++-==============-============-============-=================================
ii  a11y-profile-m 0.1.11-0ubun amd64        Accessibility Profile Manager - U
ii  accountsservic 0.6.45-1ubun amd64        query and manipulate user account
ii  acl            2.2.52-3buil amd64        Access control list utilities
ii  acpi-support   0.142        amd64        scripts for handling many ACPI ev
ii  acpid          1:2.0.28-1ub amd64        Advanced Configuration and Power

# Reconfigurer un paquet => des questions sont posées de façon interactive si besoin-est
$ sudo dpkg-reconfigure grub-pc

# Vérifier à quel paquet appartient un fichier
$ dpkg -S sleep_test.mod
grub-pc-bin: /usr/lib/grub/i386-pc/sleep_test.mod

# Installer un paquet .deb manuellement
$ dpkg -i nomdufichier.deb

dpkg_logo APT : commandes pratiques

APT = Advanced Package Tool

# Mettre à jour la liste des paquets disponibles
$ sudo apt update
[sudo] Mot de passe de vince :
Atteint :1 http://fr.archive.ubuntu.com/ubuntu bionic InRelease
Atteint :2 http://fr.archive.ubuntu.com/ubuntu bionic-updates InRelease
Atteint :3 http://fr.archive.ubuntu.com/ubuntu bionic-backports InRelease
<...>
39,7 ko réceptionnés en 2s (19,0 ko/s)
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
17 paquets peuvent être mis à jour. Exécutez « apt list --upgradable » pour les voir.

# Lister les paquets pouvant être mis à jour
$ apt list --upgradable
En train de lister... Fait
libegl-mesa0/bionic 20.3~git2009211930.0a3f92~oibaf~b amd64 [pouvant être mis à jour depuis : 20.3~git2009210730.d78df7~oibaf~b]
libegl1-mesa/bionic 20.3~git2009211930.0a3f92~oibaf~b amd64 [pouvant être mis à jour depuis : 20.3~git2009210730.d78df7~oibaf~b]
<...>

# Maj liste paquets disponibles + Installer les mises à jour disponibles des paquets installés
$ sudo apt update && sudo apt dist-upgrade

ubuntu-logo Ajouter/supprimer un ppa

PPA = Personal Package Archive

# Exemple avec https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/mesa/
$ sudo add-apt-repository ppa:paulo-miguel-dias/mesa
$ sudo apt-get update

# Supprimer proprement les paquets issus d'un ppa (et restaurer les paquets originaux)
$ ppa-purge ppa:paulo-miguel-dias/mesa
<...>
Suppression de libglvnd-dev:amd64 (1.2.0-1~b~padoka0) ...
Suppression de libgles1:amd64 (1.2.0-1~b~padoka0) ...
dpkg: avertissement: dégradation (« downgrade ») de libosmesa6-dev:amd64 depuis 1:19.3~git191017152900.82f18b7~b~padoka0 vers 18.0.0~rc5-1ubuntu1
(Lecture de la base de données... 804528 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libosmesa6-dev_18.0.0~rc5-1ubuntu1_amd64.deb ...
<...>
PPA purged successfully using aptitude fallback

flatpak-logo-96 Utiliser Flatpak

# Ajout du dépôt Flathub
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# Installer GIMP
$ flatpak install flathub org.gimp.GIMP
Remote ‘flathub’ found in multiple installations:
1) system
2) user
Which do you want to use (0 to abort)? [0-2]: 1
Required runtime for org.gimp.GIMP/x86_64/stable (runtime/org.gnome.Platform/x86_64/3.36) found in remote flathub
Do you want to install it? [y/n]: y
Installing in system:
org.gnome.Platform/x86_64/3.36                   flathub 5626f7387f5d
org.gnome.Platform.Locale/x86_64/3.36            flathub df58449370f3
org.freedesktop.Platform.GL.default/x86_64/19.08 flathub f68c8e930d04
org.freedesktop.Platform.openh264/x86_64/2.0     flathub 73f998362a6f
org.gimp.GIMP/x86_64/stable                      flathub 56c34b782133
  permissions: ipc, network, x11, dri
  file access: /tmp, host, xdg-config/GIMP, xdg-config/gtk-3.0, xdg-run/gvfs
  dbus access: org.freedesktop.FileManager1, org.gtk.vfs, org.gtk.vfs.*
  tags: stable
org.gimp.GIMP.Manual/x86_64/2.10                 flathub 1a0a3b85b68d
Is this ok [y/n]: y
Installing: org.gnome.Platform/x86_64/3.36 from flathub
[####################] 1162 metadata, 22351 content objects fetched; 304343 KiB transferred in 70 seconds
Now at 5626f7387f5d.
Installing: org.gnome.Platform.Locale/x86_64/3.36 from flathub
[####################] 33 metadata, 164 content objects fetched; 4964 KiB transferred in 1 seconds
Now at df58449370f3.
Installing: org.freedesktop.Platform.GL.default/x86_64/19.08 from flathub
[####################] 30 metadata, 76 content objects fetched; 87011 KiB transferred in 4 seconds
Now at f68c8e930d04.
Installing: org.freedesktop.Platform.openh264/x86_64/2.0 from flathub
[####################] Downloading files: 12/12 1,5 MB
Now at 73f998362a6f.
Installing: org.gimp.GIMP/x86_64/stable from flathub
[####################] 742 metadata, 9312 content objects fetched; 107798 KiB transferred in 29 seconds
Now at 56c34b782133.
Installing: org.gimp.GIMP.Manual/x86_64/2.10 from flathub
[####################] 68 metadata, 2488 content objects fetched; 49098 KiB transferred in 7 seconds
Now at 1a0a3b85b68d.

# Environ 500Mo plus tard on est bon ;-)

flatpak-logo-96 Utiliser Flatpak (suite)

# Installer uniquement pour l'utilisateur courant
flatpak --user install ...

# Lister les logiciels installés
$ flatpak list
Ref                                                   Options
org.freedesktop.Platform.GL.default/x86_64/19.08      user,runtime
org.freedesktop.Platform.openh264/x86_64/2.0          user,runtime
org.gnome.Platform/x86_64/3.36                        user,runtime
org.gimp.GIMP/x86_64/stable                           system,current
org.freedesktop.Platform.GL.default/x86_64/19.08      system,runtime
org.freedesktop.Platform.openh264/x86_64/2.0          system,runtime
org.gimp.GIMP.Manual/x86_64/2.10                      system,runtime,partial
org.gnome.Platform/x86_64/3.36                        system,runtime

# Lancer l'application
flatpak run org.gimp.GIMP

Partie graphique : plusieurs composants

login@machine:~# cat /etc/X11/default-display-manager
/usr/sbin/gdm3

root@ma-machine:~# grep gdm /var/log/syslog.1 | head
Aug 22 21:08:06 ma-machine /usr/lib/gdm3/gdm-x-session[2417]: (II) AMDGPU(0): EDID vendor "DEL", prod id 41002
Aug 22 21:08:06 ma-machine /usr/lib/gdm3/gdm-x-session[2417]: (II) AMDGPU(0): Using hsync ranges from config file
Aug 22 21:08:06 ma-machine /usr/lib/gdm3/gdm-x-session[2417]: (II) AMDGPU(0): Using vrefresh ranges from config file
Aug 22 21:08:06 ma-machine /usr/lib/gdm3/gdm-x-session[2417]: (II) AMDGPU(0): Printing DDC gathered Modelines:
Aug 22 21:08:06 ma-machine /usr/lib/gdm3/gdm-x-session[2417]: (II) AMDGPU(0): Modeline "1920x1200"x0.0  154.00  1920 1968 2000 2080  1200 1203 1209 1235 +hsync -vsync (74.0 kHz eP)
<...>
# bcp de lignes avec plein d'infos de debug : pilote carte graphique, clavier/souris, etc...

Wayland, X11, Xorg, Mutter, Compositor, DRM, GLX, à vos souhaits !

Accélération graphique : pilotes

Accélération graphique : API 2D

$ vainfo
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Bay Trail - 2.3.0
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD

Accélération graphique : API 3D

$ glxinfo  | grep -A 11 "Extended renderer info"
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) Bay Trail  (0xf31)
    Version: 18.3.6
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.2
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
    <...>

$ vulkaninfo | head -n 30
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
INTEL-MESA: warning: Bay Trail Vulkan support is incomplete
INTEL-MESA: warning: ../src/intel/vulkan/anv_device.c:1200: FINISHME: Implement pop-free point clipping
==========
VULKANINFO
==========

Vulkan Instance Version: 1.1.97

Instance Extensions:
====================
Instance Extensions     count = 17
        VK_EXT_acquire_xlib_display         : extension revision  1
        VK_EXT_debug_report                 : extension revision  8
        VK_EXT_debug_utils                  : extension revision  1
        VK_EXT_direct_mode_display          : extension revision  1
        VK_EXT_display_surface_counter      : extension revision  1
        ...

Exemple de debug applicatif : Firefox

Exemple de debug applicatif : erreur de dépôt logiciel

USB-gadget

Panne du /boot saturé

Aller plus loin

Infos sur le diaporama

Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, version 1.3 ou ultérieure publiée par la Free Software Foundation ; sans section inaltérable, sans texte de première page de couverture et sans texte de dernière page de couverture. Une copie de cette licence est incluse dans la section appelée GNU Free Documentation License de ce document.