- Настройка Alt Linux для Raspberry Pi с помощью QEMU
- Содержание
- Введение [ править ]
- Процесс настройки [ править ]
- Работоспособность метода [ править ]
- Ports/aarch64/RaspberryPi4bootEEPROM
- Содержание
- Обновление и конфигурирование загрузчика Raspberry Pi 4 [ править ]
- Обновление или восстановление загрузчика с помощью Raspberry Pi Imager [ править ]
- Обновление загрузчика с помощью скрипта rpi-eeprom-update [ править ]
- Изменение параметров конфигурации загрузчика с помощью скрипта rpi-eeprom-config [ править ]
- RaspberryPi and UEFI
- Содержание
- Введение [ править ]
- Установка UEFI [ править ]
- Запись образа на USB Flash [ править ]
- Доступные сборки [ править ]
- Особенности UEFI для Raspberry Pi 3: [ править ]
- Проблемы: [ править ]
- Ports/aarch64/Raspberry Pi4
- Содержание
- Аппаратная часть и отладка [ править ]
- JTAG [ править ]
- Консоль [ править ]
- Кнопка RESET [ править ]
- Firmware и загрузка [ править ]
- Процесс загрузки [ править ]
- Firmware [ править ]
- Создание загрузочного раздела и корневой ФС [ править ]
- Ядро [ править ]
- Известные проблемы [ править ]
- Выключение и перезагрузка (устарело) [ править ]
- Ports/aarch64/RaspberryPi4andU-Boot
- Загрузка Альт на Raspberry Pi 4 с помощью u-boot [ править ]
- Загрузка Raspberry Pi 4 [ править ]
- Скрипты для переключения вариантов загрузки [ править ]
Настройка Alt Linux для Raspberry Pi с помощью QEMU
ВНИМАНИЕ! Все шаги выполняем под рутом, так что «Смотри в оба!» (С) Билли Бонс, «Остров сокровищ».
Содержание
Введение [ править ]
Бывают моменты, когда под рукой не оказывается, казалось бы, самого нужного — обжимных клещей для витой пары, отвёрстки, или. монитора с hdmi. А тут подвернулся случай пощупать Raspberry Pi. Оглядев свои «богатства» и осознав, что во втором часу ночи устройства с hdmi портом не найти, а адаптер hdmi-vga приказал долго жить, направляемся в поисках вариантов в Интернет. Аналоговый сигнал малинка из-под свежего Сизифа нормально выдавать не захотела, а без предварительной настройки малинка в рабочий режим не выходит. Побродив по просторам Сети, вспоминаем про раздел на Вики Альт Линукс, посвященный ARM-портам. Находим там инструкцию по запуску образов в QEMU, и тут загорается лампочка: «А что, если. «. Впрочем, обо всём по порядку
Процесс настройки [ править ]
0. Устанавливаем на карту памяти дистрибутив с помощью утилиты alt-rootfs-installer;
1. Узнаём букву нашей карты памяти:
2. Снимаем с устройства (а не с раздела) образ:
3. Запускаем образ в QEMU в следующей конфигурации:
4. Подключаемся по VNC к QEMU и спокойно настраиваем образ.
5. Перезагружаем QEMU и проверяем, всё ли настроилось.
6. Записываем настроенный образ тем же dd:
7. Вставляем карту памяти в Raspberry Pi 3 и пробуем подключиться по ssh.
Работоспособность метода [ править ]
Метод проверен на работоспособность для Raspberry Pi 3 B+.
Источник
Ports/aarch64/RaspberryPi4bootEEPROM
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Содержание
Обновление и конфигурирование загрузчика Raspberry Pi 4 [ править ]
На Raspberry Pi 4 установлена флеш-память объёмом 512 кб, подключенная по интерфейсу SPI. Записанное в неё ПО используется при загрузке системы и заменяет собой файл bootcode.bin, который находился на загрузочном разделе SD карты предыдущих моделей Raspberry Pi. Это ПО позволяет загружать Raspberry Pi 4 не только с SD карты, но и с USB флешки и по сети. Периодически выпускаются новые версии загрузчика Raspberry Pi 4 и требуется его обновление.
Кроме ПО для загрузки в той же флеш-памяти записаны параметры конфигурации, управляющие режимом загрузки системы. В частности, изменяя эти параметры можно менять последовательность поиска загрузочного устройства, например, сначала SD затем USB, или сначала SD затем сеть.
Как обновление ПО загрузчика так и изменение параметров загрузки требуют перепрошивки встроенной флеш-памяти.
В случае сбоя перепрошивки RPi4 может перестать загружаться.
Для восстановления загрузчика после сбоя можно использовать программу Raspberry Pi Imager. Подробности ниже.
Также на Raspberry Pi 4 установлена микросхема USB контроллера VL805, прошивка которой может быть обновлена.
Обновление или восстановление загрузчика с помощью Raspberry Pi Imager [ править ]
Программа Raspberry Pi Imager существует под популярные ОС и архитектуры. Она позволяет просто и удобно выбрать и записать на флешку образ ОС для RPi, а также создать специальную загрузочную SD карту для перепрошивки встроенной флеш-памяти RPi4.
Пользователи Альт могут установить пакет rpi-imager из репозитория Альт. Пользователи Ubuntu, Windows и macOS могут загрузить программу по ссылке: https://www.raspberrypi.org/software/
- Понадобиться SD карта. Внимание! Всё содержимое SD карты будет перезаписано.
- Установите и запустите Raspberry Pi Imager.
- Нажмите «CHOOSE OS» и выберите «Misc utility images», затем «Bootloader».
- Выберите режим загрузки: «SD» (рекомендуется), «USB» или «Network».
- Подключите SD карту.
- Нажмите «CHOOSE STORAGE» и выберите SD карту.
- Нажмите «WRITE»
- Вставьте записанную SD карту в RPi4, загрузитесь с неё и подождите не менее 10 сек.
- Зеленый светодиод будет непрерывно мигать, а дисплей HDMI станет зеленым в случае успешной перепрошивки.
- Отключите питание RPi4 и выньте SD карту.
Обновление загрузчика с помощью скрипта rpi-eeprom-update [ править ]
Можно обновить загрузчик RPi4 из ОС Альт без использования дополнительного компьютера и SD карты. Для этого установите пакет rpi-eeprom. Вместе с ним должны быть установлены пакеты firmware-bootloader-rpi4, содержащий прошивку, и rpi-vcgencmd, содержащий утилиту vcgencmd.
Если пакет rpi-eeprom уже был установлен, то обновите его перед обновлением загрузчика.
Все указанные ниже команды следует подавать от root.
Для проверки наличия обновлений подайте команду
Для планирования обновления при следующей перезагрузке подайте команду
По этой команде на загрузочном разделе будут созданы файлы, нужные для обновления, и при следующей перезагрузке RPi4 обновление будет выполнено.
Для отмены запланированного обновления подайте команду
По этой команде файлы для обновления будут удалены.
Изменение параметров конфигурации загрузчика с помощью скрипта rpi-eeprom-config [ править ]
Описание всех параметров параметров конфигурации загрузчика можно посмотреть по ссылке:
В частности, последовательность поиска загрузочного усиройства задаётся в параметре BOOT_ORDER:
Значение BOOT_ORDER | Описание |
---|---|
0xf41 | Сначала SD, затем USB флешка, затем повторить сначала (значение по умолчанию, если BOOT_ORDER не задан) |
0xf14 | Сначала USB флешка, затем SD, затем повторить сначала |
0xf21 | Сначала SD, затем сеть, затем повторить сначала |
Возможны и другие варианты загрузки.
Посмотреть установленные в данный момент параметры загрузки можно командой
Результат выполнения этой команды можно записать в файл для редактирования, например, boot.conf, внести в этот файл требуемые изменения и применить их командой
Можно обойтись без промежуточного файла. Для этого установить переменную окружения EDITOR, например так:
затем подать команду
Будет автоматически создан временный файл boot.conf и открыт в заданном редакторе. После записи файла и выхода из редактора изменения будут применены.
Следует понимать, что скрипт rpi-eeprom-config не выполняет перепрошивку флеш-памяти. Он формирует временный файл прошивки, содержащий загрузчик и изменённые параметры загрузки и вызывает скрипт rpi-eeprom-update. Этот скрипт, в свою очередь, планирует обновление — формирует файлы на загрузочном разделе, которые выполнят перепрошивку при следующей перезагрузке RPi4.
Источник
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 не работает с ядром версии Особенности установки [ править ]
1. Не используйте авторазметку диска в инсталляторе, если устанавливаете на micro-SD карту.
2. Не удаляйте, не форматируйте первый раздел micro-SD карты. Не меняйте на нём флаги раздела. На нём находится EFI. Также его можно использовать как /boot/efi
3. При установке загрузчика выберите EFI (для съёмных устройств).
4. После установки в сборках без NetworkManager оказывается не настроенный интерфейс eth1. Причина в том, что при установке интерфейсу присваивается имя eth0 и настраивается eth0. Необходимо перенести eth0 в eth1:
Источник
Ports/aarch64/Raspberry Pi4
Данное описание относится в основном к Pi4, но в целом подходит и для других железок на основе Broadcom BCM2711 или даже BCM2710 (как, например, Pi3).
Содержание
Аппаратная часть и отладка [ править ]
Самая большая сложность — практически полное отсутствие документации. Это, конечно, Broadcom, но все равно фу такими быть. Тем не менее, три самых главных отладочных средства на малине есть и работают.
JTAG [ править ]
Очень надеюсь, что в такие дебри вам лезть не потребуется, но на всякий случай.
Положите малину разъемами питания и видео к себе, а разъемами Ethernet и USB вправо. В левом дальнем углу окажется 40-контактная гребенка GPIO:
Соответствие сигналов JTAG (3.3V TTL) и контактов GPIO такое:
Общий провод (GND) можно подключить к любому из контактов 6,9,14,20,25,30,34,39; рекомендую использовать одновременно 14, 20 и 39 ввиду их максимальной близости к сигнальным. Питание +3.3V можно взять с контактов 1 или 17; питание +5V присутствует на контактах 2 и 4.
Консоль [ править ]
/dev/ttyAMA0 115200 8N1, 3.3V TTL. Подключать очень удобно — три контакта подряд:
Общий провод (GND) в этом случае удобнее всего подключить к 6 контакту. Главное, не промахнитесь: рядом +5V, которые уже могут быть опасными для USB-serial адаптера (рекомендую PL2303 и CH340, они более живучие).
Кнопка RESET [ править ]
Увы, незаменимая вещь. Впрочем, здесь разработчики малины немного сэкономили: контактные площадки на плате есть, а разъем туда не впаян. Если вы уверены в своих руках и знаете, с какой стороны браться за паяльник — ничего сложного. Если есть сомнения — обратитесь к тому, кто умеет. Вам понадобится двух- или трехконтактный разъем, аналогичный GPIO-гребенке — с расстоянием между контактами в одну линию (2.54 мм, 1/10 дюйма). Его место на плате малины можно легко опознать по надписям RUN и Global_EN. Так вот: если этот самый Global_EN (правый контакт) соединить с общим (центральный контакт) — это и будет нажатие кнопки Reset.
Firmware и загрузка [ править ]
Процесс загрузки [ править ]
Внутри ПЗУ малины находится примитивный начальный загрузчик, который выполняет следующие действия:
- проверяет доступность SDHC-флешки (SDXC его скорее всего тоже устроит, а вот просто SD не воспринимает)
- проверяет наличие на ней корректной таблицы разделов MBR (если когда-то там делали GPT, нужно вычистить все ошметки)
- проверяет существование первого раздела с типом FAT32 (/dev/sdx1 0x0C)
- запускает основной загрузчик, находящийся в файле start4.elf (на старых малинах — start.elf)
Основной загрузчик читает с того же раздела файл config.txt и в целом принимает его к сведению, но действует все же по собственному разумению. Выглядит этот файл примерно так:
Нетрудно видеть, что именно здесь мы разрешаем процессору использовать 64-битный режим, загружаем параметры Device Tree, включаем ПКП (который, кстати, появился только на четвертой малине), отключаем bluetooth и освобождаем последовательный порт для консоли, устанавливаем скорость этого порта, а также настраиваем видеоподсистему. Когда все настроено, загрузчик запускает ядро из файла kernel8.img и передает ему параметры — как на свое усмотрение, так и из файла cmdline.txt
Firmware [ править ]
Распространяется в виде готовых бинарников, доступно по адресу https://github.com/raspberrypi/firmware К сожалению, репозитарий превращен в помойку — помимо собственно firmware туда зачем-то пихают ядра (собранные непонятно кем непонятно как) и какой-то дополнительный софт. Поэтому просто вытягиваем оттуда актуальную версию:
и копируем нужные файлы к себе:
Все, копию репозитария можно удалять — больше от нее никакой пользы.
Создание загрузочного раздела и корневой ФС [ править ]
- Возьмите microSDHC флешку объемом хотя бы 4 Гб, а лучше 8 Гб.
- Очистите ее от возможных ошметков GPT и аналогичной ерунды:
- Создайте на ней два раздела:
- /dev/sdx1 — 128. 256 Мб, тип 0x0C, загрузочный
- /dev/sdx2 — все остальное, тип 0x83, для корневой ФС
- Создайте файловые системы на этих разделах:
- Смонтируйте их в удобные вам каталоги
- Скопируйте в загрузочный раздел содержимое архива rpi4-boot — помимо упомянутых выше bootcode.bin fixup*dat и start*elf он содержит конфигурационные файлы, ядро и файлы Device Tree
- Скопируйте в корневой раздел содержимое нужной вам сборки ALT Linux для AArch64
Ядро [ править ]
В настоящий момент доступны версии 4.19.71 (старое, относительно стабильное) и 5.3.5 (свежее, стабильное, рекомендуемое). Обе версии собраны с IOMMU_DEBUGFS, так что не удивляйтесь страшному сообщению в логе ядра: оно пока действительно для разработчиков.
Известные проблемы [ править ]
Выключение и перезагрузка (устарело) [ править ]
(2019.10)Пока не работают ни с ядром 4.19, ни с ядрами 5.* (2020.10) — работает
Источник
Ports/aarch64/RaspberryPi4andU-Boot
Загрузка Альт на Raspberry Pi 4 с помощью u-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 ядра в качестве аргумента.
В результате кроме изменения (или не изменения) варианта загрузки будет изменен и flavour загружаемого ядра.
Если flavour не указан, то используется flavour ядра, работающего в данный момент.
Скрипты ищут самое свежее ядро с требуемым flavour, установленное в системе.
Таким образом, если после обновления ядра update-kernel запустить скрипт, соответствующий требуемому варианту загрузки то будет настроена загрузка с новым ядром.
Дополнительные возможности — автоматическое обновление:
- ядра на FAT разделе при обновлении ядра в системе
- firmware и u-boot на FAT разделе при обновлении firmware или u-boot в системе
Скрипты находятся в пакете rpi4-boot-switch
Источник