All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] qemu-system-arm command line question
@ 2015-10-02 18:15 Gabriel L. Somlo
  2015-10-02 18:37 ` Richard W.M. Jones
  0 siblings, 1 reply; 3+ messages in thread
From: Gabriel L. Somlo @ 2015-10-02 18:15 UTC (permalink / raw)
  To: Richard W.M. Jones; +Cc: lersek, qemu-devel

Hi Rich,

On Tue, Jul 14, 2015 at 07:48:30PM +0100, Richard W.M. Jones wrote:
> On Tue, Jul 14, 2015 at 02:23:14PM -0400, Gabriel L. Somlo wrote:
> > On Tue, Jul 14, 2015 at 10:43:46AM +0100, Richard W.M. Jones wrote:
> > > On Mon, Jul 13, 2015 at 04:09:37PM -0400, Gabriel L. Somlo wrote:
> > > > 3. I'm currently only handling x86 and I/O ports. I could drop the
> > > >    fw_cfg_dmi_whitelist and just check the signature, using mmio where
> > > >    appropriate, but I don't have a handy-dandy set of VMs for those
> > > >    architectures on which I could test. Wondering if that's something
> > > >    we should have before I officially try to submit this to the kernel,
> > > >    or whether it could wait for a second iteration.
> > > 
> > >   $ virt-builder --arch armv7l fedora-22
> > > or:
> > >   $ virt-builder --arch aarch64 fedora-22
> > > then:
> > >   $ virt-builder --get-kernel fedora-22.img
> > > 
> > > and then boot is using the right qemu command, probably something
> > > like:
> > > 
> > >   $ qemu-system-arm \
> > >       -M virt,accel=tcg \
> > >       -cpu cortex-a15 \
> > >       -kernel vmlinuz-4.0.4-301.fc22.armv7hl+lpae \
> > >       -initrd initramfs-4.0.4-301.fc22.armv7hl+lpae.img \
> > >       -append "console=ttyAMA0 root=/dev/vda3 ro" \
> > >       -drive file=fedora-22.img,if=none,id=hd \
> > >       -device virtio-blk-device,drive=hd \
> > >       -serial stdio
> > > 
> > > The root password is printed in virt-builder output.
> > 
> > Thanks, that should help (once I figure out how to *really* start it,
> > right now it hangs at "reached target basic system", and spews garbage
> > if I hit 'escape', probably in an attempt to paint the text-mode
> > progress bar... Then it throws me into a dracut prompt, complaining
> > that it can't find /dev/vda3...
> > 
> > But I'm sure I'll sort it out eventually :)
> 
> That error, as I guess you know, indicates that the disk image is not
> being presented as virtio-blk to the guest.  I know for sure (because
> I tested the command line above earlier) that the armv7l guest can see
> virtio-blk.  I didn't test the aarch64 guest.

Eventually, I got 32-bit arm working like this:

bin/qemu-system-arm -M virt,accel=tcg -m 1024 -cpu cortex-a15 \
  -kernel ./vmlinuz-4.0.4-301.fc22.armv7hl+lpae \
  -initrd ./initramfs-4.0.4-301.fc22.armv7hl+lpae.img \
  -append "console=ttyAMA0 root=/dev/vda3 ro" \
  -device virtio-blk-device,drive=hd0 \
  -drive id=hd0,if=none,snapshot=on,file=./fedora-22.armv7hl+lpae.img \
  -device virtio-net-device,netdev=usernet \
  -netdev user,id=usernet \
  -monitor stdio

But now I need to tinker with aarch64, so I went back to your original
instructions and did the following:

LIBGUESTFS_BACKEND=direct virt-builder --arch aarch64 fedora-22
LIBGUESTFS_BACKEND=direct virt-builder --get-kernel fedora-22.img
mv fedora-22.img fedora-22.aarch64.img

Trying to adapt the command line used with 32-bit arm, I ran:

bin/qemu-system-aarch64 -M virt,accel=tcg -m 2048 -cpu cortex-a57 \
  -kernel ./vmlinuz-4.0.4-301.fc22.aarch64 \
  -initrd ./initramfs-4.0.4-301.fc22.aarch64.img \
  -append "console=ttyAMA0 root=/dev/vda3 ro" \
  -device virtio-blk-device,drive=hd0 \
  -drive id=hd0,if=none,snapshot=on,file=./fedora-22.aarch64.img \
  -device virtio-net-device,netdev=usernet \
  -netdev user,id=usernet \
  -monitor stdio

and now I'm back to the guest dumping me into a dracut prompt after
complaining about "/dev/vda3 does not exist".

I tried guestfish at Laszlo's suggestion, and

guestfish --ro -i -a ./fedora-22.aarch64.img

gives me the following:

/dev/sda4 mounted on /
/dev/sda2 mounted on /boot
/dev/sda1 mounted on /boot/efi

I then tried to modify the command line above to use:

	--append "console=ttyAMA0 root=/dev/vda4 ro"
	--append "console=ttyAMA0 root=/dev/sda4 ro"

with no luck whatsoever.

Your original advice seemed to hint at the possibility of an issue
with using "virtio-blk-device" on aarch64, so I'm wondering what
else I could try, and, more interestingly, what the process of
determining that might be, starting with just being handed a
"fedora-22.img" file by virt-builder...

Digging through /etc/grub2-efi.cfg with guestfish, I found the menu
entry for Fedora, and it looks like this:

	...
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 578e2ae7-957d-449a-930f-94478154137f
        else
          search --no-floppy --fs-uuid --set=root 578e2ae7-957d-449a-930f-94478154137f
        fi
        linux /vmlinuz-4.0.4-301.fc22.aarch64 root=UUID=629b6e0b-aaea-475a-b383-4beca36425c4 ro no_timer_check earlyprintk=pl011,0x9000000 ignore_loglevel rd_NO_PLYMOUTH console=ttyAMA0 printk.time=1 LANG=en_US.UTF-8
	...

So I tried

  -append "console=ttyAMA0 root=/dev/sda4 ro"
  -device ahci,id=ide \
  -device ide-drive,bus=ide.0,drive=hd0 \
  -drive id=hd0,if=none,snapshot=on,file=./fedora-22.aarch64.img \

and still nothing, same "/dev/sda4 does not exist"...

There are no /dev/vda* or /dev/sda* devices (ls /dev/ from the dracut
prompt), and cat /proc/partitions comes up empty as well...

At this point I'm totally out of clue, please help :)

Thanks a ton,
--Gabriel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] qemu-system-arm command line question
  2015-10-02 18:15 [Qemu-devel] qemu-system-arm command line question Gabriel L. Somlo
@ 2015-10-02 18:37 ` Richard W.M. Jones
  2015-10-02 18:57   ` Gabriel L. Somlo
  0 siblings, 1 reply; 3+ messages in thread
From: Richard W.M. Jones @ 2015-10-02 18:37 UTC (permalink / raw)
  To: Gabriel L. Somlo; +Cc: lersek, qemu-devel

On Fri, Oct 02, 2015 at 02:15:20PM -0400, Gabriel L. Somlo wrote:
> Trying to adapt the command line used with 32-bit arm, I ran:
> 
> bin/qemu-system-aarch64 -M virt,accel=tcg -m 2048 -cpu cortex-a57 \
>   -kernel ./vmlinuz-4.0.4-301.fc22.aarch64 \
>   -initrd ./initramfs-4.0.4-301.fc22.aarch64.img \
>   -append "console=ttyAMA0 root=/dev/vda3 ro" \
>   -device virtio-blk-device,drive=hd0 \
>   -drive id=hd0,if=none,snapshot=on,file=./fedora-22.aarch64.img \
>   -device virtio-net-device,netdev=usernet \
>   -netdev user,id=usernet \
>   -monitor stdio

You're presenting a virtio-blk disk, but this guest wants a
virtio-scsi disk, and also needs UEFI.  See here for more details:

https://rwmj.wordpress.com/2015/05/26/fedora-22-aarch64-virt-builder-image/

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] qemu-system-arm command line question
  2015-10-02 18:37 ` Richard W.M. Jones
@ 2015-10-02 18:57   ` Gabriel L. Somlo
  0 siblings, 0 replies; 3+ messages in thread
From: Gabriel L. Somlo @ 2015-10-02 18:57 UTC (permalink / raw)
  To: Richard W.M. Jones; +Cc: lersek, qemu-devel

On Fri, Oct 02, 2015 at 07:37:37PM +0100, Richard W.M. Jones wrote:
> On Fri, Oct 02, 2015 at 02:15:20PM -0400, Gabriel L. Somlo wrote:
> > Trying to adapt the command line used with 32-bit arm, I ran:
> > 
> > bin/qemu-system-aarch64 -M virt,accel=tcg -m 2048 -cpu cortex-a57 \
> >   -kernel ./vmlinuz-4.0.4-301.fc22.aarch64 \
> >   -initrd ./initramfs-4.0.4-301.fc22.aarch64.img \
> >   -append "console=ttyAMA0 root=/dev/vda3 ro" \
> >   -device virtio-blk-device,drive=hd0 \
> >   -drive id=hd0,if=none,snapshot=on,file=./fedora-22.aarch64.img \
> >   -device virtio-net-device,netdev=usernet \
> >   -netdev user,id=usernet \
> >   -monitor stdio
> 
> You're presenting a virtio-blk disk, but this guest wants a
> virtio-scsi disk, and also needs UEFI.  See here for more details:
> 
> https://rwmj.wordpress.com/2015/05/26/fedora-22-aarch64-virt-builder-image/

Thanks, that helped. FTR, I can boot it even without UEFI:

bin/qemu-system-aarch64 -M virt,accel=tcg -m 2048 -cpu cortex-a57 \
  -kernel ./vmlinuz-4.0.4-301.fc22.aarch64 \
  -initrd ./initramfs-4.0.4-301.fc22.aarch64.img \
  -append "console=ttyAMA0 root=/dev/sda4 ro" \
  -device virtio-scsi-device,id=scsi -device scsi-hd,drive=hd0 \
  -drive id=hd0,if=none,snapshot=on,file=./fedora-22.aarch64.img \
  -device virtio-net-device,netdev=usernet \
  -netdev user,id=usernet \
  -monitor stdio

... but UEFI is the reason I wanted to tinker with it in the first
place :)

Thanks much,
--Gabriel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-10-02 18:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-02 18:15 [Qemu-devel] qemu-system-arm command line question Gabriel L. Somlo
2015-10-02 18:37 ` Richard W.M. Jones
2015-10-02 18:57   ` Gabriel L. Somlo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.