Перейти к содержимому

Fingercomp's Playground

  • записей
    87
  • комментария
    452
  • просмотров
    311 246

OpenOS. От дуба до Мастера. Часть третья. [||·]

Fingercomp

4 731 просмотр

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



Сложность: средне
60%

Скучность: средне
55%

Дубовость: для продвинутых
50%



 


ФАЙЛОВЫЕ СИСТЕМЫ, ЗАКЛЮЧЕНИЕ. УСТРОЙСТВА И МОНТИРОВАНИЕ

Приступаем к самой сложной штуке в OpenOS — это монтирование файловых систем. Итак, начнём.

 


Логика работы
Итак, начнём с того, что каждый накопитель — это устройство. У устройства есть свой адрес, который показывается при наведении мышкой. Устройство имеет определённую вместимость. Имеет количество свободной и занятой области. И, наконец, характеризуется наличием метки "Read-Only".

Допустим, это устройство У имеет адрес Address, вместимость 2 МБ и занято 0.5 МБ.

Другое устройство Д имеет адрес sserddA и такие же характеристики.

В OpenOS выбирается одно основное устройство, которое становится корнем. У нас / = У. Оно имеет все стандартные файлы и папки. Но как перейти на устройство Д? Оказывается, в папке /mnt/ собраны ссылки на все устройства. Именами ссылок являются первые 3 буквы адреса устройства. Что интересно, даже если У — корень, ссылка на устройство всё равно будет в /mnt. Вот так:
/    Устройство У|│┅│+ mnt   |   |+ Add    Устройство У   |+ sse    Устройство Д   |┅


Монтирование
Но что, если если у нас таких устройств — 5, например? Помнить все 5 адресов, пусть даже трёх первых букв, писать длинные пути — не-у-доб-но. Согласитесь? Поэтому в ОС есть возможность ручного монтирования. То есть, проще говоря, можно создать ссылку на устройство в любом желаемом месте. Вот только ln здесь не поможет — это ведь не файл, а совершенно другой раздел. Для этих целей служит команда mount. У неё два варианта работы:

  1. mount -a <адрес> <место назначения> — создаёт ссылку на устройство, адрес которого начинается с <адрес>, в заданной директории <место назначения>. При этом указаннной папки не должно быть до этого на диске. После этого в выбранной директории будут все файлы с устройства. Для устройства Д — mount -a sse /devD/.
  2. mount <путь /mnt/адрес> <место назначения> — также создаёт ссылку на устройство в месте назначения, только вместо адреса используется путь типа /mnt/адрес. Для устройства Д это — mount /mnt/sse /devD/.


Директория, которая является ссылкой на устройство, наызвается точкой монтирования.

 


df
Эта команда отобразит все подключённые в данный момент хранилища данных, укажет точку монтирования и состояние. Для нашего компьютера было бы показано следующее:

Filesystem Used Available Use% Mounted onAddress    512k 2M        25%  /Address    512k 2M        25%  /mnt/addsserddA    512k 2M        25%  /mnt/sse


Как видите, если у файловой системы несколько точек монтирования, то будет показана информация о каждой из них.

 


label
Это у нас названия простые и запоминающиеся. В реальности вместо них были бы эти ужасные длинные непонятные адреса. И чтобы сделать их понятными, можно повесить метку. Что проще: "835f48a-5df9-eb6a-36cb-6ab452d8f16a" или "Programs"? Думаю, всё же второе.
Чтобы поставить такую метку, воспользуемся командой label, у которой опять два варианта работы:

  1. label -a <метка или часть адреса> <метка> — устанавливает данному диску метку.
  2. label <точка монтирования> <метка> — устанавливает диску по данной точке монтирования метку.


Кстати, если не указывать метку, то выведется информация о текущей.
И ещё, установочная дискета имеет метку "openos", а жёсткий диск с ОС — "OpenOS" по умолчанию.

Информация

При монтировании первым способом можно вместо части адреса ввести метку.

 

 

 

ПАЙПИНГ

Файлы
Простейший пример — перенаправление вывода echo в файл. Для этого используется >. Смотрите: echo "Hello all!" > hi.all. Содержимое hi.all очищается (или создаётся чистый файл, если его не было), и весь вывод идёт туда. Таким образом, в файле будет следующее:
Hello all!


Если же необходимо из файла содержимое вывести в команду, используется команда <. Вот только примеров такому мне найти не удалось.

 


Между командами
Другой простейший пример — команда cat. Если Вы помните, она печатала содержимое всё подряд, и если его больше высоты экрана, то просто обрезается. Так вот, чтобы не случалось такого, используется команда more и пайпинг.
Сразу скажу, как это сделать. more | cat <файл>. Обратите внимание на |. Этот символ обозначает, что весь вывод из правой команды надо перенаправлять в левую.
Скажу по секрету — тут можно было обойтись даже без пайпинга. more умеет сама открывать и читать файлы. Но есть нам нужен не файл, а, например, какой-нибудь df — вот тут и потребуется пайпинг.

 

В любом случае, эта штука является невостребованной, так как она недоделана. Вероятно, в будущем этот недостаток будет устранён, а пока просто запомним три оператора.




Список терминов:
  • монтирование — процесс создания ссылки на устройство
  • точка монтирования — название ссылки на устройство
  • метка — пользовательское имя для накопителя




Что же, всё обещанное сделано. В следующей части я расскажу об остальных программах, которые так или иначе помогают в программировании. Жду пожеланий и вопросов.



4 комментария


Рекомендуемые комментарии

Жаль в ОС нету системы устройств (/dev/...), и разделов на фс.

В одном из последних обновлений появился блочный режим работы жёстких дисков)) Можешь теперь писать обёртку под такой режим, с разделами и прочими фишками. Хотя мне проще просто скрафтить ещё один диск на 2 МБ :)

Поделиться комментарием


Ссылка на комментарий

Больше информации по шеллу! Его можно использовать во многих случаях, когда используются сторонние программы.

Очень облегчит жизнь тем, кто только осваивается.

 

Жаль в ОС нету системы устройств (/dev/...), и разделов на фс.

 

Это излишества, хотя можно сделать надстройку к существующей системе.

Поделиться комментарием


Ссылка на комментарий

Больше информации по шеллу! Его можно использовать во многих случаях, когда используются сторонние программы.

Очень облегчит жизнь тем, кто только осваивается.

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

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...