Raspberry Pi и Go

Сегодня я хочу описать процесс установки и настройки перспективного, на мой взгляд, языка Go на микрокомпьютер Raspberry Pi с операционной системой Raspbian.


Почему Go?

После долгих скитаний и эксперементов с разными языками, более-менее применимыми к решению стандартных задач Raspeberry Pi, я пришёл к выводу, что Go идеален для маломощных процессоров. Он не такой тормозной как интерпритируемые языки (Ruby, Python), и не такой сложный в освоении как нативные (C, C++). После компиляции, на выходе получается компактный и шустрый бинарник. В добавок ко всему есть куча примеров с работой на Raspberry, что тоже довольно вадно.


Подготовка Raspberry Pi

Для начала увеличим оперативную память, доступную Raspbian. Вообще говоря, это не обязательно, но, возможно, вам не хватит паямяти, что сильно замедлит работу малинки.

Изменим параметры разделения RAM и ведео - памяти:

sudo raspi-config

В появившемся меню выберем пункт:

Change memory split

В подменю неоходимо выбрать пункт с минимальной видео и максимальной RAM - памятью. В моём случае - 16 и 240 MB.

Теперь добавим немного SWAP'a:

sudo dd if=/dev/zero of=/import/nas/swap bs=1024 count=1048576
>> 1048576+0 records in
>> 1048576+0 records out
>> 1073741824 bytes (1.1 GB) copied, 136.045 s, 7.9 MB/s
sudo losetup /dev/loop0 /import/nas/swap
sudo mkswap /dev/loop0
>> Setting up swapspace version 1, size = 1048572 KiB
>> no label, UUID=7ba9443d-c64c-416f-9931-39e3e2decf0f
sudo swapon /dev/loop0
free -m
>>              total used free shared buffers cached
>> Mem:           232   78  153      0       0     24
>> -/+ buffers/cache:   52  179
>> Swap:         1123   15 1108

Установка Go

Установим необходимые зависимости:

sudo apt-get install -y mercurial gcc libc6-dev

Склоним репозиторий с кодом:

hg clone -u default https://code.google.com/p/go $HOME/go
>> warning: code.google.com certificate with fingerprint 9f:af:b9:ce:b5:10:97:c0:5d:16:90:11:63:78:fa:2f:37:f4:96:79 not verified (check hostfingerprints or web.cacerts config setting)
>> destination directory: go
>> requesting all changes
>> adding changesets
>> adding manifests
>> adding file changes
>> added 14430 changesets with 52478 changes to 7406 files (+5 heads)
>> updating to branch default
>> 3520 files updated, 0 files merged, 0 files removed, 0 files unresolved

Последний шаг - собираем Go:

cd $HOME/go/src
./all.bash

Это будет проходить довольно долго. У меня это заняло 2 с лишним часа.

Если в процессе тестирования произойдёт ошибка нехватки памяти, то можно собрать Go, без тестирования коммандой:

cd $HOME/go
./make.bash

Готово! Добавим Go в переменную окружения:

export PATH=$PATH:$HOME/go/bin

Теперь можно использовать Go на Raspberry!


30.04.2015
Обсуждение недоступно