Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
ru:doc:howto:extroot [2018/03/04 16:39] – ↷ Links adapted because of a move operation ru:docs:guide-user:additional-software:extroot_configuration [2021/03/04 22:58] – redundant links vgaetera
Line 1: Line 1:
 ====== Корневая файловая система на внешнем устройстве (extroot) ====== ====== Корневая файловая система на внешнем устройстве (extroot) ======
-У многих роутеров существенно ограничено количестве дискового пространства для хранения файлов и данных (встроенная flash-память). Но, в тоже время, роутеры могут быть оборудованы портами USB или SATA, что позволяет подключить к ним внешние устройства хранения, такие, как диски USB-flash и USB-HDD. В более экзотических случаях могут быть подключены даже mini PCI-E или сетевые диски. Подключение подобных устройств позволяет расширить "дисковую" память роутера, в том числе и его корневую файловую систему, для хранения как дополнительного программного обеспечения, так и дополнительных настроек. Существует несколько способов создание внешней корневой файловой системы. Чтобы понять все технические детали реализации OpenWrt extroot, желательно прочитать [[docs:guide-user:additional-software:extroot_configuration:extroot.theory]].+Для полного понимания процедур крайне желательно ознакомится с темами приведенными ниже:
  
-===== Возможные альтернативы внешней корневой файловой системы ===== +{{section>meta:infobox:howto_links#cli_skills&noheader&nofooter&noeditbutton}}
-Существует несколько вариантов для построения/подключения устройств с внешней корневой файловой системой. Возможны следующие варианты: +
-  - Конфигурирование загрузчика [[docs:techref:bootloader]] для непосредственной загрузки с внешнего USB-устройства. Не все загрузчики имеют такую функцию.  +
-    * Популярные загрузчики такие как U-Boot или RedBoot [[wp>Comparison_of_boot_loaders|support different file systems]] поддерживают такой функционал, но требуют драйвер для конкретной реализации аппаратуры! +
-  - Конфигурирование загрузчика для загрузки по сети -> [[inbox:howto:netboot]]. Подобной функциональностью обладает ещё меньшее количество загрузчиков. +
-  - Создание установки чтобы ''opkg'' был в состоянии устанавливать пакеты где-то в файловой системе OpenWrt -> [[docs:guide-user:additional-software:opkg#Installation destinations]]. Но обеспечение установки пакетов OPKG в корне намного удобнее, так как все файлы устанавливаются в стандартных местах файловой системы, в которых ОС ожидает их найти. +
-  - Использование [[kexec]]. Что может потребовать очень специфических настроек в зависимости от устройства.+
  
-===== Прежде чем начать...  ===== +Так же необходимо отметить что механизм конфигурирования extroot существенно зависит от версии OpwnWrt и в меньшей степени зависит от типа вашего устройства.  Данная русскоязычная версия документации будет отталкиваться от версии OpwnWrt 18.06. В качестве аппаратной платформы будет использоваться роутер TP-LINK TL-WDR4300/3600.
-  - Прочитайте статью  [[docs:guide-user:additional-software:extroot_configuration:extroot.theory]] для лучшего понимания технологии внешней корневой файловой системы. Убедитесь, что поняли различия между двумя основными вариантами: "внешний overlay" (pivot overlay) и "внешний корень" (pivot root). +
-  Для разных версий OpenWrt конфигурации и опции будут различаться или могут отсутствовать вовсе. Инструкция ниже описывает процедуры для версий OpenWrt выше 10Для версий ниже 10 возможен только вариант "внешний overlay", но не "внешний корень"+
-  - Функциональность extroot ещё дорабатывается, поэтому обязательно смотрите статьи об ошибках -> [[#Troubleshooting]] и примечания -> [[#Notes]] в процессе подготовки и далее в процессе установки и настройки!+
  
-| {{:meta:icons:tango:48px-emblem-important.svg.png?nolink}} | Если по каким-то причинам extroot сбоит при загрузкето обычная конфигурация загружается из раздела JFFS2 основной flash-памятиВы можете скопировать оттуда старые настройки для их последующего изменения. Подобная конфигурация несёт некоторый риск (например, конфигурация SSH может оказаться незащищённой и даже доступной из Интернета). Перед установкой extroot необходимо убедиться, что система в безопасности и защищена. Такжелюбые изменениявнесённые в сетевое окружение, должны быть совместимы с безопасностью в исходной конфигурации JFFS2. |+У многих роутеров существенно ограничено размер дискового пространства для хранения файлов и данных (встроенная flash-память)Но, в тоже время, роутеры могут быть оборудованы портами USB или SATA, что позволяет подключить к ним внешние устройства хранения, такие, как диски USB-flash и USB-HDD. В более экзотических случаях могут быть подключены даже mini PCI-E или сетевые диски. Подключение подобных устройств позволяет расширить "дисковую" память роутерав том числе и его корневую файловую систему,''rootfs'' для хранения как дополнительного программного обеспечения, так и дополнительных настроек.  
 +В большинстве поддерживаемых устройств OpenWrt разбивает внутреннее хранилище на разделы ''rootfs'' и ''rootfs_data''которые объединяются в одну перезаписываемую файловую систему наложения ''[[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/overlayfs.txt|overlay]]''.
  
-===== Подготовка ===== +^ Partition(раздел) ^ Mount point(точка монтирования) ^ Compression(сжатие) ^ Writable(записываемый) | 
-**Смонтируйте** **файловую систему**, куда будут скопированы настройки и корень. +| ''rootfs'' | ''/rom'' | Yes(Да) | No(Нет) | 
-    Для USB-устройств, смотрите [[doc:howto:usb.essentials]] и [[docs:guide-user:storage:usb-drives]].  +| ''rootfs_data'' | ''/overlay'' | No(Нет) | Yes(Да) | 
-     * Также, обратите внимание на [[doc:howto:sata.essentials]],  IDE(PATA[[doc:howto:ide.essentials]] и [[doc:howto:cf.essentials]]. +| ''overlay'' | ''/'' | Unmodified files(Не модифицированные файлы) | Yes(Да) |
-    * Смотрите [[doc:howto:client.overview#Mounting Filesystems]] для монтирования удалённой файловой системы через сеть. +
-    * Смотрите [[Storage]] для общей информации о конфигурации устройств хранения.+
  
-Убедитесь что ваше устройство смонтировано в режиме чтения/записи и на него можно записывать данные. Для проверки смонтируйте в ручном режиме первый раздел на USB-диске ''/dev/sda'':+Таким образом, OpenWrt помещается даже в крошечные объемы внутренней памяти (всего 4 МБ), но все же позволяет записывать настройки и устанавливать некоторые пакеты в доступный для записи раздел без изменения всех используемых программ Linux. \\ 
 +Extroot работает, устанавливая другой ''overlay'' раздел на внешнем устройстве хранения, и во время загрузки этот новый ''overlay'' раздел будет смонтирован поверх ''overlay'' раздела внутреннего хранилища. 
 +Этот подход позволяет легко откатиться в случае удаления внешнего устройства хранения, поскольку ваше устройство по-прежнему будет иметь свой собственный ''overlay'' раздел и, следовательно, будет загружать всю конфигурацию оттуда. \\ 
 +Это означает, что он будет вести себя точно так же, как и перед настройкой extroot.
  
-    mount /dev/sda1 /mnt/sda1+===== Инструкции ===== 
 +==== 1.1. Для устройств менее чем с 4 МБ флеш памяти ==== 
 +В образах прошивки OpenWrt по умолчанию нет инструментов для создание extroot, так как система сборки в настоящее время создает только barebone-образы. \\ 
 +Единственный способ использовать эти устройства - перестроить образ прошивки с нужными пакетами с помощью Image Builder. \\ 
 +Image Builder может работать только в 64-битной операционной системе Linux, поэтому, если у вас нет системы Linux, посмотрите инструкции по установке Ubuntu 64bit в VirtualBox. \\ 
 +Затем перейдите на ту же страницу загрузки, где вы можете загрузить прошивку для своего устройства, и прокручивать вниз, пока не найдете файл, начинающийся с "** OpenWrt-imagebuilder **". \\ 
 +Загрузите его и распакуйте в папку в системе Linux.
  
-Убедитесь, что всё успешно подключено, запустив ''mount'' или ''df''. Также, вы можете записать файл и прочитать его непосредственно в/из ''/mnt/sda1''.+Откройте терминал в этой папке и напишите:
  
-===== Chaos Calmer =====+<code bash> 
 +make info 
 +</code>
  
-==== Подготовка ==== +Это выведет на экран все возможные имена профилей для устройств, поддерживаемых этим Image Builderчтобы мы могли создать образ для нужного устройства. 
-Установите следующие пакеты: +Каждая запись будет выглядеть так:
-  * //block-mount// (подробную информацию смотрите в [[docs:techref:block_mount]] и в [[ru:doc:uci:fstab]]). +
-  * //kmod-fs-ext4// или //kmod-fs-//[файловая система, которую вы используете на USB-диске]  +
-  * //kmod-usb-storage-extras// <code>opkg update +
-opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras</code>   +
-  * Если opkg выдаёт ошибку при установке kmod-usb-storage-extras, следует сперва установить <code>kmod-usb-core</code> +
  
-==== Установка на внешний overlay (рекомендованный вариант) ==== +<code bash> 
-  Создайте на USB-диске разделы и отформатируйте их, используя любой Live CD с Linux или средствами uci //(рекомендуется использовать первый раздел для root overlay, второй для swap (если он вам необходим), а далее разместить прочие разделы, которые вам нужны)// +tl-wr1043nd-v1: 
-  Скопируйте /overlay на USB-устройство <code> +    TP-LINK TL-WR1043N/ND v1 
-mount /dev/sda1 /mnt +    Packages: kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
-tar -C /overlay -cvf . | tar -C /mnt -xf - +
-umount /mnt+
 </code> </code>
-  - Создайте шаблон fstab<code> 
-block detect > /etc/config/fstab 
-vi /etc/config/fstab 
-</code> 
-  - Внесите исправления в ''/etc/config/fstab'': 
-    - Все строки вида ''enabled '0' '' приведите к ''enabled '1' '' 
-    - Отредактируйте ''option target'' корневого раздела overlay, чтобы он выглядел как **''/overlay''** (**__НЕ__** ''overlay'', поскольку это приведёт к ошибочному двойному монтированию) 
-    - Отредактируйте ''option target'' прочих разделов, в соответствии с тем, куда вы хотите их примонтировать (и не забудьте создать соответствующие директории в файловой системе)\\ После всех манипуляций ваш fstab будет выглядеть примерно так:<code> 
-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' +Первая строка это имя профиля, вторая строка полное имя вашего устройства, третья строка список пакетов по умолчанию для этого устройства, и в нем должны быть перечислены некоторые пакеты с USB или Sata или любым другим устройством хранения.
-        option  target  '/overlay' +
-        option  uuid    'c91232a0-c50a-4eae-adb9-14b4d3ce3de1' +
-        option  fstype  'ext4' +
-        option  enabled '1'+
  
-config 'swap' +В нашем случаи это TP-LINK TL-WR1043N/ND v1, поэтому имя профиля этого устройства **tl-wr1043nd-v1** 
-        option  uuid    '08b4f0a3-f7ab-4ee1-bde9-55fc2481f355' +Теперь нам нужно написать команду, чтобы начать сборку образа (обратите внимание, что имя после **PROFILE=** является именем профиля данного устройства, обязательно используйте имя профиля для своего устройства):
-        option  enabled '1'+
  
-config 'mount' +<code bash> 
-        option  target  '/data' +make image PROFILE=tl-wr1043nd-v1 PACKAGES="kmod-fs-ext4 kmod-usb-storage kmod-usb-ohci kmod-usb-uhci"
-        option  uuid    'c1068d91-863b-42e2-bcb2-b35a241b0fe2' +
-        option  enabled '1'+
 </code> </code>
-  - Перезагрузите роутер 
-  - Убедитесь, что разделы корректно смонтированы: 
-    * с помощью LuCI 
-      * в //System - Software// должно быть видно свободное пространство на разделе 
-      * в //System - Mount Points// должен быть виден USB-раздел, смонтированный как ''overlay'' 
-    * с помощью консоли 
-      * команда ''mount'' должна показать USB-раздел, смонтированный как ''/overlay''\\ <code> 
-root@OpenWrt:mount 
  
-/dev/root           on /rom               type squashfs (ro,relatime) +Это создаст образ прошивкикоторый может прочитать разделотформатированный в файловой системе ext4 на внешних устройствах хранения подключенных через USB.
-proc                on /proc              type proc     (rw,noatime) +
-sysfs               on /sys               type sysfs    (rw,noatime) +
-tmpfs               on /tmp               type tmpfs    (rw,nosuid,nodev,noatime) +
-/dev/ubi0_1         on /overlay           type ubifs    (rw,noatime) +
-overlayfs:/overlay  on /                  type overlay  (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work) +
-tmpfs               on /dev               type tmpfs    (rw,relatime,size=512k,mode=755) +
-devpts              on /dev/pts           type devpts   (rw,relatime,mode=600) +
-/dev/sda1           on /overlay           type ext4     (rw,relatime,data=ordered) +
-/dev/sda3           on /data              type ext4     (rw,relatime,data=ordered) +
-debugfs             on /sys/kernel/debug  type debugfs  (rw,noatime)+
  
 +<WRAP center round todo 90%>
 +К сожалению, пакет **e2fsprogs** с инструментами для файловой системы ext4 слишком велик, чтобы поместиться в 4 МБ.
 +Если кто-то может отделить mke2fs и инструменты проверки файловой системы от него, то можно сделать отделенные инструкции по использованию файловой системы ext4.
 +</WRAP>
 +
 +После этого откройте папку **bin** внутри папки Image Builder, затем откройте папку **target**, затем папку, в которой вы ее найдете (она имеет имя, зависящее от типа устройства), а затем внутри папки. называется **generic **, и вы должны добраться образа для прошивки.
 +Выберите правильный образ (factory или sysupgrade) и установите его.
 +
 +Затем вам нужно будет отформатировать USB-накопитель в файловую систему ext4, и для этого вам потребуется использовать Linux LiveCD или [[https://gparted.org/livecd.php|gparted]] диск. \\
 +К сожалению, это неудобно, но, как сказано выше, мы не можем разместить инструменты форматирования на устройствах с 4 МБ флэш-памяти.
 +
 +==== 1.2. Устройства более чем с 8 МБ флеш памяти ====
 +На этих устройствах должно быть достаточно места для установки необходимых нам пакетов.
 +Удалите все пакеты, которые вы установили, чтобы добавить функциональность, так как они теперь только используют место во встроенной флеш памяти.
 +После того, как вы сделаете extroot, у вас будет все необходимое пространство.
 +
 +Из интерфейса командной строки напишите (в одну строку):
 +<code bash>
 +opkg update && opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk
 </code> </code>
-      * ''df'' должен показать свободное пространство на разделах ''/overlay'' и ''/data''\\ <code> 
-root@OpenWrt:df 
  
-Filesystem           1K-blocks      Used Available Use% Mounted on +Это установит пакеты, необходимые для раздела с файловой системой ext4. 
-rootfs                   27180      7796     17964  30% / + 
-/dev/root                 2304      2304         0 100% /rom +Пользователи, подверженные риску, могут захотеть создать собственный образ (как описано в предыдущем разделе), содержащий эти инструменты и особенно модули ядра, которые соответствуют ядру прошивки, чтобы они были доступны в отказоустойчивом режиме(failsafe mode). 
-tmpfs                   127668      1468    126200   1% /tmp + 
-/dev/ubi0_1            1998672      8056   1869376   0% /overlay +==== 2. Настройка rootfs_data ==== 
-overlayfs:/overlay       27180      7796     17964  30% / +Подключитесь через ssh к устройству. 
-tmpfs                      512               512   0% /dev + 
-/dev/sda1              1998672      8056   1869376   0% /overlay +Сконфигурируйте ''/etc/config/fstab'' для монтирования ''rootfs_data'' в другой каталог на тот случай, если вам понадобится получить доступ к исходному оверлею root для изменения настроек extroot: 
-/dev/sda3            242846048    163864 230323224   0% /data+ 
 +<code bash> 
 +DEVICE="$(awk -e '/\s\/overlay\s/{print $1}' /etc/mtab)" 
 +uci -q delete fstab.rwm 
 +uci set fstab.rwm="mount" 
 +uci set fstab.rwm.device="${DEVICE}" 
 +uci set fstab.rwm.target="/rwm" 
 +uci commit fstab
 </code> </code>
  
-==== Установка на внешний корень ==== +Или вы можете определить раздел ''rootfs_data'' вручную
-  - Создайте на USB-диске разделы и отформатируйте их, используя любой Live CD с Linux или средствами uci //(рекомендуется использовать первый раздел для root overlay, второй для swap (если он вам необходим), а далее разместить прочие разделы, которые вам нужны)// + 
-  - Скопируйте корневую файловую систему на USB-устройство <code> +<code bash
-mkdir -p /tmp/introot +grep -e rootfs_data /proc/mtd
-mkdir -p /tmp/extroot +
-mount --bind / /tmp/introot +
-mount /dev/sda1 /tmp/extroot +
-tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf - +
-umount /tmp/introot +
-umount /tmp/extroot+
 </code> </code>
-  - Создайте шаблон fstab<code> + 
-block detect > /etc/config/fstab +Каталог ''/rwm'' будет содержать исходный корневой overlay, который используется в качестве основного корневого overlay до тех пор, пока extroot не будет поднят и запущен. 
-vi /etc/config/fstab+Позже вы можете отредактировать ''/rwm/upper/etc/config/fstab'', чтобы изменить вашу конфигурацию extroot (или временно отключить ее), если вам это когда-либо понадобится. 
 + 
 +==== 3. Настройка extroot ==== 
 +Посмотрите, какие есть у вас разделы: 
 +<code bash
 +block info 
 +/dev/mtdblock2: UUID="9fd43c61-c3f2c38f-13440ce7-53f0d42d" VERSION="4.0" MOUNT="/rom" TYPE="squashfs" 
 +/dev/mtdblock3: MOUNT="/overlay" TYPE="jffs2" 
 +/dev/sda1: UUID="fdacc9f1-0e0e-45ab-acee-9cb9cc8d7d49" VERSION="1.4" TYPE="ext4"
 </code> </code>
-  - Внесите исправления в ''/etc/config/fstab'': 
-    - Все строки вида ''enabled '0' '' приведите к ''enabled '1' '' 
-    - Отредактируйте ''option target'' корневого раздела, чтобы он выглядел как **''/''** 
-    - Отредактируйте ''option target'' прочих разделов, в соответствии с тем, куда вы хотите их примонтировать (и не забудьте создать соответствующие директории в файловой системе)\\ После всех манипуляций ваш fstab будет выглядеть примерно так:<code> 
-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 +Здесь мы видим ''mtdblock'' устройства (разделы во внутренней флеш памяти), и раздел ''/dev/sda1'' это ваш USB флеш диск.
- option device '/dev/sda1' +
- option target '/' +
- option enabled '1'+
  
-config swap +Отформатируйте раздел ''/dev/sda1'' в ext4 если это необходимо:
- option device '/dev/sda2' +
- option enabled '1'+
  
-config mount +<code bash> 
- option device '/dev/sda3' +mkfs.ext4 /dev/sda1
- option target '/data' +
- option enabled '1'+
 </code> </code>
-  - Перезагрузите роутер 
-  - Убедитесь, что разделы корректно смонтированы. 
  
-===== Barrier Breaker ===== +Сейчас мы от конфигурируем  ''/dev/sda1'' как новый overlay через подсистему fstab uci:
-Здесь приведены лишь отличия, характерные для Barrier Breaker. Все остальные действия аналогичны таковым для Chaos Calmer.+
  
-==== Установка на внешний overlay (рекомендованный вариант) ===+<code bash> 
-Примерное содержимое [[docs:guide-user:storage:fstab|fstab]]: +DEVICE="/dev/sda1" 
-|''config mount +eval $(block info "${DEVICE}" | grep -o -e "UUID=\S*") 
-        option target        /overlay +uci -q delete fstab.overlay 
-        option device        /dev/sda1 +uci set fstab.overlay="mount" 
-        option fstype        ext4 +uci set fstab.overlay.uuid="${UUID}" 
-        option options       rw,sync +uci set fstab.overlay.target="/overlay" 
-        option enabled       1 +uci commit fstab 
-        option enabled_fsck  0''|+</code>
  
-Если монтирование не удалось, overlay смонтируется в ''/tmp/overlay-disabled'' вместо того, чтобы быть корневой файловой системой.+Если у вас есть раздел подкачки, он также будет распознан и добавлен автоматически.
  
-У некоторых пользователей при использовании Barier Breaker 14.07 (RC-версиях) на устройствах с архитектурой ar71xx раздел продолжает монтироваться как /mnt/sdax вместо /overlay. Проблема решается запуском block detect, который создаст правильный fstab с корректными идентификаторами разделов. +==== 4. Перенос данных ==== 
-  +Теперь мы перенесем содержимое текущего оверлея на наш новый оверлей на внешнем диске:
-|''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 +<code bash> 
-        option target '/overlay' +mount /dev/sda1 /mnt 
-        option uuid '1902a323-79a6-4b1a-a511-a58655974ee9' +cp --f /overlay/. /mnt 
-        option enabled '1' +umount /mnt 
-        option fstype 'ext4'+</code>
  
-config mount +Перезапустите устройство:
-        option target '/mnt/sda2' +
-        option uuid 'dc64a6dd-de63-4363-b405-403cdced1649' +
-        option enabled '1' +
-        option fstype 'ext4' ''|+
  
-Проверка работоспособности extroot с помощью утилиты ''df'':+<code bash> 
 +reboot 
 +</code>
  
-|''root@OpenWrt:~# df+===== Проверка ===== 
 +==== Через Web интерфейс ==== 
 +  - **LuCI -> System -> Mount Points** должен быть показан раздел на внешнем USB устройстве подмонтированный как ''overlay''
 +  - **LuCI -> System -> Software** должно быть показано большее свободное пространство на overlay разделе. 
 + 
 +==== Через командную строку ==== 
 +Раздел на внешнем USB устройстве должен быть подмонтирован как ''overlay''  
 +Свободное пространство в корневом разделе ''/'' должно быть равно пространству на ''/overlay''
 + 
 +<code bash> 
 +# grep -e /overlay /etc/mtab 
 +/dev/sda1 /overlay ext4 rw,relatime,data=ordered 
 +overlayfs:/overlay / overlay rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work 
 + 
 +# df /overlay /
 Filesystem           1K-blocks      Used Available Use% Mounted on Filesystem           1K-blocks      Used Available Use% Mounted on
-rootfs                 2758072    118004   2501828   5% / +/dev/sda1              7759872    477328   7221104   6% /overlay 
-/dev/root                 2048      2048         0 100% /rom +overlayfs:/overlay     7759872    477328   7221104   6% / 
-tmpfs                    63340        76     63264   0% /tmp +</code>
-/dev/sda1              2758072    118004   2501828   5% /overlay +
-overlayfs:/overlay     2758072    118004   2501828   5% / +
-tmpfs                      512               512   0% /dev''|+
  
-Учитывайте, что ''rootfs'' и ''overlayfs:/overlay'' занимают одно и то же место, и оба монтируются в корень (''/''). Кроме того, ''/dev/sda1'' смонтирован в ''/overlay'' и является оверлейной файловой системой. В том случае, если вы настроили не внешний overlay, а внешний корень, в выводе ''df'' не будет строки ''overlayfs:/overlay''.+===== Сохранение списков программных пакетов при загрузке =====  
 +Сохранение статуса установленных пакетов opkg в ''/usr/lib/opkg/lists'' хранящемся в extroot, а не в RAM, экономит некоторую оперативную память и сохраняет списки пакетов доступными после перезагрузки.
  
-==== Установка на внешний корень ==== +==== Через Web интерфейс ==== 
-Примерное содержимое [[docs:guide-user:storage:fstab|fstab]]: +1. **LuCI -> System -> Software -> Configuration **
-| ''config mount +
-        option target        / +
-        option device        /dev/sda1 +
-        option fstype        ext4 +
-        option options       rw,sync +
-        option enabled       1 +
-        option enabled_fsck  0'' |+
  
-До ревизии [[https://dev.openwrt.org/changeset/26311/trunk|r26311]] неудачно смонтированный внешний корень монтировался в ''/tmp/rom-disabled'', а после ревизии [[https://dev.openwrt.org/changeset/26311/trunk|r26311]] - в ''/tmp/whole_root-disabled''.+смените
  
-===== Attitude Adjustment ===== +<code bash> 
-==== Старый вариант установки на внешний overlay ==== +lists_dir ext /var/opkg-lists 
-Before [[https://dev.openwrt.org/changeset/25787/trunk|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.+</code>
  
-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 [[docs:guide-user:storage:fstab|fstab]].+на
  
-|''config mount +<code bash> 
-        option target        /mnt  # This is ignored once is_rootfs is set to 1 +lists_dir ext /usr/lib/opkg/lists 
-        option device        /dev/sda1 +</code> 
-        option fstype        ext3 + 
-        option options       rw,sync +это должно выглядеть примерно так: 
-        option enabled       1 + 
-        option enabled_fsck  0 +<code bash> 
-        option is_rootfs     1''|+dest root 
 +dest ram /tmp 
 +lists_dir ext /usr/lib/opkg/lists 
 +option overlay_root /overlay 
 +option check_signature 
 +</code>
  
- A ''target'' option is not mandatory as it will be the overlay file systemHowever, 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. +2. **LuCI -> System -> Software -> Actions -> Update lists ** производит первоначальное обновление списка пакетов на extroot
  
-| {{:meta:icons:tango:48px-outdated.svg.png?nolink}}| ''option is_rootfs'' is deprecated **after** [[https://dev.openwrt.org/changeset/25787/trunk|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 ===== ===== Troubleshooting =====
   * Add option force_space in ''/etc/opkg.conf'' to allow installation of packets bigger than your ''/rom'' partitions free space: <code>echo option force_space >> /etc/opkg.conf</code>   * Add option force_space in ''/etc/opkg.conf'' to allow installation of packets bigger than your ''/rom'' partitions free space: <code>echo option force_space >> /etc/opkg.conf</code>
-  * Do not use vfat (FAT/FAT32); it does not work. If you have a FAT preformatted USB drive, you cannot use it for extroot without reformatting. Use e.g. ext4 (install e2fsprogs, then format your FAT formatted USB drive using ''mkfs.ext4 /dev/sda1'' as per the example, also see [[storage]]).+  * Do not use vfat (FAT/FAT32); it does not work. If you have a FAT preformatted USB drive, you cannot use it for extroot without reformatting. Use e.g. ext4 (install e2fsprogs, then format your FAT formatted USB drive using ''mkfs.ext4 /dev/sda1'' as per the example, also see [[ru:doc:howto:storage]]).
   * On Barrier Breaker, ''block-mount'' will create a file ''/etc/.extroot-uuid'' on extroot filled with uuid of mtd partition ''rootfs''. At boot time when trying to do extroot, ''block-mount'' would try to check the actual uuid with the content of ''.extroot-uuid''. If they did not match, extroot would fail. So if you want to continue use extroot after flashing a new firmwre, ''/etc/.extroot-uuid'' needs to be deleted first.   * On Barrier Breaker, ''block-mount'' will create a file ''/etc/.extroot-uuid'' on extroot filled with uuid of mtd partition ''rootfs''. At boot time when trying to do extroot, ''block-mount'' would try to check the actual uuid with the content of ''.extroot-uuid''. If they did not match, extroot would fail. So if you want to continue use extroot after flashing a new firmwre, ''/etc/.extroot-uuid'' needs to be deleted first.
   * If the partition containing your extroot isn't mounted during boot, but you can mount it without problems from a shell, you should try to increase ''config 'global' / option delay_root'' On my system I had to set it to 15 to get extroot working.  Another hint to this being the culprit is having a working swap or other partitions mounted after booting, but not your extroot.   * If the partition containing your extroot isn't mounted during boot, but you can mount it without problems from a shell, you should try to increase ''config 'global' / option delay_root'' On my system I had to set it to 15 to get extroot working.  Another hint to this being the culprit is having a working swap or other partitions mounted after booting, but not your extroot.
Line 248: Line 208:
 ===== Дополнительные сведения ===== ===== Дополнительные сведения =====
 ==== Extroot на карту памяти в слоте USB-модема ==== ==== Extroot на карту памяти в слоте USB-модема ====
-В статье [[ru:doc:recipes:3gdongle|Использование 3g/UMTS USB модема для WAN соединений]] рекомендуют добавить в образ прошивки утилиту ''usb-modeswitch''.\\+В статье [[ru:docs:guide-user:network:wan:wwan:3gdongle|Использование 3g/UMTS USB модема для WAN соединений]] рекомендуют добавить в образ прошивки утилиту ''usb-modeswitch''.\\
 Использование данной утилиты имеет особенности: если ''/overlay'' расположить на карте памяти, находящейся в слоте USB-модема, то даже при совершенно правильных настройках ''внешнего overlay'', работоспособных при любом другом размещении оверлея, в данном случае будут наблюдаться неполадки файловой системы, возникающие на завершающей стадии загрузки ОС. Неполадки вызваны тем, что утилита ''usb-modeswitch'', отключая CDROM и подключая модем, попутно на некоторое время отключает и считыватель карт памяти, нарушая работу файловой системы.\\ Использование данной утилиты имеет особенности: если ''/overlay'' расположить на карте памяти, находящейся в слоте USB-модема, то даже при совершенно правильных настройках ''внешнего overlay'', работоспособных при любом другом размещении оверлея, в данном случае будут наблюдаться неполадки файловой системы, возникающие на завершающей стадии загрузки ОС. Неполадки вызваны тем, что утилита ''usb-modeswitch'', отключая CDROM и подключая модем, попутно на некоторое время отключает и считыватель карт памяти, нарушая работу файловой системы.\\
 Избежать этого можно заранее настроив USB-модем так, чтобы ''usb-modeswitch'' не потребовался вообще: устройство должно сразу представляться ОС как модем или сетевой адаптер со считывателем карт памяти включенными по-умолчанию.\\ Избежать этого можно заранее настроив USB-модем так, чтобы ''usb-modeswitch'' не потребовался вообще: устройство должно сразу представляться ОС как модем или сетевой адаптер со считывателем карт памяти включенными по-умолчанию.\\
Line 300: Line 260:
 === Список USB-модемов, поддерживающих предварительную конфигурацию === === Список USB-модемов, поддерживающих предварительную конфигурацию ===
   * Huawei E3131s-2 f/w v21.158.47.00.1094   * Huawei E3131s-2 f/w v21.158.47.00.1094
 +
 ==== Remote File Systems ==== ==== Remote File Systems ====
   * Forum: [[https://forum.openwrt.org/viewtopic.php?id=32812|Fstab not mounting cifs at boot or through CLI]]   * Forum: [[https://forum.openwrt.org/viewtopic.php?id=32812|Fstab not mounting cifs at boot or through CLI]]
Line 323: Line 284:
  
 ==== Accessing original root ==== ==== Accessing original root ====
- 
 Sometimes you may need to access the original root overlay, for example to change your extroot settings.  A convenient way of doing this is to configure /etc/config/fstab on your extroot partition to mount the original root overlay in another directory, like this: Sometimes you may need to access the original root overlay, for example to change your extroot settings.  A convenient way of doing this is to configure /etc/config/fstab on your extroot partition to mount the original root overlay in another directory, like this:
  
Line 349: Line 309:
 To upgrade kernel + kernel modules you need to first upgrade the kernel-modules (with opkg upgrade ... --force... ) and then immediately WITHOUT rebooting, reflash Kernel + SquashFS with ''sysupgrade''. Then reboot. To upgrade kernel + kernel modules you need to first upgrade the kernel-modules (with opkg upgrade ... --force... ) and then immediately WITHOUT rebooting, reflash Kernel + SquashFS with ''sysupgrade''. Then reboot.
  
-===== Information on Legacy versions ===== 
- 
-Backfire see: [[docs:guide-user:additional-software:extroot_configuration.old]] 
- 
-{{tag>USBrelated}} 
  • Last modified: 2023/01/17 04:16
  • by vgaetera