Мотивация
Подобно
любому компьютеру, ZyXEL NSA (далее текст применим
к ряду родственных по архитектуре систем, подробный список которых можно найти
в [1, 2]), умеет загружать операционную систему с
различных дисков:
встроенного flash небольшой ёмкости и внешнего (массового) накопителя большой ёмкости.
В компьютерах данной архитектуры используется модуль загрузки Das Uboot [3].
Говоря
условно, Das Uboot поддерживает
два интересующих нас метода загрузки системы.
Будем
называть их "to Linux" и "to Stock" .
В
зависимости от условий эксплуатации Вашего NAS Вам могут понадобиться оба метода.
to
Stock - если Вы используете NAS как его
рекомендует завод;
To
Linux - если Вы хотите использовать NAS как платформу для установки любой
поддерживаемой версии Linux, например,
Arch Linux Arm.
Также может понадобиться вернуться временно или постоянно к "to Stock".
Цель упражнения
переключить
методы загрузки по схеме:
To
Linux -> to Stock -> to Linux.
Условия задачи
Мы
рассматриваем два состояния (уровня выполнения программ) ZyXEL NSA:
- Активна (запущена) операционная система Linux / Linux is up and running;
- Активна программа начальной загрузки / Uboot is running.
Метод
загрузки определяется конфигурационным
параметром Das
Uboot Environment[4]
bootcmd
значение
которого сохраняется в энергонезависимой
памяти (flash) и используется Das Uboot[3].
Переключать
метод загрузки мы будем при активном состоянии Linux.
Способы доступа к параметрам конфигурации
Параметр bootcmd и другие параметры Das Uboot
Environment доступны
для чтения и редактирования.
Известны
следующие способы управления параметрами.
- Манипулирование с помощью CLI- интерфейса (программ): fw_setenv / fw_printenv [3];
Программы fw_setenv /
fw_printenv находятся: в stock-версии Linux в /zyxel/sbin, в третьих сборках (например, Arch Linux Arm) программы необходимо установить.
Пример установки в Arch Linux:
$sudo
pacman -Sy uboot-env uboot-mkimage
- Манипулирование с помощью команд Das Uboot. Для этого необходимо использовать подключение программы terminal к консоли (процессу Uboot) с помощью серийного подключения. Для этого потребуется схема подключения, конвертор serial -> USB (Serial to USB TTL Converter).
Мы будем
рассматривать первый способ как достаточно просто реализуемый.
Редактирование файла конфигурации fw_setenv
Для
указания программе fw_setenv устройства uboot, в котором хранятся конфигурационные
параметры, необходимо отредактировать файл конфигурации:
$sudo nano /etc/fw_env.config
В
нём, так как мы работаем с ZyXEL NSA, необходимо создать строку, соответствующую модели uboot для ZyXEL NSA
[3]
/dev/mtd1 0x0000 0x20000 0x20000
Сохранение параметра, определяющего способ загрузки, в память uboot
Для
активации метода загрузки "to Stock" выполняем команды:
$sudo fw_setenv "run to_stock"
$sync
$sudo shutdown -P -h
now
Firmware (модуль
загрузки) ZyXEL NSA будет
загружать заводской образ Linux и
монтировать массовый накопитель.
Для
активации метода загрузки "to Linux" выполняем команды:
$fw_setenv arcNumber
4495
$fw_setenv
mainlineLinux yes
$fw_setenv
bootargs_stock 'console=ttyS0,115200
mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2)
root=/dev/nfs rw init=/init'
$fw_setenv
bootargs_linux 'console=ttyS0,115200
mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2)
root=/dev/sda2 rw rootwait loglevel=8'
$fw_setenv
bootcmd_linux 'setenv bootargs $(bootargs_linux); ide reset; ext2load ide 0:1
$(loadaddr) /uImage; bootm $(loadaddr)'
$fw_setenv
bootcmd_stock 'setenv bootargs $(bootargs_stock); nand read.e $(loadaddr)
$(kernel_addr) 0xA00000; bootm $(loadadr)'
$fw_setenv to_stock
"setenv mainlineLinux no; setenv bootcmd \'run bootcmd_stock\'; saveenv;
reset"
$fw_setenv to_linux
"setenv mainlineLinux yes; setenv bootcmd \'run bootcmd_linux\'; saveenv;
reset"
$fw_setenv bootcmd
'run to_linux'
$sync
$sudo shutdown -P -h
now
Firmware ZyXEL NSA будет переходить прямо к загрузке образа системы Linux, установленный на внешний массовый
накопитель (/dev/sda1).
Ссылки
1
http://dns323.kood.org/start
2
http://gathering.tweakers.net/forum/list_messages/1545544
3 trweb: ZyXEL NSA325 v2 Arch Linux ARM (ALARM) auf interne SATA HDD
installieren und booten
4 Open WRT: Das Uboot Environment

Комментариев нет:
Отправить комментарий