The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 , opennews (??), 20-Окт-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


45. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +/
Сообщение от Ordu (ok), 21-Окт-20, 19:58 
Если ты монтируешь образ без таблицы разделов, то losetup не нужен:

mount -o loop file.img mount.point

Ответить | Правка | Наверх | Cообщить модератору

48. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +/
Сообщение от Аноним (2), 21-Окт-20, 22:50 
Ordu, я столько лет пользуюсь линуксом, но до сих пор понять не могу, зачем нужны loop-устройства и что они конкретно делают и почему обычного файла недостаточно, ведь в обычных файлах тоже можно и перематывать дескриетов, и читать, а лучше - вообще отобразить в память. Просветишь?
Ответить | Правка | Наверх | Cообщить модератору

49. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +/
Сообщение от Аноним (2), 21-Окт-20, 22:51 
*дескриптор
Ответить | Правка | Наверх | Cообщить модератору

51. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +1 +/
Сообщение от Ordu (ok), 21-Окт-20, 23:33 
> Ordu, я столько лет пользуюсь линуксом, но до сих пор понять не
> могу, зачем нужны loop-устройства и что они конкретно делают и почему
> обычного файла недостаточно, ведь в обычных файлах тоже можно и перематывать
> дескриетов, и читать, а лучше - вообще отобразить в память. Просветишь?

В ядре есть драйвера для файловых систем. Это уже готовые реализации файловых систем. Если ты работаешь с образом файловой системы в файле, было бы удобно использовать эти реализации, вместо того, чтобы писать новые, которые будут работать в user-space, так?

Или та же проблем с другой стороны? Ты вызываешь fprintf(3), тот вызывает write(2), а write -- это заглушка glibc, которая вызывает сисколл ядра write. Как write поймёт, что он пишет в "файл в файле", а не в сам файл? Что, например, надо выделить новый inode в образе файловой системы, а не просто продолжать писать байтики последовательно до конца файла, и потом за конец его увеличивая его размер по мере необходимости? Ты вызываешь fclose(3), который вызывает заглушку close(2), которая вызывает сисколл close, который должен догадаться, что закрывать надо не файл образа фс, а файл лежащий в файле образа фс.

Я не буду утверждать, что проблему нельзя решить чисто в юзерспейсе, посредством модификации glibc и, может быть, добавлением какого-нибудь специального сисколла в ядро, или там ioctl'а. Или вынесением реализаций фс в юзерспейс. Но в linux это сделано при помощи устройств /dev/loop.

Файловые системы ядра работают поверх блочных устройств. losetup просит ядро сделать виртуальное блочное устройство, содержимое которого будет совпадать с содержимым указанного файла. То есть если ты будешь читать /dev/loop0 ты прочитаешь тот самый файл, на который он ссылается. Но loop0 -- это не обычный файл, а файл блочного устройства -- он ссылается на драйвер, который ведёт себя как драйвер жёсткого диска/флешки/... А это значит, что драйвера файловой системы в ядре умеют с ним работать. И этот /dev/loop0 можно смонтировать используя те же механизмы монтирования, которые ты используешь при монтировании /dev/sda1.

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

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

53. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +/
Сообщение от Аноним (53), 22-Окт-20, 11:06 
>до сих пор понять не могу, зачем нужны loop-устройства и что они конкретно делают

Монтировать исошки и тому подобное

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

56. "Выпуск Tor Browser 10.0.2 и дистрибутив Tails 4.12 "  +/
Сообщение от СеменСеменыч777 (?), 22-Окт-20, 16:10 
> зачем нужны loop-устройства

у команды mount 2 главных аргумента:
1) /dev/чего_то
2) mount_point

loop девайсы нужны для п.1.

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру