mount+fstab

Чтобы использовать файловую систему «/» расположенную на USB устройстве, для ядра Linux требуются модули для USB-«схемы» (kmod-usb-core и kmod-usb2), модули для работы с устройствами хранения присоединенным посредством USB (kmod-usb-storage), и модуль для файловой системы (kmod-fs-ext4). И тогда когда ваше ядро уже будучи со всем этим функционалом, вам все еще нужно сообщить init дабы «он»(init) смонтировал эту конкретную файловую систему на диске USB как /. Tricky without having a filesystem at all ;).

 # opkg install kmod-usb-core kmod-usb2 kmod-usb-storage kmod-fs-ext4 kmod-usb-uhci

Для настройки файловой системы:

 # opkg install cfdisk

Для форматирования флешки(появления программ «mkfs.ext2, mkfs.ext3 и mkfs.ext4» в системе):

# opkg install e2fsprogs

Дробим флешку программой fdisk (скажем 4Gb) на три раздела:

  1. 256Mb – SWAP
  2. 2Gb под “/overlay”
  3. Остальные около 1,5Gb – на всякое там…
# mkswap /dev/sda1
# mkfs.ext2 /dev/sda2
# mkfs.ext4 /dev/sda3 

Для функционала fstab необходимо установить пакет block-mount:

Будут установлены скрипты block-mount и block-hotplug управляющие монтированием в автоматическом режиме в том числе и с помощью /etc/init.d/fstab(чаще во время загрузки нежели когда устройство подключено во время работы системы), and block-hotplug занимается монтированием устройств распознанных системой (к примеру когда модули загружены и разделы распознаны).

# opkg install block-mount

 

Быстрая установка стандартной конфигурации(настройки автоматического монтирования, созданные автоматически командой block detect):

# block detect > /etc/config/fstab

Next, edit your fstab, as per the configuration below:

 # vim /etc/config/fstab

Далее командой:

 # block detect

выясняем uuid каждого раздела для монтирования и вписываем в созданный /etc/config/fstab
 

Включение при загрузке fstab:

  1. enable (make it start automatically on every boot up)
 # /etc/init.d/fstab enable
  1. and start (right now)
 # block mount

Whenever you change your configuration, restart this to make it take effect:

 # block umount;block mount

Монтируем как overlay-раздел

Вот это уже интереснее.
Сначала приводим fstab к виду

config 'mount'
        option  target  '/overlay'
        option  uuid    '7f41e7d8-3b3a-4725-a295-cbc58bb89493'
        option  enabled '1'

А теперь нам необходимо еще файлы из встроенной памяти роутера перенести в этот раздел.

Сделаю небольшое отступление — в интернете бытует мнение, которое я до недавнего времени так же разделял, мол необходимо на внешний носитель переносить все данные с устройства.
Если Вы так сделаете и у Вас не флешка, а USB-HDD, то ваш жесткий диск парковаться будет чуть реже, чем никогда.
В overlay необходимо перенести лишь то, что сейчас находится в overlay’е.

Итак, монтируем будущий overlay раздел ручками в /mnt/sda2.
Нужно обязательно удостовериться что раздел монтируется, можно записать в раздел и прочитать из раздела:

# mkdir /mnt/sda2
# mount /dev/sda2 /mnt/sda2

И переносим всё содержимое с сохранением прав доступа и символьными ссылками хитрым способом с помощью архиватора tar:

# tar -C /overlay -cf - . | tar -C /mnt/sda2 -xf -

Проверяем, что скопировали:

~# ls /mnt/sda2 -lah
drwxr-xr-x    5 root     root        4.0K Sep 25 09:44 .
drwxr-xr-x    1 root     root           0 Sep 25 09:20 ..
drwxr-xr-x    5 root     root        4.0K Sep 25 09:44 etc
drwx------    2 root     root       16.0K Sep 25 09:16 lost+found
drwxr-xr-x    3 root     root        4.0K Sep 25 09:44 mnt

Замечательно, вот только каталог /overlay/mnt на флешку перемещать смысла не было, удалим его на всякий случай:

# rm -Rf /mnt/sda2/mnt

Ну и перезагружаемся:

# reboot

После перезагрузки промеряем, как у нас всё смонтировалось и куда

# df -h|grep sd
/dev/sda2                 3.7G      7.6M      3.5G   0% /overlay

ну всё, флешка подключена как overlay-раздел и теперь у вас куча места для установки пакетов, а не жалкие несколько мегабайт.

Example Configuration

A sample configuration looks as follows:

#### Global options

config 'global'
        # mount swap devices that don't have their own config section
        option  anon_swap       '0'
        # mount block devices that don't have their own config section   
        option  anon_mount      '0'
        # automatically mount swap devices when they appear
        option  auto_swap       '1'
        # automatically mount block devices when they appear
        option  auto_mount      '1'
        # wait X seconds before trying to mount root devices on boot
        option  delay_root      '0'
        # run e2fsck on device prior to a mount
        option  check_fs        '0'

#### Mount sections. Note that partitions/devices can either be defined it by their device file,
#### mount point or UUID (or more at the same time).

# a swap partition
config 'swap'
        option  device  'sda1'
        option  uuid    'd3c87695-886f-4579-ae94-0a3bb3eb6046'

# a swap file
config 'swap'
        option  device  '/mnt/shared/swap'

# a swap device by label (mkswap -L swap /dev/sdb2)
config 'swap'
        option  label 'swap'

# a pivot overlay device (ext4) for extroot
config 'mount'
        option  target  '/overlay'
        option  uuid    '998d4bfc-81b5-469a-be2a-999ed2b81d88'

# and a data partition (vfat)
config 'mount'
        option  target  '/data'
        option  uuid    'e10e-6812'