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
ru:doc:howto:extroot [2018/03/04 16:39] – ↷ Links adapted because of a move operation ru:docs:guide-user:additional-software:extroot_configuration [2023/01/17 04:16] (current) – [Корневая файловая система на внешнем устройстве (extroot)] update infobox 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#basic_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