Cours:InstallationLinux

De troyesGEII
Révision datée du 18 novembre 2024 à 11:38 par Bjacquot (discussion | contributions) (QT Cross compilation)
Aller à : navigation, rechercher

organisation d'un système d'exploitation Linux

https://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation

Notions génériques

processeur

  • cpu/apu/tpu/gpu
  • critères de choix
  • influence du processus de gravure ( noeud de gravure, machine de lithographie)
  • faille de sécurité et microcode (ex agesa )
  • ipc
  • nombre de coeurs
  • mémoire dans le processeur (lunar lake)
  • chiplet design
  • chipset
  • jeu d'instructions

choix d'une distribution

  • rolling release
  • lts
  • architectures
  • compilation à l'installation
  • ancienneté des logiciels
  • taille du catalogue d'applications
  • distributions pour l'embarqué (Yocto Buildroot)

support de stockage

  • disque dur
  • ssd
  • sd card
  • eMMC
  • sata (ahci)
  • pcie (nvme)
  • usb


système de fichiers

  • journalisé ou non
  • réseau
  • Copy-On-Write
  • tmpfs

lvm/raid

  • lvm
    • Volumes physiques
    • Groupes de volumes
    • Volumes logique
  • raid
    • logiciel/matériel
    • type de raid

démarrage

  • bios
  • uefi
  • U-Boot
  • grub/systemd-boot
  • systemd

Noyau (kernel)

  • gère les ressources de l'ordinateur
  • gestion des processus
  • communication entre les processus
  • gestion de la mémoire
  • diverses fonctionnalités
    • système de fichiers
    • ordonnanceur
    • réseau
  • abstraction matérielle/logicielle
  • différents types de kernel
    • Noyaux monolithiques non modulaires
    • Noyaux monolithiques modulaires
    • Systèmes à micro-noyaux

ArchiKernelUserSpace.png


permissions UNIX

  • uid
  • gid
  • représentation des droits
  • ACLs
  • sudo / su

Partitionnement du/des disques

  • principe
  • intérêt/inconvénient
  • mbr/gpt
  • montage des partitions
  • UUID

Installation distribution

Partitionnement

réseau

mise à jour

  • apt update
  • apt dist-upgrade
  • aptitude (apt install aptitude)

Installation de logiciels

  • ntp
  • dnsmasq : dhcp/dns
  • unifi
  • homeassistant
  • mosquitto
  • ssh server
  • ftp server
  • montage nfs
  • zigbee2mqtt


natif/container/virtualisé

ComparatisonVirtualisationContainer.jpg

  • architecture
  • performance (matériel "passthrough")
  • isolation

Gestion des services

utilisation de systemd

commande rôle
analyse démarrage
systemd-analyze blame liste des services démarrés classés par temps de démarrage
systemd-analyze critical-chain "chaîne" des services limitant le temps de démarrage


Créer un service

On considère le script bash suivant :

nano /usr/local/bin/monScript
chmod +x /usr/local/bin/monScript
#!/bin/bash

while true
do
        echo "+"
        sleep 1
done

On créé le fichier pour gérer le service :

nano /etc/systemd/system/exemple.service
[Unit]
Description=Exemple
After=network-online.target

[Service]
Type=simple

User=root
Group=root

ExecStart=/usr/local/bin/monScript

Restart=on-failure

# Configures the time to wait before service is stopped forcefully.
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Il faut recharger la liste des services :

systemctl daemon-reload

Puis on peut démarrer/arrêter le service

systemctl start/stop/restart/status exemple.service

Pour que le service soit lancé/désactivé automatiquement à chaque démarrage de la machine :

systemctl enable/disable exemple.service

tâche répétitive

Il existe des timers systemd

ex :

/usr/local/bin/monScript
#!/bin/bash

echo "+"
/etc/systemd/system/exemple.timer
[Unit]
Description=Exemple

[Timer]
# Define a calendar event (see `man systemd.time`)
OnCalendar=*-*-* *:*:0
Persistent=false

[Install]
WantedBy=timers.target


Continuer avec Cours:BashScript

QT Cross compilation