Моя установка состоит из сервера с Ubuntu 10.10 и устройства с настроенным Linux. Устройство получает свое ядро и монтирует свою корневую файловую систему с сервера, используя TFTP и NFS соответственно.
В моем файле экспорта у меня есть:
/export/rootfs 192.168.1.0/24(rw,no_root_squash,no_subtree_check,sync)
У меня есть файл, содержащий файловую систему EXT2, на которую я монтирую /export/rootfs
:
mount -t ext2 -o loop TargetFS.ext2 /export/rootfs
Когда я загружаю свое устройство, я получаю «на устройстве не осталось места во время инициализации, хотя оно есть. Если я скопирую содержимое TargetFS.ext2
к /export/rootfs
вместо установки у меня этой проблемы нет.
Есть предположения?
Вы монтируете TargetFS.ext2 файл используя драйвер обратной петли. В зависимости от расположения и типа файла вы можете смонтировать его как rw, используя -o rw,loop
вместо просто -o loop
. Несмотря на то, что вы монтируете свой файл в том же месте, где монтируете общий ресурс NFS, вы все равно пытаетесь записать изменения в файл.
Имейте в виду, что где бы ни находился файл, он должен быть доступен для записи и иметь достаточно места для размещения любых / всех изменений. Иногда файлы, которые вы можете смонтировать как loopback, по-прежнему не могут быть записаны из-за сжатия или чего-то еще ... или вы решаете, что не хотите записывать изменения в необработанный образ ... Альтернативой является просмотр "разветвленная" файловая система, которая позволит вам монтировать одну файловую систему как доступную только для чтения ... а вторую как чтение / запись поверх в качестве "оверлея". mini_fo достаточно хорошо справлялся с этим во многих встроенных устройствах, таких как openwrt, в течение очень долгого времени. (изображение доступно только для чтения, а поверх него наложен RAM-диск, чтобы журналы и т.п. имели место для записи)