Qemu: Difference between revisions

From vegard.wiki
Jump to navigation Jump to search
Content added Content deleted
(kvm/9p)
 
(creating/mounting disk images)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
=== Creating disk images ===

<source lang="Bash">
qemu-img create -f qcow2 disk.qcow2 1G
</source>

=== Mounting disk images on the host ===

<source lang="Bash">
sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd0 image.qcow2
sudo mkfs.ext4 /dev/nbd0
sudo mount /dev/nbd0 /mnt/...
# ...
sudo umount /dev/nbd0
sudo qemu-nbd -d /dev/nbd0
</source>

=== Boot using host filesystem over 9p ===
=== Boot using host filesystem over 9p ===


Line 19: Line 37:
* <tt>CONFIG_NET_9P_VIRTIO=y</tt>
* <tt>CONFIG_NET_9P_VIRTIO=y</tt>
* <tt>CONFIG_9P_FS=y</tt>
* <tt>CONFIG_9P_FS=y</tt>

Sometimes it will be useful to use <tt>security_model=none</tt> rather than <tt>passthrough</tt>. From the man page:
<q>In "passthrough" security model, files are stored using the same credentials as they are created on the guest. This requires QEMU to run as root. [...] "none" security model is same as passthrough except the sever won't report failures if it fails to set file attributes like ownership.</q>


[[Category:Linux kernel]]
[[Category:Linux kernel]]

Latest revision as of 06:38, 15 December 2019

Creating disk images

qemu-img create -f qcow2 disk.qcow2 1G

Mounting disk images on the host

sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd0 image.qcow2
sudo mkfs.ext4 /dev/nbd0
sudo mount /dev/nbd0 /mnt/...
# ...
sudo umount /dev/nbd0
sudo qemu-nbd -d /dev/nbd0

Boot using host filesystem over 9p

kvm \
  -cpu host \
  -m 1G \
  -kernel arch/x86/boot/bzImage \
  -append "rootfstype=9p root=/dev/root rootflags=trans=virtio,version=9p2000.L rw console=ttyS0 init=/bin/bash" \
  -serial stdio \
  -fsdev local,id=fsdev0,path=/,security_model=passthrough \
  -device virtio-9p-pci,fsdev=fsdev0,mount_tag=/dev/root \
  -no-reboot \
  -display none

Remember to set the following variables in your kernel config (in order):

  • CONFIG_VIRTIO_PCI=y
  • CONFIG_NET_9P=y
  • CONFIG_NET_9P_VIRTIO=y
  • CONFIG_9P_FS=y

Sometimes it will be useful to use security_model=none rather than passthrough. From the man page: In "passthrough" security model, files are stored using the same credentials as they are created on the guest. This requires QEMU to run as root. [...] "none" security model is same as passthrough except the sever won't report failures if it fails to set file attributes like ownership.