Am trying to create a virtual machine for Raspbian using Vagrant-libvirt plugin. However I failed find out how to add '2017-09-07-raspbian-stretch-lite.img' image.
Am able to boot the image using qemu.
qemu-system-arm -kernel kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -machine versatilepb -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw vga=normal console=ttyAMA0" -drive "file=./2017-09-07-raspbian-stretch-lite.img,index=0,media=disk,format=raw" -no-reboot -serial stdio -curses
Here is my incomplete Vagrantfile:
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'
Vagrant.configure("2") do |config|
config.vm.box_url = File.join(Dir.pwd, "2017-09-07-raspbian-stretch-lite.img")
config.vm.box = "Raspbian"
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "qemu"
#config.vm.box = "arm"
# vagrant issues #1673..fixes hang with configure_networks
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
libvirt.uri = 'qemu+unix:///system'
libvirt.host = 'virtualized'
libvirt.kernel = File.join(Dir.pwd, "OS/kernel-qemu-4.4.34-jessie")
#libvirt.kernel = File.join(Dir.pwd, "Ovmlinuz")
#libvirt.initrd = File.join(Dir.pwd, "initrd")
#libvirt.storage :file, :size => '20G', :path => "./OS/2017-09-07-raspbian-stretch-lite.img", :allow_existing => true, :shareable => true, :type => 'raw'
libvirt.emulator_path = '/usr/bin/qemu-system-arm'
libvirt.cmd_line = 'root=/dev/mmcblk0p2 devtmpfs.mount=0 rw'
libvirt.memory = 256
libvirt.cpu_model = 'arm1176'
libvirt.cpu_fallback = 'allow'
libvirt.graphics_type = 'none'
end
end
I've committed support to vagrant-libvirt for precisely this. This is a working config:
config.vm.define "rpi" do |rpi|
# Create rpi.vm
rpi.vm.hostname = "rpi"
rpi.vm.box = "raspbian-jessie-lite-2016-02-26"
rpi.vm.provider :libvirt do |v|
v.driver = 'qemu'
v.random_hostname = true
v.connect_via_ssh = false
v.memory = 1024
v.cpus = 1
v.volume_cache = 'none'
v.storage_pool_name = "vagrant"
v.kernel = File.join(Dir.pwd, "kernel")
v.initrd = File.join(Dir.pwd, "initrd")
v.machine_type = 'virt'
v.machine_arch = 'armv7l'
v.cpu_mode = 'custom'
v.cpu_model = 'cortex-a15'
v.cpu_fallback = 'allow'
v.cmd_line = 'rw earlyprintk loglevel=8 console=ttyAMA0,115200n8 rootwait root=/dev/vda2'
v.graphics_type = 'none'
v.disk_bus = 'virtio'
v.nic_model_type = 'virtio'
v.features = ["apic","gic version='2'"]
end
However, you will need to find or build a kernel and accompanying initrd that supports the virt
machine type. You can take a look here for some background on that.