Système d'exploitation Linux
TBD strace et ltrace pour voir les appels système et bibliothèques lors du démarrage d'un exécutable : strace et ltrace
Distribution Linux
Noyau commun, reste pas commun et en user space.
Linux s'inscrit dans la logue histoire des systèmes Unix.
uname -a
Noyau
C'est stricto-sensu Linux. Linus Torvalds a créé le noyau Linux (pour voir comment il fonctionne et utiliser x86. remplace Minics ce qui fait suer Tanenbaum)
messages du noyau : sudo dmesg
Systemd
TBD à étoffer
Voir l'arbre des process en route : pstree
, pour voir que systemd est de pid 1.
Applications
- système (ls, shell, etc) souvent GNU. On dit parfois GNU/Linux (Linux = kernel et GNU applis)
- graphique (système de fenêtre : xorg, wayland ; manager)
- management des paquets
Systèmes de fichier
ext4, mais parfois btrfs ou zfs. Transparent pour l'utilisateur ils utilisent tous des inodes.
plus le swap (de moins en moins utile, mais ça coûte pas grand chose d'en avoir)
/ec/fstab
- fsck, mkfs
df -k
: systèmes de fichiers, inodes utilisés etc.
Matériel
Applications moniteur système sur Linux/Ubuntu. Mais aussi en ligne de commande :
-
cpu :
lscpu
cat /proc/cpuinfo
- cache :
lshw -C memory
: pour le cache ousudo dmidecode -t cache
- cpuid pour les processeur x86
(
sudo apt install cpuid
)
-
hardware :
lshw
(pas partout)- mémoire
sudo dmidecode
lspci
Utilisateurs et droits
Une propriétés des fichiers et des process.
cat /etc/passwd
L'administrateur est root
.
et des groups (groups
) (ex groupe des gens qui peuvent utiliser sudo)
https://doc.ubuntu-fr.org/permissions
Droits lire/écrire/exécuter
Hiérarchie des dossiers dans Linux
TBD
/tmp
et ses droits spéciaux/bin
,/usr/bin
,/sbin
utilisateur
/home
Configuration
/etc
devices
dev monte et démonte de façon dynamique les devices (démon udev de systemd le montrer)
https://linuxjourney.com/lesson/dev-directory
/dev
: utilise les devices et les pseudo-devices/sys
: manage les devices
Met à disposition :
- les différents matériel :clavier, souris, carte réseau, disques dur, etc
- les fichiers : ouverture, exécution
- la mémoire : accès et allocation mémoire
autre
- proc
cat /proc/meminfo
- tmp et ses droits propres
df -k
systèmes de fichiers montés et leur usage
Boot
https://wiki.archlinux.org/title/Arch_boot_process
$efibootmgr -v
BootCurrent: 0006
Timeout: 0 seconds
BootOrder: 0006,0002,0001,0004,0005,0000,0003
Boot0000* UiApp FvVol(45801e53-5502-4463-929a-9bafaf424a72)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
Boot0001* UEFI Virtual DVD-ROM VenHw(0d51905b-b77e-452a-a2c0-eca0cc8d514a,000014020000000000)/Sata(1,65535,0)N.....YM....R,Y.
Boot0002* UEFI Ubuntu Linux-0 SSD NXHA6X9YF73M107S1H1G VenHw(0d51905b-b77e-452a-a2c0-eca0cc8d514a,000014020000000000)/Sata(0,65535,0)N.....YM....R,Y.
Boot0003* UEFI PXEv4 (MAC:001C42D9009F) PciRoot(0x0)/Pci(0x5,0x0)/MAC(001c42d9009f,1)N.....YM....R,Y.
Boot0004* No OS found FvVol(45801e53-5502-4463-929a-9bafaf424a72)/FvFile(343e8cc7-cbc7-4d2f-af94-e783b827053b)
Boot0005* UEFI Shell FvVol(45801e53-5502-4463-929a-9bafaf424a72)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0006* ubuntu HD(1,GPT,bd044e84-32c0-428f-8e3a-f5f464891a18,0x800,0x100000)/File(\EFI\ubuntu\grubaa64.efi)
- EFI
- grub2
- noyau (kernel space)
/boot/vmlinuz
- cpu inspection
- mémoire inspection
- devices discovrey
- sous-systèmes : réseau, ...
- root filesystem mount
- systemd (user space)
systemctl list-units
,journaltcl
- login
process
https://linux.goffinet.org/administration/processus-et-demarrage/processus-linux/
utilisation, qui, permission
sudo apt install htop
htop et tree pour voir les process https://unix.stackexchange.com/questions/6301/how-do-i-read-from-proc-pid-mem-under-linux
process layout
- Layout en mémoire
- process segments
cat /proc/self/map
pmap pid
kernel layout
- ARM : https://www.kernel.org/doc/html/v6.5/arch/arm64/memory.html
- x64 : https://www.kernel.org/doc/html/v6.5/arch/index.html
appels systèmes
process info
https://linux-kernel-labs.github.io/refs/heads/master/so2/lec3-processes.html
ps -ef
pour voir les thread du kernel (entre crochet)
signaux
- liste des signaux :
kill -l
- signaux envoyés au groupe, par exemple pour un pipe : (
yes | rm *
) un ctrl+c va tuer les deux process et pas qu'un seul.
fichiers exécutables
- format elf
readelf -a /bin/ls
objdump -s /bin/ls | less
chercher.text
objdump -D /bin/ls | less
chercher.text
ldd /usr/bin/ls
pour voir les bibliothèques partagées
ext4
- résumé ext4 avec des commandes
- inodes (
ls -lai
,stat file
etdu
) - programmes e2fsprogs :
sudo dumpe2fs /dev/sda2
(lire le superblock)
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout et https://blogs.oracle.com/linux/post/understanding-ext4-disk-layout-part-1 :
sudo tune2fs -l /dev/sda2
(retrouve le blocsize)sudo dd if=/dev/sda2 bs=4096 count=1 | hexdump -C
- retrouve-t-on le bon nombre d'inodes ?