LINUX.ORG.RU

Пожалуйста, подскажите, на каком конфиге QEMU можно запустить установку Debian ARM?

 ,


2

2

https://saimei.ftp.acc.umu.se/debian-cd/current/arm64/iso-cd/debian-10.0.0-ar...

Чтобы поставилось с GRUB2 for ARM.

Интересует машина и проц. или целиком строка запуска QEMU.



Последнее исправление: simoshina (всего исправлений: 3)

т.е. в командной строке должны фигурировать следующие подстроки:

qemu-system-arm debian-10.0.0-arm64-netinst.iso

simoshina
() автор топика
Ответ на: комментарий от simoshina

AQEMU что-то ругается, не желает стартовать.

То проца такого нет, то CD-ROM-а, то еще чего-нибудь.

Как мне проверить установку ISO образа?

simoshina
() автор топика
Ответ на: комментарий от anonymous

Че-то нифига не работает, даже из предпоследнего сообщения:

qemu-system-arm -M versatilepb -serial stdio -net nic,model=smc91c111 -net user -boot d -cdrom debian-10.0.0-arm64-netinst.iso

черный экран и все, а из более ранних сообщений и вовсе консоль вываливается.

simoshina
() автор топика
Ответ на: комментарий от simoshina

https://losst.ru/kak-polzovatsya-qemu

Качаешь этот образ (ниже объясню, почему netinst)

wget https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-10.0.0-arm64-netinst.iso -O buster_netinst.iso

Качаешь UEFI (без него ничего не заработает):

wget https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/vqT394cWpy8yHg -O QEMU_EFI.fd

Закрываешь и запускаешь терминал и выполняешь:

qemu-system-aarch64 -M virt -m 2048 -cpu cortex-a53 -device VGA -device nec-usb-xhci -device usb-kbd -device usb-mouse -accel tcg -bios QEMU_EFI.fd -cdrom buster_netinst.iso

Но будет работать медленнее на 10-50% (в зависимости от железа), т.к нет kvm, а kvm-arm64 ты на x86_64 не запустишь, на настоящем ноуте ARM64/андроиде получится, соответственно нельзя указать несколько ядер CPU x86. Получится только инсталлятор запустить, а установить сам Debain скорее всего нет. Разные архитектуры, разные технологии, если вкратце.

anonymous
()
Ответ на: комментарий от simoshina

еще и:

qemu "-accell: invalid option"

хотя в AQEMU вариант -machine accel=tcg вроде принимается

не ARM а какая-то невиданная чехарда опций, половина из которых устарела или по какой-то другой причине не работает.

simoshina
() автор топика
Ответ на: комментарий от simoshina

вообщем вот это:

qemu-system-aarch64 -M virt -m 2048 -cpu cortex-a53 -device VGA -device nec-usb-xhci -device usb-kbd -device usb-mouse -machine accel=tcg -bios QEMU_EFI.fd -cdrom debian-10.0.0-arm64-netinst.iso

показывает черный экран, что ей еще надо?

simoshina
() автор топика
Ответ на: комментарий от simoshina

Because ARM systems differ so much and in fundamental ways, typically operating system or firmware images intended to run on one machine will not run at all on any other. This is often surprising for new users who are used to the x86 world where every system looks like a standard PC. (Once the kernel has booted, most userspace software cares much less about the detail of the hardware.)

anonymous
()

Под твои задачи не совсем подходит, но я вот так делаю чрут на raspberry pi (инструкция более полная, со скачкой образа с нуля). Нужно поставить qemu-user-static binfmt-qemu-static:

# Chroot to Raspbian
---

# install dependecies

apt-get install qemu qemu-user-static binfmt-support

# download raspbian image
wget https://downloads.raspberrypi.org/raspbian_latest

# extract raspbian image
unzip raspbian_latest

# extend raspbian image by 1gb
dd if=/dev/zero bs=1M count=1024 >> 2016-05-27-raspbian-jessie.img

# set up image as loop device
losetup /dev/loop0 2016-05-27-raspbian-jessie.img

# check file system
e2fsck -f /dev/loop0p2

#expand partition
resize2fs /dev/loop0p2

# mount partition
mount -o rw /dev/loop0p2  /mnt
mount -o rw /dev/loop0p1 /mnt/boot

# mount binds
sudo mount --bind /dev /mnt/dev/
sudo mount --bind /sys /mnt/sys/
sudo mount --bind /proc /mnt/proc/
sudo mount --bind /dev/pts /mnt/dev/pts

# ld.so.preload fix
sed -i 's/^/#/g' /mnt/etc/ld.so.preload

# copy qemu binary
cp /usr/bin/qemu-arm-static /mnt/usr/bin/

# chroot to raspbian
chroot --userspec root /mnt /bin/sh

#export $PATH:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/bin:/usr/bin:/usr/sbin:/sbin

# do stuff...

exit

# revert ld.so.preload fix
sed -i 's/^#//g' /mnt/etc/ld.so.preload

# unmount everything
umount /mnt/{dev/pts,dev,sys,proc,boot,}

# unmount loop device
losetup -d /dev/loop0
sudo mount /dev/sdd2 /mnt 
sudo mount /dev/sdd1 /mnt/boot
fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Спасибо, но chroot ненадо, в том смысле, что я его умею и мне его недостаточно, потому что нужно проверить работу uboot-grub.

даже AQEMU уже научился запускать черное окно (но не более того) без сообщений об ошибках, конфиг:

/usr/bin/qemu-system-arm \
    -monitor stdio \
    -M versatilepb \
    -k en-us \
    -machine accel=tcg \
    -m 256 \
    -cdrom /download/debian-10.0.0-arm64-netinst.iso \
    -net nic,vlan=0 \
    -net user,vlan=0 \
    -kernel /mnt/d1/initrd.img-5.2.9-gnu \
    -initrd /mnt/d1/initrd.img-5.2.9-gnu \
    -append root=LABEL=XXX verbose net.ifnames=0  ro  quiet  framebuffer=false ipv6.disable=1 selinux=0 \
    -rtc base=utc \
    -name "Debian_ARM32" \
    -drive format=raw,file=/dev/zvol/XXX/arm32/debian_vol,aio=native,cache.direct=on

ему обязательно нужно указывать dtb файл?

Вот этот пример:

qemu-system-arm -serial stdio -M versatilepb -kernel /mnt/d1/vmlinuz-5.2.9-gnu -dtb /mnt/d1/versatile-pb.dtb

показывает такое-же черное окошко без признаков жизни.

А ядро нужно собирать отдельно под каждую модель одноплатника в т.ч. виртуального или некоторые работают на любом ядре? BBB же например должен запускаться на mainline ядре, хотя в QEMU его нет к сожалению.

Или попробовать суперсовместимый OMAP3, например, -M sx1 ?

simoshina
() автор топика
Ответ на: комментарий от simoshina

От конкретных железок всё очень зависит, dtb файлы - «Device Tree Blob» под каждую отдельную железку, загружается загрузчиком и передаётся ядру. Если честно, я не пробовал запускать не на реальном арм железе что-то, кроме малины (просто отсутствовала необходимость), потому могу посоветовать только погуглить, либо подождать кого-то более сведущего в вопросе.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

А можно для малины пример работающей командной строчки qemu и ссылку на загрузочные файлы (uboot, конфиг, ядро и т.п.)?

Чтобы за 5 минут можно было уже увидет в окошке QEMU работающее ядро. Может быть у меня qemu-arm кривой в Devuan?

simoshina
() автор топика
Ответ на: комментарий от simoshina

корневую файловую систему ненадо, только ядро, чтобы убедиться, что у меня рабочий qemu-arm

simoshina
() автор топика
Ответ на: комментарий от simoshina

Может быть, кто-нибудь знает хотя бы список значений опции -M, которые имеют максимально хорошую поддержку в QEMU-ARM и работают с обычным mainline ядром без перекомпиляций под них персонально?

simoshina
() автор топика
Ответ на: комментарий от simoshina

А кстати, как вы находите весь этот бардак в нумерации ARM?

ARM9, ARM11, ARMv7

Cortex-A8 CPU (ARMv7)

Там поди и все остальное, что ниже ядра линупс и ближе к железу такое-же хаотичное?

Несмотря на свою дырявость, сложность и огороженность под капотом, X86 хотя бы очень унифицирован и совместим в отличии от.

simoshina
() автор топика

Установка Debian-10 arm64 на хосте с Debian-10:

$ cp /usr/share/AAVMF/AAVMF_VARS.fd .

$ qemu-img create -f qcow2 buster.qcow2 16G

$ qemu-system-aarch64 \
  -machine virt -cpu cortex-a53 -m 1024 \
  -nographic -serial stdio -monitor none \
  -nic user,model=virtio \
  -drive if=pflash,format=raw,readonly,file=/usr/share/AAVMF/AAVMF_CODE.fd \
  -drive if=pflash,format=raw,file=AAVMF_VARS.fd \
  -drive if=virtio,file=buster.qcow2 \
  -drive if=virtio,format=raw,readonly,media=cdrom,file=debian-10.0.0-arm64-netinst.iso
No ★★
()
Ответ на: комментарий от No

Спасибо, очень помогло. Немного переделал пока вот так:

Bin=qemu-system-aarch64;

SoC=" -machine virt -cpu cortex-a53 -m 1024 ";

#  -nographic -monitor none

EFI=" -drive if=pflash,format=raw,readonly,file=/download/27debian_arm/efi/2/AAVMF_CODE.fd -drive if=pflash,format=raw,file=/download/27debian_arm/efi/2/AAVMF_VARS.fd ";
  
Periphery=" -serial stdio ";
# -nic user,model=virtio ";

Disks=" -drive if=virtio,file=/download/27debian_arm/buster.qcow2 ";

BusterISO=" -drive if=virtio,format=raw,readonly,media=cdrom,file=/download/27debian_arm/debian-10.0.0-arm64-netinst.iso ";

BusterTest="$Bin $SoC $EFI $Periphery $Disks $BusterISO";

$BusterTest;

И заработало, только вот много вопросов, что зачем и почему, как-то бы получить и осознать ответы.

simoshina
() автор топика
Ответ на: комментарий от simoshina

1) aarch64 - это ARM 64bit? а соответственно qemu-system-arm - эмулятор ARM 32 бит.

2) Почему -cpu cortex-a53 недоступен в выпадающем меню настройки AQEMU? Там только Default, qemu-system-arm и USE.

3) Какие основные распространенные популярные -machine для QEMU эмуляции? Для которых есть много образов.

Почему для эмуляции RaspberiPI предлагают пересобрать ядро пропатченное для QEMU, а для Virt Cortex A53 работает сразу?

4) Без дисков с образами EFI никак?

5) Что-то -nic не понравился моему QEMU, может быть старая версия.

6) Почему вывод виртуалки направляется прямо в терминал, откуда запущен QEMU, а в появившемся дополнительно окне только консоль? Можно ли наоборот? Можно ли сделать 2 окна, одно под консоль и второе под вывод виртуалки?

simoshina
() автор топика
Ответ на: комментарий от No

настоящего firmware, а не чего-то абсолютно отвратительного вроде EFI, который не может соревноваться даже со старым Open Firmware (IEEE 1275), которому уже больше 20 лет;

https://habr.com/en/post/271815/

Чем можно объяснить его неприязнь к EFI?

simoshina
() автор топика
Ответ на: комментарий от simoshina

1) aarch64 - это ARM 64bit? а соответственно qemu-system-arm - эмулятор ARM 32 бит.

Да.

2) Почему -cpu cortex-a53 недоступен в выпадающем меню настройки AQEMU? Там только Default, qemu-system-arm и USE.

Вопрос к авторам AQEMU.

3) Какие основные распространенные популярные -machine для QEMU эмуляции? Для которых есть много образов.

Этого не знаю.

Почему для эмуляции RaspberiPI предлагают пересобрать ядро пропатченное для QEMU, а для Virt Cortex A53 работает сразу?

Qemu не полностью эмулирует Raspberry pi.

4) Без дисков с образами EFI никак?

Можно скопировать ядро и ram-диск из установочного образа и вместо "-drive if=pflash..." использовать

-kernel install.a64/vmlinuz -initrd install.a64/initrd.gz

или собрать U-boot для Qemu и использовать опцию

-bios u-boot.bin

5) Что-то -nic не понравился моему QEMU, может быть старая версия.

Опция -nic появилась в Qemu 2.12

6) Почему вывод виртуалки направляется прямо в терминал, откуда запущен QEMU, а в появившемся дополнительно окне только консоль? Можно ли наоборот? Можно ли сделать 2 окна, одно под консоль и второе под вывод виртуалки?

Результат опции -serial stdio, можно ее убрать, но в консоли gtk-интерфейса у меня работают не все кнопки.

No ★★
()
Ответ на: комментарий от No

или собрать U-boot для Qemu и использовать опцию

U-boot для Qemu тоже специальный, как и ядро Raspberry для QEMU?

Опция -nic появилась в Qemu 2.12

Пожалуйста, как отключить PXE для -nic ?

Предлагают задать пустой romfile примерно так: -device virtio-net-pci,romfile=,

но ведь -nic, наверно, создает свой -device ?

simoshina
() автор топика
Ответ на: комментарий от simoshina

Вот, кстати, обновленный скриптик с путями, если кому надо:

 
ImageDir="/download/27debian_arm";
#EFIDir="$ImageDir/efi/2";
EFIDir="/usr/share/AAVMF";
#ISODir=$ImageDir;
ISOFile="/download/large2/debian_arm/debian-10.0.0-armhf-DVD-1.iso";

Bin=qemu-system-aarch64;
#Bin=qemu-system-arm;

SoC=" -machine virt -cpu cortex-a53 -m 1024 ";

#  -nographic -monitor none

EFI=" -drive if=pflash,format=raw,readonly,file=$EFIDir/AAVMF_CODE.fd -drive if=pflash,format=raw,file=$EFIDir/AAVMF_VARS.fd ";
  
Periphery=" -serial stdio -nic user,model=virtio,id=r1h1 -device virtio-net-pci,romfile=,netdev=r1h1,id=r1h2,mac=00:01:00:ff:66:01 ";

Disks=" -drive if=virtio,file=$ImageDir/buster.qcow2 ";

BusterISO=" -drive if=virtio,format=raw,readonly,media=cdrom,file=$ISOFile ";

BusterTest="$Bin $SoC $EFI $Periphery $Disks $BusterISO";

$BusterTest;

А под ARM 32bit какой конфиг может аналогично запуститься с ISO? -cpu cortex-a7 не прокатывает.

simoshina
() автор топика
Ответ на: комментарий от simoshina

Или вот:

http://proubuntu.ru/151601/kak-otklychit-nezhelatelnuy-popytku-zagruzki-ipxe-...

Мне удалось обойти это в Ubuntu 12.04, передав следующие опции в qemu-kvm в командной строке (установка пустого romfile - хитрость):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0

simoshina
() автор топика
Ответ на: комментарий от No

А ISO шник с 32 битным ARM линупсом можно как-то запустить?

В Cortex A53 выпадает в EFI CLI.

Может быть, попробовать 32 битный EFI в том же конфиге Cortex A53?

simoshina
() автор топика
Ответ на: комментарий от simoshina

Вот так у меня запускается:

qemu-system-arm \
  -machine virt -m 1024 \
  -nographic -serial stdio -monitor none \
  -nic user,model=virtio \
  -drive if=pflash,format=raw,readonly,file=/usr/share/AAVMF/AAVMF32_CODE.fd \
  -drive if=pflash,format=raw,file=AAVMF32_VARS.fd \
  -drive if=virtio,file=buster.qcow2 \
  -drive if=virtio,format=raw,readonly,media=cdrom,file=debian-10.0.0-armhf-netinst.iso

No ★★
()
Ответ на: комментарий от No

У меня почему-то перестал запускаться даже вариант 64 бит.

Выпадает в UEFI консоль, попробовал вчерашние версии скриптов, все равно выпадает. Пробовал перезагрузиться, не помогает.

Может быть, надо отключить компа на 5 минут, подождать и включить? А потом затереть IntelME?

simoshina
() автор топика
Ответ на: комментарий от No

Почему-то был изменен файл: AAVMF_VARS.fd

QEMU вносит в него какие-либо изменения самостоятельно?

simoshina
() автор топика
Ответ на: комментарий от simoshina

[!!] Detect and mount CD-ROM ├───────────────────┐     
    │                                                                     │     
    │ There was a problem reading data from the removable media. Please   │     
    │ make sure that the right media is present. If you continue to have  │     
    │ trouble, your removable media might be bad.                         │     
    │                                                                     │     
    │ Cannot read removable media, or no drivers found.                   │     
    │                             <Continue>    

simoshina
() автор топика
Ответ на: комментарий от anonymous

нашел только такое:

 ┌───────────────────┤ [!!] Detect and mount CD-ROM ├────────────────────┐    
   │                                                                       │    
   │ No common CD-ROM drive was detected.                                  │    
   │                                                                       │    
   │ You may need to load additional CD-ROM drivers from removable media,  │    
   │ such as a driver floppy. If you have such media available now, insert │    
   │ it, and continue. Otherwise, you will be given the option to manually │    
   │ select CD-ROM modules.                                                │    
   │                                                                       │    
   │ Load CD-ROM drivers from removable media?                             │    
   │                                                                       │    
   │     <Yes>                                                    <No> 
simoshina
() автор топика
Ответ на: комментарий от simoshina

А вот таки чудом нашел/дошел до этого меню:


┌───────────────────┤ [!!] Detect and mount CD-ROM ├────────────────────┐    
   │                                                                       │    
   │ In order to access your CD-ROM drive, please enter the device file    │    
   │ that should be used. Non-standard CD-ROM drives use non-standard      │    
   │ device files (such as /dev/mcdx).                                     │    
   │                                                                       │    
   │ You may switch to the shell on the second terminal (ALT+F2) to check  │    
   │ the available devices in /dev with "ls /dev". You can return to this  │    
   │ screen by pressing ALT+F1.                                            │    
   │                                                                       │    
   │ Device file for accessing the CD-ROM:                                 │    
   │                                                                       │    
   │ /dev/cdrom___________________________________________________________ │    
   │                                                                       │    
   │                              <Continue>                               │    
   │                                          

Это жуть какая-то, неудобно так выбирать.

simoshina
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.