Обновление дистрибутива Cubian до последней версии Debian на Allwinner A10/A20
Под катом 3 скрипта, которые позволяют обновить Cubian (дистрибутив для плат на Allwinner A10/A20) до актуальной версии Debian.
После выполнения всех скриптов будет установлена актуальная версия Debian.
Скрипты проверялись на плате с Soc Allwinner A10. Обновление с версии Cubian-nano-x1-a10-hdmi до Debian 8.3 (актуальной на момент окончания статьи). С минимальными изменениями (а может и без них) должно работать и на A20.
Дистрибутивы Cubian предназначены для плат на основе Soc Allwinner A10/A20.
Дистрибутив Cubian X1 вышел Oct 08, 2014. С тех пор не обновлялся. Доступен для скачивания через официальный торрент (который не всегда работает, поэтому доступен на яндекс-диске).
В своей основе Cubian это Debian с загрузчиком, настройками и скриптами специфическими для Allwinner, в частности для плат Cubian. В принципе все платы на A10/A20 похожи и повторяют референсную схему — придумывать/изменять там особо нечего.
Для поддержки в актуальном состоянии ОС и пакетов (это очень снижает затраты на подготовку и поддержку нашей прошивки) надо подробно разбираться в особенностях SoC для формирования загрузчика и управления всей периферией. Это уже сделано командой дистрибутива Cubian.
Но Cubian немного устарел.
Были созданы скрипты для последовательного обновления от Cubian до актуальной версии Debian с минимальным вмешательством пользователя.
Скрипты были проверены на Allwinner A10 на плате DS-110, которая является почти аналогом CubieBoard.
.
Скачиваем Cubian-nano-x1-a10-hdmi.7z, разархивируем и записываем на карту microSD образ (например с помощью sourceforge.net/projects/win32diskimager). Просто для работы достаточно карты размером 2Гб, если планируется разработка под Debian — 4 или 8 Гб.
Вставляем полученную карту в плату, включаем. Ждем окончания загрузки.
Меняем, если необходмо, пароль. По умолчанию пароль «cubie».
Изначально ip адрес получается по dhcp. Узнать адрес можно на dhcp сервере или залогинившись на консоли (имя «cubie», пароль «cubie»).
Оригинальная плата Cubiebiard покажет свой адрес азбукой Морзе мигая светодиодом, подробнее на github.com/cubieplayer/Cubian/wiki/Get-started-with-Cubian
Для обновления этот ip адрес должен иметь доступ в интернет.
Подключаемся через ssh, порт 36000.
Изначально имеем
cubie@Cubian:~$ cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"
Подготовка к выполнению скриптов.
Устанавливаем git (предварительно установив время и обновив репозитории)
sudo ntpdate-debian
sudo apt-get -y install debian-keyring
sudo apt-get update
sudo apt-get -y install debian-archive-keyring
sudo apt-get update
sudo apt-get install -y git
Скачиваем скрипты обновления
git clone https://opensourceclient@bitbucket.org/opensourceclient/prepare-cubian.git
Первый скрипт:
добавляет удобства (файлы .nanorc, .bashr), устанавливает ограничение частоты (через cpufrequtils), перенаправляет логи на ram-диск, отключает IPv6.
./prepare-cubian/cubian_update-1.sh
Плата будет выключена.
Второй скрипт:
./prepare-cubian/cubian_update-2.sh
удаляет неиспользуемые пакеты, добавляет локализацию (необходимо выбрать раскладку клавиатуры и способ переключения, выбрать шрифт для консоли и так несколько раз), обновляет пакеты до текущих версий
Плата будет выключена.
Третий скрипт:
./prepare-cubian/cubian_update-3.sh
обновляет дистрибутив Debian до актуальной версии, ядро остается то же.
При обновление udevil — ответить yes.
Также будет установлен пакет cubian-nandinstall — он один для A10/A20(https://github.com/cubieplayer/Cubian/wiki/Install-Cubian) позволяет скопировать содержимое sd карты в NAND (если на плате есть NAND) и в дальнейшем загружаться с NAND.
Скрипты от Сubian (cubian-morsedecode, cubian-morsemsg, cubian-morseshowip-reversed, cubian-networklight, cubian-getip, cubian-morseencode, cubian-morseshowip, cubian-motd-package, cubian-ntpdate) находятся в /usr/lib/cubian/. Из названий понятно предназначение.
Плата будет выключена.
В итоге имеем
cubie@Cubian:~ $ cat /etc/*release*
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Стоит сохранить образ SD карты в качестве «эталонного».
Ещё несколько слов
Важной частью Сubian является пакет cubian-nandinstall — позволяет скопировать образ SD карты с карты в NAND. Пакет сам установит загрузчик на NAND и обеспечить загрузку с NAND.
Немного о SoC Allwiner A10/A20
Порядок загрузки SoC Allwiner A10/A20:
— если есть SD карты — грузимся с SD карты, этот режим является режимом восстановления, всегда можно загрузиться с эталонного образа SD карты.
— если нет карты, пробуем загрузиться с NAND.
— как правило в качестве загрузчика используется uboot, что позволяет сделать загрузчик для дальнейшей загрузки по сети.
SoC Allwiner A10/A20 не имеет фиксированного mac адреса. Mac адрес назначается при загрузке ОС.
Параметры видео, сетевые настройки, GPIO (в cubieboard их 67 штук) настраиваются через файл /boot/script.bin (подробнее linux-sunxi.org/Manual_build_howto).
Нижеследующие скрипты не зависят друг от друга.
Для работы нашей платы (ссылка) в качестве тонкого клиента необходимо запустить скрипт
prepare-cubian/cubian_update-customize.sh
будут поставлены необходимые пакеты, сделаны настройки консоли, установлена оболочка, специально скомпилированный пакет FreeRDP плата будет выключена.
Для обновления ядра служит скрипт
prepare-cubian/cubian_update-kernel.sh
К нашей платы можно подключиться к консоли через COM порт (переходник USB-toCOM, ttl), параметры порта 115200/8-N-1.
Установить средства разработки
prepare-cubian/cubian_update-development.sh