Cours:InstallationLinux : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(QT Cross compilation)
(QT Cross compilation)
 
Ligne 226 : Ligne 226 :
  
 
=QT Cross compilation=
 
=QT Cross compilation=
*[https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/ gcc-linaro-7.5.0-2019.12-x86_64_aarch64]
+
*https://wiki.qt.io/Cross-Compile_Qt_6_for_Raspberry_Pi
*https://github.com/UvinduW/Cross-Compiling-Qt-for-Raspberry-Pi-4
 
*https://wiki.qt.io/RaspberryPi2EGLFS
 
*[[Cours:Rpi3]]
 
*https://forum.qt.io/topic/136672/error-installing-qt-everywhere-src-5-15-2-on-ubuntu-22-04/3
 
 
 
*device qt : [[Media:Linux-rpi64-vc4-g++.zip]]
 
 
 
 
 
 
 
 
 
<source lang=bash>
 
 
 
./configure -release -device linux-rpi64-vc4-g++ -no-eglfs \
 
-device-option CROSS_COMPILE=/opt/electronique/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
 
-sysroot /opt/electronique/pi4TpInfo/sysroot -opensource -confirm-license -make libs \
 
-prefix /usr/local/qt5pi -extprefix /opt/electronique/pi4TpInfo/qt5pi -hostprefix /opt/electronique/pi4TpInfo/qt5 -v \
 
 
 
 
 
//principe pour compiler un module supplémentaire
 
cd qtmultimedia
 
/opt/electronique/pi4TpInfo/qt5/bin/qmake
 
make -j65
 
make install
 
 
 
 
 
//ou
 
git clone https://code.qt.io/qt/qtmqtt.git -b $qtVersion
 
cd qtmqtt
 
/opt/electronique/pi4TpInfo/qt5/bin/qmake
 
make -j65
 
make install
 
 
 
 
 
</source>
 

Version actuelle datée du 22 novembre 2024 à 11:16

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