В этой короткой заметке я расскажу как сделать первичную настройку Raspberry pi 3
, но в теории это не сильно отличается от 4й пишки.
Установка дистрибутива
-
Скачать образ с сайта
-
Записать на карту 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
Для просмотра блочных устройств можно использовать команду:
lsblk
Также иногда может потребоваться создать эталонный образ для использования его на большом количестве устройств. Клонировать всю 16ти или 32х гиговую карту не рационально, т.к. там много свободного места. Для решения этой проблемы нужно сделать следующее:
- С помощью Gparted сократить раздел с rootfs до реально занимаемого им места. На карте должно остаться большое неразмеченное пространство.
- Снимаем образ с карты:
sudo dd if=/dev/sdb of=rpi.img status="progress" conv="fsync" bs=1M
- Далее из данного образа нужно удалить этот неразмеченный кусок, для этого сначала посмотрим сколько места занимают полезные данные:
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 т.к. они находятся на одном порте.
- Поменять в boot разделе в
/boot/cmdline.txt
console=serial0,115200 console=ttyAMA0
в добавить в конец /boot/config.txt
, что отлючит блютуз.
dtoverlay=pi3-miniuart-bt
core_freq=250
- Запустить расбери подключив юарт к TXD0 и RXD0.
- Залогинится 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
можно прочесть тут.
- Подключится по 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
- Для доступа к рабочему столу 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
Интересные ссылки
- инетаррактивная распиновка.