C’est super intéressant d’éplucher les journaux de démarrage sur un ordinateur.

Un PC c’est juste une machine avec processeur central (une puce électronique) qui fait tout le travail. Ce processeur central ce n’est rien d’autre qu’un agencement bien défini de quelques milliards de transistors (de mini-interrupteurs électroniques) reliés les uns aux autres, s’actionnant successivement, comme une chaîne.

Un programme informatique (ou un bout de code), c’est une suite d’instruction indiquant dans quel ordre ces interrupteurs doivent être actionnés une fois que l’ordinateur est mis sous tension. Dès cet instant, ce sont des dizaines, voire des centaines de millions de lignes de code qui sont lues et traitées par le processeur central, et les interrupteurs sont alors actionnées des milliards de fois chaque seconde.

Le résultat final est ce que l’on voit à l’écran : chaque pixel de l’écran, chaque son dans les enceintes, chaque bit écrit sur un disque dur… sont produits grâce et par le calcul du processeur.

Sur un PC grand public, les programmes pré-installés sont là pour automatiser le plus grand nombre de chose. Ainsi, il suffit d’allumer l’ordinateur et votre session utilisateur se lance : vos fichiers sont ouverts, votre fond d’écran est affiché, votre PC se connecte au réseau Wifi, etc.

Ceci peut semble simple, parfois c’est considéré comme acquis. Mais il ne faut jamais oublier que si votre PC fait tout ça, c’est parce que c’est voulu. Prenons par exemple juste ce dernier point : « votre PC se connecte au réseau Wifi ». C’est un programme à lui seul et il se passe plein de chose :

  • le processeur doit apprendre à utiliser la carte Wifi (en chargeant le pilote en mémoire)
  • le processeur demande à la carte Wifi de chercher des réseaux aux alentours
  • le processeur regarde sur le disque dur s’il y a des réseaux Wifi connus et enregistrés
  • si oui, le processeur charge en mémoire le réseau connu
  • la carte Wifi et votre Box « discutent » pour commencer la connexion
  • la carte Wifi se connecte au réseau Wifi connu en utilisant les informations (clé Wifi, nom du réseau…) qui sont en mémoire
  • une fois que les deux appareils « sont d’accord » ils se connectent et le réseau fonctionne
  • la carte Wifi dit au processeur que tout est OK
  • le processeur dit à l’écran d’afficher un message à l’écran comme quoi la connexion est active.

Pour plus de détails, voici ce que mon ordinateur fait au démarrage de l’ordinateur, quand il veut se connecter à un réseau Wifi :

mars 3 14:07:48 dell15 NetworkManager[956]: <info> NetworkManager (version 1.2.2) is starting...
mars 3 14:07:48 dell15 NetworkManager[956]: <info> Read config: /etc/NetworkManager/NetworkManager.conf (etc: default-wifi-powersave-on.conf)
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> init!
mars 3 14:07:48 dell15 NetworkManager[956]: <info>    interface-parser: parsing file /etc/network/interfaces
mars 3 14:07:48 dell15 NetworkManager[956]: <info>    interface-parser: finished parsing file /etc/network/interfaces
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> end _init.
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> (25422752) ... get_connections (managed=false): return empty list.
mars 3 14:07:48 dell15 NetworkManager[956]: <info> keyfile: new connection /etc/NetworkManager/system-connections/Lord (8ec2bec8-2a08-461b-96ae-e124650b1cd6,"Lord")
mars 3 14:07:48 dell15 NetworkManager[956]: <info> keyfile: new connection /etc/NetworkManager/system-connections/Livebox-40nf4 (8b56671d-4dcb-4563-83e9-badd50e52f92,"Livebox-40nf4")
mars 3 14:07:48 dell15 NetworkManager[956]: <info> keyfile: new connection /etc/NetworkManager/system-connections/Timo (0792c0a8-faa0-4ecf-a439-01e2fd7097e1,"Timo")
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> manager: WiFi enabled by radio killswitch; enabled by state file
mars 3 14:07:48 dell15 NetworkManager[956]: <info> manager: WWAN enabled by radio killswitch; enabled by state file
mars 3 14:07:48 dell15 NetworkManager[956]: <info> manager: Networking is enabled by state file
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> (wlp2s0): using nl80211 for WiFi device control
mars 3 14:07:48 dell15 NetworkManager[956]: <info> device (wlp2s0): driver supports Access Point (AP) mode
mars 3 14:07:48 dell15 NetworkManager[956]: <info> manager: (wlp2s0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/0)
mars 3 14:07:48 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: unmanaged -> unavailable (reason 'managed') [10 20 2]
[…]
mars 3 14:07:48 dell15 NetworkManager[956]: <info> supplicant: wpa_supplicant running
mars 3 14:07:48 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: init -> starting
mars 3 14:07:48 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: starting -> ready
mars 3 14:07:48 dell15 NetworkManager[956]: <info> manager: startup complete
mars 3 14:07:48 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: unavailable -> disconnected (reason 'supplicant-available') [20 30 42]
mars 3 14:07:52 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: ready -> inactive
mars 3 14:07:55 dell15 NetworkManager[956]: <info> policy: auto-activating connection 'Timo'
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): Activation: starting connection 'Timo' (0792c0a8-faa0-4ecf-a439-01e2fd7097e1)
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: disconnected -> prepare (reason 'none') [30 40 0]
mars 3 14:07:55 dell15 NetworkManager[956]: <info> manager: NetworkManager state is now CONNECTING
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: prepare -> config (reason 'none') [40 50 0]
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): Activation: (wifi) access point 'Timo' has security, but secrets are required.
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: config -> need-auth (reason 'none') [50 60 0]
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: need-auth -> prepare (reason 'none') [60 40 0]
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: prepare -> config (reason 'none') [40 50 0]
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): Activation: (wifi) connection 'Timo' has security, and secrets exist.  No new secrets needed.
mars 3 14:07:55 dell15 NetworkManager[956]: <info> Config: added 'ssid' value 'Timo'
mars 3 14:07:55 dell15 NetworkManager[956]: <info> Config: added 'scan_ssid' value '1'
mars 3 14:07:55 dell15 NetworkManager[956]: <info> Config: added 'key_mgmt' value 'WPA-PSK'
mars 3 14:07:55 dell15 NetworkManager[956]: <info> Config: added 'psk' value '<omitted>'
mars 3 14:07:55 dell15 NetworkManager[956]: <info> sup-iface[0x1860580,wlp2s0]: config: set interface ap_scan to 1
mars 3 14:07:55 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: inactive -> associating
mars 3 14:07:58 dell15 NetworkManager[956]: <info> WiFi hardware radio set enabled
mars 3 14:07:58 dell15 NetworkManager[956]: <info> WWAN hardware radio set enabled
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: associating -> 4-way handshake
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): supplicant interface state: 4-way handshake -> completed
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): Activation: (wifi) Stage 2 of 5 (Device Configure) successful.  Connected to wireless network 'Timo'.
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: config -> ip-config (reason 'none') [50 70 0]
mars 3 14:07:59 dell15 NetworkManager[956]: <info> dhcp4 (wlp2s0): activation: beginning transaction (timeout in 45 seconds)
mars 3 14:07:59 dell15 NetworkManager[956]: <info> dhcp4 (wlp2s0): dhclient started with pid 1954
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   address 192.168.1.78
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   plen 24 (255.255.255.0)
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   gateway 192.168.1.254
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   server identifier 192.168.1.254
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   lease time 86400
mars 3 14:07:59 dell15 NetworkManager[956]: <info>   domain name 'lan'
mars 3 14:07:59 dell15 NetworkManager[956]: <info> dhcp4 (wlp2s0): state changed unknown -> bound
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: ip-config -> ip-check (reason 'none') [70 80 0]
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: ip-check -> secondaries (reason 'none') [80 90 0]
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): state change: secondaries -> activated (reason 'none') [90 100 0]
mars 3 14:07:59 dell15 NetworkManager[956]: <info> manager: NetworkManager state is now CONNECTED_LOCAL
mars 3 14:07:59 dell15 NetworkManager[956]: <info> manager: NetworkManager state is now CONNECTED_GLOBAL
mars 3 14:07:59 dell15 NetworkManager[956]: <info> policy: set 'Timo' (wlp2s0) as default for IPv4 routing and DNS
mars 3 14:07:59 dell15 NetworkManager[956]: <info> dns-mgr: Writing DNS information to /sbin/resolvconf
mars 3 14:07:59 dell15 NetworkManager[956]: <info> device (wlp2s0): Activation: successful, device activated.
mars 3 14:08:00 dell15 NetworkManager[956]: <info> dns-mgr: Writing DNS information to /sbin/resolvconf
mars 3 14:08:01 dell15 NetworkManager[956]: <info> dhcp6 (wlp2s0): activation: beginning transaction (timeout in 45 seconds)
mars 3 14:08:01 dell15 NetworkManager[956]: <info> dhcp6 (wlp2s0): dhclient started with pid 2173
mars 3 14:08:01 dell15 NetworkManager[956]: <info> policy: set 'Timo' (wlp2s0) as default for IPv6 routing and DNS
[…]
mars 3 14:08:01 dell15 NetworkManager[956]: <info> dhcp6 (wlp2s0): state changed unknown -> bound
mars 3 14:08:01 dell15 NetworkManager[956]: <info> dhcp6 (wlp2s0): client pid 2173 exited with status 0
mars 3 14:08:01 dell15 NetworkManager[956]: <info> dhcp6 (wlp2s0): state changed bound -> done

Même si vous ne comprenez pas tout, vous pouvez en extraire des bribes d’information, comme « starting connection 'Timo' », « connection 'Timo' has security » ou encore « successful. Connected to wireless network 'Timo' »

Cette procédure, minutieusement coordonnée par tout un tas de protocoles (entre le processeur et la carte wifi, mais aussi entre la carte wifi et votre box) a dû être écrite et imaginée par une personne, ou un groupe de personnes.

L’informatique, ce n’est pas comme les lois de la physique. La gravitation, l’électromagnétique, ce sont des choses qui sont là et qu’on essaye de comprendre pour les utiliser à notre avantage.
L’informatique, lui, c’est un domaine purement artificiel que l’on a créé pour traiter de l’information à notre place et nous simplifier la vie, et aujourd’hui le monde tourne grâce à ça.

C’est beau.
C’est magique.

Commentaires fermés

Les commentaires sont fermés pour cet article