Сен 072016
 

Подготовка прошивки OpenWRT к подключению USB-диска

Поддержка USB прошивкой OpenWRT

Для поддержки USB-накопителей Вам необходимо либо собрать прошивку с включением следующих пакетов

  • kmod-usb-core
  • kmod-usb-ohci
  • kmod-usb-storage
  • kmod-usb2

либо доустановить их отдельно.
Установка производится через веб-интерфейс на странице Система-Программное обеспечение, либо классическим способом через терминал (telnet/SSH):

opkg update
opkg install kmod-usb-core
opkg install kmod-usb-ohci
opkg install kmod-usb-storage
opkg install kmod-usb2

Есть еще третий способ — запихать поддержку прямо в ядро прошивки, но это в большинстве случаев лишнее.

Поддержка файловых систем прошивкой OpenWRT

OpenWRT, в отличии от своего собрата DD-WRT в теории поддерживает все возможные файловые системы.
Для этого служат пакеты, например:

  • kmod-fs-ext4 — поддержка файловых систем ext2, ext3 и ext4
  • kmod-fs-vfat — поддержка файловой системы fat32

и еще парочка других, но менее востребованных.
Тут всё так же — либо через веб-интерфейс LuCI, либо через терминал, либо намертво запихать в ядро. Не буду углубляться — разберетесь на примере предыдущего пункта. всё так же.

Подготовка USB-флешки/диска

Если вы планируете использовать флешку как хранилище для файлов, то, в принципе, Вам подойдет любая файловая система. Однако будьте осторожны, в файловой системе Fat32ограничение по максимальному размеру файла составляет около 4гб. Этого не всегда достаточно. У остальных перечисленных файловых систем это ограничение на несколько порядков выше, что уже не создаст проблем.
Если Вы планируете использовать накопитель как место для установки дополнительных пакетов (samba, например), то вы должны ограничиться списком ext2, ext3, ext4. На остальные системы программы просто не установятся.
Как разметить?
Основываясь на личном опыте предлагаю Вам следующую схему. Наиболее оптимальный вариант:
Раздел 1 / тип swap / размер 128 мб — раздел подкачки.
Раздел 2 / тип ext4 / размер 1 гб — раздел для установки пакетов.
Раздел 3 / тип ext4 / размер — вся оставшаяся область на диске — раздел для прочих файлов.

Разметка USB-флешки/диска в Linux

В OpenWRT есть проблема с монтированием дисков в некоторых случаях, когда они размечены не от имени пользователя root, по-этому используем sudo с флагом -i
Подключаем флешку/диск к компьютеру и приступаем к разметке и форматированию.
У меня флешка подключилась как /dev/sdf

sudo -i fdisk /dev/sdf

Запустившись fdisk просит Вас ввести команду. Последовательность команд примерно следующая.

  1. o — создаем новую таблицу разделов, удалив всё что было
  2. n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 128мб — +128M
  3. n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G
  4. n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию
  5. w — сохраняем изменения

Создание файловых систем на USB-флешке/диске

Сначала завершим создание раздела подкачки:

sudo -i mkswap /dev/sdf1

Теперь создадим файловые системы ext4 на втором и третьем разделе на флешке:

sudo -i mkfs.ext2 /dev/sdf2
sudo -i mkfs.ext4 /dev/sdf3

Ждем завершение процедуры форматирования и подключаем USB-носитель к роутеру.

Подготовка OpenWRT к работе с USB-носителями

Для монтирования USB-флешек и USB-жестких дисков в OpenWRT необходимо выполнить три условия

  1. Поддержка USB устройств ядром
  2. Поддержка файловых систем ядром
  3. Установлен пакет block-mount

О первых двух пунктах было сказано в начале статьи. По поводу третьего — всё просто:

opkg update
opkg install block-mount

Монтирование USB-флешек/дисков в OpenWRT

Монтировать можно через WEB-интерфейс LuCI, однако это скучно, неинтересно и, на данный момент, не дает всех возможностей.
Дело в том, что с недавнего момента логика монтирования в overlay поменялась, а LuCI до сих пор поддерживает старый стандарт.
Я Вам поведаю о монтирование через терминал.
Итак, подключаемся к устройству через SSH или Telnet и приступаем.

Настройка fstab в OpenWRT

Настройки fstab в OpenWRT хранятся в файле /etc/config/fstab и, в отличии от десктопного Linux, придерживаются стандарта uci. Однако сложного в них ничего нет.
Чтобы не создавать файл с нуля — воспользуемся утилитой block detect

block detect >> /etc/config/fstab

Посмотрим, что у нас создалось по умолчанию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 'swap'
option device '/dev/sda1'
option enabled '0'

config 'mount'
option target '/mnt/sda2'
option uuid '25f9a5d2-8743-4fe0-b91c-c1088887b637'
option enabled '0'

config 'mount'
option target '/mnt/sda3'
option uuid '7725b029-51ea-44e6-898f-2987e9b9bbd8'
option enabled '0'

Для начала включим автомонтирование swap-раздела на USB-HDD/USB-флешке.
Для этого в блоке global присвоим опции auto_swap значение 1.
А так же в блоке swap опции enabled значение 1.

1
2
3
4
5
6
config 'global'
option auto_swap '1'

config 'swap'
option device '/dev/sda1'
option enabled '1'

Далее настроим монтирование остальных разделов.
Второй раздел — в точку монтирования /overlay, для расширения памяти устройства для установки пакетов и прочих манипуляций.
Третий раздел — в точку монтирования /mnt/usb (вместо usb может быть что угодно, называйте как хотите), для хранения ваших файлов.
Для этого в файл fstab вносим следующие правки

1
2
3
4
5
6
7
8
9
10
11
12
13
config 'global'
option auto_mount '1'
option delay_root '5'

config 'mount'
option target '/overlay'
option uuid '25f9a5d2-8743-4fe0-b91c-c1088887b637'
option enabled '1'

config 'mount'
option target '/mnt/usb'
option uuid '7725b029-51ea-44e6-898f-2987e9b9bbd8'
option enabled '1'

Сохраняем файл, но пока перезагружаться рано. Надо подготовить overlay-раздел на флешке.

Подготовка overlay-раздела на USB-диске

Итак, мы будем использовать второй раздел на нашем USB-диске/флешке.
Для этого монтируем раздел во временный каталог

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

Переносим содержимое каталога /overlay на подготавливаемый раздел

tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -

И теперь можем смело перезагружаться.

reboot

Проверка результатов работы fstab

Если вы настроили всё верно, то команда df -h должна выдать примерно следующие результаты
df -h
Filesystem Size Used Available Use% Mounted on
rootfs 975.9M 1.4M 907.3M 0% /
/dev/root 5.5M 5.5M 0 100% /rom
tmpfs 14.4M 244.0K 14.2M 2% /tmp
/dev/sda2 975.9M 1.4M 907.3M 0% /overlay
overlayfs:/overlay 975.9M 1.4M 907.3M 0% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda3 6.2G 14.4M 5.8G 0% /mnt/usb

Понравилось? Поделитесь:

:

Sorry, the comment form is closed at this time.