Pull to refresh

Выжать все соки или используем Raspberry pi на всю катушку

Reading time 11 min
Views 265K
Всем привет!

Долой унылые речи о том, что это мой первый пост и все такое. Пожалуй лучше я расскажу о том, как выжать все соки из маленькой малютки под названием Raspberry PI (далее RPI), ценой $ 35. Я уверен на 146,6% что здесь уже были посты подобного рода, и этот пост не претендует на твердую пять. Скорее это просто вступительное слово о том: «Как я занял себя делом на пару унылых вечеров». Собственно мы получим в итоге Raspberry PI который можно использовать:
  1. как домашний web-сервер (если ты какой-нибудь PHP-разработчик, и тебе не чуждо веселье);
  2. как мультимедийную приставку с популярным XBMC Media Center (или супер-пупер-крутую-шняжку к телевизору за скромные 1800$);
  3. и как ночную торрент качалку, с web-интерфейсом (для ленивых);

Для тех кому стало интересно прошу под кат (Внимание! Трафик).

Подготовка


Итак, что для всего этого понадобится:
  1. Raspberry PI model B
  2. SD карта на 8GB, скорость должна быть высокой. (Подойдут 6 и 10 класс)
  3. USB Flash карта, для того, что бы не забивать и без того малую память SD карты фильмами которые ты захочешь посмотреть
  4. HDMI или SCART-RCA кабель
  5. Блок питания, подойдет любой мини-USB зарядник с выходом 5 В и током до 2А, с MicroUSB выходом или MicroUSB переходник для подключения к компьютеру
  6. Немного свободного времени
  7. Прямые руки (во всяком случае мне они точно понадобились)

Фото моей модели



Так же нам понадобятся некоторые программы, PUTTY, WinSCP, XMing. Итак, нам необходимо что бы все что мы задумали работало без выключения/перезагрузки RPI, следовательно сборки типа OpenELEC, RaspBMC, XBian можно исключить. Нам нужно что бы XBMC был «внутри» нашей ОС, как плеер, так что мы сделаем что-то подобное. Мы будем использовать Raspbian. Скачать можно с оф. сайта

Дальше все просто. Разархивируем скачанное, подключаем SD карту к компьютеру, далее нам понадобится программа Win32DiskImager. Устанавливаем, запускаем. Указываем путь к .img файлу с ОС на борту, далее в поле «Device» выбираем из списка носителей нашу SD карту и нажимаем «Write». После в появившемся диалоговом окне выбираем «Yes» и готовимся к первому запуску RPI.

Для работы RPI нам нужен телевизор с HDMI выходом, но на крайний случай можно обойтись и обычным. Для этого нам понадобится вместо HDMI кабеля SCART-RCA кабель и обычные USB колонки со своим питанием! Думаю понятно что и куда нужно втыкать. Если все прошло как-по-маслу, мы увидим окно с настройками нашей ОС.

Пункты меню с подробным описанием и фото


Expand filesystem — Расширить основной раздел на всю SD карту.
Change User Password — Установка пароля для пользователя «pi» (по умолчанию пароль «raspberry»). Пароль нужно ввести два раза!
Enable Boot to Desktop — Загружать/не загружать графический интерфейс при запуске. Отключаем, т.к. нам он не нужен, а включить можно командой startx. После выбора есть еще 2 пункта: первая строка — загружать, вторая строка — не загружать (есть ещё третья строка, но в данной статье она нам не интересна).
Internationalisation Options — Выбор месторасположения и языка, есть 3 пункта:
  • Change Locale — Выбор языка, выбираем «ru_RU.UTF-8 UTF-8».
  • Change Timezone — Выбор часового пояса, выбираем свой.
  • Change Keyboard Layout — Настройки клавиатуры. Оставляем все как есть.
Enable Camera — Включить поддержку камеры. Нам это не нужно, не сегодня точно.
Add to Rastrack — Регистрация устройства в общей базе. Пропускаем.
Overclock — Разгон процессора. По умолчанию установлена частота 700МГц, можно повысить до 1000МГц. Raspberry Pi теперь можно официально разогнать до 1 ГГц и не потерять гарантию (клик!). Ставим 1000МГц, это даст нам производительности при работе с XBMC.
Advanced Options — Дополнительные настройки. Есть след. пункты:
  • Overscan — Если у вас по краю изображения имеется широкая чёрная полоса, то необходимо выключить этот режим.
  • Hostname — Сетевое имя RPI. Оставляем по-умолчанию.
  • Memoy Split — Выделение видеопамяти для работы графического процессора. Ставим 128.
  • SSH — Доступ по SSH. Включаем, т.к. далее все будем настраивать по SSH. У меня появились некоторые ошибки.
    Initial ssh key generation still running. Please wait and try again.
    Лечится простыми действиями после перезагрузки:
    sudo rm /var/log/regen_ssh_keys.log
    sudo rm /etc/ssh/ssh_host*
    sudo ssh-keygen -A
  • Update — Обновление ОС. Для этого необходим доступ в интернет.
  • About raspi-config — Пропускаем, не интересно.

Теперь нажимаем TAB, выбираем FINISH.

После перезагрузки вводим логин pi и пароль который вы сделали (по умолчанию raspberry). Рекомендую сразу поменять рутовый пароль:

sudo passwd root

Настройка доступа по SSH к файловой системе RPI (из Windows)


Первым делом скачиваем WinSCP. Устанавливаем, настраиваем.
В поле host name вводим ip адрес RPI, у меня 192.168.1.100 (узнать можно с помощью Advanced IP Scaner, либо через роутер, думаю не стоит подробно объяснять как это сделать). В поле user name и password указываем данные для авторизации. Лучше всего пользоваться root'ом, далее Save. Далее все просто, указываем название, жмем чекбокс и OK. Все, теперь мы готовы приступить к следующему шагу.

Xming: X-Server для Windows


Собственно след. шагом будет установка X-Ming. Он нам нужен скорее для мониторинга, ну и это облегчит нам жизнь в будущем, так как мы поставим Conky для мониторинга и MySqlWorkbench для администрирования БД(но это скорее просто прихоть) на RPI. Тем кому это не нужно, могут смело идти к следующему шагу.
Скачиваем, устанавливаем. Параметры установки:

галка Non US keyboard Support
галка XLaunnch wizard
галка Run Unility
Normal PuTTY Link SSH client

В свойствах ярлыка XMing прописываем путь_до_программы\Xming.exe :10 -clipboard -multiwindow
После этого врубаем и можно смело подключаться к RPI посредством SSH, главное напомнить вашему SSH клиенту использовать X-11 Forwarding.

В PuTTY заходим в Connections -> SSH -> X11 -> Включаем X11 Forwarding
X display location — localhost:10.0
Remote X11 authentification protocol — XDM-Authorization-1
Затем сами настройки сессии (Sessions)
HostName (or IP address) — 192.168.1.100 (ваш ip RPI) port 22
Connection type — SSH -> Жмем Save и подключаемся. Запускаем терминал и…

pi@raspberrypi ~ $ lxterminal&
[1] 2997
pi@raspberrypi ~ $

Вуаля

Установка XBMC на Raspberry Pi под Raspbian


Все приготовления закончены и я думаю мы подошли к главному. Лирическое отступление. До того как я решил сделать так как мы сделаем, я ставил себе и OpenELEC и RaspBMC. Мне это не подошло, потому что приходилось перезагружать RPI что бы запустить или Raspbian или XBMC (В случае с OpenELEC), а с RaspBMC я не смог даже близко сделать что то подобное. Хотя может и найдутся умельцы которые скажут что я дурак, и все такое. Идем дальше. Описание сего процесса не моё, нашлись умельцы которые изобрели колесо за нас, я просто применил на практике. По порядку:

cd /etc/apt/sources.list.d/

deb http://archive.mene.za.net/raspbian wheezy contrib
CTRL + X -> Y -> Enter

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED

sudo apt-get update

sudo apt-get install xbmc

Добавляем пользователя из под которого планируется запускать XBMC в следующие группы (audio video input dialout plugdev tty) командой:

sudo usermod -a -G имя_группы пользователь

Затем, меняем настройки группы input командой:

sudo nano /etc/udev/rules.d/99-input.rules

В файле должно быть:

SUBSYSTEM=="input", GROUP="input", MODE="0660"
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660"

Запускать XBMC командой:

xbmc-standalone

Дождаться загрузки и profit!

Клик!


Это уже настроенный XBMC с уже установленными плагинами, список я приведу ниже.

Если необходимо сделать Автостарт XBMC то нужно редактировать /etc/default/xbmc и изменить ENABLED to 1:

ENABLED=1

Плагины которые стоят у меня:
— repository.superrepo.org.frodo.al — Огромное количество всяких дополнений к XBMC
— repository.seppius — Русский репозиторий, с дополнениями «наших» сайтов на подобии LostFilm и Seasonvar и не только. Можно найти на любой вкус
— repository.oneevil — Сервис аддон ACEStream для XBMC и Аддон Torrenter в этом репозитории
— repository.nuismons — TSengine api
— plugin.watch.is.latest — Плагин для сайта watch.is (Сайт по приглашениям!!)
— plugin.video.torrenter.1.1.5.5 — Плагин для потокового воспроизведения торрент фильмов, скажем так.
Так же нужно установить libTorrent, для того что бы стримить фильмы с LostFilm:

sudo apt-get install python-libtorrent

Все эти плагины можно спокойно найти в интернете, вдаваться в подробности настройки и установки я не буду.
Что бы заработали скреперы — необходимо в настройках TheMovieDB использовать не TMDB а IMDB. Не понял почему так, но после смены у меня заработали скреперы на поиске некоторых русских фильмов, однако некоторые все еще найти не может.

Клик!



Установка Conky


Он нам нужен для мониторинга за температурой, загрузкой CPU и тд. По порядку:

sudo apt-get install conky

Затем создаем файл .conkyrc командой:

sudo nano .conkyrc

и вставляем туда:

alignment top_left
background no
border_width 1
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
double_buffer yes
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
use_xft yes
xftfont DejaVu Sans Mono:size=12
gap_x 5
gap_y 60
minimum_size 5 5
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no
own_window yes
own_window_class Conky
own_window_type desktop
stippled_borders 0
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color red}Temp: $color ${alignr 4}${color red}${acpitemp}°С$color
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}

Запускать командой:

conky

Все настройки можно найти в интернете и настроить «на свой вкус».

Клик!

Установка и настройка WebServer-а Apache2.2, php5, mysql, phpmyadmin, mysql-workbench


Просьба за данный пункт сильно не бить. Это не инструкция "как это должно быть", это инструкция "как это работает у меня", конструктивная критика по делу приветствуется, если будут какие-либо дополнения или замечания, приму во внимание, и адаптирую себе для работы.

Перед установкой рекомендую в настройках роутера(на пример, мой ADSL модем 192.168.1.1 — пробросить порты Virtual Rout(Port Forwarding), пробрасываем 80 порт на 80 порт 192.168.1.100(.100 это у меня Raspberry PI))

Итак, поехали. GIT:

sudo apt-get install git

Апач:

sudo apt-get install apache2 apache2-doc libapache2-mod-scgi

Теперь php5 с плюшками:

sudo apt-get install php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5 php5-common php5-curl php5-mysql php-image-graph imagemagick

Ребутим апач:

sudo service apache2 restart

Проверяем. Заходим в браузере на IP_малинки (в моем примере 192.168.1.100). Если появилась надпись «It works!», то я вас поздравляю, если нет — просьба попробовать включить-выключить сначала. Для тех кто не пробрасывал порты, можно проверить прямо с RPI. Для этого цепляется через SSH и запускаем браузер:

midori&

Затем вводим localhost/ или localhost/apache2-default. Если появилась надпись «It works!», то я вас поздравляю, если нет — просьба попробовать включить-выключить сначала.

/var/www/ — папочка с вашими сайтами и скриптами.
/etc/php5/ и /etc/apache2/ — тут лежат конфиги php5 и апача.

Далее проверим работоспособность php5, создадим файл test.php:

sudo nano /var/www/phpinfo.php

В него внесем изменения:

<?php
        phpinfo(); 
?>

CTRL + X -> Y -> Enter, заходим по ссылке IP_адрес_малины/test.php (если через RPI то localhost/test.php). Если появилось информация о PHP5 то все хорошо. Далее ставим PHPMyAdmin:

sudo apt-get install phpmyadmin

Что бы получить доступ к phphmyadmin, необходимо в файл /etc/apache2/apache2.conf

sudo nano /etc/apache2/apache2.conf

вписать следующее (необходимо только до версии Squeeze, начиная с версии 6,0 это будет включено в сценарий установки пакета /etc/apache2/conf.d/phpmyadmin.conf -> ../../phpmyadmin/apache.conf автоматически):

Include /etc/phpmyadmin/apache.conf

Перезапускаем апач:

sudo /etc/init.d/apache2 restart

Проверяем, заходим в браузере 192.168.1.100/phpmyadmin (c RPI localhost/phpmyadmin).
Думаю с установкой веб-сервера закончено. Про настройку DNS в bind9 и VIrtual Hosts в апаче будет в другой статье. Скажу еще то, что для себя я поставил так же RhodeCode на RPI и хотел поставить какой нибудь Issue трекер. Выбор пал на YouTrack от JetBrain, но JavaМашина сильно грузит Raspberry, поэтому не стал заморачиваться. Так как я пользуюсь phpstorm — вот небольшое отступление о том Как подружить phpstorm с нашей БД на RPI:
Врубаем PHPStorm заходим в DataBase (кнопка слева) -> new -> DataBase Source

Клик!

Database URL — адрес и порт удаленной машины, а так же имя БД
User — имя пользователя БД
Password — пароль пользователя БД

Клик!

SSH tunnel will be opened on localhost and port — порт обязательно должен быть свободным на машине, с которой нужно подключить phpstorm к mysql на удаленной машине.

Монтируем нашу USB флешку


Втыкаем флешку в RPI, вводим команду:

sudo blkid

Результат:

/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="993B-8922" TYPE="vfat"
/dev/mmcblk0p2: UUID="fc254b57-8fff-4f96-9609-ea202d871acf" TYPE="ext4"
/dev/sda: LABEL="TR16GB" UUID="D29807B898079A5D" TYPE="ntfs"

Смотрим, запоминаем, TR16GB, тип «ntfs», устанавливаем поддержку ntfs:

sudo apt-get install ntfs-3g

Создаем каталог, куда будем монтировать нашу флешку:

sudo mkdir /mount/flash

Открываем файл:

sudo nano /etc/fstab 

Дописываем туда:

"UUID="D29807B898079A5D" /mount/flash ntfs-3g rw,force,exec,users 0 0"

Где UUID, это уникальный id нашей флешки, который мы посмотрели командой sudo blkid в самом начале. Перезагружаем RPI:

sudo reboot

Установка Samba


Приступаем к установке, Обновим на всякий случай все что мы тут натворили:

sudo apt-get update && sudo apt-get upgrade

Установим сервер Samba:

sudo apt-get install samba samba-common-bin

Теперь откроем /etc/samba/smb.conf и вписываем туда:

[global]
workgroup = WORKGROUP
security = share
guest ok = yes
browseable = yes
[flash]
path = /mount/flash
writeable = yes
readonly = no
browseable = yes
guest ok = yes

Где workgroup, это рабочая группа, скорее всего у вас WORKGROUP. Доступ к серверу будет осуществляться без авторизации. Если необходимо что бы при подключении надо было запрашивать пароль, то вместо security = share и guest ok = yes напишите security = user. Нужно так же создать нового пользователя, вводим команду sudo smbpasswd -a [имя], где [имя] — это имя пользователя. Сохраняем конфиг, перезагружаем:

sudo /etc/init.d/samba restart

Я «замапил» себе сетевой диск, для удобства. Можно прямо с компа закидывать фильмы на RPI и смотреть уже на огромном телевизоре, который допустим стоит у вас где-нибудь в гостиной.

Клик!

Установка rTorrent, Screen, RuTorrent


Сначала поставим rTorrent

sudo aptitude install rtorrent

Затем создадим папку на нашей флешке, сюда будем качать наши фильмы:

mkdir /mount/flash/Torrent/

А так же папку, где у нас будет храниться информация о закачках:

mkdir /mount/flash/Torrent/.rt/

Затем переходим в домашнюю папку юзера, под которым будет работать rtorrent, у меня это /home/pi:

cd /home/pi

Тут создаем файл ".rtorrent.rc", это настройки нашего rtorrent:

min_peers = 1
max_peers = 30 
download_rate = 0
upload_rate = 0
directory = /mount/flash/Torrent/
session = /mount/flash/Torrent/.rt/
port_range = 40890-40890
port_random = no
check_hash = yes
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
use_udp_trackers = yes
dht = auto
dht_port = 6881
encoding_list = UTF-8
scgi_port = 127.0.0.1:5000

Описание настроек можно посмотреть здесь. Настроим автозагрузку и установим screen для работы rtorrent в фоне:

sudo aptitude install screen

sudo wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh?format=raw -O /etc/init.d/rtorrent

Отредактируем скрип для корректной работы:

sudo nano /etc/init.d/rtorrent

в строке user="user" пишем user="pi". Сохраняем. Теперь все это дело добавим в автозагрузку и запустим:

sudo chmod 755 /etc/init.d/rtorrent && sudo update-rc.d rtorrent defaults && sudo /etc/init.d/rtorrent start

Настроим апач, включим модули:

sudo a2enmod scgi

Отредактируем файл /etc/apache2/apache2.conf — в самом конце файла нужно добавить строку — "SCGIMount /RPC2 127.0.0.1:5000". Перезапускаем апач:

sudo service apache2 restart

Пришло время ставить web-морду для нашего rtorrent. Я выбрал ruTorrent, т.к. она простенькая и на русском языке. Сначала поставим Subversion:

sudo apt-get install subversion

Теперь загрузим ruTorrent:

cd /var/www/

sudo svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent

Выставим права на папку:

sudo chown -R www-data:www-data ./rutorrent/

Осталось проверить работу нашей web-морды, заходим в браузере ip_адрес_RPI/rutorrent (если с RPI то localhost/rutorrent):

Вуаля

Ну вот вроде и все. Теперь мы имеем готовый к работе RPI, для web-разработчиков, которые в ночь с пятницы на субботу могут поставить качать свой любимый сериал и на следующее утро, лежа на диване смотреть все это дело на огромном телике. Спасибо за внимание.
P.S. Хочу принести извинения за отсутствие некоторых ссылок на сторонние ресурсы, материалом которых я руководствовался т.к. делал я это давно, а опубликовал только сейчас.
Tags:
Hubs:
+40
Comments 34
Comments Comments 34

Articles