В этой статье хочу рассказать про опыт прошивки маршрутизатора checkpoint на прошивку от OpenWRT. На форуме уже имеется статья на английском языке, но при установке по этой статье всплыли «подводные камни», акцент на которые я и хочу сделать сегодня. В основном это будет перевод с моими дополнениями.
- Подготовка
Что потребуется: USB-накопитель размером не более 2 Гб отформатированная в файловую систему fat (стандартными средствами Windows отформатировать не получится, это можно сделать через программы Paragon Hard Disk Manager или Aomei Partition Assistan), консольный кабель (должен быть в комплекте с маршрутизатором, но скоре всего подойдет и от маршрутизаторов Cisco), дистрибутив linux с установленными пакетам screen
, kwboot
(в Debian подобных дистрибутивах нужно установить пакет u-boot-tools), порт rs-232 или переходник rs232 на USB, предварительно скаченные прошивка и файлы.
Скачать файлы по ссылке и загрузит на USB- накопитель и на пк с Linux: (На момент написание статьи актуальная версия была 23.05.3. Чтобы посмотреть доступные версии можно перейти https://downloads.openwrt.org/releases/ и посмотреть имеется ли версия выше чем 23.05.3)
https://downloads.openwrt.org/releases/23.05.3/targets/kirkwood/generic/u-boot-l-50/u-boot.kwb
- Подготовка к прошивке(сбор информации)
Включите L-50 и дайте ему загрузиться. Во время загрузки подключите L-50 к компьютеру с помощью консольного кабеля. Когда L-50 завершит загрузку, запустите следующую команду в терминале вашего компьютера, чтобы открыть консольное соединение с L-50:
sudo screen /dev/ttyUSB0 115200
Далее, подсоединив L-50 к компьютеру, нажмите и удерживайте в течение 15 секунд кнопку Factory Defaults (нет Reboot!!!) на задней панели L-50 (это утопленная кнопка, поэтому вам понадобится что-то вроде шариковой ручки, чтобы нажмите и удерживайте ее). Индикатор питания загорится красным, указывая на то, что устройство выполняет перезагрузку. Отпустите кнопку и начните смотреть вывод консоли на своем компьютере. В конце концов вы увидите сообщение, This is a first boot затем еще одно сообщение Press any key to stop boot. В этот момент нажмите, Enter, чтобы получить доступ к командной строке. Вам сообщат, что вы вошли в «экспертный режим», и попросят создать «экспертный пароль». Следуйте подсказкам.
Примечание. Некоторые устройства L-50 вместо входа в «экспертный режим» и запроса на создание «экспертного пароля» сразу же запрашивают имя для входа и пароль. В этих случаях вы можете войти в систему, используя имя пользователя admin и пароль admin (это учетные данные по умолчанию, установленные производителем). Затем подключите USB-накопитель к L-50, дайте ему несколько секунд на обнаружение (на консоли появится сообщение о новом устройстве) и повторите ту же команду. Найдите во втором выводе элемент, которого не было в первом; сюда был установлен ваш USB-накопитель. Убедитесь в этом, перейдя в этот каталог и перечислив его содержимое (там должны быть файлы, которые вы туда поместили). Обратите внимание на это для дальнейшего использования. В моем случае точка монтирования была /mnt/usb2.
Далее на всякий случай сделайте резервную копию существующей прошивки. Помните, что ваша точка монтирования может быть, а может и не быть /mnt/usb2, поэтому при необходимости измените аргумент следующей команды, чтобы отразить это.
dd if=/dev/mtd2 of=/mnt/usb2/bootldr-env.bin
Далее соберите MAC-адреса всех устройств, у которых они есть: ifconfig -a Сохраните имена устройств и соответствующие им MAC-адреса (вы можете сделать это с помощью снимка экрана, регистрации сеанса screen или перенаправления вывода ifconfig в текстовый файл на USB-накопителе. Я сохранил на USB командой ifconfig -a|cat>mac.txt). Скорее всего, вы получите пул MAC-адресов, который начинается с MAC-адреса, напечатанного в нижней части L-50, и продолжается с него постепенно. На этом этап сбора информации завершается. Закройте соединение консоли (нажмите Ctrl-a, затем k, затем y) и выключите L-50. Извлеките USB-накопитель из L-50.
Дополнительно можно проверить, что на накопителе создались файлы и скопировать копию.
- Прошивка
Ваш компьютер по-прежнему подключен к L-50, а L-50 выключен. Перейдите в каталог, в который вы поместили файлы, загруженные в первой части, и выполните в терминале следующую команду:
sudo kwboot -B 115200 /dev/ttyUSB0 -b u-boot.kwb -p -t
Обратите внимание, что это u-boot.kwb
передается в качестве входных данных утилите kwboot
, поэтому важно находиться в каталоге, где u-boot.kwb
находится файл, иначе он kwboot
не будет найден u-boot.kwb
и закроется с сообщением об ошибке.
При передаче (загрузки) kwboot
включите L-50 и наблюдайте за выходом. В конце концов появится сообщение: Sending boot image...
, после чего начнет отсчитываться процент выполнения. После того, как он досчитается до 100%, обратите внимание: появится сообщение: Hit any key to stop autoboot
. Когда вы увидите это, нажмите Enter
. Будет еще несколько строк вывода, а затем командная строка, которая выглядит следующим образом:
=>
Пора начать печатать… Сначала найдите список MAC-адресов, который вы собрали во второй части. Используйте его, чтобы создать блок setenv команд, аналогичный приведенному несколькими абзацами ниже, в вашем любимом текстовом редакторе. Обязательно меняйте только MAC-адреса. Другими словами, каждая строка должна состоять из команды (setenv), имени переменной среды (что-то-что-addr) и MAC-адреса.
Если MAC-адрес, который у вас есть, eth0
не соответствует MAC-адресу, указанному на этикетке, прикрепленной к нижней части L-50, используйте адрес, указанный на этикетке.
В худшем случае, если вы полностью запутались во второй части и на этом этапе вам не с чем работать, начните с MAC-адреса, напечатанного на нижней части L-50, и увеличивайте MAC-адрес для каждого нового устройства. Например, если MAC-адрес в нижней части L-50 равен 01:23:45:67:89:ab
, вы можете сделать (нужно обратить внимание на то, что eth1addr и lan1_mac_addr должны совпадать):
setenv eth0addr 01:23:45:67:89:ab
setenv eth1addr 01:23:45:67:89:ac
setenv lan1_mac_addr 01:23:45:67:89:ad
setenv lan2_mac_addr 01:23:45:67:89:ae
setenv lan3_mac_addr 01:23:45:67:89:af
setenv lan4_mac_addr 01:23:45:67:89:b0
setenv lan5_mac_addr 01:23:45:67:89:b1
setenv lan6_mac_addr 01:23:45:67:89:b2
setenv lan7_mac_addr 01:23:45:67:89:b3
setenv lan8_mac_addr 01:23:45:67:89:b4
setenv dmz_mac_addr 01:23:45:67:89:b5
setenv dsl_mac_addr 01:23:45:67:89:b6
saveenv
Просто продолжайте считать шестнадцатеричные числа… Если вы копируете и вставляете между текстовым редактором и терминалом, обязательно копируйте и вставляйте по одной строке за раз!
Затем начните копировать что-нибудь на L-50. Подключите USB-накопитель к L-50 и выполните приведенные ниже команды. Убедитесь, что имя файла uImage
в предпоследней команде соответствует тому, что у вас есть на USB-накопителе. Кроме того, при копировании и вставке по-прежнему рекомендуется выполнять команды по одной, а не вводить их непосредственно в терминал.
mw 0x0800000 0xffff 0x100000
nand erase 0x0 100000
usb start
fatload usb 0 0x0800000 u-boot.kwb
nand write 0x0800000 0x0 0x100000
saveenv
fatload usb 0 0x0800000 openwrt-23.05.3-kirkwood-generic-checkpoint_l-50-initramfs-uImage
bootm 0x800000
После выполнения последней команды запустится OpenWrt. Однако на данном этапе он находится только в оперативной памяти, а не в постоянной памяти. На данном этапе можно подключить LAN кабель к сетевой карте ПК и ПК должен получить по DHCP адрес из пула сети 192.168.1.0/24. Если ПК не получает IP адрес, значит что-то пошло не так, можно повторить этот пункт выключив питание маршрутизатора, при этом временная прошивка стереться из памяти(например у меня была проблема, что ПК не подключался к сети из-за неправильной версии u-boot.kwb). Чтобы прошивка осталась в основной памяти, вам необходимо выполнить обновление системы. Есть как минимум два способа сделать это: (1) через Интернет и (2) через локальную сеть. Все зависит от того, что сейчас работает на вашем L-50. Я рекомендую делать всё-таки через локальную сеть.
Если вы можете подключиться к Интернету через порт WAN, и выполнить команду:
sysupgrade https://downloads.openwrt.org/releases/23.05.3/targets/kirkwood/generic/openwrt-23.05.3-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin
URL-адрес — это тот URL-адрес, который вы уже использовали в первой части для загрузки образа обновления.
Если вы можете подключиться к L-50 через порт LAN со своего компьютера, откройте новый терминал, перейдите в каталог, в который вы поместили образ sysupgrade, и выполните:
scp openwrt-23.05.3-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin root@192.168.1.1:/tmp
В настоящее время на L-50 нет пароля root, поэтому, если вас попросят ввести пароль, просто нажмите Enter
Как только файл будет передан, вернитесь в первое окно терминала и выполните:
sysupgrade /tmp/openwrt-23.05.3-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin
В любом случае, как только обновление системы будет завершено, L-50 будет запускать OpenWrt. По умолчанию порт с пометкой WAN на устройстве будет портом WAN (отлично, да? ), работающим как DHCP-клиент вышестоящего устройства, а порт DMZ , восемь портов LAN и беспроводное соединение, если таковое имеется, будут подключены к одной локальной сети (L-50 будет DHCP-сервером и шлюзом по умолчанию для этой локальной сети и будет расположен по адресу 192.168.1.1). Однако беспроводное соединение будет отключено; вам нужно будет включить и настроить его через интерфейс командной строки или через LuCI, как описано в документации OpenWrt.
Теперь вы можете завершить kwboot
сеанс (нажмите Crtl-\
, затем c
), отсоединить консольный кабель и подключиться к L-50 через Ethernet, чтобы выполнить на нем фактическое сетевое администрирование.
Великолепный контент! Все рассказано
просто и ясно. Особенно понравилась
организация материала — только существенное,
никакой воды. Непременно порекомендую коллегам.