OpenWRT — Подключение USB-флешки или USB-диска
Подготовка прошивки 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 |
- o — создаем новую таблицу разделов, удалив всё что было
- n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 128мб — +128M
- n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G
- n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию
- w — сохраняем изменения
Создание файловых систем на USB-флешке/диске
Сначала завершим создание раздела подкачки:sudo -i mkswap /dev/sdf1 |
sudo -i mkfs.ext2 /dev/sdf2 sudo -i mkfs.ext4 /dev/sdf3 |
Подготовка 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' |
Для этого в блоке 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-раздела на USB-диске
Итак, мы будем использовать второй раздел на нашем USB-диске/флешке.Для этого монтируем раздел во временный каталог
mkdir /mnt/sda2 mount /dev/sda2 /mnt/sda2 |
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
На Вики естьстатьи на эту тему:
ОтветитьУдалитьhttps://openwrt.org/docs/guide-user/storage/usb-drives-quickstart
Тут быстрый способ без объяснения: но он форматирует влешку удаляя всё и потом там ext4 файловая система что хорошо если вы на флешке хотите не просто файлы хранить а ещё и пакеты устанавливать но плохо что потом эту флешку не сможете из под Виндовс посмотреть.
https://openwrt.org/docs/guide-user/storage/usb-drives
Более полный туториал
https://openwrt.org/docs/guide-user/services/nas/usb-storage-samba-webinterface
продолжение с настройкой сетевой папки с содержимым флешки
Вопрос по єтой строке:
ОтветитьУдалитьrootfs 975.9M 1.4M 907.3M 0%
сколько не бился, у меня стоит
rootfs 4,3M 4,3M 0 100%
Мне помогло это:
УдалитьНастройка rootfs_data
Подключитесь через ssh к устройству.
Сконфигурируйте /etc/config/fstab для монтирования rootfs_data в другой каталог на тот случай, если вам понадобится получить доступ к исходному оверлею root для изменения настроек extroot:
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
Каталог /rwm будет содержать исходный корневой overlay, который используется в качестве основного корневого overlay до тех пор, пока extroot не будет поднят и запущен. Позже вы можете отредактировать /rwm/upper/etc/config/fstab, чтобы изменить вашу конфигурацию extroot (или временно отключить ее), если вам это когда-либо понадобится.
Настройка extroot
block info
DEVICE="/dev/sda2"
eval $(block info "${DEVICE}" | grep -o -e "UUID=\S*")
uci -q delete fstab.overlay
uci set fstab.overlay="mount"
uci set fstab.overlay.uuid="${UUID}"
uci set fstab.overlay.target="/overlay"
uci commit fstab
Перенос данных
mount /dev/sda2 /mnt
cp -a -f /overlay/. /mnt
umount /mnt