Я пытаюсь собрать пакеты для Alpine Linux, который имеет официальную поддержку x86, x86_64, armhf, aarch64, s390x, ppc64le, поэтому я хочу собрать для всех этих архитектур.

В настоящее время я использую эмуляцию пользовательского режима QEMU для запуска сред chroot этих архитектур на хосте x86_64, но кажется, что он довольно нестабилен и часто приводит к сбоям. Поэтому сейчас я пытаюсь запустить виртуальные машины полностью, используя QEMU.

Установка Alpine Linux для архитектур, отличных от ARM, довольно проста и может быть сделана путем прикрепления образов .iso, представленных на официальной странице загрузки. Однако для ARM это другая история. Там нет ничего другого, кроме архивов для netboot и u-boot, поэтому я не знаю, как его установить. Я попытался извлечь архив для сетевой загрузки и установить -kernel и -initrd для извлеченных файлов, но это не сработало. (Я использовал полную команду:qemu-system-aarch64 -M vexpress-a9 -kernel vmlinuz-vanilla -initrd initrd-vanilla -append "root=/dev/ram") Я не получил вывод в терминале, а Guest had not initialized the display (yet) в окне VNC.

Итак, как я могу загрузить виртуальную машину? Благодарю.

1 ответ1

1

Наконец, я успешно загрузил виртуальные машины.


aarch64

Просто используйте команду для следующего:

qemu-system-aarch64 \
  -M virt -m 512M -cpu cortex-a57 \ # Required, cortex-a53 is OK too
  -kernel vmlinuz-vanilla -initrd initramfs-vanilla \ # These two files are from the netboot archive
  -append "console=ttyAMA0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/ \ # The console argument is required to get console output
  -nographic

armhf

Требуется кастомное ядро. Тот, который я построил, доступен в моем репозитории GitHub. Я использовал скрипт из другого репозитория, но добавил еще несколько драйверов.

qemu-system-arm \
  -M versatilepb -m 256M -cpu arm1176 \
  -kernel vmlinuz -dtb versatile-pb.dtb \ # From my repo mentioned above
  -initrd initramfs-vanilla \ # From netboot archive
  -append "console=ttyAMA0 ip=dhcp alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main/ \ # Same as aarch64
  -nographic

ОБНОВЛЕНИЕ Официальное ядро в архиве сетевой загрузки может также работать, если используется с правильным файлом dtb, который можно извлечь из пакета linux-vanilla Alpine в главном репозитории. например -M vexpress-a15 -kernel vmlinuz-vanilla -dtb vexpress-v2p-ca15_a7.dtb (другой тип машины с соответствующим dtb также должен работать)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .