Структура каталогов и файловая система

Процесс начальной загрузки ПК является довольно сложным делом.

Во-первых, BIOS проходит несколько уровней самопроверок, чтобы удостовериться, что его базовое оборудование и память в рабочем состоянии, и дает пользователю шанс получить доступ к его экрану установки (и возможно другие опции, такие как последовательность начальной загрузки, но они не стандартизированы.

Во-вторых, это проверяет свою настроенную последовательность начальной загрузки на первое устройство, чтобы попытаться загрузиться от. Это может быть жестким диском, загрузочным диском USB, сетевым интерфейсом, CD/DVD-приводом, и так далее. Если этому не удается загрузиться от первой опции в списке, это пробует второе, и затем третье.

В случае дисковода это ищет информацию в первых 512 байтах диска - так называемый "загрузочный сектор", который содержит информацию как, туда, где искать загрузчик, который устраивается на работу оттуда.

В случае unix/linux загрузчик имеет задание загрузки ядра (и дополнительно начальный электронный диск), и сообщение его, где искать его корневую файловую систему прежде отступающий и позволяющий ядру сделать его вещь.

Ядро затем проходит свои самопроверки и диагностику, в то время как оно регистрирует любые аппаратные средства, что оно имеет драйверы для, затем пытается смонтировать указанную корневую файловую систему и выполниться /sbin/init

Init затем проверяет свою конфигурацию, программы запуска запусков, настраивает сети и сервисы, порождает TTYs и в основном получает готовую к употреблению систему.

Даже это - высоко упрощенное описание процесса; я рекомендую сделать некоторое рытье через Google для большего количества всестороннего исследования процесса начальной загрузки ПК.

10
27.05.2015, 06:56
8 ответов

Люди не слишком осторожно используют файловую систему . В ваших примерах я бы сказал, что / , / bin и / proc являются файловыми системами, потому что целый раздел (например, / dev / sdb1 ) монтируется в этих каталогах. Моя система Arch linux не имеет / bin в качестве файловой системы, поэтому этот пример не идеален, но ...

% ls -lid /proc /home /boot /
2 drwxr-xr-x  17 root root 4096 Feb 24 12:12 //
2 drwxr-xr-x   4 root root 4096 May 16 14:29 /boot/
2 drwxr-xr-x   5 root root 4096 Mar 14 18:11 /home/
1 dr-xr-xr-x 116 root root    0 May 16 17:18 /proc/

Inode номер 2 традиционно является "корневым" inode всего на диске файловая система (это другое словоупотребление). / , / boot и / home имеют номер inode 2, а / proc , который полностью представлен ядром и выполняет не присутствует на диске, имеет индекс 1. Эти номера дескрипторов указывают на то, что вся файловая система на диске или виртуальная файловая система монтируются с использованием этого имени.

Предложение « / home / abc / xyzdir1 является каталогом» в основном означает, что файловая система на диске не монтируется с этим именем. Если вы сделаете то же самое ls -lid ] в каталоге вы получите что-то вроде этого:

 % ls -lid /home/bediger/src
3670039 drwxr-xr-x 29 bediger bediger 4096 May 17 19:57 /home/bediger/src/

Inode номер 3670039 - это тот самый индекс, который был выделен в файловой системе на диске, смонтированной (на моем компьютере) в / home .

Вы также можете найти файловые системы, вызвав команду mount . В ней перечислены все подключенные файловые системы и места, где они смонтированы.

8
27.01.2020, 20:00

На риске сильно упрощает,

  • файловая система похожа на вашу машину Двигатель и другие внутренние системы,
  • Структура каталогов похожа на карту мест, где вы едете.

Так как меня попросили бис,

  • файловые системы похожи на механику (детали реализации) Развитие / распространение аудио / видеосигнала: аналоговое радиовещание, Цифровая радиовещание, кабель, Интернет, видеокант, видеосъемка и т. Д.
  • Структура каталогов похожа на содержание телевизионного программирования, и их категоризация, E.G., в комедию, драму, новости, документальные фильмы, игры показывает, спорт и т. Д.

Если вы хотите, чтобы код, см. Первую половину этого ответа на Как определить, принадлежит ли файловая система Linux к запущенной системе - Часть, которая проверяет проверку проверки root_dir . Это просто делает то, что сказал Брюс; проверка того, что это каталог и проверить, является ли его номер INODE 1 или 2.

4
27.01.2020, 20:00

Сначала исправьте свое предположение о файловой системе и каталоге. Файловая система содержит один или несколько каталогов. Используя ваши примеры, /proc, / и /bin являются каталогами. Они сами по себе не являются "файловыми системами", но могут быть корнем соответствующих файловых систем.

Если вы хотите определить, какие каталоги также являются точкой монтирования (корнем) их файловых систем, вы можете использовать что-то вроде этого:

F="$PWD"    # The directory to be tested
if test -d "$F"
then
    echo "$F is a directory"
    test "X$(stat --format '%m' "$F")" = "X$PWD" && echo "$F is a mountpoint"
fi
1
27.01.2020, 20:00

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

В ваших примерах все перечисленные пути являются каталогами, но только некоторые из них также являются точками монтирования файловых систем.

Вы можете использовать команду df, чтобы узнать, какая файловая система представляет собой данный файл или каталог, а также команду mount в большинстве реализаций Unix и Linux, чтобы выяснить, какие файловые системы присутствуют на вашей машине, их тип и точки монтирования. Например:

$ df /proc
Filesystem     1K-blocks  Used Available Use% Mounted on
proc                   0     0         0    - /proc
$ mount | grep -w /proc
/proc is a file system of type proc

Утверждение /bin - файловая система сомнительна, /bin почти всегда монтируется на /.

$ df -k /bin
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      206292664 180687360  15103212  93% /
$ mount | grep -w /
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
2
27.01.2020, 20:00

В моем понимании файловая система в смысле UNIX - это способ реализации дерева каталогов (структура каталогов), или, точнее, способ реализации API файловой системы UNIX. Корень файловая система поддерживается одной конкретной реализацией, и всякий раз, когда вы входите в каталог точки монтирования, вы вводите поддерево, поддерживаемое чем-то другим.

Интерфейс всегда один и тот же, но в одном случае у вас есть определенный раздел диска на внутренней стороне, в другом случае будет программа, которая даже не записывает на устройство хранения. Файловая система proc будет поддерживаться программным обеспечением, которое раскрывает внутреннее устройство ядра; tmpfs будет скопирован программным обеспечением, которое записывает в RAM, а другие файловые системы могут записывать в сеть или где-то еще.

В смысле слова, отличном от UNIXy, файловая система - это способ организации хранения данных. ext4 , btrfs , fat и ntfs являются файловыми системами в этом смысле, но также и в смысле UNIXy - они реализуют файловую систему API. proc не будет классифицироваться как файловая система в рамках этой, более ограниченной парадигмы, поскольку она не организует хранение данных.

TL; DR:

  • структура каталогов / дерево = интерфейс
  • файловая система = серверная часть
4
27.01.2020, 20:00

Файловая система - это методология логической организации и хранения больших объемов данных, упрощающая управление системой. файловая система состоит из файлов, связей с другими файлами, а также атрибутов (тип файла, имя файла, размер файла, владелец файла, временная метка файла) каждого файла.

Каталоги : например, файловая система Unix по существу состоит из файлов и каталогов. Каталоги - это специальные файлы, которые могут содержать другие файлы. самый верхний каталог - / (косая черта), а каталоги, расположенные непосредственно под ним, являются системными каталогами. enter image description here

/ Корень файловой системы Linux

/ bin Здесь хранятся двоичные исполняемые файлы

/ boot Файлы, связанные с загрузкой, хранятся здесь

/ dev Здесь хранятся файлы устройств

/ etc Здесь хранятся общесистемные файлы конфигурации

/ home Расположение домашних каталогов обычных пользователей

/ lib64 Библиотеки для двоичных файлов исполняемые файлы хранятся здесь

/ mnt Временная точка монтирования для DVD-Rom, USB-накопителя.

/ opt Дополнительные программы устанавливаются здесь как Program Files в windows

/ proc Псевдофайловая система ядра

/ root Домашний каталог суперпользователя root

/ sbin Здесь хранятся системные двоичные исполняемые файлы

/ tmp Здесь хранятся временные файлы

/ usr Пользовательская файловая система

/ var Здесь хранятся файлы переменных

/ srv - это служебная папка, содержащая специфичные для сайта данные, которые обслуживаются этой системой.

src и подробнее

Следующие два каталога являются каталогами, определяемыми пользователем:

 /home/abc/xyzdir1 --is a directory
 /home/abc/xyzdir2 -- is a directory
1
27.01.2020, 20:00

Если вам просто нужна команда, которая говорит вам, является ли путь каталогом или нет, используйте точку монтирования (1).

Для меня это печатает

$ mountpoint /
/ is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
$ mountpoint some-file
some-file is not a mountpoint

Хорошо, что статус выхода снова показывает то же самое, так что вы можете использовать его в своих сценариях, как этот:

if mountpoint "$foo" >/dev/null; then
  : do mountpoint stuff
elif [ -d "$foo" ]; then
  : do directory stuff
elif [ -e "$foo" ]; then
  : do file stuff 
else
  echo "$foo does not exist!" >/2
fi
1
27.01.2020, 20:00
  • Каталог — это не что иное, как файл другого типа. Каждый файл имеет номер инода
  • Копия диска называется :inode
  • В -копия в памяти того же индекса называется :в -основной индекс
  • В -основной индексный дескриптор имеет дополнительные сведения, чем его копия на диске
  • В -индексный дескриптор ядра — это место, куда ядро ​​делает запись, чтобы мы могли различать разницу ч/б обычного каталога и точки монтирования -. Одно из основных полей inode в -«установлено -на». Если это установлено, то этот каталог является точкой монтирования -. Любой дальнейший доступ к этому каталогу следует согласовать с "mount table", транслировать запрос в сопоставленную файловую систему и продолжить, если это не установлено, это все еще обычный каталог в текущей файловой -системе, которую он содержит.
-1
08.06.2021, 11:02

Теги

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