В данной статья я хочу поделиться своим опытом по установке прошивки Openwrt на флешку. В качестве подопытного роутера будет использоваться TP-Link TL-WR703N. В результате Openwrt будет грузится не с внутренней памяти роутера, а с флешки, что позволит ставить на нее неограниченное количество приложений. Также данный материал будет справедлив для роутера DIR-320 revA1(A2), что проверено мной лично и для массы других устройств, которые есть в списке поддержки openwrt.
Включение SSH /отключение telnet (установка пароля на удаленный доступ)
Итак мы уже имеем прошитий последней прошивкой WR703N (DIR-320A). На последних сборка ядро настолько возросло, что запихнуть веб-интерфейс в 4Мбайта их флеш памяти особо не получится. Поэтому первоначальная настройка будет проводится через SSH (telnet).
Итак подключаемся к роутеру
Устанавливаем пароль на вход
После установки данной командой пароль telnet автоматически отключается и включается Dropbear SSH daemon на 22 порту. Dropbear заменяет OpenSSH для устройств с малым объемом памяти и слабым процессором и в OpenWrt установлен по умолчанию вместо OpenSSH. Вы можете легко заменить Dropbear на OpenSSH, но не делайте этого пока не настоите загрузку с внешнего устройства.
Установка стаического IP адреса WR703N (DIR-320A)
Первым делом нам необходимо задать новый статический IP адрес, настроить шлюз и DNS.
Это необходимо в первую очередь, что бы наш IP адрес не конфликтовал с таким же в вашей сети и что бы на роутере появился интернет для установки дополнительных пакетов.
Подключаемся к роутеру с помощью SSH-клиента. Для windows я использую программу PuTTY, в Linux в терминале просто набираем ssh Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра..1.1
Далее редактируем файл /etc/config/network с настройками сети. Используем редактор vi редактор, который установлен в прошивку по умолчанию.
находим секцию интерфейса которая начинается как config interface 'lan' и изменяем на свои настройки. Все остальное не трогаем. Для начала редактирования нажимаем SHIFT+i. После завершения редактирования сперва нажимаем ESC, потом SHIFT+z+z (зажимаем SHIFT и нажимаем z два раза).
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.100'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
option dns '8.8.8.8'
Опция option ifname 'eth0' для DIR-320A будет выглядеть как option ifname 'eth0.1'
Опция option gateway '192.168.1.1' - это ip устройства, которое раздает интернет в вашей сети
Перезапускаем сетевые настройки, что бы изменения вступили в силу.
После этого соединение с роутером пропадет так как поменялся его сетевой адрес (если вы его поменяли конечно). Если ваш WR703N (DIR-320A) сейчас подключен напрямую к компьютеру, то переподключаем его к вашему роутеру/свичу или другому устройству которое раздает интернет.
Дальнейшее подключение к устройству с помощью ssh-клиента осуществляем теперь по новому адресу, который мы ввели в файле /etc/config/network.
Проверяем, есть ли на роутере интернет. Подключаемся ssh-клиентом и смотрим
Подготовка накопителя
В качестве внешнего накопителя можно использовать usb-флешку, внешний HDD, обычный HDD с Mobile Rack или USB2HDD переходником.
Накопитель разбиваем на три раздела:
1-й для системных файлов (500-1000МБайт)
2-й для данных (все остальное свободное место на диске)
3-й файл подкачки (32-64МБайта).
Я использовал 1 Гиговую флешку. Для разбивки флешки использовал Linux-программу GParted.
Итоговую разбивку смотрите на следующей картинке.
Есть мнение, что использование файла подкачки на флешке быстро ее портит, поэтому в данном мануале он находится в конце флешки и эту область можно будет исключить при повторном форматировании. В случае использования HDD-диска, есть смысл сделать файл подкачки первым разделом, где скорость чтения-записи значительно выше.
Настройка прошивки для загрузки с внешнего накопителя
Устанавливаем
opkg install kmod-usb-ohci
opkg install kmod-usb-storage
opkg install kmod-usb2
opkg install kmod-fs-ext4
opkg install block-mount
Для версии прошивки Backfire нужно установить еще следующие пакеты. Для ATTITUDE ADJUSTMENT не нужно.
opkg install block-hotplug
Вставляем флешку и проверяем определилась ли она командой
Должно вывести примерно следующее:
[ 5069.890000] sd 0:0:0:0: [sda] Write Protect is off
[ 5069.900000] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 5069.900000] sd 0:0:0:0: [sda] No Caching mode page present
[ 5069.900000] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 5069.910000] sd 0:0:0:0: [sda] No Caching mode page present
[ 5069.920000] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 5069.920000] sda: sda1 sda2 sda3
[ 5069.930000] sd 0:0:0:0: [sda] No Caching mode page present
[ 5069.940000] sd 0:0:0:0: [sda] Assuming drive cache: write through
[ 5069.940000] sd 0:0:0:0: [sda] Attached SCSI removable disk
строка sda: sda1 sda2 sda3 говорит что все наши три раздела определились системой.
Изменяем файл конфигурации для монтирования системы на внешний диск
Видим примерно следующее
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/sda1
option fstype ext4
option options rw,sync
option enabled 0
option enabled_fsck 0
config swap
option device /dev/sda2
option enabled 0
Добавляем нижнюю секцию и корректируем то, что выделено жирным шрифтом
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 fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 0
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 0
option is_rootfs 1
Переносим систему на накопитель. Если в прошивке установлен модуль автомонтирования, то на повторное монтирования раздела выдаст ошибку, просто игнорируем ее.
mount /dev/sda1 /mnt/sda1
mkdir /tmp/cproot
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -xvf -
sync ; umount /mnt/sda1
umount /tmp/cproot
Перезагружаемся.
После перезагрузки убеждаемся, что наша флешка подключилась в качестве корневой системы
Для openwrt версии ATTITUDE ADJUSTMENT (ядро 3.3.8) вывод должен быть такой
или для openwrt версии Backfire (ядро 2.6) вывод должен быть такой
Проверяем подключился ли файл подкачки
Вывод должен быть такой
Все, теперь наша система openwrt запускается с флешки.
Если в оригинальной прошивке не было веб интерфейса, то устанавливаем его:
opkg install luci
/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start
Если вы захотите помимо usb-флешки подключить еще usb hdd или вторую usb-флешку, то как это правильно сделать читайте в моей последующей статье.
Возможные проблемы
1.Переписка с Алексеем показала, что почему-то в последней прошивке Backfire для Dir-320 не монтировался раздел подкачки. Оказалось, что в прошивке в пакете busybox отключили поддержку swap-utils. В этом случае этот пакет нужно доставить вручную
opkg install swap-utils
2.Также почему-то не монтировался раздел /home. Помогло принудительное включение автозагрузки fstab. делаем это когда уже загрузились с внешнего носителя
reboot
3.Если у вас пошло все наперекосяк, вы уже не помните что меняли а что нет или начали ставить пакеты а они не влезли в память роутера, то не нужно заново перепрошивать openwrt. Достаточно отключить флешку, перезагрузиться и стереть все пользовательские данные командой
После этого начинаем с самого начала инструкции
Ссылки: