No proc
manual, ele nomeia a 4ª coluna mountinfo
como "root" e a descreve como "o nome do caminho do diretório no sistema de arquivos que forma a raiz desta montagem". Mas como entender isso?
Achei que os elementos básicos de uma montagem fossem a origem e o caminho de destino, já que a "fonte da montagem" é a 10ª coluna e o destino na 5ª coluna, então para que serve a raiz?
Para a maioria das informações de montagem, a raiz é apenas /
, parece não ter sentido. Eu só acho que as montagens de ligação têm uma raiz diferente de /
, então só é útil em montagens de ligação? E no caso de bind, por que não mostrar o caminho absoluto na raiz? Por exemplo, ao vincular to /run/test_dir/a
, /run/test_dir/b
a coluna raiz mostra /test_dir/a
, por que ocultar a /run
parte?
Responder1
É difícil explicar isso com elementos de linguagem (pelo menos com minhas habilidades em inglês) - então decidi dar uma resposta baseada em exemplos:
O diretório raiz é frequentemente chamado deAltíssimaoumais altodiretório. Isso é apenas parcialmente verdade. Este diretórioé assumidoEnquanto oAltíssimadiretório. Você poderia descrevê-lo como "começarei a partir deste diretório - presumo que este seja o diretório mais alto e não haja nada acima".
Alguns exemplos para esclarecer o que significa “root”:
- Imagine que você execute um servidor web e defina a raiz de um domínio
example.com
como/var/www/html/example.com
. Agora você cria um arquivo/var/www/html/example.com/test.html
. Se você abrirhttps://example.com/test.html
no seu navegador. você obtém o conteúdo do arquivo criado. Se você definir/var/www/html
como root, você deve abrirhttps://example.com/example.com/test.html
- Se você
chroot
entrar no diretório/home/test/testSystem/
. A raiz deste ambiente seria/home/test/testSystem
. Se você fizer issols
dentro do ambiente chroot,ls /
você obterá o conteúdo de/home/test/testSystem/
Ponto de montagem com raiz/
Por exemplo, um USB contém:
/
├── dir1
│ ├── subfile1
│ └── subfile2
├── file1
├── file2
└── file3
Se você montar este USB, /mnt
obterá a saída normal esperada porque usa o /
diretório do USB como root:
531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]
Portanto, na maioria dos casos, a raiz dos pontos de montagem seria de fato /
.
Ponto de montagem com raiz diferente de/
Você pode tentar fazer isso sozinho: Vincule dois diretórios em seu sistema de arquivos com
$ mount --bind /var/test1 /var/test2
A saída de mountinfo
seria algo como:
564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]
A raiz do ponto de montagem localizada em /var/test2
é /var/test1
. A fonte de montagem (o que você montou) é/dev/sda
Voltando ao exemplo do USB: Se você agora montar o conteúdo /mnt/dir1
em outra coisa, obterá a raiz da montagem /dir1
e a fonte da montagem será /dev/sdb
(o USB). A /mnt
parte é descartada aqui.
"Por que esconder a parte /run"
Resumindo: /run
foi descartado porque é uma partição tmpfs. Por que essas peças são removidas?
No exemplo USB montamos dir1
em /dev/sdb
. /home/test/usbmnt/
A saída seria:
564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]
Você vê que montamos o conteúdo de /dir1 (do USB e NÃO do seu disco rígido) em um diretório chamado usbmnt. Talvez seja útil lê-lo como /dev/sdb/dir1
.
Se a raiz fosse fornecida porque /mnt/usb/dir1
não poderíamos saber qual é a localização real no USB: poderia ser /dir1
, /usb/dir1
ou talvez/mnt/usb/dir1