vak: (Default)
[personal profile] vak
Omega2+ это относительно новая плата для IoT с интерфейсом Wi-Fi по цене $13. На плате установлен Линукс OpenWRT. В качестве языков програмирования рекомендуются Python и Javascript. Честно говоря, мне все эти скриптовые языки кажутся несерьёзным баловством. Но имея карточку microSD, можно запустить полноценный Debian Linux, а под ним нормальные компиляторы Си, Go и прочие.



Шаг 1: готовим microSD-карточку. Тут понадобится линуксный компьютер. Скачиваем файл debian-stretch-mini.tgz - минимальный вариант корневой файловой системы для Debian 9 (Stretch). Вставляем карточку microSD в компьютер, непосредственно (есть есть слот SD) или через USB-адаптер. Карточка будет видна в системе как /dev/mmcblk0 или как /dev/sdc (или sdb или с другой буквой - проверьте). Нужно карточку отмонтировать, переделать таблицу разделов, создать новую файловую систему, заново смонтировать и распаковать туда файлы. Выглядит это примерно так:

sudo umount /dev/mmcblk0p1
sudo sfdisk /dev/mmcblk0 << EOF
/dev/mmcblk0p2 : size=512M, type=82
/dev/mmcblk0p1 : type=83, bootable
EOF
sudo mke2fs /dev/mmcblk0p1
sudo mkswap /dev/mmcblk0p2
sudo mount /dev/mmcblk0p1 /mnt
sudo tar xzf debian-stretch-mini.tgz -C /mnt
sudo umount /mnt


Шаг 2: подсоединяем консольный порт. Используем штатный Expansion Dock или любой адаптер USB-to-serial, например FT232, CP2102 или CH340. Сигнал GND адаптера соединяем с ножкой GND платы, сигнал TXD - с ножкой P9, RXD - P8. Включаем USB-адаптер в компьютер и подключаемся к консольному порту на скорости 115200. Нажимаем кнопку "Reset" - видим протокол загрузки типа этого.

Шаг 3: настраиваем подключение Wi-Fi, как описано на официальном сайте. Устанавливаем нужные пакеты, подключаем раздел swap. Заметьте: мы никоим образом не портим исходную предустановленную систему OpenWRT. Все имеющиеся функции и методы разработки, описанные в руководстве для платы Omega2+, продолжают работать.

wifisetup
[...]
opkg update
opkg install swap-utils block-mount e2fsprogs


Шаг 4: стартуем среду Debian. Для этого мы используем утилиту chroot. Корневая файловая система Debian находится на карточке microSD. Ее всегда можно вынуть и переставить в другой компьютер: переписать нужные файлы, сдублировать, забэкапить и т.п. В принципе, когда заработал Wi-Fi, консольный порт больше не нужен - можно подключаться через ssh (предварительно установив пароль на root).

swapon /dev/mmcblk0p2
mount --bind /dev /tmp/run/mountd/mmcblk0p1/dev
mount --bind /proc /tmp/run/mountd/mmcblk0p1/proc
mount --bind /sys /tmp/run/mountd/mmcblk0p1/sys
chroot /tmp/run/mountd/mmcblk0p1 /bin/bash


Вы оказываетесь в оболочке bash из окружения Debian. Здесь при первом запуске имеет смысл установить полезные пакеты:

apt-get update
apt-get install locales bison byacc flex libelf-dev libfuse-dev \
build-essential make autoconf automake libtool gdb fuse man-db \
groff less ed bmake git byacc flex exuberant-ctags libfuse-dev \
bmake git byacc flex exuberant-ctags libfuse-dev dialog \
openssh-client subversion le vim gettext iputils-ping locate procps


Теперь у вас имеется полноценный Debian Linux, со всеми наворотами и Wi-Fi подключением к интернету. Можно скачивать, компилировать и запускать любой софт. И все это на платке размером 2x4 сантиметра.

Чтобы освободить карточку перед тем как вынуть, надо будет выполнить:

umount /tmp/run/mountd/mmcblk0p1/dev
umount /tmp/run/mountd/mmcblk0p1/proc
umount /tmp/run/mountd/mmcblk0p1/sys
umount /tmp/run/mountd/mmcblk0p1
swapoff /dev/mmcblk0p2