Comprendre l'arborescence linux

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateur : Francois

Rony
Messages : 40
Enregistré le : ven. 15 juil. 2016 17:42

Comprendre l'arborescence linux

Message par Rony » lun. 29 août 2016 19:48

Bonjour,

Je cherche à comprendre la logique de l'arborescence Linux.
Venant du monde Windows c'est pas fichu pareil.
J'ai compris que tout partait d'un point virtuel appelé /
Mais ensuite je ne comprends pas trop...
Par exemple le /home se trouve sur quel disque et partition ?
J'ai par exemple un chemin Linux style /etc/network/trucMachin.txt sur ma carte sd ou se trouve mon os, si maintenant je lis ma carte sur Windows, où se trouvera ce fichier ?


Merci de m'éclairer.

Avatar du membre
marco123
Raspinaute
Messages : 438
Enregistré le : sam. 30 janv. 2016 07:59
Localisation : Val d'Oise

Re: Comprendre l'arborescence linux

Message par marco123 » lun. 29 août 2016 20:16

salut !
Alors linux est très protégé contrairement aux anciens windows ( ce qui a changé )
pour faire simple, sur un linux quel qu’il soit tu as 3 partitions totalement indépendantes.

la 1ere : le / ( la racine ) ou se trouve tous les exécutables linux du système .
Certains exécutables par l'administrateur ( root ) d'autre par l'utilisateur ( toi )
Une commande critique ( fdisk / format /... ) c'est réservé a l'administrateur du système
D'autre ( top / htop ...) sont utilisable par toi ( pas de danger pour ton système )
il y a le noyau ( kernel,), les drivers ( video / son / carte .... )
Tu remarqueras que beaucoup de fichiers sont en texte simple .. les fichiers de configuration uniquement modifiables par l'admin.
D'autres sont des binaire compilés dont tu peux trouver les sources en clair ( donc vérifiables )

la 2nd : le home ...
En général, home/toto , home/tata, home titi ... ce sont les chez vous !
toto ne peux pas aller chez tata ni tata chez titi .
C'est là ou tu installes les configurations et répertoires des programmes divers que tu trouves dans les dépôts !
Eh oui, c'est sur internet mais pas n'importe ou ( comme windows )
Les dépôts sont des sites ou les logiciels sont " déposés " mais vérifiés avant par une multitude de gens .
Donc, pas de pb de virus ou autre .

la 3eme c'est le swap .
Cela correspond au fichier d’échange de windows a la différence prêt que linux ne l'utilise qu'en cas de manque de mémoire. Il est configurable en ratio mémoire.
Par exemple, tu peux décider de l'utiliser s'il reste 50% ou 10 % ou 1% de mémoire libre .


Par sécurité, aucun programme simple ou complexe n'est exécutable ... par qui que ce soit sur ton système .
Pour cela , il faut le configurer en " exécutable " par ses propriétés .

Voila, j'espere avoir été clair .. sinon, je detaillerai plus ( permissions, executables, virus .... )

Rony
Messages : 40
Enregistré le : ven. 15 juil. 2016 17:42

Re: Comprendre l'arborescence linux

Message par Rony » lun. 29 août 2016 21:31

Salut, merci de ta réponse. ;)

Pour les droits, etc... (chmod) j'ai quelques souvenirs, j'avais fais un temps sur ubuntu 9.04 et d'autres distros à l'époque.
Il fallait encore configurer son Swap à l'install (je sais pas si c'est toujours le cas). :o

Par contre autant je comprends bien ou se trouvent les différents exécutables, autant je n'arrive pas à faire le lien avec le disque physique et cette notion de "montage".

Comment par exemple si j'ai 2 DD interne, savoir ou se trouve mon /home ? les /bin ?
Sur Windows chaque disque (enfin partitions) est une racine, c'est plus facile de se représenter tout cela tandis que Linux je n'arrive pas à le comprendre.


Et pour le kernel par exemple, j'ai toujours pensé que c'était juste une "compilation" de drivers, et de routines. Je me trompe ? :D

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Comprendre l'arborescence linux

Message par destroyedlolo » lun. 29 août 2016 22:19

Salut,
marco123 a écrit :salut !
Alors linux est très protégé contrairement aux anciens windows ( ce qui a changé )
pour faire simple, sur un linux quel qu’il soit tu as 3 partitions totalement indépendantes.
Mheu non :twisted:
Seule root (/) est obligatoire : il est même possible d'avoir tout l'OS et les données sur cette partition (ce qui n'est pas une super idée).
La partition de swap est facultative ... et en tous cas ne devrait en aucun cas être sur une carte SD.
Pour le reste, tout est "au bon vouloir de l'admin système".
Rony a écrit :Je cherche à comprendre la logique de l'arborescence Linux.
A titre d'exemple, je vais te faire voir ce que j'ai sur mon BananaPI.
C'est un peu déconcertant au début car tu peux monter n'importe quel disque quasiment n'importe où dans l'arborescence ... Mais c'est aussi extrêmement puissant et flexible.

La première chose à savoir, c'est que le fichier /etc/fstab contient les points de montage, c'est à dire à quel endroit monter les disques (au sens large du terme) :

Code : Tout sélectionner

laurent@torchwood ~ $ cat /etc/fstab 
# /etc/fstab: static file system information.
# <fs>			<mountpoint>	<type>		<opts>		<dump/pass>
/dev/mmcblk0p1		/boot		auto		noauto,noatime	1 2
/dev/mmcblk0p2		/		ext3		noatime		0 1
/dev/sda1		none		swap		sw		0 0
/dev/cdrom		/mnt/cdrom	auto		noauto,ro	0 0
/dev/fd0		/mnt/floppy	auto		noauto		0 0
/dev/sda2		/mnt/sata	auto		noatime		0 1

/mnt/sata/var		/var		none		bind
/mnt/sata/home		/home		none		bind
/mnt/sata/web		/web		none		bind

none			/var/tmp	tmpfs		defaults	0 0
none			/tmp		tmpfs		defaults	0 0
Déjà, toute ligne commençant par un '#' est un commentaire.
  • La première colonne indique la source du point de montage (où se trouvent physiquement les données) et tout ce qui se trouve dans /dev est un composant physique (device ... d'où le nom).
  • La seconde où le disque sera monté c'est à dire où tu trouveras tes données
  • Le reste ... pas important ici.
Ainsi, on voit que le root / se trouve dans /dev/mmcblk0p2 qui est la 2nd partions de ma carte SD.
Généralement, sur nos *PI qui bootent sur des SD, on crée une partition de boot différente du / : c'est parce qu'elle est au format MS-DOS pour qu'elle puisse être écrite depuis un m$ si pour une raison ou une autre le système ne peut plus booter. C'est le /boot qui se correspond à la 1er partition de ma SD.
A noter que cette partition ne sert qu'au démarrage et n'est généralement pas monté une fois le système booté.

Petite subtilité ici : hormis /, les points de montage se présentent comme de simples répertoires lors-qu’aucun disque n'y est attaché.
Ainsi :

Code : Tout sélectionner

torchwood laurent # ls /boot
torchwood laurent #
Le repertoire /boot est vide lorsque sa partition n'est pas montée.

Code : Tout sélectionner

torchwood laurent # mount /boot
torchwood laurent # ls /boot
script.bin  uEnv.txt  uImage
torchwood laurent # 
Le mount la ... monte ;)
Le 2nd ls affiche maintenant le contenu de ma partition /boot

La ligne

Code : Tout sélectionner

/dev/sda1		none		swap		sw		0 0
indique que le système trouvera une swap (espace mémoire supplémentaire stocké sur disque) sur la partition sda1. Comme il ne s'agit pas d'un système de fichier, il n'y a pas de point de montage.
Comme je l'ai dit cette partition est parfaitement optionnelle sous Linux (j'ai une tablette sous Linux qui n'en a pas car juste une SD), est est obligatoire sous d'autres OS. En aucun cas, cette swap ne doit être sur la SD ... sinon elle ne vivra pas bien vielle.

Code : Tout sélectionner

/dev/sda2		/mnt/sata	auto		noatime		0 1
Monte mon disque Sata à l'emplacement /mnt/sata.

Mon but étant d'avoir strictement aucune écriture sur disque (hormis lors du boot), j'ai mis les lignes suivantes :

Code : Tout sélectionner

/mnt/sata/var		/var		none		bind
/mnt/sata/home		/home		none		bind
/mnt/sata/web		/web		none		bind
Qui montent des répertoires systèmes vers des sous répertoires de mon disque :o
Bon, en clair : /var est l'endroit où entre autre le système stocke ses logs, donc beaucoup d'écriture, donc pas bien pour la SD.
C'est pourquoi il crée un lien qui fait que l'arbo /var est stockée physiquement dans le répertoire /mnt/sata/var
Donc :

Code : Tout sélectionner

torchwood laurent # ls -l /var
total 32
drwxrwx---  5 root named 4096 21 avril 11:29 bind
drwxr-xr-x  7 root root  4096 22 févr.  2015 cache
drwxr-xr-x  3 root root  4096 27 août  14:53 db
drwxr-xr-x  2 root root  4096 11 nov.   2015 empty
drwxr-xr-x 20 root root  4096 29 août  21:10 lib
lrwxrwxrwx  1 root root     9 23 nov.   2014 lock -> /run/lock
drwxr-xr-x  7 root root  4096 29 août  21:10 log
lrwxrwxrwx  1 root root    15 12 sept.  2014 mail -> /var/spool/mail
lrwxrwxrwx  1 root root     4 23 nov.   2014 run -> /run
drwxr-xr-x  5 root root  4096 22 févr.  2015 spool
drwxrwxrwt  2 root root    40  1 janv.  2010 tmp
drwxr-xr-x  3 www  root  4096 21 déc.   2014 www
torchwood laurent # ls -l /mnt/sata/var/
total 36
drwxrwx---  5 root named 4096 21 avril 11:29 bind
drwxr-xr-x  7 root root  4096 22 févr.  2015 cache
drwxr-xr-x  3 root root  4096 27 août  14:53 db
drwxr-xr-x  2 root root  4096 11 nov.   2015 empty
drwxr-xr-x 20 root root  4096 29 août  21:10 lib
lrwxrwxrwx  1 root root     9 23 nov.   2014 lock -> /run/lock
drwxr-xr-x  7 root root  4096 29 août  21:10 log
lrwxrwxrwx  1 root root    15 12 sept.  2014 mail -> /var/spool/mail
lrwxrwxrwx  1 root root     4 23 nov.   2014 run -> /run
drwxr-xr-x  5 root root  4096 22 févr.  2015 spool
drwxr-xr-t  3 root root  4096 20 août  11:00 tmp
drwxr-xr-x  3 www  root  4096 21 déc.   2014 www
Enfin, il y a 2 répertoires qui servent à stocker des fichiers temporaires ... pour éviter de bousiller ma SD et accélérer certaines actions (entre autres les compilations), je les est mis en tmpfs qui est un fs qui est stocké en mémoire.

Code : Tout sélectionner

none			/var/tmp	tmpfs		defaults	0 0
none			/tmp		tmpfs		defaults	0 0
Voila, j'espère que ca reste bitable :lol:
marco123 a écrit :Par exemple le /home se trouve sur quel disque et partition ?
Ben df est ton ami :

Code : Tout sélectionner

torchwood laurent # cd /home
torchwood home # df .
Sys. de fichiers blocs de 1K  Utilisé Disponible Uti% Monté sur
/dev/sda2           76432536 10104156   62445780  14% /home
marco123 a écrit :J'ai par exemple un chemin Linux style /etc/network/trucMachin.txt sur ma carte sd ou se trouve mon os, si maintenant je lis ma carte sur Windows, où se trouvera ce fichier ?
Dans un endroit qui n'est pas accessible : m$ se prenant pour le centre du monde, ils n'ont pas jugé utile de lire les filesystem d'autres OS. m$w est donc incapable de trouver ton fichier.
Si tu as ce genre d'échange à faire, soit tu passe par un montage réseau, soit par un clef USB ou encore (et je te le déconseille) tu peux créer une partition NTFS ou DOS qui sera alors lisible des 2 cotés ... mais c'est une TRES MAUVAISE IDEE d'y mettre autre chose que des fichiers a transférer car NTFS comme DOS sont à des années lumières de n'importe quel FS unix, tant niveau perf que fonctionnalité.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Rony
Messages : 40
Enregistré le : ven. 15 juil. 2016 17:42

Re: Comprendre l'arborescence linux

Message par Rony » mar. 30 août 2016 12:52

Haaaa c'est bien plus clair comme ca !

En faite l'arborescence Linux est totalement virtuelle contrairement à Windows.
Comme ca, je trouve ça bien plus complexe. :mrgreen:

Si je monte par exemple un disque au chemin /home/dossierA et que je monte un 2eme disque sur un un dossier en aval genre /home/dossierA/dossierB, quand je mettrais des fichiers dans le dossier A ils seront sur mon premier disque dur, mais lorsque je naviguerais du dossierA au dossierB, si je copie un fichier dans le dossierB (lui meme présent dans le dossierA) il sera copié ou ? Sur le 2eme disque ? Sur les 2 ?

Est-ce qu'il est possible (même si inutile, juste pour comprendre) de monter un disque sur un autre ? Genre le disque /dev/sda1 qui est monté sur /dev/sda2 ?

Bonne après midi !

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Comprendre l'arborescence linux

Message par destroyedlolo » mar. 30 août 2016 14:37

Rony a écrit :Haaaa c'est bien plus clair comme ca !

En faite l'arborescence Linux est totalement virtuelle contrairement à Windows.
Comme ca, je trouve ça bien plus complexe. :mrgreen:
On s'y fait, comme je disais, c'est beaucoup plus flexible que d'avoir des points de montage fixe.
Rony a écrit :Si je monte par exemple un disque au chemin /home/dossierA et que je monte un 2eme disque sur un un dossier en aval genre /home/dossierA/dossierB
Ca donne donc :

Code : Tout sélectionner

/home/dossierA -> /dev/sda1
/home/dossierA/dossierB -> /dev/sda2
Rony a écrit :, quand je mettrais des fichiers dans le dossier A ils seront sur mon premier disque dur,
Oui.
Rony a écrit : mais lorsque je naviguerais du dossierA au dossierB, si je copie un fichier dans le dossierB (lui meme présent dans le dossierA) il sera copié ou ? Sur le 2eme disque ? Sur les 2 ?
Copie (cp) veut dire que tu garde l'original.
déplace (mv) veut dire qu'il ne gardera que celui du dossierB.
Si c'est sur le même disque (disqueA vers ailleurs sur disqueA), il ne fait que déplacer le fichier. Mais comme là tu passes du disqueA vers le B, il va commencer par copier le contenu vers B puis effacer l'original sur A (mais tu ne verras jamais les 2 fichiers en même temps car il est d'abords supprimer de la table des fichiers du disque A pour que tu ne puisses plus y accéder).

Maintenant, si tu "copie" par un environnement graphique :
  • si les 2 emplacement se trouvent dans le même disque, le fichier est déplacé (mv)
  • dans ton cas, c'est sur 2 disques différents donc par défaut il le copiera : le curseur devrait afficher un petit + comme sous m$ pour le dire. A la fin, tu auras 2 fichiers.
Rony a écrit :Est-ce qu'il est possible (même si inutile, juste pour comprendre) de monter un disque sur un autre ? Genre le disque /dev/sda1 qui est monté sur /dev/sda2 ?
Tu ne peux pas monter quoi que ce soit dans /dev : il n'est géré que pas le systeme.

Si ta question est /home -> /dev/sda1 et que tu veux monté par dessus /home->/dev/sda2 ... ca ne marchera pas car tu ne peux pas avoir 2 montage sur le même point. Alors que

Code : Tout sélectionner

/home/dossierA -> /dev/sda1
/home/dossierA/dossierB -> /dev/sda2
fonctionne car ce n'est pas sur le meme endroit.
Rony a écrit :Bonne après midi !
Pareil :mrgreen:
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Rony
Messages : 40
Enregistré le : ven. 15 juil. 2016 17:42

Re: Comprendre l'arborescence linux

Message par Rony » mar. 30 août 2016 23:49

Ok, merci pour les précisions.

Plus flexible OK, mais concrètement aurais-tu quelques avantages à me donner de cette arborescence virtuel "monoracine" ?

Quels sont les limites (ou contraintes) du montage ? Par exemple quel répertoire ne peux pas être monté n'importe où, bref les limites de ce système.

Une autre question, pour accéder à un fichier il y a 2 à chaque fois 2 chemin, le chemin réel et le chemin "virtuel" (monté), juste ?

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Comprendre l'arborescence linux

Message par destroyedlolo » mer. 31 août 2016 10:18

Salut,
Rony a écrit :Plus flexible OK, mais concrètement aurais-tu quelques avantages à me donner de cette arborescence virtuel "monoracine" ?
Ben tu peux facilement placer n'importe quelle partie de ton arbo sur n'importe quel disque.
Exemple concret :
J'ai installé Gentoo sur une carte SD de 1 Go pour ma tablette (Android y est HS, donc je l'ai recyclé sous Linux). Pour ce faire, j'ai monté cette SD sur l'un de mes Banana juste pour l'installation.
Les "méta données" des packages sont installées dans /usr/portage/packages et prennent quand même 530 Mo ... et ne sont évidement nécessaires que lors de l'installation.
Donc l’intérêt de pouvoir monter tout n'importe où, c'est qu'au lieu de prendre ces 530Mo sur la SD, j'ai simplement monté temporairement un partition du disque de mon bPI a cet endroit.
Rony a écrit :Quels sont les limites (ou contraintes) du montage ? Par exemple quel répertoire ne peux pas être monté n'importe où, bref les limites de ce système.
Tu ne peux monter un disque que sur un répertoire. Il est fortement déconseillé de le faire sur fs géré par le système : /sys, /proc, /dev, ... Ca peut marcher, ou pas. Mais à coup sur, ca risque de mettre la grouille.

Le seul défaut que j'y trouve, c'est qu'il n'y a pas de moyen automatique (on peut le faire par les droits) de faire crasher une application si elle écrit sur un disque qui n'est pas monté : elle ne va faire qu'écrire dans le répertoire où devrait se trouver le disque, ce qui va ambouser la partition parente.
Rony a écrit :Une autre question, pour accéder à un fichier il y a 2 à chaque fois 2 chemin, le chemin réel et le chemin "virtuel" (monté), juste ?
Non, car ce que tu trouves dans /dev sont les disques "brut".

Code : Tout sélectionner

laurent@bPI ~ $ ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 Jun  5 15:22 /dev/sda
brw-rw---- 1 root disk 8, 1 Jun  5 15:22 /dev/sda1
brw-rw---- 1 root disk 8, 2 Jun  5 15:22 /dev/sda2
Le 'b' indique qu'il s'agit d'un 'bloc device' donc les données brutes du disque.
Si tu écris dessus ... tu corrompes le disque.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Rony
Messages : 40
Enregistré le : ven. 15 juil. 2016 17:42

Re: Comprendre l'arborescence linux

Message par Rony » mer. 31 août 2016 20:53

Ok cetre fois c'est bien clair !
Merci de ta patience et de m'avoir expliqué tout cela. :)


Bonne soirée.

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Comprendre l'arborescence linux

Message par destroyedlolo » jeu. 1 sept. 2016 11:07

Pas de quoi :)
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « Débutants »