Блочные устройства не являются обычными файлами, они позволяют программам, таким как mount, выполнять над ними специальные функции, необходимые для правильной работы.
Устройство цикла - это устройство перевода, оно переводит вызовы блочных файлов в обычные вызовы файловой системы к определенному файлу. Вы можете использовать losetup
для создания полноценных устройств обратной петли, поддерживаемых файлом (будет отображаться как / dev / loopX
, а затем обрабатывать их как обычные блочные устройства или передать -o loop
для монтирования, чтобы сообщить ему о прозрачном создании блочного устройства. Вы также можете использовать losetup
для проверки устройств обратной петли и того, что они поддерживают.
Обратите внимание, что при современном монтировании он попытается обнаружить обычный файл и автоматически создаст для вас устройство обратной связи.Таким образом, вам не нужно , чтобы передавал ему параметр loop
.
Кроме того, технически bind mount - это место, где вы перемонтируете каталог в новое место (поэтому он монтируется дважды). Это можно сделать с помощью флага - bind
для монтирования. Я понимаю, что вы имеете в виду, но это может сбить с толку, поскольку термин bind имеет особое значение с точки зрения монтажа.
Редактировать: Ваша ментальная модель, по сути, верна, но вы можете думать о петлевых устройствах как об уровне абстракции, это позволяет монтированию взаимодействовать с любым файлом, как если бы это было блочное устройство, без необходимости понимать различия между чтение / запись в файловую систему или на необработанное блочное устройство - все это обрабатывает ядро. Все, что нужно знать команде mount, - это как попросить ядро настроить устройство цикла, а затем рассматривать его как блочное устройство; это упрощает код низкого уровня и позволяет всему, что может взаимодействовать с блочным устройством, вместо этого разговаривать с файлом без изменения.
В приведенных выше сетевых файлах я обнаружил, что маскировка отсутствует. Следующие исправления:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Оказалось, что моя версия systemd была собрана без поддержки iptables. Повторная сборка с опцией 'libiptc'
исправляет это. Мне нужно было добавить
IPForward=yes
IPMasquerade=yes
также в файл wireless.network.