Так как в месте установки RPi подключать что-либо к разъемам HDMI или RCA Video и LAN мне неудобно, я использую WiFi-подключение к сети и USB-UART для терминального доступа. Поэтому некоторые описанные шаги я отметил как необязательные.
Использованное оборудование: ноутбук с Windows, Raspberry Pi Model B, SD-карта объемом 4GB, WiFi-адаптер, UART-адаптер.
Загружаем и записываем на SD-карту образ операционной системы. В моем случае это был ArchLinuxARM-2014.01-rpi.img, запись выполнялась при помощи Win32DiskImager 0.9.5.
После установки войти в систему можно как root, пароль root. Это можно сделать как через локальный терминал так и через LAN, используя SSH.
Запуск getty на ttyAMA0 (необязательно)
Для вывода на последовательный порт загрузочных сообщений необходимо добавить в файл /boot/cmdline.txt параметр loglevel=5.
Разрешаем работу getty на последовательном порту командой:
[root@alarmpi ~]# systemctl enable getty@ttyAMA0
Заменяем созданную ссылку (почему это необходимо):
[root@alarmpi ~]# rm /etc/systemd/system/getty.target.wants/getty\@ttyAMA0.service
[root@alarmpi ~]# ln -s /usr/lib/systemd/system/serial-getty\@.service \
/etc/systemd/system/getty.target.wants/serial-getty@ttyAMA0.service
Сигналы UART выведены на GPIO разъем Raspberry Pi:
Нужно подключить к ним USB-UART конвертер и указать в терминальной программе следующие параметры подключения: скорость 115200, 8 бит данных, 1 стоп бит, без проверки четности, без управления потоком. Подробнее как использовать PuTTY для работы через последовательный порт здесь.
Настройка беспроводной сети (необязательно)
Копируем и редактируем нужный профиль, указав в нем имя сети и пароль:
[root@alarmpi ~]# cd /etc/netctl/
[root@alarmpi ~]# install -m640 examples/wireless-wpa wireless-home
Профиль:
Description='A simple WPA encrypted wireless connection'
Interface=wlan0
Connection=wireless
Security=wpa
IP=dhcp
ESSID='<имя сети>'
# Prepend hexadecimal keys with \"
# If your key starts with ", write it as '""<key>"'
# See also: the section on special quoting rules in netctl.profile(5)
Key='<пароль>'
# Uncomment this if your ssid is hidden
#Hidden=yes
Активируем созданный профиль и разрешаем его запуск при включении:
[root@alarmpi ~]# netctl start wireless-home
[root@alarmpi ~]# netctl enable wireless-home
Аппаратный генератор случайных чисел
В ArchLinux для Raspberry Pi есть поддержка аппаратного генератора случайных чисел, но демону rngd нужно указать, как его найти. Для это необходимо отредактировать файл /etc/conf.d/rngd следующим образом:
RNGD_OPTS="-o /dev/random -r /dev/hwrng"
И перезапустить rngd:
[root@alarmpi ~]# systemctl restart rngd
Часовой пояс и синхронизация времени
Удаляем часовой пояс, назначенный по умолчанию и устанавливаем нужный:
[root@alarmpi ~]# rm /etc/localtime
[root@alarmpi ~]# ln -s /usr/share/zoneinfo/<местоположение> /etc/localtime
Запускаем ntpd и разрешаем его работу при включении:
[root@alarmpi ~]# systemctl start ntpd
[root@alarmpi ~]# systemctl enable ntpd
Обновление системы
Просто запускаем команду:
[root@alarmpi ~]# pacman -Syu
Расширение корневого раздела
Запускаем fdisk и выводим существующую таблицу разделов:
[root@alarmpi ~]# fdisk /dev/mmcblk0
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk0: 3.8 GiB, 4072669184 bytes, 7954432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x417ee54b
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 186367 92160 c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 1740800 5 Extended
/dev/mmcblk0p5 188416 3667967 1739776 83 Linux
На SD-карте, как видно, есть основной (mmcblk0p1) и дополнительный (mmcblk0p2) разделы. Дополнительный, в свою очередь, содержит один логический (mmcblk0p5) раздел. Раздел mmcblk0p1 имеет небольшой размер, монтируется как /boot и используется при загрузке. Его модифицировать не нужно. Расширить нужно раздел mmcblk0p5, который монтируется как /.
Удаляем раздел mmcblk0p2 (при этом раздел mmcblk0p5 также удалится):
Command (m for help): d
Partition number (1,2,5, default 5): 2
Partition 2 has been deleted.
Теперь нужно создать новый дополнительный раздел, занимающий все доступное свободное пространство:
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (2-4, default 2):
First sector (186368-7954431, default 186368):
Last sector, +sectors or +size{K,M,G,T,P} (186368-7954431, default 7954431):
Created a new partition 2 of type 'Extended' and of size 3.7 GiB.
После этого внутри дополнительного, нужно создать логический раздел, так же занимающий все доступное пространство:
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (188416-7954431, default 188416):
Last sector, +sectors or +size{K,M,G,T,P} (188416-7954431, default 7954431):
Created a new partition 5 of type 'Linux' and of size 3.7 GiB.
Проверяем, что разделы созданы правильно:
Command (m for help): p
Disk /dev/mmcblk0: 3.8 GiB, 4072669184 bytes, 7954432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x417ee54b
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 186367 92160 c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 7954431 3884032 5 Extended
/dev/mmcblk0p5 188416 7954431 3883008 83 Linux
Стартовые блоки созданных разделов должны быть такими же как до внесения изменений, а общее количество блоков увеличиться.
Сохраняем изменения и выполняем перезагрузку:
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next
reboot or after you run partprobe(8) or kpartx(8).
[root@alarmpi ~]# reboot
После перезагрузки нужно увеличить размер файловой системы на созданном логического разделе. Текущий размер:
[root@alarmpi ~]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.7G 536M 1005M 35% /
Увеличиваем размер:
[root@alarmpi ~]# resize2fs /dev/mmcblk0p5
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mmcblk0p5 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p5 is now 970752 blocks long.
Новый размер:
[root@alarmpi ~]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.7G 536M 3.0G 16% /
Имеет смысл для уменьшения количества операций записи на SD-карту установить в файле /etc/fstab параметр noatime для корневого раздела:
/dev/mmcblk0p5 / ext4 defaults,noatime 0 1
Добавление непривилегированного пользователя
Добавляем пользователя и устанавливаем пароль:
[root@alarmpi ~]# useradd -m pi
[root@alarmpi ~]# passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Установка и настройка sudo
Устанавливаем sudo:
[root@alarmpi ~]# pacman -S sudo
Открыв с помощью команды visudo конфигурацию раскомментируем следующую строку:
%wheel ALL=(ALL) NOPASSWD: ALL
Добавляем созданного ранее пользователя pi в группу wheel:
[root@alarmpi ~]# usermod -aG wheel pi
Это позволит пользователю pi использовать sudo для выполнения команд, требующих повышенных полномочий.
Настройка ssh
Так как SSH-ключи у меня уже были, останавливаться на их создании я не буду. Как их создать можно прочитать здесь.
Копируем публичный ключ на RPi:
$ ssh-copy-id pi@192.168.1.103
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter
out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are
prompted now it is to install the new keys
pi@192.168.1.103's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'pi@192.168.1.103'"
and check to make sure that only the key(s) you wanted were added.
Открываем файл конфигурации sshd:
[root@alarmpi ~]# nano /etc/ssh/sshd_config
Устанавливаем в нем запрет входить по ssh пользователю root и отключаем аутентификацию по паролю:
PermitRootLogin no
PasswordAuthentication no
Перезапускаем sshd:
[root@alarmpi ~]# systemctl restart sshd
Заключение
В результате выполнения перечисленных шагов получаем RPi подключенный к WiFi сети, синхронизирующий время через интернет. На RPi можно зайти через SSH как непривилегированный пользователь имея при этом возможностью вызова системных команд через sudo.
Ссылки на использованные ресурсы
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий