Настройка Beaglebone Black в Linux

В статье приведена базовая настройка «ОС Embedded Linux» интегральной платы «Beaglebone Black» в «Linux».

1. Запуск ОС «Debian» на плате.

а) Подготовить карту «MicroSD» с образом ОС «BeagleBone Debian IoT ARMhf» при помощи программы «Etcher».

Примечание: для тех кто использует «micro HDMI» вывод платы в процессе отладки системы или для подключения сенсорных дисплеев со звуком к проектам рекомендуется использовать образ «Debian 9.3 2018-03-05 4GB SD IoT» или «Debian 9.3 2018-01-28 4GB SD LXQT» c ядром «Linux 4.9 ti» или более ранние версии с последующим обновлением системы до актуальной (до «buster» и новее). В более новых версиях предположительно удален драйвер TI для подключения любого монитора по «micro HDMI». Разработчики системы предупреждены об этой проблеме. Не рекомендуется использовать платы со встроенным модулем «WiFi» и «Bluetooth».

б) Отключить плату «BBB» и вставить в него данную «MicroSD».

в) Удерживая кнопку «S2» на плате, подключить питание и, после того, как полностью загорятся «4» диода «D2-D5», можно отпустить кнопку «S2».

г) Установить «PuTTY» для доступа к плате по «Serial», «SSH» через «MiniUSB» или «Serial6pins» на плате «BeagleBone».

д) Подключение к «SSH» осуществляется по «IP-адресу» и порту (обычно «22»). Для того, чтобы определить имя «Serial», необходимо набрать команду один раз до и второй раз после подключения платы:

ls /dev/tty*

В данном случае имя «Serial» есть «/dev/ttyACM0». Битрейт необходимо выставить на значение «115200». Для доступа по «Serial» возможно потребуется запускать «PuTTY» из-под «root».

е) После того, как устройство запустится с «MicroSD» карты, необходимо подключиться к его терминалу напрямую, по «MiniUSB» через программу «PuTTY» («SSH 192.168.7.2:22», «Serial») или «Cloud9IDE» по адресу «http://192.168.7.2:3000/ide.html» (http://192.168.6.2:3000/ide.html).

ж) Для того, чтобы данный образ запускался не с «MicroSD», а с внутренней памяти «eMMC», необходимо отредактировать файл «nano /boot/uEnv.txt» через терминал (первичная учетная запись с логином «debian» и паролем «temppwd»), заменив строку с:

#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

На:

cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

Примечание: если необходимо использовать систему с большим объемом памяти раздела, чем «4 GB», тогда возможно не производить запись системы в память «eMMC» а запускать систему всегда с «MicroSD», расширив на ней объем памяти раздела до максимума командой «sudo /opt/scripts/tools/grow_partition.sh» (программа «sfdisk»). В таком случае система будет работать несколько медленнее, но с большим объемом памяти раздела и позволит установить, например, емкую систему Qt для компиляции программ непосредственно под процессор «ARMhf» платы «BeagleBone Black» или полноценную графическую оболочку «Linux».

з) Перезапустите систему командой «reboot».

и) Дождитесь, пока диоды «D2-D5» не перестанут поочередно загораться сверху-вниз и снизу-вверх. Если питание платы идет только по «MiniUSB», тогда она выключиться, в противном случае процесс копирования может повторяться постоянно, т.к. плата будет перезагружаться и заново записывать образ после включения.

к) В конце записи необходимо выключить устройство, извлечь «MicroSD» с загрузочным образом и запустить устройство.

2. Первичная настройка системы

2.1. Смена паролей пользователей

а) Подключиться к терминалу «BBB» по «Serial» напрямую или при помощи программы «PuTTY» через стандартный логин и пароль.

б) Набрать «passwd debian» и изменить пароль.

в) Набрать «sudo passwd root» и изменить пароль.

г) Зайти под «root» и делать все настройки из-под него.

2.2. Создание дополнительного пользователя

Необходимо последовательно набрать следующие команды от имени «root» (для перехода в «root» набрать «su»):

useradd -m console-user

passwd console-user

Посмотреть список пользователей «cat /etc/passwd | awk '/bash/{print}'» и удалить лишних «pkill -u username» «userdel -r username». Также можно удалить больше ненужных пользователей, набрав «cat /etc/passwd» и повторив процедуру. Например, убрать пользователя «nobody»: «pkill -u nobody» «userdel -r nobody».

2.3. Запрет авторизации через «ssh» всем, кроме «console-user»

Открыть и отредактировать файл «nano /etc/ssh/sshd_config». Задать параметр «PermitRootLogin no», ниже добавить строку «AllowUsers console-user» и сохранить. Набрать «sudo service sshd restart».

2.4. Настройка межсетевого экрана

а) Подключиться к терминалу «BBB» по «Serial» напрямую или при помощи программы «PuTTY» через «MiniUSB».

б) Набрать команду «ifconfig» и определить имена сетевых интерфейсов.

в) Переведем таблицу доступа «IPv4» из режима «разрешить все» в режим «запретить все входящие и продвигаемые пакеты». А «IPv6» заблокируем полностью.

iptables -P INPUT DROP

iptables -P FORWARD DROP

ip6tables -P INPUT DROP

ip6tables -P FORWARD DROP

ip6tables -P OUTPUT DROP

г) Допустим возможность обмена пакетами внутри самой платы (для работы режима отладки «Cloude9 IDE» и др.). Для «usb0» зададим возможность драйверу с адреса «0.0.0.0» посылать запросы «DHCP» для конфигурации интерфейса и повторные запросы о состоянии «DHCP», чтобы не было разъединений.

iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

iptables -A INPUT -i usb0 -s 192.168.7.2 -d 192.168.7.1 -p udp --sport 67 --dport 68 -j ACCEPT

iptables -A INPUT -i usb0 -s 192.168.7.1 -d 192.168.7.2 -p udp --sport 68 --dport 67 -j ACCEPT

iptables -A INPUT -i usb0 -s 0.0.0.0 -d 255.255.255.255 -p udp --dport 67 -j ACCEPT

д) «Cloud9 IDE» – удобная среда разработки «Node.js», «Python», «С/С++» и др., установленная на плате «BBB».

Чтобы получить к ней доступ через браузер, нужно открыть порт. Также, необходимо разрешить для установленных платой «BBB» соединений возвращать ей пакеты с любых адресов и на любые порты. Последнее правило должно быть первым, потому что оно будет обрабатывать наибольшее число пакетов.

iptables -A INPUT -i usb0 -s 192.168.7.1 -d 192.168.7.2 -p tcp --dport 3000 -j ACCEPT

iptables -I INPUT 1 -m state --state ESTABLISHED -j ACCEPT

е) Просмотреть полученную таблицу можно командой «iptables -n -L -v --line-numbers» и «ip6tables -n -L -v --line-numbers».

ж) Для включения после перезагрузки сконфигурированной таблицы, введем следующие команды:

echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables-rules

iptables-save >> /etc/network/if-up.d/iptables-rules

chmod +x /etc/network/if-up.d/iptables-rules

echo "#! /sbin/ip6tables-restore" > /etc/network/if-up.d/ip6tables-rules

ip6tables-save >> /etc/network/if-up.d/ip6tables-rules

chmod +x /etc/network/if-up.d/ip6tables-rules

Вероятно, что в случае сбоя таблицы межсетевого экрана, доступ к плате можно будет получить только напрямую, подключившись к терминалу «Serial» платы.

з) Если требуется обеспечить доступ к «Node-RED», то необходимо открыть порт («http://192.168.7.2:1880/» или «http://192.168.6.2:1880/»), выполнив команду:

iptables -A INPUT -i usb0 -s 192.168.7.1 -d 192.168.7.2 -p tcp --dport 1880 -j ACCEPT

«Node-RED» - графический конфигуратор блок-схем кода «Node.js» и стека «TCP/IP» для различных устройств.

2.5. Обновление системы

а) Подключиться к терминалу «BBB» при помощи программы «PuTTY» или другим способом.

б) Проверить конфигурацию межсетевого экрана при помощи команды «iptables -n -L -v --line-numbers» и «ip6tables -n -L -v --line-numbers».

в) Подключить кабель «Ethernet» к плате «BBB».

г) Проверить выдал ли «DHCP» маршрутизатора «IP-адрес» устройству при помощи «ifconfig», если нет, то перезагрузить, не вытаскивая кабеля «Ethernet».

д) Набрать «apt-get update» и «apt-get install lsb-release».

е) Проверить версию системы командой «lsb_release -a && uname -a» и запомнить.

ж) Набрать команду «apt-get update && apt-get full-upgrade && reboot».

з) Набрать команду «apt-get autoremove && apt-get clean».

и) Расширенные варианты обновления системы.

I. Открыть файл командой «nano /etc/apt/sources.list». Заменить все названия текущей версии системы на название следующей за ней версии (например, со «stretch» на «buster») и сохранить. Можно прописать вместо названия новой версии «stable» ветку обновлений, но возможны проблемы несовместимости со сторонних репозиториев. Они просто могут не успеть обновиться на новую версию или просто не иметь «stable» ветку обновлений. Набрать команду «apt-get update && apt-get full-upgrade».

II. Установить новую версию «U-Boot» и ядра «Linux». Для этого набрать следующие команды:

cd /opt/scripts/tools/

git pull

./update_kernel.sh --lts-4_19

./developers/update_bootloader.sh

III. По завершению установки набрать «apt-get full-upgrade && reboot». В ходе процесса установки рекомендуется со всем соглашаться («ru_RU.UTF-8 UTF-8 Cyrillic KOI8-R» и т.п.).

IV. Повторить пункт «I-III», пока не произойдет обновление системы до последней стабильной версии.

к) Набрать команду «apt-get autoremove && apt-get clean && reboot». И в случае необходимости «apt-get install c9-core-installer».

л) Посмотреть список пользователей «cat /etc/passwd» и удалить лишних «pkill -u username», «userdel -r username».

м) Проверить версию системы командой «lsb_release -a && uname -a».

Примечание: Если обновления не устанавливаются с «Интернета», то необходимо проверить «nano /etc/resolv.conf» и заменить параметр «nameserver» (адрес маршрутизатора или «DNS» сервера) на корректный или перезапустить с включенным кабелем «Ethernet». Если не работают созданные настройки конфигурации сетевого адаптера в файле «nano /etc/network/interfaces» необходимо  «apt-get remove connman», пересоздать файл параметров «DNS» командой «rm -f /etc/resolv.conf», удалив символическую ссылку.

3. Подключение графической оболочки через VNC

а) Подключиться к терминалу «BBB» при помощи «Cloud9 IDE», «Serial» разъема напрямую или через «PuTTY».

б) Установить «VNC сервер» на плату «BBB» «apt-get install tightvncserver» (по необходимости установить графическую оболочку «apt-get install lxde» или «apt-get install lxqt»). Рекомендуется ставить «LXDE», так как в ней отсутствует «Баг» с раскладкой клавиатуры через «VNC» режим. На момент написания статьи версией «Qt» в системе «BeagleBone» является «5.7.1». На сайте «Qt» утверждается, что данный «Баг» исправлен и в версии «Qt 5.11» его не будет.

в) Задать пароль «su console-user -c "vncpasswd"» (чтобы задать пароль режима просмотра необходимо сменить пароль напрямую из консоли пользователя «su console-user»).

г) Открыть порт в межсетевом экране:

iptables -A INPUT -i usb0 -s 192.168.7.1 -d 192.168.7.2 -p tcp --dport 5900 -j ACCEPT

iptables-save >> /etc/network/if-up.d/iptables-rules

д) Создать и отредактировать файл «nano /etc/rc.local» для запуска «VNC сервера» после перезагрузки:

#!/bin/sh -e
su console-user -c "tightvncserver -rfbport 5900 -nolisten tcp -nevershared -dontdisconnect -geometry 1280x720 -ac -desktop "VNC Connect" -logo -p 5"
exit 0

е) Выполнить команды «chown root /etc/rc.local» и «chmod 755 /etc/rc.local»

ж) Установить, перезагрузить и затем подключиться с помощью «TigerVNC Viewer».

4. Конфигурирование ОС

4.1. Русский интерфейс

Для включения русского языка откройте «Меню/Параметры/Настройки LXQt/Системные настройки LXQt/Локаль» и выберите «Россия - русский (ru_RU)».

4.2. Дата и время

Для настройки синхронизации времени необходимо установить в Интернет «apt-get install ntp». Для региона «Красноярск» необходимо набрать «dpkg-reconfigure tzdata» и выбрать город.

Старая версия инструкции на Windows


Печать