суббота, 1 февраля 2014 г.

Raspberry Pi: добавляем немного удобства.



Маленький компьютер при большом телевизоре - это круто, но доступ по сети сделать всё равно надо, да и некоторые другие мелочи добавить не помешает.

Первым делом надо поставить ssh-сервер, чтобы отдать наконец телевизор родственникам, которые уже волком смотрят после длительной установки системы. На для начала надо поставить и настроить sudo. Я делал это так:

su                   # получаем права суперпользователя
apt-get update       # обновляем списки доступных пакетов
apt-get install sudo # установка
nano /etc/sudoers    # редактируем настройки доступа


Я замарачиваться не стал и просто разрешил своему пользователю всё:

radjah  ALL=(ALL:ALL) ALL

Хотя по идее достаточно было просто внести его в группу "sudo", ну да ладно.

Всё. Теперь можно забыть про su до особых случаев, когда sudo уже не поможет.

Итак, ставим ssh.

sudo apt-get install ssh      # Установка пакета
sudo update-rc.d ssh defaults # Прописываем в автозапуск
sudo service ssh restart      # Запуск


Всё. Теперь можно освобождать телевизор и продолжать изучение системы с помощью ssh-клиента на компьютере, например, с помощью PuTTY.

Настройка соединения ничего особенного из себя не представляет, только надо не забыть указать кодировку "UTF-8"



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

Для начала систему нужно научить говорить по-русски. Для этого надо поставить и настроить пакет "locales". Он по идее должен ставиться при установке системы, но точно я уже не помню, поэтому проделаем все шаги:

sudo apt-get install locales  # Установка пакета
sudo dpkg-reconfigure locales # Прописываем в автозапуск


Последняя команда отобразит псевдографический интерфейс с множеством локалей. Я отметил "ru_RU.UTF-8" и "en_US.UTF-8". После нажатия "Ok" выбранные локали будут сгененрированны и доступны для использования.
Теперь подредактируем скрипт инициализации командного интерпретатора bash, который находится в домашней папке:

nano ~/.bashrc

Где-то в конце надо добавить следующие строки:

export TZ="Europe/Moscow"
export LANGUAGE=
export TERM=xterm
export LANG="ru_RU.UTF-8"
export LC_ALL="ru_RU.UTF-8"
export TERMINFO="/usr/share/terminfo"

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

Теперь отключаемся и подключаемся заново, чтобы всё навороченное применилось. Соединение, а не компьютер!

Часовой пояс обычно настраивается во время установки, а вот само время терятся при каждом отключении компьютера от сети, что не есть хорошо. Для исправления этой ситуации надо поставить NTP-клиент, который будет запрашивать точное время в интернете и выставлять часы при загрузке системы. Ставим:

sudo apt-get install ntp      # Установка пакета
sudo update-rc.d ntp defaults # Прописываем в автозапуск
sudo service ntp restart      # Запуск


Теперь с часами проблем быть не должно.

Осталось теперь организовать себе подключения по ssh без ввода паролей и логинов, т. е. надо настроить авторизацию по ключу.
Сам ключ можно сгененрировать непосредственно на микрокомпьютере, но лучше сделать это с помощью программы puttygen на большом компьютере, чтобы сразу сохранить полученный ключ и не заниматься передачей его с одной машины на другую.

Запускаем программу и нажимаем кнопку "Generate":



После продолжительного возюканья мышкой будет сгенерирован ключ:



Кнопкой "Save private key" сохраняем его куда-нибудь, он на понадобится чуть позже, а вот ту белиберду из первого поля надо переправить на "малину". Для этого создаем там файл "authorized_keys" и записываем туда всё это:

nano ~/.ssh/authorized_keys

Теперь надо выставить на файл правильные права, чтобы ssh-сервер не ругался на прорехи в безопасности:

chmod 600 ~/.ssh/authorized_keys

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



И прописать свой логин, чтобы каждый раз его не вводить:



Теперь система готова к издевательствам в полном объёме. Можно выключить компьютер командой "sudo halt && exit" (выключение и закрытие соединения), сделать образ SD-карты и приступать к экзекуции.

Да, всё верно. Выключить систему нужно командой, а не выдергиванием питания.