Если вы уже имеете настроенный роутер с загрузкой с usb флешки, то при подключении дополнительно второго usb накопителя (например HDD) после перезагрузки устройство может не заработать. Происходит это из-за того, что openwrt может начать загружаться с нашего второго usb накопителя. Но естественно ничего у него не выходит так как там нет системы. На персональных компьютерах эта проблема решается разными способами: настройками биоса, проставкой перемычек master/slave на HDD или в linux системах в файле fstab подключение разделав происходит по так называемым UUID, уникальным идентификаторам разделов, которые задаются при создании раздела и не меняются пока его не удалить. Оказывается openwrt тоже поддерживает UUID, поэтому в этой статье я покажу как правильно реализовать эту технологию и подключить одновременно несколько usb накопителей.
Перед тем как начать у вас уже должен быть настроенный роутер с загрузкой с usb-флешки, как описано в моей предыдущей статье
Далее:
Отключаем питание роутера
Отключаем все подключенные usb устройства: флешки, винчестеры, и т.д.
Включаем роутер
Отключаем автоматическое монтирование usb устройств
Редактируем выделенную секцию
option from_fstab 0
option anon_mount 0
config global autoswap
option from_fstab 1
option anon_swap 0
config mount
option target /home
option device /dev/sda2
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 1
config swap
option device /dev/sda3
option enabled 1
config mount
option target /
option device /dev/sda1
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 1
option is_rootfs 1
Подключаем usb-флешку и usb hdd через usb hub.
Проверяем определились ли они.
Вывод команды должен быть примерно следующим
Запускаем команду blkid
Видим примерно следующее:
/dev/sda1: LABEL="work" UUID="244de878-3f6c-46c2-b04b-0ec901d71a29"
/dev/sdb1: LABEL="system" UUID="1046cec3-7cd8-42aa-b881-ab66303ba38d"
/dev/sdb2: LABEL="home" UUID="67e214d3-241e-4fc1-8102-7c40575d49dd"
/dev/sdb3: LABEL="swap" UUID="00ec0713-ed2a-4927-b56b-bc501712b5f5"
Нас интересуют кода в кавычках после UUID=. Здесь мы видим три раздела на usb-флешке (sdb) и один раздел на usb hdd (sda) и их уникальные кода UUID. Причем как видите usb hdd определился как primery (sda), т.е. с него openwrt будет пытаться загрузится, что как вы понимаете не получится.
Но следует иметь ввиду, что usb флешка тоже может подключится как primery (sda)
Редактируем файл монтирования разделов как показано ниже
Для usb hdd добавлена новая секция в низу
option from_fstab 1
option anon_mount 1
config global autoswap
option from_fstab 1
option anon_swap 0
config mount
option target /home
# option device /dev/sda2
option uuid 67e214d3-241e-4fc1-8102-7c40575d49dd
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 1
config swap
# option device /dev/sda3
option uuid 00ec0713-ed2a-4927-b56b-bc501712b5f5
option enabled 1
config mount
option target /
# option device /dev/sda1
option uuid 1046cec3-7cd8-42aa-b881-ab66303ba38d
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 1
option is_rootfs 1
config mount
option target /mnt/hdd
option uuid 244de878-3f6c-46c2-b04b-0ec901d71a29
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
Так же на этом этапе не забываем восcтановить автоподключение устройств и загрузку с fstab
option from_fstab 1
option anon_mount 1
Монтируем загрузочный раздел с usb-флешки и копируем туда наш обновленный файл fstab
Смотрим предыдущий вывод команды blkid и определяем на каком разделе у нас находится основная система. Поскольку я знаю что на флешке у меня три раздела и первый из них предназначен для системы, то мне нужен раздел /dev/sdb1
mount /dev/sdb1 /mnt/sdb1
cp /etc/config/fstab /mnt/sdb1/etc/config/fstab
umount /mnt/sdb1
Перезагружаемся
После перезагрузки мы увидим как замечательно все подключилось и теперь не важно сколько usb накопителей мы подключим, система всегда будет знать с какого загружаться что куда подключать
У меня это выглядит так:
Так же проверяем подключился файл подкачки
У меня почему-то на моем wr703n c прошивкой Attitude Adjustment 12.09-rc1 по uuid файл подкачи не подключило, поэтому пока подключаю его по старому
option device /dev/sdb3
На Dir-320 с прошивкой OpenWrt Backfire r32751 все в порядке.