Portfolio Обо мне Блог

В этой короткой заметке я расскажу как сделать первичную настройку Raspberry pi 3, но в теории это не сильно отличается от 4й пишки.

Установка дистрибутива

  1. Скачать образ с сайта

  2. Записать на карту dd (linux) или rufus (windows)

sudo dd if=raspios.img of=/dev/sdb
sudo pkill -USR1 dd                             #Из другого терминала чтобы узнать статус.
sudo watch -n 10 pkill -USR1 dd         #Чтобы состояние писалось в цикле.

Или как оказалось можно так:

dd if="raspios.img" of="/dev/sdb" status="progress" conv="fsync" bs=1M

image2


Для просмотра блочных устройств можно использовать команду:

lsblk

Также иногда может потребоваться создать эталонный образ для использования его на большом количестве устройств. Клонировать всю 16ти или 32х гиговую карту не рационально, т.к. там много свободного места. Для решения этой проблемы нужно сделать следующее:

  1. С помощью Gparted сократить раздел с rootfs до реально занимаемого им места. На карте должно остаться большое неразмеченное пространство.
  2. Снимаем образ с карты:
sudo dd if=/dev/sdb of=rpi.img status="progress" conv="fsync" bs=1M
  1. Далее из данного образа нужно удалить этот неразмеченный кусок, для этого сначала посмотрим сколько места занимают полезные данные:
sudo fdisk -l rpi.img
Disk scanner_full.img: 7,5 GiB, 8053063680 bytes, 15728640 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: 0x9730496b

Device            Boot  Start     End Sectors  Size Id Type
scanner_full.img1        8192  532479  524288  256M  c W95 FAT32 (LBA)
scanner_full.img2      532480 3661823 3129344  1,5G 83 Linux

Из этого вывода нас интересует размер одного сектора и номер последнего сектора последнего раздела, их нужно использовать для следующей команды:

truncate --size=$[(3661823+1)*512] rpi.img  

После чего получаем обрезанный rpi.img.

UART

Тут идея в том что вывод консоли можно перенаправить в UART, но для этого нужно выключить BT т.к. они находятся на одном порте.

  1. Поменять в boot разделе в /boot/cmdline.txt
console=serial0,115200 console=ttyAMA0

в добавить в конец /boot/config.txt, что отлючит блютуз.

dtoverlay=pi3-miniuart-bt
core_freq=250
  1. Запустить расбери подключив юарт к TXD0 и RXD0.

pi3gpio

  1. Залогинится user: pi и pass: raspberry

Для того чтобы можно было писать в порты без прав sudo нужно сделать следующее - добавить юзера в группу tty.

sudo usermod -a -G tty pi

SSH

Для включения ssh нужно добавить в раздел boot 2 файла:

  • ssh.txt - писать в него ничего не нужно, он необходим для того чтобы мы могли подключится к малинке используя сервис ssh
  • wpa_supplicant.conf - тут необходимо приписать параметры вашей Wi-Fi сети в следующем формате:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="НАЗВАНИЕ ТОЧКИ ДОСТУПА WiFi"
    psk="ПАРОЛЬ WiFi"
    key_mgmt=WPA-PSK
}

Добавьте строки, указанные выше, заменив название точки доступа и пароль на свои. Сохраните. Содержимое этого файла будет автоматически перенесено в /etc/wpa_supplicant/wpa_supplicant.conf при старте системы.

Подробнее про синтаксис файла wpa_supplicant.conf можно прочесть тут.

  1. Подключится по ssh.
ssh pi@raspberrypi
#pass raspberry`

Если это по каким-то причинам не работает, то можно просканировать сеть nmap. Для этого выполните nmap -sn 192.168.1.1/24 (тут нужно подставить ip своей локальной сети) ищем строку Nmap scan report for raspberrypi (192.168.1.143) далее ssh pi@192.168.1.143 а пароль raspberry.

Ш@ринг файлов

Используя ssh (sshfs) можно смонтировать директорию с малинки на своем десктопе, для этого нужно сделать следующее:

mkdir -p /tmp/server
sshfs pi@raspberrypi:/home/pi/AlphaBot2 /tmp/server
cd /tmp/server

VNC

  1. Для доступа к рабочему столу Raspberry Pi (очевидно для этого нужна версия дистрибутива с рабочим столом), нужно до установить необходимые пакеты:
sudo apt install realvnc-vnc-server realvnc-vnc-viewer
sudo raspi-config
# Interface Options -> VNC -> YES
vncserver

После запуска последний команды в терминале появится что-то похожее на это:

Running applications in /etc/vnc/xstartup

VNC Server catchphrase: "Shampoo canoe Kevin. Little exit druid."
             signature: e9-55-a0-df-85-12-3f-d2

Log file is /home/pi/.vnc/raspberrypi:2.log
New desktop is raspberrypi:1 (192.168.2.108:1)

Нужно запомнить raspberrypi:1 т.к. это нужно будет использовать как адрес в клиенте.

Потом переходим сюда (https://www.realvnc.com/en/connect/download/viewer/) и качаем оттуда версию для вашей операционной системы.

Вводите туда пароль, нажимаете Enter. После чего вам предложат ввести логин и пароль от Raspberry Pi, напомню это pi, а пароль raspberry. После чего вы увидите рабочий стол малины.

Автозагрузка через сервисы

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

[Unit]
Description=Scaner
After=multi-user.target

[Service]
Type=idle
ExecStart=/home/pi/scaner

[Install]
WantedBy=multi-user.target

Важно тут следующее:

  • Type=idle - однократный звпуск.
  • ExecStart=/home/pi/scaner - местоположение скрипта.

Далее нужно сделать следующее:

sudo cp scaner.service /lib/systemd/system/
sudo chmod 644 /lib/systemd/system/scaner.service
sudo systemctl daemon-reload
sudo systemctl enable scaner.service

Интересные ссылки