Info | ||
---|---|---|
| ||
Copyright 2015 by Assured Information Security, Inc. Created by Martin Osterloh <osterlohm@ainfosec.com>. This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/. Contributions by: Ross Philipson <philipsonr@ainfosec.com> |
UIVM graphics
We managed to get the UIVM up and running. We can sshv4v to it using 1.0.0.x. The UIVM has xenfb2 loaded but it does not create a /dev/fb0 node. The problem is the backed is not created but surfman. The dmbus RPC to create the node and hook up the front back connection is never called:
...
Notes on blktap2 and tapdisk
# Some notes on how how tapdevs and associated devices are created. It begins here: libxl:libxl__blktap_devpath calls libblktapctl.so:tap_ctl_create directly. xenops/device.ml:mount calls it indirectly by invoking tap-ctl with the create option (which calls tap-ctl:tap_cli_create) # This function in libblktapctl.so does 4 important things that are listed below tap_cli_create: tap_ctl_allocate tap_ctl_spawn tap_ctl_attach tap_ctl_open tap_ctl_allocate: # Open the blktap driver # Allocate a ring device and an IO device using the BLKTAP2_IOCTL_ALLOC_TAP ioctl (see below). # tap_ctl_make_device then makes the ring device node /dev/xen/blktap-2/blktapX and an IO device node /devxen/blktap-2/tapdevX tap_ctl_spawn: # Start a new tapdisk2 process that will be associated with the X tap devices. # tapdisk2 creates the listener socket for the new process. # tapdisk2 registers the tapdisk_control_handle_request tap_ctl_attach: # Attach to the listening tapdisk2 process just started so now messages can be passed between libblktapctl.so and that process. tap_ctl_open: # Send the TAPDISK_MESSAGE_OPEN to the new tapdisk2 process. # In the new tapdisk2 process associated with the X devices allocated above. tapdisk_control_handle_request: # Get message TAPDISK_MESSAGE_OPEN and call: tapdisk_control_open_image: # Send the BLKTAP2_IOCTL_CREATE_DEVICE ioctl to blkdev (see below). # Down in the blktap driver, the above activity translates to: blktap_control_ioctl: # BLKTAP2_IOCTL_ALLOC_TAP maps to BLKTAP_IOCTL_ALLOC_TAP # Call blktap_control_create_tap to create the tap ring and IO devices. blktap_ring_ioctl: # BLKTAP2_IOCTL_CREATE_DEVICE maps to BLKTAP_IOCTL_CREATE_DEVICE_COMPAT. Calls: blktap_device_create: # Sets up the /dev/tdx node name (note little x corresponds to a, b, c...) # Creates and adds the actual block device with add_disk() (see include/linux/genhd.h for generic block disk devices). # The rest happens in the standard udev way. NOTE: when destroying a tapdev with tap-ctl the process id is the tapdisk2 process that own the tap devs. The minor number is what is called X above.
|