1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
developing v4l2loopback with a VM
=================================
Using `Vagrant` with the `VirtualBox` backend
# SETUP
Use the [`Vagrantfile`](#Vagrantfile) below for a Debian/testing based VM.
Replace the host's `/PATH/TO/v4l2loopback` to the full path to the v4l2loopback sources on your disk.
- The VM needs to have all the goodies (VirtualBox extension pack) for sharing host folders and webcams (if you need that).
apt install virtualbox-guest-dkms virtualbox-guest-dkms virtualbox-guest-utils
- Make the VM up-to-date `apt update && apt dist-upgrade` or similar
- Drop the unused stuff with `apt autoremove; apt-get clean` or similar
- Make sure that the `vagrant` user will end up in `/vagrant/v4l2loopback` when logging in.
I did so by adding the following 2 lines at the very end of `~vagrant/.bashrc`:
cd /vagrant
test -d v4l2loopback && cd v4l2loopback
- Power the VM off, and create an offline snapshot
- Boot the VM (with the share mounted onto `/vagrant/v4l2loopback`):
vagrant up
- Create an online snapshot of the running VM
- Leave the VM running
# scripts
You can find a `vbox-restart` script in the `vagrant/` directory of this repository.
Running it (give the UUID of a running VM) will:
- do a hard shutdown of the given VM
- restore the last snapshot of the given VM
- start the running VM
- (optionally) attach the host's webcam to VM
# Workflow
- Open `v4l2loopback.c` in your favourite editor and hack away
- Whenever you feel like testing, do the following in a separate terminal:
~~~
me@host:~/v4l2loopback$ cd vagrant
me@host:~/v4l2loopback/vagrant$ ./vbox-restart -a
me@host:~/v4l2loopback/vagrant$ vagrant ssh
vagrant@/vagrant/v4l2loopback$ make clean
vagrant@/vagrant/v4l2loopback$ make modprobe
vagrant@/vagrant/v4l2loopback$ (do some tests)
~~~
if the machine freezes, or something else really bad happens to it, just
re-run `./vbox-restart` and start anew.
# Resources
## Vagrantfile
~~~vagrant
Vagrant.configure("2") do |config|
config.vm.box = "debian/contrib-testing64"
config.vm.synced_folder "/PATH/TO/v4l2loopback", "/vagrant/v4l2loopback"
end
~~~
|