Linux роутер на флешке

Установка дистрибутива Debian на маршрутизатор ASUS WL-500W

Собственно приступим. Для установки дистрибутива Debian на маршрутизатор, нам понадобиться:

1) Маршрутизатор ASUS WL-500W;
2) USB-флешка на 4 Гигабайта;
3) Любой дистрибутив LINUX, но предпочтительно использовать дистрибутив Debian Lenny или Squeeze;
4) Безлимитный интернет;
5) Терпение.

Дальше я разбил всё на три этапа.

Этап 1. Сборка и установка прошивки OpenWRT.

Суть этапа заключается в правильной настройке ядра, модулей и дальнейшая сборка прошивки OpenWRT для нашего маршрутизатора. Большая часть этого этапа проходит не под «суперпользователем», для этого требуется обычный пользователь в вашей системе. Для сборки и установки прошивки OpenWRT, я использовал дистрибутив Debian i386, но можно использовать различные архитектуры, т.к. OpenWRT использует свой инструмент кросс-компиляции.

Итак, проверим, установлены ли у вас все пакеты для сборки прошивки. Выполним следующие команды:

$ sudo apt-get update
$ sudo apt-get install tftp subversion make unzip flex patch autoconf bison zlib1g-dev libncurses5-dev gawk g++ bzip2 python

Этап 1.2. Скачивание исходного кода OpenWRT.

$ mkdir /home//debwrt
$ cd /home//debwrt
$ svn checkout svn://svn.openwrt.org/openwrt/branches/backfire

На момент написания топика последняя версия прошивки была 26803.

Этап 1.3. Сборка OpenWRT и BusyBox.

Сейчас выполним настройку прошивки OpenWRT и BusyBox:

$ cd backfire
$ wget -O .config «http://dl.dropbox.com/u/21316076/DebWRT/OpenWRT/config/config-26803»

Запускаем процесс сборки прошивки.

Нажать CTRL-C когда на дисплее отобразиться строка:

make[3] -C target/linux compile

это приостановит процесс сборки ядра прошивки OpenWRT для нашего маршрутизатора и скопируем заранее подготовленный файл настроек в папку ядра:

$ cd build_dir/linux-brcm47xx/linux-2.6.32.27/
$ wget -O .config «http://dl.dropbox.com/u/21316076/DebWRT/OpenWRT/config/kconfig-26803»
$ cd ../../../
$ make

и продолжим дальше процесс сборки прошивки. Приостановление процесса сборки нужно было для того, чтобы включить некоторые опции в конфигурации ядра, а именно:

После сборки нужно скопировать модули ядра, в дальнейшем они нам понадобятся для интеграции дистрибутива Debian и прошивки OpenWRT:

$ mkdir ../modules
$ cd build_dir/linux-brcm47xx/linux-2.6.32.27/
$ ARCH=mips INSTALL_MOD_PATH=../../../../modules make modules_install
$ cd ../../../../modules/
$ fakeroot tar cvf ../modules.tar .

И наконец, скопировать образ прошивки в папку:

$ cd ..
$ mkdir build
$ cp -pi backfire/bin/brcm47xx/openwrt-brcm47xx-squashfs.trx build/

Этап 1.4. Загрузка прошивки на маршрутизатор ASUS WL-500W.

Настраиваем свой сетевой интерфейс на ip адрес 192.168.1.2:

sudo ifconfig ethx inet 192.168.1.1 netmask 255.255.255.0

Для чистой и правильно загрузки прошивки OpenWRT, нужно выполнить так называемую операцию 30/30/30. Она выполняется следующим образом:

  1. Подключаем питание к маршрутизатору
  2. Зажимаем кнопку «Reset» и ждем 30 секунд
  3. По истечению 30 секунд, отключаем питание маршрутизатора не отпуская кнопку «Reset» и держим ещё 30 секунд
  4. После 30 секунд снова подключаем питание к маршрутизатору не отпуская кнопку «Reset» и держим ещё 30 секунд
Читайте также:  Настройка роутера провайдер кабинет

На последних 30 секундах, диод питания начнет мигать, это означает, что маршрутизатор перешел в режим перепрошивки по протоколу tftp. Это операция выполняется, чтобы получить доступ к перепрошивки nvram. Подключаем витую пару в любой из LAN портов маршрутизатора. И начинаем перепрошивать.

Первый файл, который мы отправим маршрутизатору, очистит оперативную память nvram:

$ wget «http://dl.dropbox.com/u/21316076/DebWRT/nvram%20recover/wl500g-clear-nvram.trx»
$ tftp 192.168.1.1
tftp> binary
tftp> trace
tftp> put wl500g-clear-nvram.trx

После того как файл будет загружен на маршрутизатор, нужно выждать 3 минуты.

Отключаем питание маршрутизатора и выходим из клиента tftp. Повторяем операцию 30/30/30 и загружаем второй файл для восстановления начального nvram:

$ wget «http://dl.dropbox.com/u/21316076/DebWRT/nvram%20recover/wl500g-recover.trx»
$ tftp 192.168.1.1
tftp> binary
tftp> trace
tftp> put wl500g-recover.trx

Отключаем питание маршрутизатора и выходим из клиента tftp. Повторяем операцию 30/30/30 и загружаем образ прошивки OpenWRT:

$ cd build/
$ tftp 192.168.1.1
tftp> binary
tftp> trace
tftp> openwrt-brcm47xx-squashfs.trx

Ждем 5 минут, за это время прошивка запишется в nvram. Отключаем питание маршрутизатора. Собственно на этом первый этап заканчивается.

Этап 2. Установка Debian MIPS на USB.
Этап 2.1. Установка базовой системы Debian MIPS.

Скачаем ядро и initrd системы:

$ wget «http://dl.dropbox.com/u/21316076/DebWRT/Debian/vmlinux-2.6.26-2-4kc-malta»
$ wget «http://dl.dropbox.com/u/21316076/DebWRT/Debian/initrd.gz»

Подключаем USB накопитель и смотрим примонтировался ли он в системе. Если устройство примонтировано, то размонтируйте его. Далее создадим виртуальную машину с архитектурой MIPS и подключим сразу USB накопитель:

$ sudo qemu-system-mipsel -M malta -m 256 -nographic -no-reboot -hda /dev/sdX -kernel vmlinux-2.6.26-2-4kc-malta -initrd initrd.gz

где — /dev/sdX ваш USB накопитель.

Далее будет запущен процесс стандартной установки Debian в терминальном режиме. Собственно указываем все как обычно до операции по разметке диска. USB накопитель нужно разбить на два раздела:

1-раздел -> Create a new partition -> 3.0 GB -> Primary -> Beginning -> Mount options выбрать «noatime» -> Done setting up the partition.

2-раздел -> Create a new partition -> 1.0 GB -> Primary -> Beginning -> Use as выбрать «swap area» -> Done setting up the partition.

Дальше выбираем опцию «Finish partitioning and write changes to disk» и соглашаемся с внесением изменений в разметку нашего накопителя. Выберите устанавливаемое ПО на свой вкус, но я оставлял только стандартный набор.

При появлении предупреждения «The kernel version running is the same as the one being installed.» и «No boot loader installed.» просто продолжаем установку. Все установится корректно!

Читайте также:  Настройка роутера тп линк tl wr841n пошаговая
Этап 2.2. Подготовка операционной системы Debian MIPS для интеграции с прошивкой OpenWRT.

После завершении установки дистрибутива, созданная виртуальная машина QEMU выключиться. На этом этапе нужно проверить возможно ли чтение файловой системы накопителя. Отключите накопитель и снова подключите, если он примонтирован, то размонтируйте.

Проверяем накопитель на возможность чтения:

$ sudo tune2fs -c0 -i0 /dev/sdX1
$ sudo mount /dev/sdX1 /mnt
$ cd /mnt

Скопируем подготовленные модули от прошивки OpenWRT:

$ sudo tar xvpf /home//debwrt/modules.tar

Копируем утилиту управления свитчем в нашем маршрутизаторе:

$ sudo wget «http://dl.dropbox.com/u/21316076/DebWRT/Debian/robocfg»
$ sudo cp -pi /mnt/robocfg usr/local/sbin
$ sudo chown root:root usr/local/sbin/robocfg
$ sudo chmod 755 usr/local/sbin/robocfg

Создадим директорию для root прошивки OpenWRT. Чтобы упростить задачу замены директорий, поместим скрипт «init» в папку root на USB накопителе.

$ sudo mkdir initrd
$ cd root/
$ sudo wget «http://dl.dropbox.com/u/21316076/DebWRT/Debian/init»
$ sudo chmod +x init

Изменим содержимое файла fstab:

Копируем данный контекст и производим замену старого:

# /etc/fstab: static file system information.
#
# proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro,noatime 0 1
/dev/sda2 none swap sw 0 0
ramdisk /var/run tmpfs defaults,size=163840 0 2
ramdisk /var/lock tmpfs defaults,size=163840 0 2
ramdisk /etc/network/run tmpfs defaults,mode=0755,size=16384 0 2
ramdisk /tmp tmpfs defaults 0 2

Далее настроим сетевые интерфейсы. Интерфейс eth0 будет для LAN, а eth1 соответственно для WAN.

$ sudo nano etc/network/interfaces

Копируем данный контекст и производим замену старого:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
pre-up ifconfig eth0 up
address 192.168.1.1
netmask 255.255.255.0
up /usr/local/sbin/robocfg switch disable vlans disable reset vlan 0 ports «4 5u» vlan 1 ports «0 1 2 3 4 5u» port 0 state enabled stp none switch enable

allow-hotplug eth1
iface eth1 inet dhcp

Данное задание, включит диод питания по завершению полной загрузки системы:

# Power LED
@reboot root echo 1 >/proc/diag/led/power

Размонтируем USB накопитель и осуществим переход к файлам ядра и init:

Установим сервер OpenSSH на дистрибутив Debian MIPS. Для этого создадим виртуальную машину в QEMU:

$ cd debwrt
$ sudo qemu-system-mipsel -M malta -m 256 -nographic -no-reboot -hda /dev/sdX -kernel vmlinux-2.6.26-2-4kc-malta -append root=/dev/hda1 -net nic,vlan=0 -net user,vlan=0 -net nic,vlan=1 -net user,vlan=1

# aptitude install —without-recommends openssh-server
# shutdown -h now

Читайте также:  Асус роутер прошивка от олега

После выключения, убедимся в том, что все данные записаны:

Отключаем USB накопитель. На этом 2-ой этап заканчивается. Дальше будет производиться интеграция дистрибутива Debian с прошивкой OpenWRT.

Этап 3. Интеграция дистрибутива Debian с прошивкой OpenWRT.
Этап 3.1. Подготовка прошивки OpenWRT к корректной загрузке.

Подключаем питание к маршрутизатору и дожидаемся когда прошивка OpenWRT полностью загрузиться. Изначально диод питания отключиться, но вскоре снова включится, что будет означать о полной загрузке маршрутизатора.

Подключимся к маршрутизатору и посмотрим, если ли подключенные SCSI устройства:

$ telnet 192.168.1.1
root@OpenWrt:/# ls -ltr /dev/sd*

Если ничего не вывелось, значит все в хорошо и все идет по плану. Далее подключим USB накопитель и проверим как он подключился:

root@OpenWrt:/# ls -ltr /dev/sd*
brw-r—r— 1 root root 8, 0 Jan 1 00:02 /dev/sda
brw-r—r— 1 root root 8, 2 Jan 1 00:02 /dev/sda2
brw-r—r— 1 root root 8, 1 Jan 1 00:02 /dev/sda1

Теперь примонтируем раздел USB накопителя и скопируем скрипт «init»:

root@OpenWrt:/# mount -o ro /dev/sda1 /mnt
root@OpenWrt:/# ls -l /sbin/init
lrwxrwxrwx 1 root root 14 Apr 28 2011 /sbin/init -> ../bin/busybox
root@OpenWrt:/# rm /sbin/init
root@OpenWrt:/# cp -pi /mnt/root/init /sbin
root@OpenWrt:/# ls -l /sbin/init
-rwxr-xr-x 1 root root 1479 Apr 28 2011 /sbin/init
root@OpenWrt:/# umount /mnt
root@OpenWrt:/# sync
root@OpenWrt:/# sync
root@OpenWrt:/# reboot

Этап 3.2. Конфигурация оборудования в дистрибутиве Debian.

В данный момент маршрутизатор начнет загружать дистрибутив Debian, но после загрузки сеть будет не доступна. подправим . Дождемся пока маршрутизатор загрузиться до конца и операции I\O накопителя буду остановлены. После того как все загружено, отключаем USB накопитель и подключаем к компьютеру. Далее примонтируем корневой раздел накопителя и отредактируем настройки сетевых интерфейсов для корректной работы. Открываем файл /mnt/var/log/kern.log и ищем eth0. Ищем вот эти строки:

udev: renamed network interface eth0 to eth2
udev: renamed network interface eth1 to eth3

После того как нашли, изменим файл настроек сетевых интерфейсов в менеджере устройств:

изменив eth2 интерфейс на eth0 и соответственно eth3 на eth1. Сохраняем изменения и размонтируем накопитель:

$ sudo umount /mnt
$ sync
$ sync

Извлекаем накопитель и отключаем маршрутизатор.

Этап 3.3. Тестируем и пользуемся.

Подключим наш подготовленный USB накопитель к маршрутизатору и включим его. Дождемся когда включится диод питания. Пробуем подключиться по SSH протоколу:

На этом этапе закончена установка и настройка нашего маршрутизатора ASUS WL-500W с дистрибутивом Debian на борту.

Источник

Оцените статью
Adblock
detector