Pine A64+ – 64-битный одноплатный ПК с широкими возможностями. Подробно о характеристиках можно почитать на их сайте. Из того, что мне лично нравится, это наличие отдельного порта для подключения литиевой батареи*, HDMI-выхода**, полноценных USB-портов (хотя и стандарта 2.0), 1Gbps Ethernet, портов для LCD (touch screen) и камеры. К сожалению, плата не очень компактная, но на ней можно построить неплохой медиа-центр, например. Это, конечно, если у вас не суперсовременный телевизор, который все это умеет и сам.
Не так давно я узнал, что на Pine можно установить… FreeBSD. На то время была одна или две сборки, но у меня не получилось их завести, устройство не реагировало при включении. Недавно я решил повторить эксперимент и узнал, почему у меня не получалось раньше.
Оказывается, FreeBSD на PINE A64+ работает только в т.н. headless-режиме, в виду отсутствия драйверов для HDMI. При этом загрузить и настроить систему можно используя UART.
Для FreeBSD на PINE A64+ пригодитсяUSB-TTL адаптер. А для Малинки – LCD экран и клавиатура. Для начала нужно прошить карту любым удобным способом. Образ я взял отсюда. На адаптере нужно поставить перемычку на 3.3В, и подключить к Pine64 по схеме TX->RX, RX->TX и GND->GND. Выходы UART:
Затем нужно вставить адаптер, уже подключенный к плате, в ПК или ноутбук, запустить PuTTY, выбрать подключение Serial, указать COM-порт (в моем случае система определила адаптер на порту COM3), прописать скорость подключения (115200) и открыть соединение. После подачи питания на плату будет виден весь процесс загрузки ОС FreeBSD. Когда ОС загрузится, можно залогиниться, логин/пароль на образе — root/root.
/!\ Нужно учесть, что соединение через UART не самое стабильное, при прописывании конфигов нужно все тщательно проверять, а ключи для SSH (если настраиваете доступ по ключам) желательно заливать по SSH или залогиниться на одноплатник по SSH и уже в таком режиме копипастить.
Чип WiFi, который используется на Малинке, не поддерживается в FreeBSD, а Pine64 вообще без встроенного контроллера, поэтому нужен еще какой-нибудь USB-свисток, например Edimax EW-7811UN .
Для работы свистка в /boot/loader.conf нужно прописать:
9 | legal.realtek.license_ack=1 |
Далее нужно сгенерировать файл для вашей WiFi сети:
07 | psk=4f516665cfedc80c77fb125e3df72a9da6f00ce75b7b29803f2eb6324c91ceba |
В /etc/rc.conf нужно дописать:
2 | ifconfig_wlan0= "ssid NETWORK WPA DHCP" |
Все, сеть уже можно поднять:
Для полного счастья, можно настроить доступ на одноплатник по ключам изменив /etc/ssh/sshd_config:
05 | PubkeyAuthentication yes |
06 | AuthorizedKeysFile . ssh /authorized_keys |
07 | PasswordAuthentication no |
08 | PermitEmptyPasswords no |
11 | ClientAliveInterval 100000 |
13 | Subsystem sftp /usr/libexec/ sftp -server |
Если планируется доступ извне (например, пробросив порты через маршрутизатор), то можно еще настроить белый список в фаерволе, чтобы скрипткиддисы и боты не ломились с подбором паролей.
Далее можно запустить ssh-keygen, чтобы сгенерировался ключ и автоматически создался каталог .ssh, или создать каталог .ssh вручную. В нем нужно создать файл authorized_keys, в целом права на каталог и файл должны быть следующими:
3 | drwx------ 2 root wheel 512 23 тра 16:29 ./ |
4 | drwxr-xr-x 57 root wheel 8192 26 тра 09:25 ../ |
5 | -rw------- 1 root wheel 4345 1 гру 06:10 authorized_keys |
В authorized_keys нужно скопировать содержимое *pub-ключа(ей).
N.B. Если в качестве редактора вы используете ee, то он сам добавит в файл переводы строки, если mc (Midnight Commander), то нужно в конце файла добавлять перевод строки (нажать Энтер). Это нужно делать при добавлении задач крон и редактировании конфигов.
К Малинке можно даже жесткий диск подключить, я купил специальную плату, но пока не пробовал подключать.
*Ложкой дегтя является переключатель между питанием от батареи и от сети. В C.H.I.P. (R.I.P. :(), например, реализовано по-другому, там есть порт для батареи, подключил и забыл, подал питание на USB – питается от сети, пропало питание – от батареи, есть сеть – батарея заряжается. Все просто. У Pine все как-то витиевато. К тому же документация крайне спартанская.
** HDMI пока что поддерживается только на линупсах/ведроиде, увы.