понедельник, 7 декабря 2015 г.

Banana-Pi установка FreeBSD

Образы FreeBSD под плату Banana-Pi доступны по следующим ссылкам:

http://raspbsd.org/bananapi.html

http://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0/

Скачанный и разархивированый образ записывается на SD карту с помощью утилиты "Win32 Disk Imager" в Windows(запускать утилиту нужно с правами администратора), либо с помощью утилиты dd в Linux. После загрузки с SD карты доступ в консоль  пользователь root без пароля.

В моем случае после загрузки получил "радужный экран(rainbow screen)", плата не реагировала на нажатия клавиш клавиатуры, так же плата не получала ip-адрес с DHCP сервера, позже выяснилось что было неверно указано имя сетевого девайса в rc.conf.


Чтобы победить данную ситуацию решил подключиться к последовательной консоли(serial console) с помощью USB-TTL переходника.
Использовался самый дешевый на микросхеме PL2303. Вот такой.



На плате подключал к ножкам GPIO J12.


Подключается:

GND / GND
RXD / TXD
TXD / RXD

В некоторых мануалах указывается что питание подключать не следует(т.к существует вероятность спалить плату Banana-Pi), в моем случае переходник не работал пока не была подключена ножка на 3,3V. Драйвер для данного переходника здесь, мануал по плате Banana-Pi здесь.

Из под Windows подключаемся с помощью PuTTY. Определяем с каким именем определился переходник(в моем случае COM4).


Затем в PuTTY выставляем параметры подключения, включаем Banana-Pi и подключаемся.




Видим загрузку девайса.


Из под Linux можно подключится с помощью утилиты screen. С помощью dmesg определяем с каким именем определился переходник(у меня ttyUSB0), и подключаемся.

# sudo screen /dev/ttyUSB0 115200

Как я указывал выше отличалось имя сетевого девайса прописанное в rc.conf и имеющегося в системе.

root@bananapi:/etc # ifconfig 
dwc0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80008<VLAN_MTU,LINKSTATE>
        ether 02:97:03:c2:fb:72
        media: Ethernet autoselect (none)
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 
        inet 127.0.0.1 netmask 0xff000000 
        groups: lo 
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>




root@bananapi:/etc # cat /etc/rc.conf 
hostname="bananapi"
ifconfig_emac0="DHCP"
sshd_enable="YES"

# If the SD card has more than 7G free, drop
# a 768M swap file on it the first time we boot.
#makeswapfile_enable="YES"
#makeswapfile_minfreeblocks=14000000
#makeswapfile_swapsize_mb=768

# Nice if you have a network, else annoying.
#ntpd_enable="YES"
#ntpd_sync_on_start="YES"

# Uncomment to disable common services (more memory)
#cron_enable="NO"
#syslogd_enable="NO"

sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
# On first boot, enlarge the root filesystem to fill the SD card
growfs_enable="YES"


Меняем "emac0" на "dwc0", задаем пароль пользователю root, перезагружаемся и подключаемся по сети.