- Ports/aarch64/RaspberryPi4andU-Boot
- Загрузка Raspberry Pi 4
- Скрипты для переключения вариантов загрузки
- Настройка Alt Linux для Raspberry Pi с помощью QEMU
- Процесс настройки
- Работоспособность метода
- RaspberryPi and UEFI
- Установка UEFI
- Запись образа на USB Flash
- Доступные сборки
- Особенности UEFI для Raspberry Pi 3:
- Проблемы:
- Особенности установки
- Настройка Alt Linux для Raspberry Pi с помощью QEMU
- Процесс настройки
- Работоспособность метода
Ports/aarch64/RaspberryPi4andU-Boot
В Альт, при использовании u-boot в качестве загрузчика, происходит запуск EFI-приложения GRUB, которое загружает систему, или загрузка в память файлов ядра Linux, dtb, initrd, прописанных в /boot/extlinux/extlinux.conf и передача управления ядру из u-boot.
Загрузчик Raspberry Pi 4 (находится в файле start4.elf [1] ) при загрузке модифицирует файл dtb, в зависимости от параметров в config.txt и установленных плат расширения [2] .
U-boot и GRUB не делают такой модификации.
Следовательно, настройки в config.txt работают только в режимах, когда firmware загружает dtb.
Загрузка Raspberry Pi 4
На SD карте, установленной в Raspberry Pi 4 должен быть FAT раздел, на котором находятся файлы, необходимые для загрузки.
Начальный загрузчик Raspberry Pi 4 находится не на SD карте, а на подключенной по SPI интерфейсу микросхеме EEPROM [3] Он загружает файл start4.elf в GPU VideoCore [4] после чего производится загрузка ядра, загрузка и модификация dtb [5] , а при необходимости и загрузка inintrd с FAT раздела SD карты.
Вместо ядра Linux может быть загружен исполняемый файл u-boot.
Скрипты для переключения вариантов загрузки
Нужно иметь возможность использовать различные способы загрузки, при этом не потеряв возможности обновления ядер.
Был создан набор скриптов, модифицирующих конфигурационные файлы для настройки режима загрузки, изменения flavour загружаемого ядра, изменения версии загружаемого ядра после обновления:
- rpi4-boot-nouboot: firmware загружает ядро, dtb и initrd. U-boot не используется.
- rpi4-boot-uboot-fw: firmware загружает dtb. U-boot загружает ядро и initrd.
- rpi4-boot-uboot: u-boot пытается загрузить grub-efi. Если это не удалось u-boot загружает ядро, dtb и initrd.
Эти скрипты могут принимать flavour ядра в качестве аргумента. [6]
В результате кроме изменения (или не изменения) варианта загрузки будет изменен и flavour загружаемого ядра.
Если flavour не указан, то используется flavour ядра, работающего в данный момент.
Скрипты ищут самое свежее ядро с требуемым flavour, установленное в системе.
Таким образом, если после обновления ядра update-kernel запустить скрипт, соответствующий требуемому варианту загрузки то будет настроена загрузка с новым ядром.
Дополнительные возможности — автоматическое обновление:
- ядра на FAT разделе при обновлении ядра в системе
- firmware и u-boot на FAT разделе при обновлении firmware или u-boot в системе
Скрипты находятся в пакете rpi4-boot-switch
- ↑https://www.raspberrypi.org/documentation/configuration/boot_folder.md
- ↑https://www.raspberrypi.org/documentation/configuration/device-tree.md
- ↑https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
- ↑https://www.raspberrypi.org/documentation/configuration/boot_folder.md
- ↑https://www.raspberrypi.org/documentation/configuration/device-tree.md
- ↑ Начиная с версии rpi4-boot-switch-0.13-alt1 команда rpi4-boot-uboot не принимает flavour ядра в качестве аргумента (altbug #43007). Вместо этого можно выбрать требуемое ядро при загрузке в меню grub-efi (флаг «загрузочный» у раздела c EFI) или u-boot (флаг «загрузочный» у раздела с rootfs)
Настройка Alt Linux для Raspberry Pi с помощью QEMU
Бывают моменты, когда под рукой не оказывается, казалось бы, самого нужного — обжимных клещей для витой пары, отвёрстки, или. монитора с hdmi. А тут подвернулся случай пощупать Raspberry Pi. Оглядев свои «богатства» и осознав, что во втором часу ночи устройства с hdmi портом не найти, а адаптер hdmi-vga приказал долго жить, направляемся в поисках вариантов в Интернет. Аналоговый сигнал малинка из-под свежего Сизифа нормально выдавать не захотела, а без предварительной настройки малинка в рабочий режим не выходит. Побродив по просторам Сети, вспоминаем про раздел на Вики Альт Линукс, посвященный ARM-портам. Находим там инструкцию по запуску образов в QEMU, и тут загорается лампочка: «А что, если. «. Впрочем, обо всём по порядку
Процесс настройки
0. Устанавливаем на карту памяти дистрибутив с помощью утилиты alt-rootfs-installer;
1. Узнаём букву нашей карты памяти:
2. Снимаем с устройства (а не с раздела) образ:
dd if=/dev/sdX (или mmcblk0) of=/путь/к/файлу/ИмяОбраза.img
3. Запускаем образ в QEMU в следующей конфигурации:
qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 2048 -smp 4 -bios \ -drive if=none,id=sda,format=file,file=ИмяОбраза.img \ -device virtio-blk-device,drive=sda \ -device virtio-keyboard -device virtio-tablet \ -device virtio-net-device,netdev=net0 -netdev user,id=net0 \ -device virtio-gpu,xres=1366,yres=768 -nographic -vnc :0
4. Подключаемся по VNC к QEMU и спокойно настраиваем образ.
remote-viewer vnc://localhost:5900
5. Перезагружаем QEMU и проверяем, всё ли настроилось.
6. Записываем настроенный образ тем же dd:
dd if=/путь/к/файлу/ИмяОбраза.img of=/dev/sdX (или mmcblk0)
7. Вставляем карту памяти в Raspberry Pi 3 и пробуем подключиться по ssh.
Работоспособность метода
Метод проверен на работоспособность для Raspberry Pi 3 B+.
RaspberryPi and UEFI
Использование UEFI для одноплатных компьютеров позволит их рассматривать как полноценную альтернативу PC, снизит порог вхождения для пользователей. В данной статье описывается текущий статус поддержки дистрибутивов Альт на UEFI для Raspberry Pi 3 и 4.
— компьютер с ОС, упомянутой в статье
— архив RPi_EFI.zip. Этот архив содержит в себе UEFI (edk2) для Raspberry Pi 3B, 3B+ и 4B из пакета edk2-rpi
— ISO образ под архитектуру aarch64 (arm64)
Установка UEFI
1. Отформатируйте microSD-карту c таблицей разделов ms-dos (MBR). GPT не поддерживается.
2. Создайте первым раздел с типом FAT16 (0x0f) или FAT32 (0x0c). Загрузка с ESP-раздела невозможна.
3. Распакуйте на созданный раздел этот архив.
4. Безопасно извлеките micro-SD карту и вставьте в целевую плату.
Запись образа на USB Flash
Доступные сборки
Доступны регулярные сборки (гибридные ISO-образы) на базе репозитория Сизиф, стартеркиты и Simply Linux на базе стабильного бранча p9 для записи на USB-flash.
Особенности UEFI для Raspberry Pi 3:
1. На Raspberry Pi 3 поддерживается загрузка как с SD-карты, так и с USB. В initrd должны быть модули ядра: dwc2 и bcm2835.
Проблемы:
1. На Raspberry Pi 4 с 4 ГБ ОЗУ объём доступной оперативной памяти ограничен 3 ГБ. В настройках UEFI можно включить, тогда не будет работать USB.
2. На Raspberry Pi 4 загрузка работает только с USB-накопителя. Поэтому сценарий использования такой: micro-SD карта минимального объёма, которая форматируется в MBR FAT32, на неё распаковывается этот EFI-архив, а уже операционная система устанавливается на другой USB-накопитель. Для загрузки с USB-накопителя в initrd должны быть модули ядра: xhci-plat-hcd и bcm2835.
3. На Raspberry Pi 4 wi-fi не работает. А ethernet не работает с ядром версии < 5.5.
Особенности установки
1. Не используйте авторазметку диска в инсталляторе, если устанавливаете на micro-SD карту.
2. Не удаляйте, не форматируйте первый раздел micro-SD карты. Не меняйте на нём флаги раздела. На нём находится EFI. Также его можно использовать как /boot/efi
3. При установке загрузчика выберите EFI (для съёмных устройств).
4. После установки в сборках без NetworkManager оказывается не настроенный интерфейс eth1. Причина в том, что при установке интерфейсу присваивается имя eth0 и настраивается eth0. Необходимо перенести eth0 в eth1:
mv /etc/net/ifaces/eth0 /etc/net/ifaces/eth1
Настройка Alt Linux для Raspberry Pi с помощью QEMU
Бывают моменты, когда под рукой не оказывается, казалось бы, самого нужного — обжимных клещей для витой пары, отвёрстки, или. монитора с hdmi. А тут подвернулся случай пощупать Raspberry Pi. Оглядев свои «богатства» и осознав, что во втором часу ночи устройства с hdmi портом не найти, а адаптер hdmi-vga приказал долго жить, направляемся в поисках вариантов в Интернет. Аналоговый сигнал малинка из-под свежего Сизифа нормально выдавать не захотела, а без предварительной настройки малинка в рабочий режим не выходит. Побродив по просторам Сети, вспоминаем про раздел на Вики Альт Линукс, посвященный ARM-портам. Находим там инструкцию по запуску образов в QEMU, и тут загорается лампочка: «А что, если. «. Впрочем, обо всём по порядку
Процесс настройки
0. Устанавливаем на карту памяти дистрибутив с помощью утилиты alt-rootfs-installer;
1. Узнаём букву нашей карты памяти:
2. Снимаем с устройства (а не с раздела) образ:
dd if=/dev/sdX (или mmcblk0) of=/путь/к/файлу/ИмяОбраза.img
3. Запускаем образ в QEMU в следующей конфигурации:
qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 2048 -smp 4 -bios \ -drive if=none,id=sda,format=file,file=ИмяОбраза.img \ -device virtio-blk-device,drive=sda \ -device virtio-keyboard -device virtio-tablet \ -device virtio-net-device,netdev=net0 -netdev user,id=net0 \ -device virtio-gpu,xres=1366,yres=768 -nographic -vnc :0
4. Подключаемся по VNC к QEMU и спокойно настраиваем образ.
remote-viewer vnc://localhost:5900
5. Перезагружаем QEMU и проверяем, всё ли настроилось.
6. Записываем настроенный образ тем же dd:
dd if=/путь/к/файлу/ИмяОбраза.img of=/dev/sdX (или mmcblk0)
7. Вставляем карту памяти в Raspberry Pi 3 и пробуем подключиться по ssh.
Работоспособность метода
Метод проверен на работоспособность для Raspberry Pi 3 B+.