Raspbian — основанная на Debian операционная система для Raspberry Pi. Существует несколько версий Raspbian, в том числе Raspbian Stretch и Raspbian Jessie. С 2015 года Raspbian официально представлена Raspberry Pi Foundation в качестве основной операционной системы для одноплатных компьютеров Raspberry Pi.
Купил я малину для того, чтобы начать делать умный дом. Чтобы Взял только плату
Скачиваем дистрибутив с Raspbian, я брал вот этот:
$ wget -O raspberrypi.zip https://downloads.raspberrypi.org/raspbian_lite_latest && unzip ./raspberrypi.zip
Ждем завершения, а пока можно посмотреть нужную информацию о монтируемой SD-флешке. Вставляем флешку ( у меня ОС — макОС) и находим монтируемую область:
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 499.4 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +499.4 GB disk1
Physical Store disk0s2
1: APFS Volume Macintosh HD 472.9 GB disk1s1
2: APFS Volume Preboot 44.1 MB disk1s2
3: APFS Volume Recovery 522.8 MB disk1s3
4: APFS Volume VM 1.1 GB disk1s4
/dev/disk3 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *128.2 GB disk3
1: Windows_NTFS 128.2 GB disk3s1
Так же можно вывести всю инфу:
$ diskutil info -all
PS: Можно использовать (но не очень информативно как по мне):
$ mount
С вывода видно что у меня это — /dev/disk3. Для Linux систем можно использовать:
$ df -aTh
или:
$ cat /proc/mounts
$ cat /proc/self/mounts
Отформатирую SD-card следующим образом:
$ sudo diskutil eraseDisk FAT32 RASPBIAN MBRFormat /dev/disk3
Password:
Started erase on disk3
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk3s1 as MS-DOS (FAT32) with name RASPBIAN
512 bytes per physical sector
/dev/rdisk3s1: 250253568 sectors in 3910212 FAT32 clusters (32768 bytes/cluster)
bps=512 spc=64 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=32768 drv=0x80 bsec=250314752 bspf=30549 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk3
Где:
- sudo — Дает пользователю супер-права.
- diskutil — Вызывает утилиту.
- eraseDisk — Команда для форматирования.
- FAT32 — Установка типа ФС.
- RASPBIAN — Имя устройства.
- MBRFormat — Говорит disk utility, отформатировать флешку в Master Boot Record.
- /dev/disk3 — Локация\путь к SD card-е.
Если используете Linux, то можно это сделать следующим образом, чтиво тут:
Установка/Использование parted в Unix/Linux
После расспоковки архива образа для расбиана, у меня появился файл — 2019-04-08-raspbian-stretch-lite.img который стоит записать на SD карту, я буду использовать утилиту dd следующим образом:
$ sudo dd if=2019-04-08-raspbian-stretch-lite.img of=/dev/disk3 bs=1m status=progress conv=fsync
Получил ошибку:
dd: /dev/disk2: Resource busy
Чтобы исправить, стоит отмонтировать волюму, т.к ОС работает с ней:
$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful
Ну а потом, сново выполняем:
$ sudo dd if=2019-04-08-raspbian-stretch-lite.img of=/dev/disk3 bs=1m
1720+0 records in
1720+0 records out
1803550720 bytes transferred in 590.702848 secs (3053228 bytes/sec)
Мануал по работе с DD вот тут:
Чтобы отключить флешку ( на макОС), я заюзал:
$ diskutil eject /dev/disk3
Disk /dev/disk3 ejected
Полезное чтиво:
Делаем загрузочную флешку из ISO образа на Unix/Linux
Теперь можно вставлять данную СД карту в расбери пи и начинать установку. Конечно, для этого нужно будет клавиатура, экран, питание. У меня это все есть… приступим! У малины нет кнопки питания, по этому — она включаеться сразу. И так, чтобы войти нам нужно:
- Login: pi
- Password: raspberry
Сразу же логинимся под root-а:
$ sudo -s
Нужно сейчас подключиться к малине. И начать настройку. Я наверное начну с обновлений:
# apt update && apt upgrade && apt dist-upgrade
Затем, пропишем нужные локали, у меня:
# dpkg-reconfigure locales
И можно во так еще:
# localedef -i en_US -f UTF-8 en_US.UTF-8
Выполняем:
# LANG=en_US.utf8
И смотрим что есть:
pi@raspberrypi:~ $ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
Настраиваем тайм-зону:
# dpkg-reconfigure tzdata
Чтобы проверить дату, выполните:
# date
Thu May 9 17:04:52 EEST 2019
Создаем нового юзера:
# adduser captain
Добавляем юзера в sudo группу:
# usermod -a -G sudo captain
Обновим прошивку и перезагрузимся в случаи успеха:
# rpi-update && reboot
Обновления поставили, теперь можно настроить сеть, открываем:
# vim /etc/network/interfaces
И приводим к виду:
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
#loop
auto lo
iface lo inet loopback
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 8.8.4.4
#eth0
iface eth0 inet manual
#wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# default
С Raspberry Pi 3 также имеется Wi-Fi модуль, по этому, можно заюзать и настроить его, для этого, открываем:
# vim /etc/wpa_supplicant/wpa_supplicant.conf
Приводим к виду:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=UA
#
network={
ssid="YOUR_WIFI"
psk="YOUR_PASSWORD_of_WIFI"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
auth_alg=OPEN
}
Где:
- ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev — гуглил что это. Было по дефолту.
- update_config=1 — Тоже дефолтное.
- country=UA — Выставляем код страны.
- ssid=»YOUR_WIFI» — Название вай-фая.
- psk=»YOUR_PASSWORD_of_WIFI» — Пароль от вай-фай.
- proto=RSN
- key_mgmt=WPA-PSK — Шифрование. У меня настроено WPA2 personal.
- pairwise=CCMP
- group=CCMP
- auth_alg=OPEN
Или сделать это можно, через утилиту:
# raspi-config
Я нагуглил что еще нужно поставить вот что:
# apt install wicd wicd-curses
Не уверен что нужно, но я ставил и у меня работает сеть по вай-фай.
Так же, добавим ssh в автозагрузку ОС:
# systemctl enable ssh
Можно потюнить ssh:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
SyslogFacility AUTHPRIV #AUTH
LoginGraceTime 2m
PermitRootLogin yes #prohibit-password
StrictModes yes
MaxAuthTries 5
MaxSessions 10
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys .ssh/authorized_keys2
HostbasedAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials yes
UsePAM no
X11Forwarding yes
PrintMotd no
UsePrivilegeSeparation sandbox
UseDNS no
AllowUsers root captain
AcceptEnv LANG LC_*
AcceptEnv XMODIFIERS
Subsystem sftp /usr/lib/openssh/sftp-server
Создаем вот что:
$ mkdir ~/.ssh && chmod 0700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
Проверить что вышло, можно вот так:
# sshd -t
/etc/ssh/sshd_config line 36: Deprecated option RSAAuthentication
/etc/ssh/sshd_config line 46: Deprecated option RhostsRSAAuthentication
/etc/ssh/sshd_config line 102: Deprecated option UseLogin
Если появились такие вот ошибки, исправление будет следующее:
# sed -i '/KeyRegenerationInterval/d' /etc/ssh/sshd_config && \
sed -i '/ServerKeyBits/d' /etc/ssh/sshd_config && \
sed -i '/RSAAuthentication/d' /etc/ssh/sshd_config && \
sed -i '/RhostsRSAAuthentication/d' /etc/ssh/sshd_config
И проверяем что вышло:
# sshd -t
/etc/ssh/sshd_config line 100: Deprecated option UseLogin
И так, фиксим — для этого открываем конфиг-файл и коментируем:
UseLogin no
Перезапускаем ssh:
$ systemctl restart ssh
Теперь, можно потюнить fstab, открываем:
# vim /etc/fstab
Добавляем «noatime» во все области, у меня это:
#=========================================================================================================================
# <file system> | <dir> | <type> | <options> | <dump> | <pass> |
#=========================================================================================================================
#-------------------------------------------------------------------------------------------------------------------------
# System
#-------------------------------------------------------------------------------------------------------------------------
proc /proc proc defaults 0 0
PARTUUID=126fbf65-01 /boot vfat defaults,ro 0 2
PARTUUID=126fbf65-02 / ext4 defaults,noatime,errors=remount-ro 0 1
#
#/dev/mmcblk0p1 /boot vfat defaults,ro 0 2
#/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
#
tmpfs /tmp tmpfs nodev,size=128M,mode=1777,nosuid 0 0
tmpfs /var/tmp tmpfs nosuid,nodev 0 0
#-------------------------------------------------------------------------------------------------------------------------
#Flash-cards
#-------------------------------------------------------------------------------------------------------------------------
#/dev/sda1 /mnt/volume ntfs-3g defaults 0 0
#-------------------------------------------------------------------------------------------------------------------------
# HDDs
#-------------------------------------------------------------------------------------------------------------------------
Так же, для `boot`, прописал «ro» — т.е монтирование раздела только для чтения.
Открываем:
# vim /boot/cmdline.txt
В поле «elevator» — т.е планировщик I/O добавляем noop или deadline:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=126fbf65-02 rootfstype=ext4 elevator=noop fsck.repair=yes rootwait fastboot noswap splash plymouth.ignore-serial-consoles
Почитать насчет планировщиков I/O можно в интернете и решить, какой вам подойдет, но о некоторых, расскажу:
- Планировщик NOOP самый простой планировщик, обладает минимальными возможностями и выполняет только простые операции объединения и сортировки, но зато и потребляет минимум ресурсов. Он представляет собой очередь FIFO (First In, First Out) то есть он, просто выставляет запросы в очередь в том порядке, в котором они пришли. Предназначен NOOP в основном для работы с не дисковыми устройствами (ОЗУ или флэшдиск) или со специализированными решениями которые уже имеют свой собственный планировщик I/O. В этом случае его простота имеет преимущество перед остальными алгоритмами.
- Задачей алгоритма Deadline является минимизация задержек ввода/вывода, и обспечивает поведение близкое к реальному времени. В нем использовано 5 очередей ввода/вывода, а планировщик использует алгоритм предельного срока для улучшения производительности постоянно переупорядочивая запросы. Кратко суть алгоритма заключается в том, что операциям чтения всегда отдается предпочтение перед операциями записи. Поэтому в настройках по умолчанию операция чтения будет выполнена максимально через — 500 мс, а записи — 5 с. Далее из очереди извлекается следующий процесс, который и получает практически монопольный доступ к ресурсу, затем он переводится в состояние ожидания, а планировщик выбирает следующую программу.
Проверить какой планировщик используеться в ОС, можно вот так:
# dmesg | grep scheduler
[ 0.232071] io scheduler noop registered
[ 0.232095] io scheduler deadline registered (default)
[ 0.232300] io scheduler cfq registered
[ 0.232324] io scheduler mq-deadline registered (default)
[ 0.232348] io scheduler kyber registered
[ 0.807436] dwc_otg: Microframe scheduler enabled
Добавляем проверку на целосность ОС, для этого, создаем/открываем файл:
# vim /etc/default/rcS
И прописываем в него «FSCKFIX=yes», но я привел к виду:
#
# /etc/default/rcS
# Default settings for the scripts in /etc/rcS.d/
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.
# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
TMPTIME=0
# spawn sulogin during boot, continue normal boot if not used in 30 seconds
SULOGIN=yes
# do not allow users to log in until the boot has completed
DELAYLOGIN=no
# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes
# be more verbose during the boot process
#VERBOSE=no
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes
Потом, выполняем:
# tune2fs -c 3 /dev/mmcblk0p2
tune2fs 1.43.4 (31-Jan-2017)
Setting maximal mount count to 3
Note: Если не уверене с разделом (у меня /dev/mmcblk0p2), то можно поглядеть с утилитой:
# fdisk -l
Установим log2ram для оптимизации I/O на флешку:
# curl -Lo log2ram.tar.gz https://github.com/azlux/log2ram/archive/master.tar.gz && tar xf log2ram.tar.gz && cd log2ram-master && chmod +x install.sh && sudo ./install.sh && cd .. && rm -r log2ram*
Данная автоматизая нужна для того, чтобы логи как можно меньше писались на SD карту. Карта не вечна и износ будет быстрым!
Выключаем swapping следующими командами:
# dphys-swapfile swapoff
# dphys-swapfile uninstall
# update-rc.d dphys-swapfile remove
Еще, можно добавить монтирование. Например если нужно настроить SAMBA с NTFS, то стоит поставить пакет:
# apt install ntfs-3g
Вводим команду:
# blkid
Мой вывод:
# blkid
/dev/mmcblk0p1: LABEL="boot" UUID="16D2-035F" TYPE="vfat" PARTUUID="126fbf65-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="d065e631-6b9d-48c0-a8fe-e663b42828e0" TYPE="ext4" PARTUUID="126fbf65-02"
/dev/mmcblk0: PTUUID="126fbf65" PTTYPE="dos"
/dev/sda1: UUID="C4C677A2C6779380" TYPE="ntfs" PARTUUID="0012d5c8-01"
Т.е /dev/sda1 — моя вставленная флешка.
Создаем папку для монтирования:
# mkdir /mnt/fasion_trend_32gb && chmod 770 /mnt/fasion_trend_32gb
Монтируем:
# mount -t ntfs-3g -o nofail,uid=1000,gid=1000,umask=007 /dev/sda1 /mnt/fasion_trend_32gb
После ребута слетит все это дело, но можно добавить строки в fstab:
# cp /etc/fstab /etc/fstab_BK && vim /etc/fstab
Прописываем:
UUID=C4C677A2C6779380 /mnt/fasion_trend_32gb ntfs-3g async,big_writes,noatime,nodiratime,nofail,uid=1000,gid=1000,umask=007 0 0
Ну или альтернатива:
/dev/sda1 /mnt/fasion_trend_32gb ntfs defaults 0 0
После чего, делаем ребут:
# reboot
У меня роутер — time capsule и чтобы открыть порт в мир, мне потребовалось время и помощь друга (Спасибо Loper). Настроить это можно вот так. Открываем «AirPort Utility»:
Нажимаем по капсуле и кликаем по «Edit». Затем, переходим во вкладку «Network»:
В поле «DHCP Reservation», нажимаем на «+» чтобы зарезервировать WLAN IP адресс, например:
Где:
- Description — Название.
- Reserve Address By — Стоит выбрать «Mac Address».
- Mac Address — Это мак адрес вашей малине на WLAN.
- IPv4 Address — Адресс резерва.
Чтобы посмотреть мак адресс, выполните на малине:
# ifconfig -a wlan0 | grep -E "ether"| awk '{print $2}'
b8:27:eb:9c:47:57
После всех добавлений, нажимаем на «Save». Теперь, стоит открыть порт, переходим в «Port Settings» и нажимаем на «+»:
Где:
- Description — Выбираем «Удаленный вход — SSH».
- Public TCP Ports — Выбираем нужный порт для пробрасывания. У меня это 22.
- Private IP Address — Зарезервированный ИП адресс ( делали выше).
- Private TCP Ports — Порт который будет слушаться на малине. У меня это тоже — 22.
Нажимаем на «Save» и потом на «Update». Ждем пока капсуля обновит настройки.
Вы можете использовать лицензированную по GPL программу upsd (Демон бесперебойного питания) для включения следующих функций:
- Выключать систему при отключении питания или когда павер-банк будет разряжен.
- Выполнять скрипты для определенных изминений питания.
- Мониторинг состояния БП (включая текущий уровень заряда).
- Молно логировать все события электропитания в системный log-файл.
# wget http://raspi-ups.appspot.com/upsd/upsd_1.2-1.deb && dpkg -i upsd_1.2-1.deb && rm -f upsd_1.2-1.deb
Проверяем текущий статус:
# upsd -i
У меня это:
IS_RUNNING=NO
Скрипты лежат вот тут:
# ls -alh /usr/lib/upsd
total 20K
drwxr-xr-x 2 1000 1000 4.0K May 14 15:00 .
drwxr-xr-x 60 root root 4.0K May 14 14:55 ..
-rwxr-xr-x 1 1000 1000 436 Mar 12 2015 low_battery
-rwxr-xr-x 1 1000 1000 106 Dec 29 2014 power_back
-rwxr-xr-x 1 1000 1000 159 Mar 13 2015 power_outage
Где:
- low_battery — Данный скрипт работает при достижении низкого уровня заряда батареи. На этом этапе вы должны подготовить свою систему к завершению (выключению ОС).
- power_back — Этот скрипт выполняется, если питание возвращается после сбоя. В этой ситуации может быть хорошей идеей отправить уведомление на ваш смартфон с помощью IFTTT, предполагая, что при включении питания интернет-соединение также будет восстановлено.
- power_outage — Этот скрипт, будет работать после обнаружения сбоя питания. Вы можете решить где уменьшить активности на малине, чтобы уменьшить потребление.
И так, для начала, отредактирую:
# vim /usr/lib/upsd/power_back
И прописываем:
#!/bin/bash
# This script is executed by upsd if the power comes back after a
# preceding power outage.
while true;
do ping -c1 www.google.com > /dev/null && break;
sleep 30s
done
curl -X POST -H "Content-Type: application/json" https://maker.ifttt.com/trigger/{your_created_event}/with/key/{your_ifttt_key} 2>1
Где:
- your_created_event — Название ивента который вы создали на ifttt сайте.
- your_ifttt_key — Это ключ от ивента в ifttt.
Создать его можно в «My Applets» -> «New Applet». Кликаем на «+ THIS». В поиске, вводим «Webhooks» и кликаем по нему. Потом, выбрать нужно «Receive a web request». Прописываем:
- Event Name — Название события (например — raspberry_up). В примере что выше, я использую «your_created_event».
Далее, нажимаем на «+THAT» и в поле поиска вводим «Notifications» и кликаем по нему. После чего, выбираем «Send a notification from the IFTTT app» и нажимаем по нему. В поле «Message» стоит вписать текст который будет отправляться вам, например у меня:
The "{{EventName}}" has been started up at {{OccurredAt}}
Затем, кликаем по «Create action». «Finish».
Открываем «ifttt_site_url_here/maker_webhooks». Затем, кликаем по «settings». Собственно URL нам и понадобиться. Можно взять тот УРЛ и вставить в браузер и потом, выполнить тестирование.
Перезапустить сервис:
# service upsd restart
Смотрим статус:
# service upsd status
● upsd.service - LSB: Starts and stops the upsd daemon.
Loaded: loaded (/etc/init.d/upsd; generated; vendor preset: enabled)
Active: active (running) since Tue 2019-05-14 15:05:34 EEST; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 16698 ExecStop=/etc/init.d/upsd stop (code=exited, status=0/SUCCESS)
Process: 16708 ExecStart=/etc/init.d/upsd start (code=exited, status=0/SUCCESS)
Memory: 2.1M
CPU: 41ms
CGroup: /system.slice/upsd.service
└─15791 /lib/nut/upsd
May 14 15:05:34 raspberrypi systemd[1]: Starting LSB: Starts and stops the upsd daemon....
May 14 15:05:34 raspberrypi upsd[16708]: Network UPS Tools upsd 2.7.4
May 14 15:05:34 raspberrypi upsd[16708]: Fatal error: A previous upsd instance is already running!
May 14 15:05:34 raspberrypi upsd[16708]: Either stop the previous instance first, or use the 'reload' command.
May 14 15:05:34 raspberrypi systemd[1]: Started LSB: Starts and stops the upsd daemon..
Добавить сервис в автозагрузку, можно:
# systemctl enable upsd
Ну и на последок — конечно же, делаем бекап, для начала смотрим какой блок используется на карте:
$ sudo hdiutil imageinfo /dev/disk3 | grep block-size
block-size: 512
А потом, делаем бэкап:
$ BlockSize=$(sudo hdiutil imageinfo /dev/disk3 | grep block-size| awk '{print $2}'); sudo dd if=/dev/disk3 bs=${BlockSize}| pv | gzip -c > /Users/captain/Projects/Raspberry\ pi/Raspberry-captain-backups/raspberrypi-$(date '+%Y-%m-%d_%H-%M-%S').img.gz
Password:
250347520+0 records iniB/s] [ <=> ]
250347520+0 records out
128177930240 bytes transferred in 7567.176082 secs (16938674 bytes/sec)
119GiB 2:06:07 [16.2MiB/s] [ <=> ]
Возможные траблы с Raspberry Pi
Буду описывать возможные причины ошибок или проблемы в роботе с малиной.
-=== Ошибка 1 — загрузка ОС в Emergency Mode===-
Иногда бывает так, что ОС грузиться в Emergency Mode. Причины могут быть разные, одна из них — это плохой /etc/fstab. Или что-то пошло не так при работе с fsck.
Исправление будет не сложным, для начала открываем:
# vim /boot/cmdline.txt
Стоит в самый конец строки (не розвырая ее) добавляем:
init=/bin/sh
У меня данный файл выглядит следующим образом:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=126fbf65-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap splash plymouth.ignore-serial-consoles init=/bin/sh
Сохраняем файл. Грузимся, и монтируем разделы:
# mount -o remount,rw / –target /
Сейчас можно отредактировать и исправить fstab:
# vi /etc/fstab
Правим. Сохраняем и вводим «exit», нажимаем «enter». Это вызовет «kernel panic». Ничего страшного, вынимаем карту и вставляем ее карт-ридер и монтируем ее ПК, теперь стоит убрать то что добавляли — удаляем init=/bin/sh с файла /boot/cmdline.txt.
Вот и все, статья «Установка Raspbian с scratch на Unix/Linux» подошла к завершению.