Page tree
Skip to end of metadata
Go to start of metadata

RW-FS (read write file system) –  раздел памяти с возможностью чтения и записи, в котором хранятся конфигурационные файлы, доступные для изменения. Кастомизация RW-FS представляет собой заранее подготовленный архив с каталогом /etc/, который содержит в себе настройки, файлы, скрипты. При загрузке RW-FS, файлы системы будут заменены на аналогичные файлы из архива. Инструмент подходит для кастомизации клиентских устройств без пересборки прошивки.

Рассмотрим процесс создания rwfs архива со следующими изменениями: UPnP включен по умолчанию, нестандартный логин по умолчанию, кастомный topbar веб-интерфейса.

1. Подключаемся к роутеру по SSH, по умолчанию LAN ip 192.168.1.1, логин и пароль Admin/Admin.

2.  Создадим каталог tmp/etc/, и подкаталоги для перемещения редактируемых файлов.

[SNR-CPE@/]# mkdir /tmp/etc
[SNR-CPE@/]# mkdir /tmp/etc/scripts
[SNR-CPE@/]# mkdir /tmp/etc/default
[SNR-CPE@/]# mkdir /tmp/etc/web/graphics

Если необходимо внести изменения в файл из другого корневого каталога, например /web, его также необходимо создать в /tmp/etc, так путь до файла topbar.png в RWFS архиве будет выглядеть /etc/web/graphics/topbar.png

3. Копируем нужные файлы в созданные выше каталоги. В файле nvram_default находятся заводские настройки, fs это скрипт отвечающий за работу с файловой системой роутера, topbar.png это изображение в шапке web-интерфейса.

[SNR-CPE@/]# cp /etc/default/nvram_default /tmp/etc/default 
[SNR-CPE@/]# cp /etc/scripts/fs /tmp/etc/scripts 
[SNR-CPE@/]# cp /etc/web/graphics/topbar.png /tmp/etc/web/graphics

4. Внесем изменение в заводские настройки, для примера включим UPnP и изменим имя пользователя. Для понимания того, что менять воспользуемся командой nvram_show 2860, команда выведет текущие настройки, копируем вывод команды в текстовый документ. Через веб интерфейс включаем UPnP, сохраняем изменения и повторно вводим nvram_show 2860. Сравнив настройки из текстового документа и выведенные в терминале, то будет отличие:  upnpEnabled=0 в текстовом файле и  upnpEnabled=1 в терминале, 0 означает - отключено, 1 - включено. UPNP взят для примера, с другими настройками идентично.

Открываем файл nvram_default в текстовом редакторе.

[SNR-CPE@/]# vi tmp/etc/default/nvram_default

Ищем строку upnpEnabled=0 и меняем 0 на 1, ищем строку Login=Admin и меняем на Login=Admin1.  Для выхода с сохранением изменений нажимаем escape, вводим :wq, нажимаем enter. 

5. Создаем скрипт userrwfs.sh (скрипт должен быть именно с таким названием) в tmp/etc/scripts/, и внесем в него команду nvram_default 2860, при загрузке RW-FS скрип сбросит настройки роутера к заводским и загрузятся уже измененные настройки из файла nvram_default.

[SNR-CPE@/]# echo -e "#!/bin/sh\nnvram_default 2860" >> tmp/etc/scripts/userrwfs.sh
[SNR-CPE@/]# chmod +x tmp/etc/scripts/userrwfs.sh

6. Для сохранения изменений внесённых с помощью RWFS при сбросе до заводских настроек и обновлении внесем изменения в файл fs в tmp/etc/scripts/. Откройте файл в текстовом редакторе.

[SNR-CPE@/]# vi tmp/etc/scripts/fs

Ищем нижеуказанный фрагмент кода.

restore() {
echo "Clear rwfs."
mtd_write erase RW-FS
}

И комментируем данную строку. Закомментировав данную команду мы блокируем работу функции restore и запрещаем перезапись RWFS раздела при сбросе роутера к заводским настройкам и обновлении.

restore() {
echo "Clear rwfs."
# mtd_write erase RW-FS
}

Для выхода с сохранением изменений нажимаем escape, вводим :wq, нажимаем enter. Теперь ни при сбросе до заводских настроек, ни при обновлении ПО с заменой RWFS внесенные изменения не перезапишутся

В этой инструкции для примера взяты простые настройки, при их правильном исполнении роутер будет работать штатно. Если требуется более сложная конфигурация, которая влияет на логику работы роутера, то рекомендуем вначале загрузить тестовый RWFS архив, подробнее об этом в шаге 6.

6. Теперь в директории tmp/etc/ есть нужные изменения и можно создать RWFS архив, но для безопасности лучше создать два архива, один с закомментированной строкой #mtd_write erase RW-FS в файле fs, другой с не закомментированной. Вначале загрузите архив с не закомментированной строкой, проверьте как работает роутер, если работает корректно, то можно загружать второй архив. При некорректной работе роутера после загрузки тестового архива воспользуйтесь инструкцией, после ее применения сбросьте роутер до заводских настроек с помощью кнопки Reset на корпусе роутера.

Добавьте /etc/ в архив, примените алгоритм сжатия и переместите архив в /tmp/web/.

[SNR-CPE@/]# cd tmp

[SNR-CPE@/]# tar -cp etc > /tmp/custom-example.tar

[SNR-CPE@/]# bzip2 -9 custom-example.tar

[SNR-CPE@/]# mv /tmp/custom-example.tar.bz2 /tmp/web/

Для выгрузки архива авторизуйтесь на роутере и введите в адресной строке http://192.168.1.1/custom-example.tar.bz2 .

7. Изменим шапку Web-интерфейса, откройте архив и перейдите в папку /web/ (/etc/web/graphics) в этой папке находятся изображения используемые в интерфейсе. 

Файл называется topbar с расширением png, и изначально он выглядит так. Если нужно изменить другие элементы интерфейса, то можно посмотреть код страницы, посмотреть название нужного элемента и где он находится.

В графическом редакторе изменяем картинку под нужные требования, сохраняем её с названием topbar и с расширением png и добавляем в архив с заменой, сохраняем изменения в архиве.

8. Для загрузки полученного архива перейдите в раздел Администрирование > Управление, в пункте загрузка RW-FS выберете нужный архив и нажмите Загрузить.

После загрузки архива будет включен UPnP, логин будет Admin1, изменён интерфейс. Эти изменения сохранятся при сбросе до заводских настроек, 

  • No labels