Почему / dev является подкаталогом / (корня)? [закрыто]

0
01.05.2016, 18:25
3 ответа

Это связано с тем, что файлы устройств, которые вы найдете в / dev , на самом деле не являются точками монтирования *. Это просто удобные ссылки на файловую систему для доступа к самим устройствам . Вы можете увидеть подобную иерархию в / sys - в частности, посмотрите в / sys / block .

Почему что-то вроде / dev / sda - это особый тип файла, а не каталог, в котором есть подкаталоги для разных разделов, а затем содержимое файловой системы этих разделов? В основном просто потому, что . Разработчики Unix могли сделать что-то подобное, но вместо этого они сделали это.

Почему / dev вместо того, чтобы просто помещать файлы устройства в / напрямую? Ну, там много файлов. Это выглядело бы некрасиво. Однако вы можете сделать это, если хотите. Взгляните, например, на / dev / sda :

$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 Apr 27 23:18 /dev/sda

b в начале указывает, что это блочное устройство, а «8, 0» - это старший и младший номера устройств - в основном магические, предопределенные числа, которые, как известно ядру, соответствуют определенному драйверу.

Вы можете создавать их где угодно.Например:

$ sudo mknod /tmp/this-is-my-main-disk-drive b 8 0
$ ls -l /tmp/this-is-my-main-disk-drive 
brw-r--r--. 1 root root 8, 0 May  1 14:31 /tmp/this-is-my-main-disk-drive
$ sudo fdisk -l /tmp/this-is-my-main-disk-drive
Disk /tmp/this-is-my-main-disk-drive: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
[...]

Однако обратите внимание, что я создал серьезную дыру в безопасности, поскольку теперь это устройство доступно для чтения всем в системе. Не делай этого.


* ну, за исключением некоторых вещей, которые есть, но для простоты давайте их сейчас проигнорируем.

0
28.01.2020, 02:48

Это соглашение. Просто называется Стандарт иерархии файловой системы. Больше в ней ничего нет.

http://www.pathname.com/fhs/

0
28.01.2020, 02:48

Я считаю, что Unix V1 будет запускаться с одного диска. У него не было реальной VFS . Системную файловую систему можно найти в корне пространства имен, / . Переадресация не требуется ; нет SYSTEMROOT = c: / windows переменная. Помните, что это был рукописный ассемблерный код. Минималистские идеи оказались очень полезными.

Идеи здесь часто описываются с точки зрения их элегантности . Я хочу запустить / bin / ls из работающей системы или прочитать содержимое / etc / motd . Мне не нужно каждый раз думать о том, как диск вызывается (DOS ' C: ).

Буквы дисков в DOS / CPM фактически предшествовали реализации иерархической файловой системы. Но вы также можете рассматривать их как функцию пользовательского интерфейса, которая требует различных компромиссов для систем, в которых очень интенсивно используются файловые системы на гибких дисках. Фактически, вы можете запустить системный диск DOS, удалить его и продолжить использовать оболочку DOS для запуска программ на втором диске. Таким образом, вы в конечном итоге захотите найти способ ссылки на диски, который не зависит от специальных файлов из системной файловой системы, потому что у вас точно нет системной файловой системы, которая постоянно монтируется.

Буквы дисков не имеют большого отношения к современным системам; Unix здесь чувствует себя несколько самодовольно :).

В Unix V1 уже были пути вроде / dev и / etc , которые люди и код усваивали. Также с самого начала mount использовалась для «съемных файловых систем».

(В последующих версиях использовался второй диск / usr . Путь поиска - переменная среды PATH ] был добавлен для поддержки второго каталога bin, / usr / bin .)

Возня со стандартными путями обычно является причиной чрезмерной драмы (даже если для этого есть веская причина). Со временем они были несколько реформированы, и вы можете увидеть это в Linux. Но никто не нашел веской причины напр. вставьте C: перед всем .

1
28.01.2020, 02:48

Теги

Похожие вопросы