Сборка qemu aarch64 из исходников под ALT Linux.
Host: Архитектура x86_64. OC ALT Linux.
cat /etc/os-releaseNAME="alt-platform-builder"VERSION="10.1"ID=altlinuxVERSION_ID=10.1PRETTY_NAME="alt-platform-builder 10.1 (Aronia)"ANSI_COLOR="1;33"CPE_NAME="cpe:/o:alt:platform-builder:10.1"BUILD_ID="alt-platform-builder 10"ALT_BRANCH_ID="p10"HOME_URL="https://www.basealt.ru/platform"BUG_REPORT_URL="https://bugs.altlinux.org/"LOGO=basealtecho "Скачиваем последнюю версию qemu ..."wget --no-check-certificate https://download.qemu.org/qemu-10.0.2.tar.xztar -xJf qemu-10.0.2.tar.xzINSTALL_DIR="/usr/bin"TARGET="aarch64-linux-user" cd qemu-10.0.2mkdir build && cd buildecho "Конфигурируем сборку..."../configure --target-list="$TARGET" --static --enable-user --disable-system# собираемmake -j$(nproc)# проверка, что статическаяldd ./qemu-aarch64 statically linked# далее все под rootinstall -v -m 755 ./qemu-aarch64 "$INSTALL_DIR/qemu-aarch64.static"ln -sfv "qemu-aarch64.static" "$INSTALL_DIR/qemu-aarch64-static" || echo "Ошибка создания симлинка"echo "Проверяем установку:""$INSTALL_DIR/qemu-aarch64" --version || echo "Установленный бинарник не работает"export LFS="/alt-chroot" # Директория для chroot-окруженияROOTFS="mcom03-altlinux-p10-rootfs.tar.gz"URL="https://dist.elvees.com/mcom03/altlinux/2025.05/"# Проверка существования директорииif [ ! -d "$LFS" ]; then export LFS="/alt-chroot" mkdir -p "$LFS" || echo "Не удалось создать ${LFS}"fibashrc_file="/etc/profile"alias_definition='alias altch="/sbin/chroot /alt-chroot /usr/bin/env -i HOME=/root TERM=xterm-256color PS1=\"(chroot)\\u:\\w\\$\" PATH=/bin:/sbin:/usr/local/bin:/usr/bin /bin/bash --login"'# Определяем alias в текущей сессииeval "$alias_definition"# Добавляем alias в /etc/profile, если еще нетif ! grep -q '^alias altch=' "$bashrc_file"; then echo "$alias_definition" | sudo tee -a "$bashrc_file" > /dev/null echo "Алиас altch добавлен в $bashrc_file"else echo "Алиас altch уже присутствует в $bashrc_file"fi# wget ${URL}${ROOTFS}tar -xzf ${ROOTFS} -C "$LFS" # добавим автоматическое монтирование в /etc/fstabecho "proc /alt-chroot/proc proc defaults 0 0sysfs /alt-chroot/sys sysfs defaults 0 0tmpfs /alt-chroot/run tmpfs defaults 0 0/dev /alt-chroot/dev none bind 0 0/dev/pts /alt-chroot/dev/pts none bind 0 0" | tee -a /etc/fstabmount $LFS/devmount $LFS/dev/ptsmount $LFS/procmount $LFS/sysmount $LFS/run if [ -h $LFS/dev/shm ]; then mkdir -pv $LFS/$(readlink $LFS/dev/shm)else mount -t tmpfs -o nosuid,nodev tmpfs $LFS/dev/shmfi # копируем некоторые файлы из host в chrootif [ -h $LFS/etc ]; then mkdir -pv $LFS/etcfiif [ -h $LFS/etc/apt/apt.conf.d/ ]; then mkdir -pv $LFS/etc/apt/apt.conf.d/fi# copy some files form host to chroot# nameserver такой же, как в родительской системеcp -fL /etc/resolv.conf $LFS/etc/resolv.conf# apt proxycp -f /etc/apt/apt.conf.d/proxy.conf $LFS/etc/apt/apt.conf.d/# правило для binfmtrule=":qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64.static:F"echo $rule | tee -a /lib/binfmt.d/qemu-aarch64-static.confecho "Перезагрузка демона systemd..."systemctl daemon-reload || echo "Сбой systemctl daemon-reload"echo "Перезапуск службы binfmt..."systemctl restart systemd-binfmt.service || echo "Сбой перезапуска binfmt"echo "Проверка статуса службы..."systemctl status systemd-binfmt.service --no-pager || echo "Ошибка проверки статуса binfmt"echo "Наберите altch, чтобы войти в chroot"# p10mkdir /alt-chroot/mirror.yandex.ruecho "/mnt/altelos/Public/mirror.yandex.ru /alt-chroot/mirror.yandex.ru none bind,ro 0 0" | tee -a /etc/fstab# p11mkdir /alt-chroot/ALTLinuxecho "/home/user/altrepo/distributions/ALTLinux /alt-chroot/ALTLinux none bind,ro 0 0" | tee -a /etc/fstabecho "rpm [p10] file:///mirror.yandex.ru/altlinux/p10/branch aarch64 classicrpm [p10] file:///mirror.yandex.ru/altlinux/p10/branch noarch classic" > /alt-chroot/etc/apt/sources.list.d/local.listВот сводная таблица основных характеристик и особенностей сборки MCom-03 (СКИФ) ALT Linux :
|
Пункт |
Описание |
|
Дистрибутив |
ALT Linux P10 с поддержкой модулей на базе микросхемы 1892ВА018 (СКИФ, MCom-03) |
|
Рабочее окружение |
Xfce с выводом на HDMI-монитор |
|
Пользователи по умолчанию |
пользователь: elvees / elvees; суперпользователь: root / elvees |
|
Поддерживаемые модули |
ROCK Pi N10 с ELV-MC03-SMARC r1.1, ELV-SMARC-CB r1.0 и r2.10.3 с ELV-MC03-SMARC r1.1 |
|
RPM-репозитории |
Апстрим ALT Linux P10 + latest для поддержки микросхемы (ядро, модули, user-space) |
|
Обновление |
Через apt-get dist-upgrade или выборочно мета-пакеты ядра |
|
Поддержка HDMI |
Скрипт mcom03-hdmi-setup.sh для перезапуска HDMI и настройки PLL |
|
Поддержка аудио |
ALSA; systemd-демон elvees-alsa-prepare для asound.state |
|
Поддержка DSP |
Пакет elcore50-toolchain (тулчейн DSP, не установлен по умолчанию) |
|
Поддержка GPU |
Отсутствует (драйверы GPU не включены) |
|
Поддержка VPU |
Плагины GStreamer для аппаратного ускорения |
|
Форматы прошивки |
Архив корневой fs для SD/eMMC (tar2dev), QSPI образы |
|
Система загрузки |
Поддержка UEFI, скрипты прошивки tar2dev-uefi |
|
Ядро Linux |
Версия 5.10, каждый релиз обновляет ядро и модули |
|
Системное время и NTP |
Есть поддержка systemd-timesyncd, настройка через timedatectl set-ntp true |
|
Особенности |
set-hostname формирует имя из названия модуля и серийного номера |