- Raspberry Pi 4
- ARMv7 Installation
- AArch64 Installation
- Arch Linux на Raspberry Pi
- Запуск getty на ttyAMA0 (необязательно)
- Настройка беспроводной сети (необязательно)
- Аппаратный генератор случайных чисел
- Часовой пояс и синхронизация времени
- Обновление системы
- Расширение корневого раздела
- Добавление непривилегированного пользователя
- Установка и настройка sudo
- Настройка ssh
- Заключение
- Ссылки на использованные ресурсы
Raspberry Pi 4
The Raspberry Pi 4 is the successor to the Raspberry Pi 3. It builds upon the Pi 3 by upgrading the ARM cores to Cortex-A72, offering up to 4GB RAM, USB 3.0, and gigabit ethernet.
The Raspberry Pi 4 measures the same 85.60mm x 53.98mm x 17mm, with a little overlap for the SD card and connectors which project over the edges. The SoC is a Broadcom BCM2711. This contains a quad-core Coretx-A72 running at 1.5GHz and a Videocore VI GPU.
Architecture ARMv8 Cortex-A72 Processor Broadcom BCM2711 1.5GHz RAM 4GB SD Micro SD USB 4 Ethernet Gigabit Wireless B/G/N, Bluetooth
Note: The Raspberry Pi 4 has higher power requirements than the Raspberry Pi 3. A power supply rated at 3A is the official recommendation. Using an insufficient power supply will result in random, inexplicable errors and filesystem corruption.
Note: The Raspberry Pi 4’s USB Type-C power port is not compliant with the USB Type-C specification, and it will not be able to be powered by supplies that are compliant.
ARMv7 Installation
Use this installation if you require any of the vendor’s kernel hacks, overlays, or closed-source GPU blobs and utilities.
Replace sdX in the following instructions with the device name for the SD card as it appears on your computer.
- Start fdisk to partition the SD card:
- Type o. This will clear out any partitions on the drive.
- Type p to list partitions. There should be no partitions left.
- Type n, then p for primary, 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +200M for the last sector.
- Type t, then c to set the first partition to type W95 FAT32 (LBA).
- Type n, then p for primary, 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector.
- Write the partition table and exit by typing w.
mkfs.vfat /dev/sdX1 mkdir boot mount /dev/sdX1 boot
mkfs.ext4 /dev/sdX2 mkdir root mount /dev/sdX2 root
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C root sync
- Login as the default user alarm with the password alarm.
- The default root password is root.
pacman-key --init pacman-key --populate archlinuxarm
AArch64 Installation
This provides an installation using the mainline kernel and U-Boot. Use this installation only if you have no dependencies on the closed source vendor libraries shipped in the ARMv7 release. This installation has near full support for the device, including the VC4 graphics.
- Follow the above instructions, substituting with the following tarball:
http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
sed -i 's/mmcblk0/mmcblk1/g' root/etc/fstab
Copyright ©2009-2022 Arch Linux ARM
The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.
The Arch Linux™ name and logo are used under permission of the Arch Linux Project Lead.
Arch Linux на Raspberry Pi
После довольно продолжительно использования Raspberry Pi совместно с Raspbian решил попробовать установить Arch Linux ARM. Что из этого получилось рассмотрено в статье.
Так как в месте установки 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 '"""' # 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"
[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
Обновление системы
Расширение корневого раздела
Запускаем 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 (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 (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
[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
[root@alarmpi ~]# systemctl restart sshd
Заключение
В результате выполнения перечисленных шагов получаем RPi подключенный к WiFi сети, синхронизирующий время через интернет. На RPi можно зайти через SSH как непривилегированный пользователь имея при этом возможность вызова системных команд через sudo.