В процессе загрузки Linux у нас есть initrd
который является корневой файловой системой и монтируется до того, как настоящая корневая файловая система готова к монтированию. Какая процедура монтажа? Что должно произойти, чтобы мы могли сказать, что файловая система смонтирована? И почему мы говорим "корневая файловая система" вместо просто "файловая система"?
2 ответа
Он говорит "корневая файловая система", потому что может быть много других файловых систем, которые монтируются во время загрузки. Root или /
как C-Drive в Windows. Файловая система монтируется, когда она доступна системным функциям более высокого уровня через точку монтирования.
О процессе монтажа ... Я не знаю, какой технический ответ вы хотите, поэтому, пожалуйста, не обижайтесь на это чрезмерное упрощение. Вот как я бы объяснил это своим клиентам: подключив Flashdrive.
- Пользователь подключает USB Flashdrive
- ОС обнаруживает «что-то» подключенное к USB-порту X
- ОС прощупывает порт и обнаруживает, что есть флешка
- ОС назначает устройству узел устройства (скажем,
/dev/sdb
) - ОС проверяет
/dev/sdb
и находит таблицу разделов на основном разделе - ОС назначает узел устройства разделу (скажем,
/dev/sdb1
) - ОС проверяет
/dev/sdb1
и распознает файловую систему FAT32 - ОС монтирует файловую систему в
/dev/sdb1
к новой точке монтирования (например,/media/pendrive/
) - Содержимое файловой системы доступно для системы и, следовательно, для пользователя.
Содержимое устройства (необработанные данные) - это просто набор нулей и единиц. При монтировании устройства система добавляет что-то вроде «фильтра чтения / записи» поверх этих нулей и единиц, который переводит нули и единицы в реальные файлы и наоборот.
Например: когда вы сохраняете "Hello World" в текстовый файл в /media/pendrive
, тогда фильтр преобразует это в соответствии с правилами файловой системы и, в конце концов, серию нулей и единиц и записывает в /dev/sdb1
.
* Для систем nix файловая система должна находиться в /
, также называемой корневой. С initrd корень является виртуальной файловой системой в initrd. Система должна выполнить "pivot mount", при котором настоящая файловая система монтируется в корень, а файловая система initrd перемонтируется под нее.
Фактический процесс монтирования просто регистрирует файловую систему с VFS внутри ядра, чтобы он знал, где искать, чтобы найти файлы в определенном каталоге.