Подготовка прошивки 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
Запустившись fdisk просит Вас ввести команду. Последовательность команд примерно следующая.
- o — создаем новую таблицу разделов, удалив всё что было
- n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 128мб — +128M
- n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G
- n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию
- w — сохраняем изменения
Создание файловых систем на USB-флешке/диске
Сначала завершим создание раздела подкачки:
Теперь создадим файловые системы ext4 на втором и третьем разделе на флешке:
sudo -i mkfs.ext2 /dev/sdf2
sudo -i mkfs.ext4 /dev/sdf3 |
Ждем завершение процедуры форматирования и подключаем USB-носитель к роутеру.
Подготовка OpenWRT к работе с USB-носителями
Для монтирования USB-флешек и USB-жестких дисков в OpenWRT необходимо выполнить три условия
- Поддержка USB устройств ядром
- Поддержка файловых систем ядром
- Установлен пакет 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 - |
И теперь можем смело перезагружаться.
Проверка результатов работы 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