FreeBSD 12-CURRENT на PINE A64+ или Raspberry Pi 3

Автор: | 26 мая 2018

PINE A64

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:

Pine64 UART

Затем нужно вставить адаптер, уже подключенный к плате, в ПК или ноутбук, запустить PuTTY, выбрать подключение Serial, указать COM-порт (в моем случае система определила адаптер на порту COM3), прописать скорость подключения (115200) и открыть соединение. После подачи питания на плату будет виден весь процесс загрузки ОС FreeBSD. Когда ОС загрузится, можно залогиниться, логин/пароль на образе — root/root.

/!\ Нужно учесть, что соединение через UART не самое стабильное, при прописывании конфигов нужно все тщательно проверять, а ключи для SSH (если настраиваете доступ по ключам) желательно заливать по SSH или залогиниться на одноплатник по SSH и уже в таком режиме копипастить.

Чип WiFi, который используется на Малинке, не поддерживается в FreeBSD, а Pine64 вообще без встроенного контроллера, поэтому нужен еще какой-нибудь USB-свисток, например Edimax EW-7811UN .

Для работы свистка в /boot/loader.conf нужно прописать:

wlan_load="YES"
rtwn_load="YES"
if_rtwn_pci_load="YES"
if_rtwn_usb_load="YES"
wlan_amrr_load="YES"
wlan_wep_load="YES"
wlan_ccmp_lod="YES"
wlan_tkip_load="YES"
legal.realtek.license_ack=1

Далее нужно сгенерировать файл для вашей WiFi сети:

root@generic:~# wpa_passphrase NETWORK PASSWORD > /etc/wpa_supplicant.conf

root@generic:~ # cat /etc/wpa_supplicant.conf
network={
        ssid="NETWORK"
        #psk="PASSWORD"
        psk=4f516665cfedc80c77fb125e3df72a9da6f00ce75b7b29803f2eb6324c91ceba
}

# NETWORK нужно заменить на имя вашей сети, а PASSWORD - на пароль.
# если вы параноик, #psk="PASSWORD" можно удалить из конфига

В /etc/rc.conf нужно дописать:

wlans_rtwn0="wlan0"
ifconfig_wlan0="ssid NETWORK WPA DHCP"
# где NETWORK - имя WiFi сети

Все, сеть уже можно поднять:

service netif restart

Для полного счастья, можно настроить доступ на одноплатник по ключам изменив /etc/ssh/sshd_config:

Port 22 # здесь я бы порекомендовал использовать что-то другое, 2255, например
Protocol 2
PermitRootLogin yes
MaxAuthTries 6
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM yes
TCPKeepAlive yes
ClientAliveInterval 100000
UseDNS no
Subsystem       sftp    /usr/libexec/sftp-server
AllowUsers root

Если планируется доступ извне (например, пробросив порты через маршрутизатор), то можно еще настроить белый список в фаерволе, чтобы скрипткиддисы и боты не ломились с подбором паролей.

Далее можно запустить ssh-keygen, чтобы сгенерировался ключ и автоматически создался каталог .ssh, или создать каталог .ssh вручную. В нем нужно создать файл authorized_keys, в целом права на каталог и файл должны быть следующими:

 ~ ~> ls -la .ssh/
total 54
drwx------   2 root  wheel    512 23 тра 16:29 ./
drwxr-xr-x  57 root  wheel   8192 26 тра 09:25 ../
-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 пока что поддерживается только на линупсах/ведроиде, увы.

Добавить комментарий