Raspberry Pi: подробная настройка с нуля до TorrentBox

в 10:49, , рубрики: home server, Raspberry, Raspberry Pi, raspbian, Гаджеты. Устройства для гиков, мини-компьютер, метки: , , , ,

Прелюдия

Я давно следил на ХабраХабр за проектом Raspberry Pi и твердо решил заполучить свой мини-компьютер. Когда начался предзаказ, я воспользовался им практически сразу, однако только 17 июня 2012 года мне на Email пришло сообщение от RSComponents.Com о возможности заказа моего экземпляра Raspberry Pi. Итого прошло около месяца с момента предзаказа.

В этот же день я создал заказ (кстати, в то время уже можно было заказать «официально» в Российскую Федерацию) и стал ждать свою «малину». Информационное письмо обещало отгрузку в течение максимум 6 недель, но в этот срок я так и не получил свою плату. Во время звонка в московское представительство RS, менеджер фирма дал понять, что поставки скоро будут, но когда — неизвестно.

17 августа мне на email пришло сообщение от сотрудницы Московского RS, что моя плата доставлена в офис и ее можно забирать (т.к. заказать из RS с доставкой на дом нельзя, потому что DHL не доставляет посылки частным лицам). Собственно говоря, в этот же день я и получил свой компьютер Raspberry Pi!

Raspberry Pi: подробная настройка с нуля до TorrentBox

Весь необходимый набор комплектующих был куплен мною заранее. Я использовал:

  • 4Gb Class6 SD-карту от Transcend
  • NoName usb-зарядник на 1А с MicroUSB кабелем
  • HDMI кабель Hama
  • Ethernet-кабель

В качестве клавиатуры и мыши я использовал свой рабочий USB-Reciever Unifying от Logitech. Подключил Raspberry к монитору с помощью HDMI-DVI кабеля.

Raspberry Pi: подробная настройка с нуля до TorrentBox

Действо первое. Установка ОС.

В качестве ОС для Raspberry была выбрана Raspbian (как я понял из форумов, практически все сборки сделаны на основе Debian, поэтому выбор, на мой неискушенный взгляд, не особо богат). Данная ОС широко описана в интернете, а также оптимизирована специально для RPi.
Образ ОС можно скачать с официального сайта: 2012-07-15-wheezy-raspbian.zip. Образ заархивирован в ZIP, сам имеет расширение IMG. Его необходимо разархивировать.
Также, потребуется утилита Win32DiskImager, запустить которую необходимо с правами администратора.

Устанавливаем вашу SD карту в кард-ридер, смотрим в Проводнике, какую букву она получила в системе (чтобы ненароком не затереть данные на другом носителе).
В программе Win32DiskImager выбираем скачанный ранее образ Raspbian, выбираем нужную букву носителя и жмем Write. На предложенное предостережение отвечаем “Yes”.
Пойдет процесс заливки ОС на карту и разбиения ее на разделы:

Raspberry Pi: подробная настройка с нуля до TorrentBox

Процесс закончится сообщением об успехе:

Raspberry Pi: подробная настройка с нуля до TorrentBox

Теперь необходимо немного подредактировать файл config.txt в корне карты памяти – это конфигурационный файл системы для Raspberry Pi. Обратите внимание, что приведенные мною настройки актуальны для ЖК мониторов с расширением 1920*1080.

Следует раскомментировать параметр disable_overscan=1 (если Вы не планируете использовать RCA выход).
Советую также установить фиксированное расширение, для этого раскомметруйте строки hdmi_group и hdmi_mode. Значение параметра hdmi_mode следует изменить в соответствии с таблицей, которая приведена тут (также, по этой ссылке приведены другие параметры, которые, возможно, будут Вам полезны). Например, для монитора с расширением 1920*1080 следует написать hdmi_mode=16.

Не забываем сохранить изменения, отсоединяем SD-карту и вставляем ее в Raspberry Pi.
Подключаем к плате питание и видим на мониторе процесс загрузки, который нас (во всяком случае — пока) мало интересует. Наблюдаем радостное мигание лампочек Raspberry Pi:

Raspberry Pi: подробная настройка с нуля до TorrentBox

При первой загрузке автоматически будет запущена программа настройки системы raspi_config:

Raspberry Pi: подробная настройка с нуля до TorrentBox

  1. Выполняем команду expand_rootfs, которая расширит root раздел на всю SD-карту.
  2. Входим в раздел configure_keyboard и устанавливаем наиболее подходящий тип клавиатуры. Я выбрал Logitech Cordless Desktop
  3. Затем, входим в раздел change_pass устанавливаем новый пароль для пользователя pi (обратите внимание, что вводимые символы не отображаются вообще, даже в виде звездочек!).
  4. Устанавливаем дополнительные локали с помощью пункта change_locale (я не стал этого делать и оставил единственную локаль по умолчанию — en_GB UTF8).
  5. Устанавливаем часовой пояс (set_timezone). Например, если Вы живете в Москве, необходимо найти пункт Europe, а в нем — Moscow
  6. Memory_split устанавливаем в соотвествии с собственным желанием, рекомендую отвести под video – 32Mb, если планируете пользоваться графическим интерфейсом.
  7. Обязательно активируем ssh!
  8. Если хотим, чтобы при загрузке Raspbian автоматически запускалась графическая среда – активируем опцию boot_behaviour.

В конце нажимаем [CTRL]+[F] и выбираем пункт Finish, соглашаясь на перезагрузку устройства.

Когда перезагрузка будет завершена, Вы увидите приглашение на ввод имени пользователя и пароля. Имя пользователя — pi, пароль Вы установили во время настройки системы Raspbian.

На этом установка и первичная настройка системы завершена!

Данная часть будет интересна тем, кто особо не знаком с Linux (как был и я).

Действо второе. Установка вебсервера и настройка Samba.

Не забывайте, что если Ваш Raspberry подключен в сеть, то можно использовать SSH доступ, что во много раз удобнее.

Установка Web-сервера:

Устанавливаем MySQL:

sudo apt-get install mysql-server mysql-client

Когда запросит установить пароль для root – укажите любой пароль, который Вы запомните.

Устанавливаем Lighttpd:

sudo apt-get install lighttpd

С этого момента Rpi будет откликаться тестовой страницей, если набрать ее IP адрес в браузере любого компьютера в сети!

Устанавливаем PHP5:

sudo apt-get install php5-cgi

Теперь необходимо активировать PHP в настройках сервера. Открываем файл в редакторе nano:

sudo nano /etc/lighttpd/lighttpd.conf

Пункт server_modules должен выглядеть вот так:

server.modules = (
	    "mod_access",
        "mod_fastcgi",
	    "mod_alias",
	    "mod_compress",
 	"mod_redirect",
        "mod_rewrite",
)

А в самый конец файла добавьте вот это:

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php5-cgi",
                     "socket" => "/tmp/php.socket"
                 )))

Сохраняем, нажав [CTRL]+[X], [Y] и [Enter].

Осталось отредактировать файл конфигурации PHP5:

sudo nano /etc/php5/cgi/php.ini

Находим и раскоментируем (удаляем символ ";") строку cgi.fix_pathinfo = 1. Сохраняем файл.

После всего проделанного, можно перезагрузить Raspberry, выполнив команду:

sudo reboot
Установка и настройка Samba

Установим Samba:

sudo apt-get install samba samba-common-bin

Так как моя Rpi находится в домашней сети, я решил не устанавливать пароль на доступ к папкам, а просто настроил публичный шаринг для всей сети.
Для этого открываем файл smb.conf:

sudo nano /etc/samba/smb.conf

Вместо всего имеющегося содержимого пишем:

[global]
workgroup = WORKGROUP
guest ok = yes
netbios name = Raspberry
security = share
browseable = yes

[www]
path = /var/www
writeable = yes
browseable = yes

Сохраняем. Перезапускаем Samba:

sudo /etc/init.d/samba restart

С этого момента в вашей сети появилось новое устройство RASPBERRY, которое имеет папку www.
В ней Вы можете создать любые файлы, которые будут доступны при доступе к Raspberry через браузер по ее IP адресу.

Кстати! Гораздо удобнее управлять шарингом файлов и папок с помощь программы SWAT, которая предоставляет веб-интерфейс.
Установить ее очень просто:

sudo apt-get install swat

Панель управления SWAT будет расположена по адресу: http://[IP-устройства]:901

Действо третье. Монтирование носителя файлов.

В качестве носителя я решил использовать обычную флэшку, которую подключил в один из USB портов Raspberry Pi. При желании можно подключить к Rpi и внешний жесткий диск, однако надо будет организовать для него отдельное питание, так как USB порты платы на такие нагрузки не рассчитаны и, в лучшем случае, жесткий диск просто не «заведется». Мне же объема флэшки (16Гб) должно вполне хватить.

Подключаем носитель и выполняем команду:

sudo fdisk -l

Команда покажет все устройства, которые подключены к нашему устройству. Ищем в списке нужное устройство по его объему. Например, у меня нужная строка выглядит вот так:

Disk /dev/sda: 16.0 GB, 16013852672 bytes

Искомый путь к устройству — /dev/sda, запомните его!

Запускаем fdisk для форматирования носителя:

sudo fdisk /dev/sda

Вначале удаляем существующие разделы командой d (выбираем нужные разделы цифрами), затем создаем новый с помощью команды n (все значения принимаем по умолчанию), сохраняем проделанную работу с помощью команды w.

Создаем файловую систему ext2 на носителе:

sudo mkfs -t ext2 /dev/sda1

Монтируем:

sudo mount -t ext2 /dev/sda1

Теперь необходимо обеспечить автоматическое монтирование носителя при каждой загрузке Raspbian. Для этого создаем папку:

sudo mkdir /mnt/flash

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

sudo nano /etc/fstab

и добавляем в него строку:

/dev/sda1       /mnt/flash      ext2    defaults          0       0

Сохраняем и перезагружаем устройство. При загрузке носитель должен автоматически примонтироваться, что можно проверить командой:

df

Она выведет список примонтированных устройств с указанием точек их монтирования.

Кстати! Рекомендую установить также файловый менеджер Midnight Commander для работы с файлами через консоль:

sudo apt-get install mc

Если Вы пользуетесь Putty для работы с SSH, то для корректной работы MC Вам необходимо сделать настройку. В настройках Putty установите значение Remote character set в разделе Translation на «UTF-8»:

Raspberry Pi: подробная настройка с нуля до TorrentBox

Действо четвертое. Установка Transmission и настройка закачек

Мы подобрались к цели данного топика — установке и настройке Torrent-клиента на нашем устройстве. Я остановил свой выбор на Transmission.

Устанавливаем Transmission:

sudo apt-get install transmission-daemon

Создаем директорию для закачек, для неоконченных закачек и для торрентов на подключенном носителе и даем права на запись:

sudo mkdir /mnt/flash/torrent
sudo mkdir /mnt/flash/torrentfiles
sudo mkdir /mnt/flash/incomplete
sudo chmod 777 /mnt/flash/torrent
sudo chmod 777 /mnt/flash/torrentfiles
sudo chmod 777 /mnt/flash/incomplete

Редактируем настройки:

sudo nano /etc/transmission-daemon/settings.json

Здесь необходимо поменять на указанные значения следующие параметры:

"cache-size-mb": 2;
"download-dir": "/mnt/flash/torrent",
"incomplete-dir": "/mnt/flash/incomplete", 
"preallocation": 2, 
"rpc-password": "любой удобный вам пароль (при перезапуске демона будет зашифрован)", 
"rpc-username": "pi", 
"rpc-whitelist-enabled": false, 
"speed-limit-down": 3000, 
"speed-limit-up": 1000, 

К сожалению на высоких скоростях скачивания и отдачи Raspberry начинает очень сильно тормозить, поэтому экспериментальным путем были выявлены те ограничения, которые Вы видите в настройках выше.

Перезапускаем Transmission командой:

sudo /etc/ini.d/transmission-daemon restart

С этого момента у Вас установлен рабочий Torrent-клиент, веб-панель управления которым доступна по адресу: http://[ip-устройства]:9091, логин pi, пароль Вы установили в конфигурационном файле.

Не забудьте также добавить папку /mnt/flast/torrent в сетевую шару через Samba, чтобы скачанные файлы можно было смотреть на других устройствах, например, на Вашем медиаплеере:

Raspberry Pi: подробная настройка с нуля до TorrentBox

Стоит отметить, что с отдачей файлов по сети Raspberry Pi, на мой взгляд, справляется отлично — при копировании файла с Raspberry Pi на компьютер, максимальная скорость достигла 7Мб/сек, что практически соответствует максимальной скорости чтения для использованной флэшки.

Эпилог

На этом моя статья заканчивается. Raspberry Pi обеспечила огромный толчок в моем изучении многих аспектов работы с OC Linux. В планах есть еще много задумок, касающихся Raspberry Pi, которые я постараюсь реализовать и описать в моих дальнейших статьях.

Буду рад замечаниям об ошибках от более опытных пользователей!

Автор: artyums

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js