Корневая файловая система на внешнем устройстве (extroot)
У многих роутеров существенно ограничено количестве дискового пространства для хранения файлов и данных (встроенная flash-память). Но, в тоже время, роутеры могут быть оборудованы портами USB или SATA, что позволяет подключить к ним внешние устройства хранения, такие, как диски USB-flash и USB-HDD. В более экзотических случаях могут быть подключены даже mini PCI-E или сетевые диски. Подключение подобных устройств позволяет расширить "дисковую" память роутера, в том числе и его корневую файловую систему, для хранения как дополнительного программного обеспечения, так и дополнительных настроек. Существует несколько способов создание внешней корневой файловой системы. Чтобы понять все технические детали реализации OpenWrt extroot, желательно прочитать extroot.theory.
Возможные альтернативы внешней корневой файловой системы
Существует несколько вариантов для построения/подключения устройств с внешней корневой файловой системой. Возможны следующие варианты:
Прежде чем начать.
Если по каким-то причинам extroot сбоит при загрузке, то обычная конфигурация загружается из раздела JFFS2 основной flash-памяти. Вы можете скопировать оттуда старые настройки для их последующего изменения. Подобная конфигурация несёт некоторый риск (например, конфигурация SSH может оказаться незащищённой и даже доступной из Интернета). Перед установкой extroot необходимо убедиться, что система в безопасности и защищена. Также, любые изменения, внесённые в сетевое окружение, должны быть совместимы с безопасностью в исходной конфигурации JFFS2.Подготовка
Смонтируйте файловую систему, куда будут скопированы настройки и корень.
Убедитесь что ваше устройство смонтировано в режиме чтения/записи и на него можно записывать данные. Для проверки смонтируйте в ручном режиме первый раздел на USB-диске /dev/sda :
Убедитесь, что всё успешно подключено, запустив mount или df . Также, вы можете записать файл и прочитать его непосредственно в/из /mnt/sda1 .
Chaos Calmer
ПодготовкаУстановите следующие пакеты:
Установка на внешний overlay (рекомендованный вариант) Установка на внешний кореньBarrier Breaker
Здесь приведены лишь отличия, характерные для Barrier Breaker. Все остальные действия аналогичны таковым для Chaos Calmer.
Установка на внешний overlay (рекомендованный вариант) config mount option target /overlay option device /dev/sda1 option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 0Если монтирование не удалось, overlay смонтируется в /tmp/overlay-disabled вместо того, чтобы быть корневой файловой системой.
У некоторых пользователей при использовании Barier Breaker 14.07 (RC-версиях) на устройствах с архитектурой ar71xx раздел продолжает монтироваться как /mnt/sdax вместо /overlay. Проблема решается запуском block detect, который создаст правильный fstab с корректными идентификаторами разделов.
root@OpenWrt:/# cat /etc/config/fstab config global option anon_swap '0' option anon_mount '0' option auto_swap '1' option auto_mount '1' option delay_root '5' option check_fs '0' config mount option target '/overlay' option uuid '1902a323-79a6-4b1a-a511-a58655974ee9' option enabled '1' option fstype 'ext4' config mount option target '/mnt/sda2' option uuid 'dc64a6dd-de63-4363-b405-403cdced1649' option enabled '1' option fstype 'ext4'Проверка работоспособности extroot с помощью утилиты df :
Учитывайте, что rootfs и overlayfs:/overlay занимают одно и то же место, и оба монтируются в корень ( / ). Кроме того, /dev/sda1 смонтирован в /overlay и является оверлейной файловой системой. В том случае, если вы настроили не внешний overlay, а внешний корень, в выводе df не будет строки overlayfs:/overlay .
Установка на внешний корень config mount option target / option device /dev/sda1 option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 0До ревизии r26311 неудачно смонтированный внешний корень монтировался в /tmp/rom-disabled , а после ревизии r26311 - в /tmp/whole_root-disabled .
Attitude Adjustment
Старый вариант установки на внешний overlayBefore r25787 configure by setting the option is_rootfs in your /etc/config/fstab . Besides that, there is nothing to be configured regarding extroot that is different from any other mount.
For trunk versions up to, but not including r25787 the following is an example for an extroot mount entry in the file /etc/config/fstab. Note the fstype, options and enable_fchk options are optional, see fstab.
config mount option target /mnt # This is ignored once is_rootfs is set to 1 option device /dev/sda1 option fstype ext3 option options rw,sync option enabled 1 option enabled_fsck 0 option is_rootfs 1A target option is not mandatory as it will be the overlay file system. However, using the directory /mnt as target will make testing possible: first set is_rootfs to 0, reboot and check if all mounts well and than set it to 1 and reboot again. Make sure the target it is not manually set to /overlay. /overlay is automatically used on a successful is_rootfs -mount, but if for some reason this file system could not be made the rootfs will be mounted on the target listed here. Using /overlay will result in an double /overlay mount and screw things up. In later releases, the target is used to determine if a mount entry is an extroot device and is_rootfs is not used anymore to circumvent this.
option is_rootfs is deprecated after r25787. Use the new overlay variant where the target is used to determine if a mount entry is an extroot device. Before Trunk r25787 the option is_rootfs is required for block-extroot mounts!Troubleshooting
Дополнительные сведения
Extroot на карту памяти в слоте USB-модемаВ статье Использование 3g/UMTS USB модема для WAN соединений рекомендуют добавить в образ прошивки утилиту usb-modeswitch . Использование данной утилиты имеет особенности: если /overlay расположить на карте памяти, находящейся в слоте USB-модема, то даже при совершенно правильных настройках внешнего overlay , работоспособных при любом другом размещении оверлея, в данном случае будут наблюдаться неполадки файловой системы, возникающие на завершающей стадии загрузки ОС. Неполадки вызваны тем, что утилита usb-modeswitch , отключая CDROM и подключая модем, попутно на некоторое время отключает и считыватель карт памяти, нарушая работу файловой системы. Избежать этого можно заранее настроив USB-модем так, чтобы usb-modeswitch не потребовался вообще: устройство должно сразу представляться ОС как модем или сетевой адаптер со считывателем карт памяти включенными по-умолчанию.
Подключите USB-модем к компьютеру и с помощью терминала отправьте на модем соответствующие AT-команды. Проверяем исходную конфигурацию USB-модема: Расшифровать данный ответ модема можно с помощью следующей команды:
В данном примере у нас USB-модем, в котором в первой конфигурации (слева от символа ; ) включены CDROM и считыватель карт, во второй конфигурации (справа от символа ; ) включен модем, управляющий и диагностический интерфейсы, и считыватель карт памяти. Именно между двумя этими конфигурациями утилита usb-modeswitch переключает USB-модем на роутере.
Ваша цель - оставить только одну конфигурацию, в которой по-умолчанию включен модем (см. 1 выше) или сетевой адаптер (см. 16 выше), присутствует считыватель карт памяти (см. A2 выше), но при этом выключен CDROM. ВНИМАНИЕ: Нельзя отключать интерфейс PCUI (см. 2 выше) - вы потеряете возможность управлять USB-модемом!
Некоторые USB-модемы принимают параметр 'выключить всё' (см. FF ниже). Перечислите все необходимые вам по-умолчанию функции модема в списке справа от символа ; по их кодам из ответа модема вверху: Данная последовательность команд выключила CDROM и оставила единственную конфигурацию, в которой по-умолчанию присутствуют модем, интерфейсы и считыватель карт памяти - без необходимости пользоваться утилитой usb-modeswitch на роутере. Обратите внимание на символ ; - слева от него пусто.