Сборка кастомной прошивки OpenWRT | ||
Сети > Для новичка Не так давно озадачился поднятием на своем роутере D-Link DIR-320 сервера OpenVPN. Но после установки прошивки OpenWRT оказалось, что на 4-х мегабайтной флешке роутера не осталось достаточно места для установки OpenVPN. Выходом из ситуации стала сборка собственного варианта прошивки с помощью Image Generator, что позволило при том же наборе пакетов получить прошивку меньшего размера.
Не так давно озадачился поднятием на своем роутере D-Link DIR-320 сервера OpenVPN. Но после установки прошивки OpenWRT оказалось, что на 4-х мегабайтной флешке роутера не осталось достаточно места для установки OpenVPN. Выходом из ситуации стала сборка собственного варианта прошивки с помощью Image Generator, что позволило при том же наборе пакетов получить прошивку меньшего размера. Прежде чем продолжить описание сборки, остановлюсь немного на том, как устроена корневая файловая система OpenWRT. Она представляет собой файловую систему mini_fo, которая прозрачно объединяет две другие файловые системы: неизменяемую SquashFS, смонтированную в /rom, и изменяемую JFFS2, смонтированную в /overlay. Все файлы, которые создаются или изменяются после установки прошивки, находятся в /overlay. При удалении файлов, изначально бывших в прошивке, mini_fo просто помечает их как удаленные, сами же файлы остаются в /rom и продолжают занимать место. Как SquashFS, так и JFFS2 используют сжатие, но SquashFS дает лучшую степень сжатия, поэтому помещение всех необходимых пакетов сразу в /rom дает прошивку меньшего размера. Исключение ненужных пакетов из прошивки также позволяет сэкономить столь драгоценное место на флешке. Для сборки кастомной прошивки необходимо скачать архив ImageBuilder. Для моего роутера был только i686-вариант архива, но никаких проблем на 64-битной Gentoo с ним не возникло. Для всего, что связано с прошивкой я создал директорию ~/dir-320, а в ней директорию 10.03, соответствующую версии используемой прошивки OpenWRT, куда и распаковал архив ImageBuilder. Сборка минимального образа осуществляется с помощью команды make image, вместе с которой можно также указать три переменные:
Для удобства повторного использования я создал скрипт make_image.sh, где вызываю make image с необходимыми мне значениями переменных: #!/bin/bash Очень удобной оказалась возможность добавлять свои файлы в образ прошивки. Пользуясь тем, что все новые и измененные файлы находятся в /overlay, я написал скрипт backup.sh для извлечения таких файлов из устройства: #!/bin/bash Файлы META_* в /overlay являются служебными в файловой системе mini_fo и их нужно исключить. Поскольку встроенный в busybox архиватор tar для исключения файлов поддерживает только опцию -X, необходимо на роутере создать файл /etc/backup_exclude со следующим содержимым: META_* В одной директории со скриптом создаем подкаталог backup, куда и будут сохраняться архивы. Новые и измененные файлы помещаем в каталог, на который ссылается переменная FILES, с сохранением структуры подкаталогов. Запускаем скрит make_image.sh и получаем в каталоге bin преднастроенную прошивку со всем необходимым ПО. |
||
Комментарии | ||