From 0c811322c5d8f2c1bcbfd8ca38b88b18fe4532fb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 22 Feb 2012 17:54:58 +0100 Subject: [PATCH 001/386] dom0: vchan version for stubdom --- vchan/Makefile.stubdom | 36 ++++++++++++++++ vchan/init.c | 93 ++++++++++++++++++++++++++++++++++++++---- vchan/io.c | 19 +++++++++ vchan/libvchan.h | 7 ++++ 4 files changed, 146 insertions(+), 9 deletions(-) create mode 100644 vchan/Makefile.stubdom diff --git a/vchan/Makefile.stubdom b/vchan/Makefile.stubdom new file mode 100644 index 00000000..af716cef --- /dev/null +++ b/vchan/Makefile.stubdom @@ -0,0 +1,36 @@ +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Marek Marczykowski +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# + +# Assume it is placed as xen-root/tools/vchan + +XEN_ROOT = ../.. +include $(XEN_ROOT)/tools/Rules.mk + +CFLAGS+=-Wall -I$(XEN_ROOT)/tools/libxc -DCONFIG_STUBDOM +all: libvchan.a + +libvchan.a: init.o io.o + $(AR) rc $@ $^ + +clean: + rm -f *.o *so *~ client server node node-select + + diff --git a/vchan/init.c b/vchan/init.c index 30cc2001..d0127939 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -19,6 +19,9 @@ * */ +#include +#include +#include #include #include #include @@ -29,25 +32,38 @@ #include #include #include +#include #include "libvchan.h" +#ifndef CONFIG_STUBDOM #include "../u2mfn/u2mfnlib.h" +#endif static int ring_init(struct libvchan *ctrl) { - int u2mfn = open("/proc/u2mfn", O_RDONLY); int mfn; struct vchan_interface *ring; +#ifdef CONFIG_STUBDOM + ring = (struct vchan_interface *) memalign(XC_PAGE_SIZE, sizeof(*ring)); + + if (!ring) + return -1; + + + mfn = virtual_to_mfn(ring); +#else + int u2mfn = open("/proc/u2mfn", O_RDONLY); ring = (struct vchan_interface *) u2mfn_alloc_kpage (); - + if (ring == MAP_FAILED) return -1; - ctrl->ring = ring; if (u2mfn_get_last_mfn (&mfn) < 0) return -1; - - ctrl->ring_ref = mfn; close(u2mfn); +#endif + + ctrl->ring = ring; + ctrl->ring_ref = mfn; ring->cons_in = ring->prod_in = ring->cons_out = ring->prod_out = 0; ring->server_closed = ring->client_closed = 0; @@ -65,13 +81,18 @@ static int server_interface_init(struct libvchan *ctrl, int devno) struct xs_handle *xs; char buf[64]; char ref[16]; + /* XXX temp hack begin */ + char *domid_s; + int domid = 0; + unsigned int len; + /* XXX temp hack end */ #ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn *evfd; #else int evfd; #endif evtchn_port_or_error_t port; - xs = xs_domain_open(); + xs = xs_daemon_open(); if (!xs) { return ret; } @@ -90,20 +111,41 @@ static int server_interface_init(struct libvchan *ctrl, int devno) if (port < 0) goto fail2; ctrl->evport = port; + ctrl->devno = devno; + + // stubdom debug HACK XXX + domid_s = xs_read(xs, 0, "domid", &len); + if (domid_s) + domid = atoi(domid_s); + snprintf(ref, sizeof ref, "%d", ctrl->ring_ref); snprintf(buf, sizeof buf, "device/vchan/%d/ring-ref", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) +#ifdef CONFIG_STUBDOM + // TEMP HACK XXX FIXME goto fail2; + fprintf(stderr, "xenstore-write /local/domain/%d/%s %s\n", domid, buf, ref); +#else goto fail2; +#endif snprintf(ref, sizeof ref, "%d", ctrl->evport); snprintf(buf, sizeof buf, "device/vchan/%d/event-channel", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) +#ifdef CONFIG_STUBDOM + // TEMP HACK XXX FIXME goto fail2; + fprintf(stderr, "xenstore-write /local/domain/%d/%s %s\n", domid, buf, ref); +#else goto fail2; +#endif + // do not block in stubdom - libvchan_server_handle_connected will be + // called on first input +#ifndef CONFIG_STUBDOM // wait for the peer to arrive if (xc_evtchn_pending(evfd) == -1) goto fail2; xc_evtchn_unmask(ctrl->evfd, ctrl->evport); snprintf(buf, sizeof buf, "device/vchan/%d", devno); xs_rm(xs, 0, buf); +#endif ret = 0; fail2: @@ -129,8 +171,8 @@ static int server_interface_init(struct libvchan *ctrl, int devno) ctrl->rd_ring_size = sizeof(ctrl->ring->buf_##dir2) /** - Run in AppVM (any domain). - Sleeps until the connection is established. + Run in AppVM (any domain). + Sleeps until the connection is established. (unless in stubdom) \param devno something like a well-known port. \returns NULL on failure, handle on success */ @@ -156,6 +198,39 @@ struct libvchan *libvchan_server_init(int devno) return ctrl; } +int libvchan_server_handle_connected(struct libvchan *ctrl) +{ + struct xs_handle *xs; + char buf[64]; + int ret = -1; + int libvchan_fd; + fd_set rfds; + + xs = xs_daemon_open(); + if (!xs) { + return ret; + } + // clear the pending flag + xc_evtchn_pending(ctrl->evfd); + + snprintf(buf, sizeof buf, "device/vchan/%d", ctrl->devno); + xs_rm(xs, 0, buf); + + ret = 0; + +#if 0 +fail2: + if (ret) +#ifdef XENCTRL_HAS_XC_INTERFACE + xc_evtchn_close(ctrl->evfd); +#else + close(ctrl->evfd); +#endif +#endif + xs_daemon_close(xs); + return ret; +} + /** retrieves ring-ref and event-channel numbers from xenstore (if they don't exist, return error, because nobody seems to listen); @@ -250,7 +325,7 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) /** Run on the client side of connection (currently, must be dom0). \returns NULL on failure (e.g. noone listening), handle on success -*/ +*/ struct libvchan *libvchan_client_init(int domain, int devno) { struct libvchan *ctrl = diff --git a/vchan/io.c b/vchan/io.c index 6b16f406..23135a25 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -22,6 +22,8 @@ #include "libvchan.h" #include #include +#include +#include /** \return How much data is immediately available for reading */ @@ -67,7 +69,24 @@ int libvchan_is_eof(struct libvchan *ctrl) int libvchan_wait(struct libvchan *ctrl) { int ret; +#ifndef CONFIG_STUBDOM ret = xc_evtchn_pending(ctrl->evfd); +#else + int vchan_fd = libvchan_fd_for_select(ctrl); + fd_set rfds; + + libvchan_prepare_to_select(ctrl); + while ((ret = xc_evtchn_pending(ctrl->evfd)) < 0) { + FD_ZERO(&rfds); + FD_SET(0, &rfds); + FD_SET(vchan_fd, &rfds); + ret = select(vchan_fd + 1, &rfds, NULL, NULL, NULL); + if (ret < 0 && errno != EINTR) { + perror("select"); + return ret; + } + } +#endif if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport)) return -1; if (ret!=-1 && libvchan_is_eof(ctrl)) diff --git a/vchan/libvchan.h b/vchan/libvchan.h index 6a6025fb..3f647462 100644 --- a/vchan/libvchan.h +++ b/vchan/libvchan.h @@ -19,6 +19,9 @@ * */ +#ifndef _LIBVCHAN_H +#define _LIBVCHAN_H + #include #include typedef uint32_t VCHAN_RING_IDX; @@ -44,6 +47,7 @@ struct libvchan { int evfd; #endif int evport; + int devno; VCHAN_RING_IDX *wr_cons, *wr_prod, *rd_cons, *rd_prod; char *rd_ring, *wr_ring; int rd_ring_size, wr_ring_size; @@ -51,6 +55,7 @@ struct libvchan { }; struct libvchan *libvchan_server_init(int devno); +int libvchan_server_handle_connected(struct libvchan *ctrl); struct libvchan *libvchan_client_init(int domain, int devno); @@ -63,3 +68,5 @@ int libvchan_fd_for_select(struct libvchan *ctrl); int libvchan_is_eof(struct libvchan *ctrl); int libvchan_data_ready(struct libvchan *ctrl); int libvchan_buffer_space(struct libvchan *ctrl); + +#endif /* _LIBVCHAN_H */ From 104030b15cffd51aef78cee497c2197b3c69046a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:17:45 +0100 Subject: [PATCH 002/386] dom0/core: more generic way to specify xen config template --- dom0/qvm-core/qubes.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 333212e8..cf6e72b3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -78,6 +78,8 @@ default_servicevm_vcpus = 1 default_kernelopts = "" default_kernelopts_pcidevs = "iommu=soft swiotlb=2048" +config_template_pv = '/usr/share/qubes/vm-template.conf' + qubes_whitelisted_appmenus = 'whitelisted-appmenus.list' dom0_update_check_interval = 6*3600 @@ -238,6 +240,8 @@ class QubesVm(object): self.firewall_conf = self.absolute_path(firewall_conf, default_firewall_conf_file) + self.config_file_template = config_template_pv + self.updateable = updateable self.label = label if label is not None else QubesVmLabels["red"] if self.dir_path is not None: @@ -804,7 +808,7 @@ class QubesVm(object): if source_template is None: source_template = self.template_vm - f_conf_template = open('/usr/share/qubes/vm-template.conf', 'r') + f_conf_template = open(self.config_file_template, 'r') conf_template = f_conf_template.read() f_conf_template.close() From db4a96dfea374c0cf3134caa085ea32aeaafa966 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:18:45 +0100 Subject: [PATCH 003/386] dom0/core: move qrexec start to separate function --- dom0/qvm-core/qubes.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index cf6e72b3..f0257f89 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1153,6 +1153,14 @@ class QubesVm(object): if notify_function is not None: notify_function("error", "ERROR: Cannot start the Qubes Clipboard Notifier!") + def start_qrexec_daemon(self, verbose = False): + if verbose: + print >> sys.stderr, "--> Starting the qrexec daemon..." + retcode = subprocess.call ([qrexec_daemon_path, str(xid)]) + if (retcode != 0) : + self.force_shutdown() + raise OSError ("ERROR: Cannot execute qrexec_daemon!") + def start(self, debug_console = False, verbose = False, preparing_dvm = False): if dry_run: return @@ -1224,12 +1232,7 @@ class QubesVm(object): qmemman_client.close() if not preparing_dvm: - if verbose: - print >> sys.stderr, "--> Starting the qrexec daemon..." - retcode = subprocess.call ([qrexec_daemon_path, str(xid)]) - if (retcode != 0) : - self.force_shutdown() - raise OSError ("ERROR: Cannot execute qrexec_daemon!") + self.start_qrexec_daemon(verbose=verbose) if not preparing_dvm and os.path.exists('/var/run/shm.id'): self.start_guid(verbose=verbose) From 8b3a8953178249a6ef3748c7ed49252652cca9b9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:19:51 +0100 Subject: [PATCH 004/386] dom0/core: more robust XML attrs generation Still not ideal... --- dom0/qvm-core/qubes.py | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f0257f89..7e150ef3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1278,26 +1278,20 @@ class QubesVm(object): attrs["qid"] = str(self.qid) attrs["name"] = self.name attrs["dir_path"] = self.dir_path - attrs["conf_file"] = self.relative_path(self.conf_file) - attrs["root_img"] = self.relative_path(self.root_img) - attrs["volatile_img"] = self.relative_path(self.volatile_img) - attrs["private_img"] = self.relative_path(self.private_img) - attrs["uses_default_netvm"] = str(self.uses_default_netvm) + # Simple paths + for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: + if hasattr(self, prop): + attrs[prop] = self.relative_path(self.__getattribute__(prop)) + # Simple string attrs + for prop in ['memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ + 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ + 'kernelopts', 'services', 'updateable', 'installed_by_rpm',\ + 'uses_default_netvm' ]: + if hasattr(self, prop): + attrs[prop] = str(self.__getattribute__(prop)) attrs["netvm_qid"] = str(self.netvm_vm.qid) if self.netvm_vm is not None else "none" - attrs["installed_by_rpm"] = str(self.installed_by_rpm) attrs["template_qid"] = str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none" - attrs["updateable"] = str(self.updateable) attrs["label"] = self.label.name - attrs["memory"] = str(self.memory) - attrs["maxmem"] = str(self.maxmem) - attrs["pcidevs"] = str(self.pcidevs) - attrs["vcpus"] = str(self.vcpus) - attrs["internal"] = str(self.internal) - attrs["uses_default_kernel"] = str(self.uses_default_kernel) - attrs["kernel"] = str(self.kernel) - attrs["uses_default_kernelopts"] = str(self.uses_default_kernelopts) - attrs["kernelopts"] = str(self.kernelopts) - attrs["services"] = str(self.services) return attrs def create_xml_element(self): From 85c5074dbe1103e9abab3a8d8b6ecc30ad092d3f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:22:14 +0100 Subject: [PATCH 005/386] dom0/core: check if object has attr before using it --- dom0/qvm-core/qubes.py | 15 +++++++++------ dom0/qvm-tools/qvm-prefs | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 7e150ef3..19de047f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -778,7 +778,8 @@ class QubesVm(object): def get_config_params(self, source_template=None): args = {} args['name'] = self.name - args['kerneldir'] = self.kernels_dir + if hasattr(self, 'kernels_dir'): + args['kerneldir'] = self.kernels_dir args['vmdir'] = self.dir_path args['pcidev'] = str(self.pcidevs).strip('[]') args['mem'] = str(self.memory) @@ -794,11 +795,13 @@ class QubesVm(object): args['rootdev'] = self.get_rootdev(source_template=source_template) args['privatedev'] = "'script:file:{dir}/private.img,xvdb,w',".format(dir=self.dir_path) args['volatiledev'] = "'script:file:{dir}/volatile.img,xvdc,w',".format(dir=self.dir_path) - modulesmode='r' - if self.is_updateable() and self.kernel is None: - modulesmode='w' - args['otherdevs'] = "'script:file:{dir}/modules.img,xvdd,{mode}',".format(dir=self.kernels_dir, mode=modulesmode) - args['kernelopts'] = self.kernelopts + if hasattr(self, 'kernel'): + modulesmode='r' + if self.is_updateable() and self.kernel is None: + modulesmode='w' + args['otherdevs'] = "'script:file:{dir}/modules.img,xvdd,{mode}',".format(dir=self.kernels_dir, mode=modulesmode) + if hasattr(self, 'kernelopts'): + args['kernelopts'] = self.kernelopts return args diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 3b36dd2b..c7753890 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -51,22 +51,29 @@ def do_list(vm): print fmt.format ("root COW img", vm.rootcow_img) if vm.template_vm is not None: print fmt.format ("root img", vm.template_vm.root_img) - print fmt.format ("root volatile img", vm.volatile_img) + if hasattr(vm, 'volatile_img'): + print fmt.format ("root volatile img", vm.volatile_img) - print fmt.format ("private img", vm.private_img) + if hasattr(vm, 'private_img'): + print fmt.format ("private img", vm.private_img) print fmt.format ("vcpus", str(vm.vcpus)) print fmt.format ("memory", vm.memory) - print fmt.format ("maxmem", vm.maxmem) - if vm.template_vm is not None: - print fmt.format ("kernel", "%s (from template)" % vm.kernel) - elif vm.uses_default_kernel: - print fmt.format ("kernel", "%s (default)" % vm.kernel) - else: - print fmt.format ("kernel", vm.kernel) - if vm.uses_default_kernelopts: - print fmt.format ("kernelopts", "%s (default)" % vm.kernelopts) - else: - print fmt.format ("kernelopts", vm.kernelopts) + if hasattr(vm, 'maxmem'): + print fmt.format ("maxmem", vm.maxmem) + + if hasattr(vm, 'kernel'): + if vm.template_vm is not None: + print fmt.format ("kernel", "%s (from template)" % vm.kernel) + elif vm.uses_default_kernel: + print fmt.format ("kernel", "%s (default)" % vm.kernel) + else: + print fmt.format ("kernel", vm.kernel) + + if hasattr(vm, 'kernelopts'): + if vm.uses_default_kernelopts: + print fmt.format ("kernelopts", "%s (default)" % vm.kernelopts) + else: + print fmt.format ("kernelopts", vm.kernelopts) def set_label(vms, vm, args): @@ -309,6 +316,10 @@ def do_set(vms, vm, property, args): print >> sys.stderr, "ERROR: Wrong property name: '{0}'".format(property) return False + if not hasattr(vm, property): + print >> sys.stderr, "ERROR: Property '{0}' not available for this VM".format(property) + return False + return properties[property](vms, vm, args) @@ -353,7 +364,8 @@ def main(): print >> sys.stderr, "You must specify the property you wish to set..." print >> sys.stderr, "Available properties:" for p in properties.keys(): - print >> sys.stderr, "--> '{0}'".format(p) + if hasattr(vm, p): + print >> sys.stderr, "--> '{0}'".format(p) exit (1) property = args[1] From 40d8ac66a3a5f1154f5ec301931f3217975c943e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:23:27 +0100 Subject: [PATCH 006/386] dom0/core: introduce QubesHVm class --- dom0/qvm-core/qubes.py | 153 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 19de047f..f1753bd7 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -21,6 +21,7 @@ # import sys +import stat import os import os.path import subprocess @@ -78,7 +79,10 @@ default_servicevm_vcpus = 1 default_kernelopts = "" default_kernelopts_pcidevs = "iommu=soft swiotlb=2048" +default_hvm_disk_size = 20*1024*1024*1024 + config_template_pv = '/usr/share/qubes/vm-template.conf' +config_template_hvm = '/usr/share/qubes/vm-template-hvm.conf' qubes_whitelisted_appmenus = 'whitelisted-appmenus.list' @@ -1978,6 +1982,127 @@ class QubesAppVm(QubesVm): def post_rename(self, old_name): self.create_appmenus(False) +class QubesHVm(QubesVm): + """ + A class that represents an HVM. A child of QubesVm. + """ + + # FIXME: logically should inherit after QubesAppVm, but none of its methods + # are useful for HVM + def __init__(self, **kwargs): + + if "dir_path" not in kwargs or kwargs["dir_path"] is None: + kwargs["dir_path"] = qubes_appvms_dir + "/" + kwargs["name"] + + super(QubesHVm, self).__init__(**kwargs) + self.updateable = True + self.config_file_template = config_template_hvm + # remove settings not used by HVM (at least for now) + self.__delattr__('kernel') + self.__delattr__('kernelopts') + self.__delattr__('uses_default_kernel') + self.__delattr__('uses_default_kernelopts') + self.__delattr__('private_img') + self.__delattr__('volatile_img') + # HVM doesn't support dynamic memory management + self.maxmem = self.memory + + self.drive = None + if 'drive' in kwargs.keys(): + self.drive = kwargs['drive'] + + @property + def type(self): + return "HVM" + + def is_appvm(self): + return True + + def create_on_disk(self, verbose, source_template = None): + if dry_run: + return + + if verbose: + print >> sys.stderr, "--> Creating directory: {0}".format(self.dir_path) + os.mkdir (self.dir_path) + + self.create_config_file() + + # create empty disk + f_root = open(self.root_img, "w") + f_root.truncate(default_hvm_disk_size) + f_root.close() + + + def get_disk_utilization_private_img(self): + return 0 + + def get_private_img_sz(self): + return 0 + + def resize_private_img(self, size): + raise NotImplementedError("HVM has no private.img") + + def get_config_params(self, source_template=None): + + params = super(QubesHVm, self).get_config_params(source_template=source_template) + + params['volatiledev'] = '' + params['privatedev'] = '' + if self.drive: + stat_res = os.stat(self.drive) + if stat.S_ISBLK(stat_res.st_mode): + params['otherdevs'] = "'phy:%s,hdc:cdrom,r'," % self.drive + else: + params['otherdevs'] = "'script:file:%s,hdc:cdrom,r'," % self.drive + else: + params['otherdevs'] = '' + return params + + def verify_files(self): + if dry_run: + return + + if not os.path.exists (self.dir_path): + raise QubesException ( + "VM directory doesn't exist: {0}".\ + format(self.dir_path)) + + if self.is_updateable() and not os.path.exists (self.root_img): + raise QubesException ( + "VM root image file doesn't exist: {0}".\ + format(self.root_img)) + + return True + + def reset_volatile_storage(self, **kwargs): + pass + + def run(self, command, **kwargs): + raise NotImplementedError("Needs qrexec agent - TODO") + + @property + def stubdom_xid(self): + if not self.is_running(): + return -1 + + return int(xs.read('', '/local/domain/%d/image/device-model-domid' % self.xid)) + + def start_guid(self, verbose = True, notify_function = None): + if verbose: + print >> sys.stderr, "--> Starting Qubes GUId..." + + retcode = subprocess.call ([qubes_guid_path, "-d", str(self.stubdom_xid), "-c", self.label.color, "-i", self.label.icon, "-l", str(self.label.index)]) + if (retcode != 0) : + raise QubesException("Cannot start qubes_guid!") + + def start_qrexec_daemon(self, **kwargs): + pass + + def get_xml_attrs(self): + attrs = super(QubesHVm, self).get_xml_attrs() + attrs["drive"] = str(self.drive) + return attrs class QubesVmCollection(dict): """ @@ -2036,6 +2161,20 @@ class QubesVmCollection(dict): self[vm.qid]=vm return vm + def add_new_hvm(self, name, label = None): + + qid = self.get_new_unused_qid() + vm = QubesHVm (qid=qid, name=name, + netvm_vm = self.get_default_netvm_vm(), + kernel = self.get_default_kernel(), + uses_default_kernel = True, + label=label) + + if not self.verify_new_vm (vm): + assert False, "Wrong VM description!" + self[vm.qid]=vm + return vm + def add_new_disposablevm(self, name, template_vm, dispid, label = None): @@ -2561,6 +2700,20 @@ class QubesVmCollection(dict): os.path.basename(sys.argv[0]), err)) return False + # And HVMs + for element in tree.findall("QubesHVm"): + try: + kwargs = self.parse_xml_element(element) + vm = QubesHVm(**kwargs) + + self[vm.qid] = vm + + self.set_netvm_dependency(element) + except (ValueError, LookupError) as err: + print("{0}: import error (QubesHVm): {1}".format( + os.path.basename(sys.argv[0]), err)) + return False + # Really finally, read in the DisposableVMs for element in tree.findall("QubesDisposableVm"): try: From 9c2161944bc6b60dcb824a744d85d605769de4ef Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:24:36 +0100 Subject: [PATCH 007/386] dom0/qvm-create: support for HVM --- dom0/qvm-tools/qvm-create | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-create b/dom0/qvm-tools/qvm-create index 5bd58ea1..143f753f 100755 --- a/dom0/qvm-tools/qvm-create +++ b/dom0/qvm-tools/qvm-create @@ -37,10 +37,14 @@ def main(): help="Specify the label to use for the new VM (e.g. red, yellow, green, ...)") parser.add_option ("-p", "--proxy", action="store_true", dest="proxyvm", default=False, help="Create ProxyVM") + parser.add_option ("-H", "--hvm", action="store_true", dest="hvm", default=False, + help="Create HVM (implies --standalone)") parser.add_option ("-n", "--net", action="store_true", dest="netvm", default=False, help="Create NetVM") parser.add_option ("-s", "--standalone", action="store_true", dest="standalone", default=False, help="Create standalone VM - independent of template ") + parser.add_option ("-r", "--root", dest="root", default=None, + help="Use provided root.img instead of default/empty one (file will be MOVED)") parser.add_option ("-m", "--mem", dest="mem", default=None, help="Initial memory size (in MB)") parser.add_option ("-c", "--vcpus", dest="vcpus", default=None, @@ -82,6 +86,18 @@ def main(): exit (1) label = QubesVmLabels[options.label] + if options.hvm: + # Only standalone HVMs are supported for now + options.standalone = True + + if not options.standalone and options.root is not None: + print >> sys.stderr, "root.img can be specified only for standalone VMs" + exit (1) + + if options.root is not None and not os.path.exists(options.root): + print >> sys.stderr, "File specified as root.img does not exists" + exit (1) + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() qvm_collection.load() @@ -90,6 +106,7 @@ def main(): print >> sys.stderr, "A VM with the name '{0}' already exists in the system.".format(vmname) exit(1) + template_vm = None if options.template is not None: template_vm = qvm_collection.get_vm_by_name(options.template) if template_vm is None: @@ -101,7 +118,7 @@ def main(): if (options.verbose): print "--> Using TemplateVM: {0}".format(template_vm.name) - else: + elif not options.hvm: if qvm_collection.get_default_template_vm() is None: print >> sys.stderr, "No default TempleteVM defined!" exit (1) @@ -120,6 +137,8 @@ def main(): vm = qvm_collection.add_new_netvm(vmname, new_vm_template, label = label, updateable = options.standalone) elif options.proxyvm: vm = qvm_collection.add_new_proxyvm(vmname, new_vm_template, label = label, updateable = options.standalone) + elif options.hvm: + vm = qvm_collection.add_new_hvm(vmname, label = label) else: vm = qvm_collection.add_new_appvm(vmname, new_vm_template, label = label, updateable = options.standalone) @@ -134,6 +153,9 @@ def main(): try: vm.create_on_disk(verbose=options.verbose, source_template=template_vm) + if options.root: + os.unlink(vm.root_img) + os.rename(options.root, vm.root_img) except (IOError, OSError) as err: print >> sys.stderr, "ERROR: {0}".format(err) From 724c03200577e78f70fcc835d1a944ca0ccc93e7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:25:06 +0100 Subject: [PATCH 008/386] dom0/qvm-prefs: support for 'drive' property --- dom0/qvm-tools/qvm-prefs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index c7753890..19ec8727 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -75,6 +75,9 @@ def do_list(vm): else: print fmt.format ("kernelopts", vm.kernelopts) + if hasattr(vm, 'drive'): + print fmt.format("drive", str(vm.drive)) + def set_label(vms, vm, args): if len (args) != 1: @@ -294,6 +297,13 @@ def set_name(vms, vm, args): vm.set_name(args[0]) return True +def set_drive(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing new drive content (file/device)!" + return False + + vm.drive = args[0] + return True properties = { "updateable": set_updateable, @@ -308,6 +318,7 @@ properties = { "vcpus" : set_vcpus, "kernelopts": set_kernelopts, "name": set_name, + "drive": set_drive, } From 8f27fd49c71de0a84c3b369480776e2bca93af82 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:25:27 +0100 Subject: [PATCH 009/386] dom0/qvm-start: starting with drive connected temporarily --- dom0/qvm-tools/qvm-start | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 1211d265..5ec3c1c5 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -37,6 +37,8 @@ def main(): help="Do not start the GUId (ignored)") parser.add_option ("--console", action="store_true", dest="debug_console", default=False, help="Attach debugging console to the newly started VM") + parser.add_option ("--drive", dest="drive", default=None, + help="Temporarily attach specified drive as CD/DVD") parser.add_option ("--dvm", action="store_true", dest="preparing_dvm", default=False, help="Do actions necessary when preparing DVM image") @@ -55,6 +57,13 @@ def main(): print >> sys.stderr, "A VM with the name '{0}' does not exist in the system.".format(vmname) exit(1) + if options.drive: + if hasattr(vm, 'drive'): + vm.drive = options.drive + else: + print >> sys.stderr, "This VM does not support attaching drives" + exit (1) + try: vm.verify_files() xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm) From 1c4854ac71e78b424c0c3f4040b065cabc18dbf6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:26:01 +0100 Subject: [PATCH 010/386] dom0/core: config template for HVM --- dom0/misc/vm-template-hvm.conf | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 dom0/misc/vm-template-hvm.conf diff --git a/dom0/misc/vm-template-hvm.conf b/dom0/misc/vm-template-hvm.conf new file mode 100644 index 00000000..44b31fb5 --- /dev/null +++ b/dom0/misc/vm-template-hvm.conf @@ -0,0 +1,32 @@ +# +# This is a Xen VM config file for Qubes VM +# DO NOT EDIT - autogenerated by qubes tools +# + +name = "{name}" + +builder='hvm' +memory={mem} +viridian=1 +kernel='hvmloader' +#acpi=1 +#apic=1 +boot='dca' +device_model='stubdom-dm' +#pae=1 +usbdevice='tablet' +sdl=0 +vnc=0 +disk = [ {rootdev} + {otherdevs} + ] +vif = [ {netdev} ] +pci = [ {pcidev} ] +vcpus = {vcpus} + +#tsc_mode = 2 +#xen_extended_power_mgmt=0 + +on_poweroff = 'destroy' +on_reboot = 'destroy' +on_crash = 'destroy' From 3ad50b58e70b52b716bd7043f5f424d81b8d40ef Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 24 Feb 2012 04:53:15 +0100 Subject: [PATCH 011/386] dom0/spec: include HVM config template in rpm --- rpm_spec/core-dom0.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 06bbbc91..396db1b6 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -151,6 +151,7 @@ cp misc/qubes-vm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-templatevm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-appmenu-select.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/vm-template.conf $RPM_BUILD_ROOT/usr/share/qubes/ +cp misc/vm-template-hvm.conf $RPM_BUILD_ROOT/usr/share/qubes/ mkdir -p $RPM_BUILD_ROOT/usr/bin cp ../network/qubes_setup_dnat_to_ns $RPM_BUILD_ROOT/usr/lib/qubes @@ -344,6 +345,7 @@ fi /usr/share/qubes/qubes-templatevm.directory.template /usr/share/qubes/qubes-appmenu-select.desktop /usr/share/qubes/vm-template.conf +/usr/share/qubes/vm-template-hvm.conf /usr/lib/qubes/qubes_setup_dnat_to_ns /usr/lib/qubes/qubes_fix_nm_conf.sh /etc/dhclient.d/qubes_setup_dnat_to_ns.sh From 80e2afa97be66b3b6286bb2fc8fc7c9e49f46f8c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 26 Feb 2012 00:58:05 +0100 Subject: [PATCH 012/386] dom0/qvm-core: add missing get_xid --- dom0/qvm-core/qubes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f1753bd7..339462ca 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1163,6 +1163,7 @@ class QubesVm(object): def start_qrexec_daemon(self, verbose = False): if verbose: print >> sys.stderr, "--> Starting the qrexec daemon..." + xid = self.get_xid() retcode = subprocess.call ([qrexec_daemon_path, str(xid)]) if (retcode != 0) : self.force_shutdown() From 628458108d30e3dcd71a8a0d6346e9fecff98877 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 03:30:35 +0100 Subject: [PATCH 013/386] dom0/qvm-core: fix kernelopts parsing in case of QubesHVM --- dom0/qvm-core/qubes.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 339462ca..7b0910b2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2526,8 +2526,9 @@ class QubesVmCollection(dict): if "uses_default_kernelopts" in kwargs: kwargs["uses_default_kernelopts"] = False if kwargs["uses_default_kernelopts"] == "False" else True - if "kernelopts" not in kwargs or kwargs["kernelopts"] == "None": + if "kernelopts" in kwargs and kwargs["kernelopts"] == "None": kwargs.pop("kernelopts") + if "kernelopts" not in kwargs: kwargs["uses_default_kernelopts"] = True return kwargs From 718578f2a56369b58bb45422b819a8d8ab78c4e8 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 27 Feb 2012 13:31:42 +0100 Subject: [PATCH 014/386] version 2.0.0 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index e6a68e91..227cea21 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -1.7.12 +2.0.0 diff --git a/version_vm b/version_vm index e6a68e91..227cea21 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -1.7.12 +2.0.0 From fda02f66b29b7c6957924e371b60aa3876e21fd0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 14:58:46 +0100 Subject: [PATCH 015/386] vchan: fix compile error --- vchan/init.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vchan/init.c b/vchan/init.c index d0127939..a8192bf9 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -32,10 +32,11 @@ #include #include #include -#include #include "libvchan.h" #ifndef CONFIG_STUBDOM #include "../u2mfn/u2mfnlib.h" +#else +#include #endif static int ring_init(struct libvchan *ctrl) From e089c0e1e6607ab985202cd467fcf64430edcf39 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 27 Feb 2012 15:02:36 +0100 Subject: [PATCH 016/386] version 2.0.1 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index 227cea21..38f77a65 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.0 +2.0.1 diff --git a/version_vm b/version_vm index 227cea21..38f77a65 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.0 +2.0.1 From 63f3537f98cb8e2ef96edd5d0b8b880f0e8bfae9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 10:57:34 +0100 Subject: [PATCH 017/386] dom0/spec: require xen-hvm package for stubdom --- rpm_spec/core-dom0.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 19bd8ea9..f9043586 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -40,6 +40,7 @@ BuildRequires: xen-devel Requires: python, xen-runtime, pciutils, python-inotify, python-daemon, kernel-qubes-dom0 Conflicts: qubes-gui-dom0 < 1.1.13 Requires: xen >= 4.1.0-2 +Requires: xen-hvm Requires: createrepo Requires: gnome-packagekit Requires: cronie From 45c1c01410d697fc9a09c59348e706f016ddbab6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 11:00:33 +0100 Subject: [PATCH 018/386] dom0/core: use xvdi as cdrom frontend When used both xvd* and hd* only xvd* isn't detected. --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 8cfca7bb..f7576317 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2090,9 +2090,9 @@ class QubesHVm(QubesVm): if self.drive: stat_res = os.stat(self.drive) if stat.S_ISBLK(stat_res.st_mode): - params['otherdevs'] = "'phy:%s,hdc:cdrom,r'," % self.drive + params['otherdevs'] = "'phy:%s,xvdi:cdrom,r'," % self.drive else: - params['otherdevs'] = "'script:file:%s,hdc:cdrom,r'," % self.drive + params['otherdevs'] = "'script:file:%s,xvdi:cdrom,r'," % self.drive else: params['otherdevs'] = '' return params From dcf6957e85bc5e8d07da7cce66dd7e0ba19865a4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 1 Mar 2012 11:23:07 +0100 Subject: [PATCH 019/386] dom0/core: xvdi is to high for qemu --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f7576317..2e7dde93 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2090,9 +2090,9 @@ class QubesHVm(QubesVm): if self.drive: stat_res = os.stat(self.drive) if stat.S_ISBLK(stat_res.st_mode): - params['otherdevs'] = "'phy:%s,xvdi:cdrom,r'," % self.drive + params['otherdevs'] = "'phy:%s,xvdc:cdrom,r'," % self.drive else: - params['otherdevs'] = "'script:file:%s,xvdi:cdrom,r'," % self.drive + params['otherdevs'] = "'script:file:%s,xvdc:cdrom,r'," % self.drive else: params['otherdevs'] = '' return params From 21803c14fa4c765ab08e6ce817300a4089309511 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 15:07:00 +0100 Subject: [PATCH 020/386] dom0/qubes-firewall: typo fix --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 16f0379a..0a78f62b 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1066,7 +1066,7 @@ class QubesVm(object): rule["netmask"] = 32 # For backward compatibility default to tcp - if rule["proto" is None: + if rule["proto"] is None: rule["proto"] = "tcp" if rule["port"] is not None: From 74386d2d436dd831020d0a6ed6063f5c0f05ce4f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Feb 2012 15:46:23 +0100 Subject: [PATCH 021/386] dom0/qubes-firewall: make protocol selection smart --- dom0/qvm-core/qubes.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 0a78f62b..8cfca7bb 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1006,7 +1006,10 @@ class QubesVm(object): for rule in conf["rules"]: # For backward compatibility if "proto" not in rule: - rule["proto"] = "tcp" + if rule["portBegin"] is not None and rule["portBegin"] > 0: + rule["proto"] = "tcp" + else: + rule["proto"] = "any" element = xml.etree.ElementTree.Element( "rule", address=rule["address"], @@ -1065,16 +1068,19 @@ class QubesVm(object): else: rule["netmask"] = 32 - # For backward compatibility default to tcp - if rule["proto"] is None: - rule["proto"] = "tcp" - if rule["port"] is not None: rule["portBegin"] = int(rule["port"]) else: # backward compatibility rule["portBegin"] = 0 + # For backward compatibility + if rule["proto"] is None: + if rule["portBegin"] > 0: + rule["proto"] = "tcp" + else: + rule["proto"] = "any" + if rule["toport"] is not None: rule["portEnd"] = int(rule["toport"]) else: From c99965ff5c2c5740d915e6ca8c5350b18e5496f1 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:16:31 +0100 Subject: [PATCH 022/386] dom0/qvm-backup: force correct default exclude_list Treat "None" also as empty list. --- dom0/qvm-core/qubesutils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 483d259d..4c2456ba 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -323,6 +323,9 @@ def backup_prepare(base_backup_dir, vms_list = None, exclude_list = [], print_ca files_to_backup = file_to_backup (qubes_store_filename) + if exclude_list is None: + exclude_list = [] + if vms_list is None: qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_reading() From eb64d761150e33568824c60278f2d75b65704a37 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:17:25 +0100 Subject: [PATCH 023/386] dom0/qvm-backup-restore: fix restore of StandaloneVM/TemplateVM --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4c2456ba..4ac6d470 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -616,7 +616,7 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): vms_to_restore[vm.name]['already-exists'] = True vms_to_restore[vm.name]['good-to-go'] = False - if vm.template_vm is not None: + if vm.template_vm is None: vms_to_restore[vm.name]['template'] = None else: templatevm_name = find_template_name(vm.template_vm.name, options['replace-template']) From bcff28908b23df817b1e0fc7a981409fc8d523d1 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:33:43 +0100 Subject: [PATCH 024/386] dom0/qvm-backup-restore: fixes - custom templates, error handling --- dom0/qvm-core/qubesutils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4ac6d470..4f96aadf 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -627,13 +627,12 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): if not ((template_vm_on_host is not None) and template_vm_on_host.is_template()): # Maybe the (custom) template is in the backup? template_vm_on_backup = backup_collection.get_vm_by_name (templatevm_name) - if template_vm_on_backup is None or template_vm_on_backup.is_template(): + if template_vm_on_backup is None or not template_vm_on_backup.is_template(): if options['use-default-template']: - vms_to_restore[vm.name]['template'] = host_collection.get_default_tempate_vm().name + vms_to_restore[vm.name]['template'] = host_collection.get_default_template_vm().name else: vms_to_restore[vm.name]['missing-template'] = True vms_to_restore[vm.name]['good-to-go'] = False - continue if vm.netvm_vm is None: vms_to_restore[vm.name]['netvm'] = None @@ -656,7 +655,6 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): else: vms_to_restore[vm.name]['missing-netvm'] = True vms_to_restore[vm.name]['good-to-go'] = False - continue if 'good-to-go' not in vms_to_restore[vm.name].keys(): vms_to_restore[vm.name]['good-to-go'] = True From 4f002a4bab9b2960e77dbc246fd0c6c03622db69 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 29 Feb 2012 03:34:57 +0100 Subject: [PATCH 025/386] dom0/qvm-backup-restore: show original template name --- dom0/qvm-core/qubesutils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4f96aadf..e95b299d 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -629,6 +629,7 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): template_vm_on_backup = backup_collection.get_vm_by_name (templatevm_name) if template_vm_on_backup is None or not template_vm_on_backup.is_template(): if options['use-default-template']: + vms_to_restore[vm.name]['orig-template'] = templatevm_name vms_to_restore[vm.name]['template'] = host_collection.get_default_template_vm().name else: vms_to_restore[vm.name]['missing-template'] = True @@ -758,6 +759,8 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): s += " <-- No matching template on the host or in the backup found!" elif 'missing-netvm' in vm_info: s += " <-- No matching netvm on the host or in the backup found!" + elif 'orig-template' in vm_info: + s += " <-- Original template was '%s'" % (vm_info['orig-template']) print_callback(s) From b691368026f823b8c91be07e1534df1be1561327 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 1 Mar 2012 12:46:18 +0100 Subject: [PATCH 026/386] version 2.0.2 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index 38f77a65..e9307ca5 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.1 +2.0.2 diff --git a/version_vm b/version_vm index 38f77a65..e9307ca5 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.1 +2.0.2 From c13c1c920f621e84f5dd536f48dd7c1ddcc0b28e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 01:16:03 +0100 Subject: [PATCH 027/386] dom0/qvm-firewall: provide vif name by QubesVM --- dom0/qvm-core/qubes.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4127d084..b462a676 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -386,6 +386,14 @@ class QubesVm(object): else: return None + @property + def vif(self): + if not self.is_running(): + return None + if self.netvm_vm is None: + return None + return "vif{0}.+".format(self.xid) + def is_updateable(self): return self.updateable @@ -1825,8 +1833,12 @@ class QubesProxyVm(QubesNetVm): if xid < 0: # VM not active ATM continue + vif = vm.vif + if vif is None: + continue + iptables += "# '{0}' VM:\n".format(vm.name) - iptables += "-A FORWARD ! -s {0}/32 -i vif{1}.+ -j DROP\n".format(vm.ip, xid) + iptables += "-A FORWARD ! -s {0}/32 -i {1} -j DROP\n".format(vm.ip, vif) accept_action = "ACCEPT" reject_action = "REJECT --reject-with icmp-host-prohibited" @@ -1839,7 +1851,7 @@ class QubesProxyVm(QubesNetVm): rules_action = accept_action for rule in conf["rules"]: - iptables += "-A FORWARD -i vif{0}.+ -d {1}".format(xid, rule["address"]) + iptables += "-A FORWARD -i {0} -d {1}".format(vif, rule["address"]) if rule["netmask"] != 32: iptables += "/{0}".format(rule["netmask"]) @@ -1854,12 +1866,12 @@ class QubesProxyVm(QubesNetVm): if conf["allowDns"]: # PREROUTING does DNAT to NetVM DNSes, so we need self.netvm_vm. properties - iptables += "-A FORWARD -i vif{0}.+ -p udp -d {1} --dport 53 -j ACCEPT\n".format(xid,self.netvm_vm.gateway) - iptables += "-A FORWARD -i vif{0}.+ -p udp -d {1} --dport 53 -j ACCEPT\n".format(xid,self.netvm_vm.secondary_dns) + iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm_vm.gateway) + iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm_vm.secondary_dns) if conf["allowIcmp"]: - iptables += "-A FORWARD -i vif{0}.+ -p icmp -j ACCEPT\n".format(xid) + iptables += "-A FORWARD -i {0} -p icmp -j ACCEPT\n".format(vif) - iptables += "-A FORWARD -i vif{0}.+ -j {1}\n".format(xid, default_action) + iptables += "-A FORWARD -i {0} -j {1}\n".format(vif, default_action) iptables += "COMMIT\n" xs.write('', "/local/domain/"+str(self.get_xid())+"/qubes_iptables_domainrules/"+str(xid), iptables) # no need for ending -A FORWARD -j DROP, cause default action is DROP From afecabdc590e1d13a3207c6d8c949c8017c1f7a3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 01:21:40 +0100 Subject: [PATCH 028/386] dom0/qvm-firewall: provide custom vif name by QubesHVM --- dom0/qvm-core/qubes.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index b462a676..dc82e43a 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2128,6 +2128,14 @@ class QubesHVm(QubesVm): def reset_volatile_storage(self, **kwargs): pass + @property + def vif(self): + if not self.is_running(): + return None + if self.netvm_vm is None: + return None + return "vif{0}.+".format(self.stubdom_xid) + def run(self, command, **kwargs): raise NotImplementedError("Needs qrexec agent - TODO") From 4749792e70254654a3cbcd7aa62bc18ee2afb904 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 01:55:16 +0100 Subject: [PATCH 029/386] dom0/qvm-core: force HVM to be updateable --- dom0/qvm-core/qubes.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index dc82e43a..0fc04f2d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2044,6 +2044,10 @@ class QubesHVm(QubesVm): if "dir_path" not in kwargs or kwargs["dir_path"] is None: kwargs["dir_path"] = qubes_appvms_dir + "/" + kwargs["name"] + # only updateable HVM supported + kwargs["updateable"] = True + kwargs["template_vm"] = None + super(QubesHVm, self).__init__(**kwargs) self.updateable = True self.config_file_template = config_template_hvm From 25b57bab887c4530216b32aca2f1748b0706a3f0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 01:46:10 +0100 Subject: [PATCH 030/386] dom0/appmenus: Create "Start" appmenu for HVM domains --- dom0/misc/qubes-start.desktop | 10 ++++++++++ dom0/qvm-core/qubes.py | 10 ++++++++++ rpm_spec/core-dom0.spec | 2 ++ 3 files changed, 22 insertions(+) create mode 100644 dom0/misc/qubes-start.desktop diff --git a/dom0/misc/qubes-start.desktop b/dom0/misc/qubes-start.desktop new file mode 100644 index 00000000..e9eb63cc --- /dev/null +++ b/dom0/misc/qubes-start.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=qvm-start --quiet %VMNAME% +Icon=%VMDIR%/icon.png +Terminal=false +Name=%VMNAME%: Start +GenericName=%VMNAME%: Start +StartupNotify=false +Categories=System; diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 0fc04f2d..be86293f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -84,6 +84,8 @@ default_hvm_disk_size = 20*1024*1024*1024 config_template_pv = '/usr/share/qubes/vm-template.conf' config_template_hvm = '/usr/share/qubes/vm-template-hvm.conf' +start_appmenu_template = '/usr/share/qubes/qubes-start.desktop' + qubes_whitelisted_appmenus = 'whitelisted-appmenus.list' dom0_update_check_interval = 6*3600 @@ -2080,6 +2082,14 @@ class QubesHVm(QubesVm): print >> sys.stderr, "--> Creating directory: {0}".format(self.dir_path) os.mkdir (self.dir_path) + if verbose: + print >> sys.stderr, "--> Creating appmenus directory: {0}".format(self.appmenus_templates_dir) + os.mkdir (self.appmenus_templates_dir) + shutil.copy (start_appmenu_template, self.appmenus_templates_dir) + + if not self.internal: + self.create_appmenus (verbose, source_template=source_template) + self.create_config_file() # create empty disk diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index f9043586..e2aa42d8 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -151,6 +151,7 @@ cp icons/*.png $RPM_BUILD_ROOT/usr/share/qubes/icons cp misc/qubes-vm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-templatevm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-appmenu-select.desktop $RPM_BUILD_ROOT/usr/share/qubes/ +cp misc/qubes-start.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/vm-template.conf $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/vm-template-hvm.conf $RPM_BUILD_ROOT/usr/share/qubes/ @@ -345,6 +346,7 @@ fi /usr/share/qubes/qubes-vm.directory.template /usr/share/qubes/qubes-templatevm.directory.template /usr/share/qubes/qubes-appmenu-select.desktop +/usr/share/qubes/qubes-start.desktop /usr/share/qubes/vm-template.conf /usr/share/qubes/vm-template-hvm.conf /usr/lib/qubes/qubes_setup_dnat_to_ns From f06d309a694e1879d328447a30890ed42dc8cb66 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 01:55:30 +0100 Subject: [PATCH 031/386] dom0/qvm-core: create icon symlink for HVM --- dom0/qvm-core/qubes.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index be86293f..cc9c3052 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2082,6 +2082,10 @@ class QubesHVm(QubesVm): print >> sys.stderr, "--> Creating directory: {0}".format(self.dir_path) os.mkdir (self.dir_path) + if verbose: + print >> sys.stderr, "--> Creating icon symlink: {0} -> {1}".format(self.icon_path, self.label.icon_path) + os.symlink (self.label.icon_path, self.icon_path) + if verbose: print >> sys.stderr, "--> Creating appmenus directory: {0}".format(self.appmenus_templates_dir) os.mkdir (self.appmenus_templates_dir) From f31422cbb39dca9caab057fb21eee03c28255fb9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 02:26:37 +0100 Subject: [PATCH 032/386] dom0/core: provide vif name also for paused VMs --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index cc9c3052..e03ddaea 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -390,7 +390,7 @@ class QubesVm(object): @property def vif(self): - if not self.is_running(): + if self.xid < 0: return None if self.netvm_vm is None: return None From a387393b4392fe1fcb82420f8788f356120910d6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 02:27:13 +0100 Subject: [PATCH 033/386] dom0/core: provide vif name also for paused HVMs --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index e03ddaea..5ee8b430 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2148,7 +2148,7 @@ class QubesHVm(QubesVm): @property def vif(self): - if not self.is_running(): + if self.xid < 0: return None if self.netvm_vm is None: return None From 7db275ab9c60cb52fa665b1ff2d3999398cbc40c Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 2 Mar 2012 02:33:05 +0100 Subject: [PATCH 034/386] version 2.0.3 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index e9307ca5..50ffc5aa 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.2 +2.0.3 diff --git a/version_vm b/version_vm index e9307ca5..50ffc5aa 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.2 +2.0.3 From d1bd26ebe01ede481bb39a6ea7df1e99151336ea Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 02:38:01 +0100 Subject: [PATCH 035/386] dom0/core: get stubdom xid also for paused domains Especially during HVM startup. --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 5ee8b430..d6f58bfc 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2159,7 +2159,7 @@ class QubesHVm(QubesVm): @property def stubdom_xid(self): - if not self.is_running(): + if self.xid < 0: return -1 return int(xs.read('', '/local/domain/%d/image/device-model-domid' % self.xid)) From a54115f73c0eb3f3b73de7ed711d586e895fa5f3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 11:44:58 +0100 Subject: [PATCH 036/386] dom0/hvm: use stdvga - supports higher resolutions --- dom0/misc/vm-template-hvm.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/misc/vm-template-hvm.conf b/dom0/misc/vm-template-hvm.conf index 44b31fb5..8361bd6e 100644 --- a/dom0/misc/vm-template-hvm.conf +++ b/dom0/misc/vm-template-hvm.conf @@ -9,6 +9,7 @@ builder='hvm' memory={mem} viridian=1 kernel='hvmloader' +stdvga=1 #acpi=1 #apic=1 boot='dca' From cec197ac8b41607407228b763a20d486af30e10b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 12:04:57 +0100 Subject: [PATCH 037/386] dom0/core: set *_img to None for HVM instead of removing attr There are many places that assume existence of this attributes. --- dom0/qvm-core/qubes.py | 6 +++--- dom0/qvm-tools/qvm-prefs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index d6f58bfc..91e10a0d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1333,7 +1333,7 @@ class QubesVm(object): attrs["dir_path"] = self.dir_path # Simple paths for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: - if hasattr(self, prop): + if hasattr(self, prop) and self.__getattribute__(prop) is not None: attrs[prop] = self.relative_path(self.__getattribute__(prop)) # Simple string attrs for prop in ['memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ @@ -2053,13 +2053,13 @@ class QubesHVm(QubesVm): super(QubesHVm, self).__init__(**kwargs) self.updateable = True self.config_file_template = config_template_hvm + self.private_img = None + self.volatile_img = None # remove settings not used by HVM (at least for now) self.__delattr__('kernel') self.__delattr__('kernelopts') self.__delattr__('uses_default_kernel') self.__delattr__('uses_default_kernelopts') - self.__delattr__('private_img') - self.__delattr__('volatile_img') # HVM doesn't support dynamic memory management self.maxmem = self.memory diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index df3a4636..2efbf940 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -51,10 +51,10 @@ def do_list(vm): print fmt.format ("root COW img", vm.rootcow_img) if vm.template_vm is not None: print fmt.format ("root img", vm.template_vm.root_img) - if hasattr(vm, 'volatile_img'): + if hasattr(vm, 'volatile_img') and vm.volatile_img is not None: print fmt.format ("root volatile img", vm.volatile_img) - if hasattr(vm, 'private_img'): + if hasattr(vm, 'private_img') and vm.private_img is not None: print fmt.format ("private img", vm.private_img) print fmt.format ("vcpus", str(vm.vcpus)) print fmt.format ("memory", vm.memory) From e4b23f6670920216830811437f4783b5a8ea9c86 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 13:49:23 +0100 Subject: [PATCH 038/386] dom0/network: use static MAC for VMs --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 91e10a0d..597be74d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -815,7 +815,7 @@ class QubesVm(object): args['maxmem'] = str(self.maxmem) args['vcpus'] = str(self.vcpus) if self.netvm_vm is not None: - args['netdev'] = "'script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip) + args['netdev'] = "'mac=00:16:3E:5E:6C:{qid:02X},script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip, qid=self.qid) if self.netvm_vm.qid != 0: args['netdev'] += ",backend={0}".format(self.netvm_vm.name) args['netdev'] += "'" From 4d554fd182d0bba7351f95658be2c100635db842 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 14:28:09 +0100 Subject: [PATCH 039/386] dom0/core: set default memory for HVM to 512MB --- dom0/qvm-core/qubes.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 597be74d..23ee95c5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -80,6 +80,7 @@ default_kernelopts = "" default_kernelopts_pcidevs = "iommu=soft swiotlb=2048" default_hvm_disk_size = 20*1024*1024*1024 +default_hvm_memory = 512 config_template_pv = '/usr/share/qubes/vm-template.conf' config_template_hvm = '/usr/share/qubes/vm-template-hvm.conf' @@ -2049,6 +2050,8 @@ class QubesHVm(QubesVm): # only updateable HVM supported kwargs["updateable"] = True kwargs["template_vm"] = None + if "memory" not in kwargs or kwargs["memory"] is None: + kwargs["memory"] = default_hvm_memory super(QubesHVm, self).__init__(**kwargs) self.updateable = True From 4100651d42482d2b79e5fde64593cf31d575f209 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 2 Mar 2012 14:58:29 +0100 Subject: [PATCH 040/386] version 2.0.4-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 50ffc5aa..2165f8f9 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.3 +2.0.4 From b4b639cbb3ff26aca107dfaf16d2ad8dc6bb05b8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 2 Mar 2012 16:28:15 +0100 Subject: [PATCH 041/386] dom0/core: clone support for HVM --- dom0/qvm-core/qubes.py | 9 +++++++++ dom0/qvm-tools/qvm-clone | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index e8dd8e1b..d1194c54 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2118,6 +2118,15 @@ class QubesHVm(QubesVm): def is_appvm(self): return True + def get_clone_attrs(self): + attrs = super(QubesHVm, self).get_clone_attrs() + attrs.remove('kernel') + attrs.remove('uses_default_kernel') + attrs.remove('kernelopts') + attrs.remove('uses_default_kernelopts') + attrs.remove('maxmem') + return attrs + def create_on_disk(self, verbose, source_template = None): if dry_run: return diff --git a/dom0/qvm-tools/qvm-clone b/dom0/qvm-tools/qvm-clone index 161b2633..89e13d03 100755 --- a/dom0/qvm-tools/qvm-clone +++ b/dom0/qvm-tools/qvm-clone @@ -21,7 +21,7 @@ # from qubes.qubes import QubesVmCollection -from qubes.qubes import QubesAppVm, QubesTemplateVm +from qubes.qubes import QubesAppVm, QubesTemplateVm, QubesHVm from qubes.qubes import QubesException from optparse import OptionParser; import sys @@ -62,6 +62,8 @@ def main(): dst_vm = qvm_collection.add_new_appvm(name=dstname, template_vm=src_vm.template_vm, updateable=src_vm.updateable, label=src_vm.label, dir_path=options.dir_path) + elif isinstance(src_vm, QubesHVm): + dst_vm = qvm_collection.add_new_hvm(name=dstname, label=src_vm.label) else: print >> sys.stderr, "ERROR: Clone not supported for this type of VM" exit(1) From ee0bdfbcdfc290fff6c9fa48210c9b02ebe10fba Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 2 Mar 2012 16:48:18 +0100 Subject: [PATCH 042/386] version 2.0.5-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 2165f8f9..e0102586 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.4 +2.0.5 From 63b51e41cea4700ecf0a0bf075b6434e0f836171 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 4 Mar 2012 21:59:02 +0100 Subject: [PATCH 043/386] dom0/core: change QubesVm.netvm_vm to QubesVm.netvm To simplify setters and getters. --- dom0/qvm-core/qubes.py | 128 ++++++++++---------- dom0/qvm-core/qubesutils.py | 24 ++-- dom0/qvm-tools/qubes-dom0-network-via-netvm | 6 +- dom0/qvm-tools/qubes-prefs | 4 +- dom0/qvm-tools/qvm-ls | 4 +- dom0/qvm-tools/qvm-prefs | 22 ++-- dom0/qvm-tools/qvm-sync-clock | 4 +- 7 files changed, 96 insertions(+), 96 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 447c6ba1..30ce2021 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -201,7 +201,7 @@ class QubesVm(object): def __init__(self, qid, name, dir_path, conf_file = None, uses_default_netvm = True, - netvm_vm = None, + netvm = None, installed_by_rpm = False, updateable = False, label = None, @@ -232,9 +232,9 @@ class QubesVm(object): self.conf_file = self.absolute_path(conf_file, name + ".conf") self.uses_default_netvm = uses_default_netvm - self.netvm_vm = netvm_vm - if netvm_vm is not None: - netvm_vm.connected_vms[qid] = self + self.netvm = netvm + if netvm is not None: + netvm.connected_vms[qid] = self self._mac = mac @@ -366,29 +366,29 @@ class QubesVm(object): @property def ip(self): - if self.netvm_vm is not None: - return self.netvm_vm.get_ip_for_vm(self.qid) + if self.netvm is not None: + return self.netvm.get_ip_for_vm(self.qid) else: return None @property def netmask(self): - if self.netvm_vm is not None: - return self.netvm_vm.netmask + if self.netvm is not None: + return self.netvm.netmask else: return None @property def gateway(self): - if self.netvm_vm is not None: - return self.netvm_vm.gateway + if self.netvm is not None: + return self.netvm.gateway else: return None @property def secondary_dns(self): - if self.netvm_vm is not None: - return self.netvm_vm.secondary_dns + if self.netvm is not None: + return self.netvm.secondary_dns else: return None @@ -396,7 +396,7 @@ class QubesVm(object): def vif(self): if self.xid < 0: return None - if self.netvm_vm is None: + if self.netvm is None: return None return "vif{0}.+".format(self.xid) @@ -418,7 +418,7 @@ class QubesVm(object): if self.is_netvm(): return True - if self.netvm_vm is not None: + if self.netvm is not None: return True else: return False @@ -436,11 +436,11 @@ class QubesVm(object): raise QubesException ("Change 'updateable' flag is not supported. Please use qvm-create.") - def set_netvm_vm(self, netvm_vm): - if self.netvm_vm is not None: - self.netvm_vm.connected_vms.pop(self.qid) + def set_netvm(self, netvm): + if self.netvm is not None: + self.netvm.connected_vms.pop(self.qid) - if netvm_vm is None: + if netvm is None: # Set also firewall to block all traffic as discussed in #370 if os.path.exists(self.firewall_conf): shutil.copy(self.firewall_conf, "%s/backup/%s-firewall-%s.xml" @@ -448,9 +448,9 @@ class QubesVm(object): self.write_firewall_conf({'allow': False, 'allowDns': False, 'allowIcmp': False, 'rules': []}) else: - netvm_vm.connected_vms[self.qid]=self + netvm.connected_vms[self.qid]=self - self.netvm_vm = netvm_vm + self.netvm = netvm def pre_rename(self, new_name): pass @@ -780,15 +780,15 @@ class QubesVm(object): "{0}/qubes_netvm_network".format(domain_path), self.network) - if self.netvm_vm is not None: + if self.netvm is not None: xs.write('', "{0}/qubes_ip".format(domain_path), self.ip) xs.write('', "{0}/qubes_netmask".format(domain_path), - self.netvm_vm.netmask) + self.netvm.netmask) xs.write('', "{0}/qubes_gateway".format(domain_path), - self.netvm_vm.gateway) + self.netvm.gateway) xs.write('', "{0}/qubes_secondary_dns".format(domain_path), - self.netvm_vm.secondary_dns) + self.netvm.secondary_dns) tzname = self.get_timezone() if tzname: @@ -829,10 +829,10 @@ class QubesVm(object): args['mem'] = str(self.memory) args['maxmem'] = str(self.maxmem) args['vcpus'] = str(self.vcpus) - if self.netvm_vm is not None: + if self.netvm is not None: args['netdev'] = "'mac={mac},script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip, mac=self.mac) - if self.netvm_vm.qid != 0: - args['netdev'] += ",backend={0}".format(self.netvm_vm.name) + if self.netvm.qid != 0: + args['netdev'] += ",backend={0}".format(self.netvm.name) args['netdev'] += "'" else: args['netdev'] = '' @@ -950,7 +950,7 @@ class QubesVm(object): print >> sys.stderr, "Ooops, there was a problem creating appmenus for {0} VM!".format (self.name) def get_clone_attrs(self): - return ['kernel', 'uses_default_kernel', 'netvm_vm', 'uses_default_netvm', \ + return ['kernel', 'uses_default_kernel', 'netvm', 'uses_default_netvm', \ 'memory', 'maxmem', 'kernelopts', 'uses_default_kernelopts', 'services', 'vcpus', \ '_mac'] @@ -1238,7 +1238,7 @@ class QubesVm(object): raise QubesException ("VM not running!") if netvm is None: - netvm = self.netvm_vm + netvm = self.netvm if netvm is None: raise QubesException ("NetVM not set!") @@ -1305,12 +1305,12 @@ class QubesVm(object): if self.get_power_state() != "Halted": raise QubesException ("VM is already running!") - if self.netvm_vm is not None: - if self.netvm_vm.qid != 0: - if not self.netvm_vm.is_running(): + if self.netvm is not None: + if self.netvm.qid != 0: + if not self.netvm.is_running(): if verbose: - print >> sys.stderr, "--> Starting NetVM {0}...".format(self.netvm_vm.name) - self.netvm_vm.start() + print >> sys.stderr, "--> Starting NetVM {0}...".format(self.netvm.name) + self.netvm.start() self.reset_volatile_storage(verbose=verbose) if verbose: @@ -1427,7 +1427,7 @@ class QubesVm(object): attrs[prop] = str(self.__getattribute__(prop)) if self._mac is not None: attrs["mac"] = str(self._mac) - attrs["netvm_qid"] = str(self.netvm_vm.qid) if self.netvm_vm is not None else "none" + attrs["netvm_qid"] = str(self.netvm.qid) if self.netvm is not None else "none" attrs["template_qid"] = str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none" attrs["label"] = self.label.name return attrs @@ -1812,14 +1812,14 @@ class QubesProxyVm(QubesNetVm): if dry_run: return retcode = super(QubesProxyVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm) - self.netvm_vm.add_external_ip_permission(self.get_xid()) + self.netvm.add_external_ip_permission(self.get_xid()) self.write_netvm_domid_entry() return retcode def force_shutdown(self): if dry_run: return - self.netvm_vm.remove_external_ip_permission(self.get_xid()) + self.netvm.remove_external_ip_permission(self.get_xid()) super(QubesProxyVm, self).force_shutdown() def create_xenstore_entries(self, xid = None): @@ -1841,7 +1841,7 @@ class QubesProxyVm(QubesNetVm): xid = self.get_xid() xs.write('', "/local/domain/{0}/qubes_netvm_domid".format(xid), - "{0}".format(self.netvm_vm.get_xid())) + "{0}".format(self.netvm.get_xid())) def write_iptables_xenstore_entry(self): xs.rm('', "/local/domain/{0}/qubes_iptables_domainrules".format(self.get_xid())) @@ -1910,9 +1910,9 @@ class QubesProxyVm(QubesNetVm): iptables += " -j {0}\n".format(rules_action) if conf["allowDns"]: - # PREROUTING does DNAT to NetVM DNSes, so we need self.netvm_vm. properties - iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm_vm.gateway) - iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm_vm.secondary_dns) + # PREROUTING does DNAT to NetVM DNSes, so we need self.netvm. properties + iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm.gateway) + iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm.secondary_dns) if conf["allowIcmp"]: iptables += "-A FORWARD -i {0} -p icmp -j ACCEPT\n".format(vif) @@ -1928,7 +1928,7 @@ class QubesProxyVm(QubesNetVm): def get_xml_attrs(self): attrs = super(QubesProxyVm, self).get_xml_attrs() - attrs["netvm_qid"] = str(self.netvm_vm.qid) if self.netvm_vm is not None else "none" + attrs["netvm_qid"] = str(self.netvm.qid) if self.netvm is not None else "none" return attrs class QubesDom0NetVm(QubesNetVm): @@ -2010,8 +2010,8 @@ class QubesDisposableVm(QubesVm): @property def ip(self): - if self.netvm_vm is not None: - return self.netvm_vm.get_ip_for_dispvm(self.dispid) + if self.netvm is not None: + return self.netvm.get_ip_for_dispvm(self.dispid) else: return None @@ -2280,7 +2280,7 @@ class QubesVmCollection(dict): vm = QubesAppVm (qid=qid, name=name, template_vm=template_vm, dir_path=dir_path, conf_file=conf_file, private_img=private_img, - netvm_vm = self.get_default_netvm_vm(), + netvm = self.get_default_netvm(), kernel = self.get_default_kernel(), uses_default_kernel = True, updateable=updateable, @@ -2310,7 +2310,7 @@ class QubesVmCollection(dict): qid = self.get_new_unused_qid() vm = QubesDisposableVm (qid=qid, name=name, template_vm=template_vm, - netvm_vm = self.get_default_netvm_vm(), + netvm = self.get_default_netvm(), label=label, dispid=dispid) if not self.verify_new_vm (vm): @@ -2328,7 +2328,7 @@ class QubesVmCollection(dict): dir_path=dir_path, conf_file=conf_file, root_img=root_img, private_img=private_img, installed_by_rpm=installed_by_rpm, - netvm_vm = self.get_default_netvm_vm(), + netvm = self.get_default_netvm(), kernel = self.get_default_kernel(), uses_default_kernel = True) @@ -2370,7 +2370,7 @@ class QubesVmCollection(dict): self[vm.qid]=vm if self.default_fw_netvm_qid is None: - self.set_default_fw_netvm_vm(vm) + self.set_default_fw_netvm(vm) # by default ClockVM is the first NetVM if self.clockvm_qid is None: @@ -2392,14 +2392,14 @@ class QubesVmCollection(dict): updateable=updateable, kernel = self.get_default_kernel(), uses_default_kernel = True, - netvm_vm = self.get_default_fw_netvm_vm()) + netvm = self.get_default_fw_netvm()) if not self.verify_new_vm (vm): assert False, "Wrong VM description!" self[vm.qid]=vm if self.default_netvm_qid is None: - self.set_default_netvm_vm(vm) + self.set_default_netvm(vm) if self.updatevm_qid is None: self.set_updatevm_vm(vm) @@ -2416,11 +2416,11 @@ class QubesVmCollection(dict): else: return self[self.default_template_qid] - def set_default_netvm_vm(self, vm): + def set_default_netvm(self, vm): assert vm.is_netvm(), "VM {0} does not provide network!".format(vm.name) self.default_netvm_qid = vm.qid - def get_default_netvm_vm(self): + def get_default_netvm(self): if self.default_netvm_qid is None: return None else: @@ -2433,11 +2433,11 @@ class QubesVmCollection(dict): def get_default_kernel(self): return self.default_kernel - def set_default_fw_netvm_vm(self, vm): + def set_default_fw_netvm(self, vm): assert vm.is_netvm(), "VM {0} does not provide network!".format(vm.name) self.default_fw_netvm_qid = vm.qid - def get_default_fw_netvm_vm(self): + def get_default_fw_netvm(self): if self.default_fw_netvm_qid is None: return None else: @@ -2676,22 +2676,22 @@ class QubesVmCollection(dict): else: vm.uses_default_netvm = True if kwargs["uses_default_netvm"] == "True" else False if vm.uses_default_netvm is True: - netvm_vm = self.get_default_netvm_vm() + netvm = self.get_default_netvm() kwargs.pop("netvm_qid") else: if kwargs["netvm_qid"] == "none" or kwargs["netvm_qid"] is None: - netvm_vm = None + netvm = None kwargs.pop("netvm_qid") else: netvm_qid = int(kwargs.pop("netvm_qid")) if netvm_qid not in self: - netvm_vm = None + netvm = None else: - netvm_vm = self[netvm_qid] + netvm = self[netvm_qid] - vm.netvm_vm = netvm_vm - if netvm_vm: - netvm_vm.connected_vms[vm.qid] = vm + vm.netvm = netvm + if netvm: + netvm.connected_vms[vm.qid] = vm def load(self): self.clear() @@ -2867,7 +2867,7 @@ class QubesVmCollection(dict): else: kwargs["template_vm"] = template_vm - kwargs["netvm_vm"] = self.get_default_netvm_vm() + kwargs["netvm"] = self.get_default_netvm() if kwargs["label"] is not None: if kwargs["label"] not in QubesVmLabels: @@ -2890,8 +2890,8 @@ class QubesVmCollection(dict): if self.default_netvm_qid is not None: clockvm = self[self.default_netvm_qid] # Find root of netvm chain - while clockvm.netvm_vm is not None: - clockvm = clockvm.netvm_vm + while clockvm.netvm is not None: + clockvm = clockvm.netvm self.clockvm_qid = clockvm.qid diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 06039ae0..d1690505 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -635,21 +635,21 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): vms_to_restore[vm.name]['missing-template'] = True vms_to_restore[vm.name]['good-to-go'] = False - if vm.netvm_vm is None: + if vm.netvm is None: vms_to_restore[vm.name]['netvm'] = None else: - netvm_name = vm.netvm_vm.name + netvm_name = vm.netvm.name vms_to_restore[vm.name]['netvm'] = netvm_name - netvm_vm_on_host = host_collection.get_vm_by_name (netvm_name) + netvm_on_host = host_collection.get_vm_by_name (netvm_name) # No netvm on the host? - if not ((netvm_vm_on_host is not None) and netvm_vm_on_host.is_netvm()): + if not ((netvm_on_host is not None) and netvm_on_host.is_netvm()): # Maybe the (custom) netvm is in the backup? - netvm_vm_on_backup = backup_collection.get_vm_by_name (netvm_name) - if not ((netvm_vm_on_backup is not None) and netvm_vm_on_backup.is_netvm): + netvm_on_backup = backup_collection.get_vm_by_name (netvm_name) + if not ((netvm_on_backup is not None) and netvm_on_backup.is_netvm): if options['use-default-netvm']: - vms_to_restore[vm.name]['netvm'] = host_collection.get_default_netvm_vm().name + vms_to_restore[vm.name]['netvm'] = host_collection.get_default_netvm().name vm.uses_default_netvm = True elif options['use-none-netvm']: vms_to_restore[vm.name]['netvm'] = None @@ -701,7 +701,7 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): "netvm": {"func": "'n/a' if vm.is_netvm() else\ ('*' if vm.uses_default_netvm else '') +\ - vm_info['netvm'] if vm.netvm_vm is not None else '-'"}, + vm_info['netvm'] if vm.netvm is not None else '-'"}, "label" : {"func" : "vm.label.name"}, } @@ -876,7 +876,7 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca if not vm.uses_default_netvm: uses_default_netvm = False - netvm_vm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None + netvm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None else: uses_default_netvm = True @@ -907,7 +907,7 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca if vm.is_proxyvm() and not uses_default_netvm: new_vm.uses_default_netvm = False - new_vm.netvm_vm = netvm_vm + new_vm.netvm = netvm try: new_vm.verify_files() @@ -941,7 +941,7 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca if not vm.uses_default_netvm: uses_default_netvm = False - netvm_vm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None + netvm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None else: uses_default_netvm = True @@ -964,7 +964,7 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca if not uses_default_netvm: new_vm.uses_default_netvm = False - new_vm.netvm_vm = netvm_vm + new_vm.netvm = netvm try: new_vm.create_appmenus(verbose=True) diff --git a/dom0/qvm-tools/qubes-dom0-network-via-netvm b/dom0/qvm-tools/qubes-dom0-network-via-netvm index d470ce31..a2b13623 100755 --- a/dom0/qvm-tools/qubes-dom0-network-via-netvm +++ b/dom0/qvm-tools/qubes-dom0-network-via-netvm @@ -33,9 +33,9 @@ def get_netvm(): qvm_collection.lock_db_for_reading() qvm_collection.load() qvm_collection.unlock_db() - netvm = qvm_collection.get_default_netvm_vm() - while netvm.netvm_vm is not None: - netvm = netvm.netvm_vm + netvm = qvm_collection.get_default_netvm() + while netvm.netvm is not None: + netvm = netvm.netvm if netvm is None or netvm.name == 'dom0': print >> sys.stderr, 'There seems to be no dedicated default netvm, aborting.' sys.exit(1) diff --git a/dom0/qvm-tools/qubes-prefs b/dom0/qvm-tools/qubes-prefs index 20204b1c..bb4508c3 100755 --- a/dom0/qvm-tools/qubes-prefs +++ b/dom0/qvm-tools/qubes-prefs @@ -30,8 +30,8 @@ import sys def handle_vm(vms, label, new_value = None): functions = { # label: [ getter, setter ], - 'default-netvm': [ 'get_default_netvm_vm', 'set_default_netvm_vm' ], - 'default-fw-netvm': [ 'get_default_fw_netvm_vm', 'set_default_fw_netvm_vm' ], + 'default-netvm': [ 'get_default_netvm', 'set_default_netvm' ], + 'default-fw-netvm': [ 'get_default_fw_netvm', 'set_default_fw_netvm' ], 'default-template': [ 'get_default_template_vm', 'set_default_template_vm' ], 'clockvm': [ 'get_clockvm_vm', 'set_clockvm_vm' ], 'updatevm': [ 'get_updatevm_vm', 'set_updatevm_vm' ], diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index c123b723..f069efed 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -52,8 +52,8 @@ fields = { "netvm": {"func": "'n/a' if vm.is_netvm() and not vm.is_proxyvm() else\ ('*' if vm.uses_default_netvm else '') +\ - qvm_collection[vm.netvm_vm.qid].name\ - if vm.netvm_vm is not None else '-'"}, + qvm_collection[vm.netvm.qid].name\ + if vm.netvm is not None else '-'"}, "ip" : {"func": "vm.ip"}, "netmask" : {"func": "vm.netmask"}, diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 07e1b863..0b31053c 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -39,8 +39,8 @@ def do_list(vm): print fmt.format ("type", vm.type) if vm.template_vm is not None: print fmt.format ("template", vm.template_vm.name) - if vm.netvm_vm is not None: - print fmt.format ("netvm", vm.netvm_vm.name) + if vm.netvm is not None: + print fmt.format ("netvm", vm.netvm.name) print fmt.format ("updateable?", vm.is_updateable()) print fmt.format ("installed by RPM?", vm.installed_by_rpm) print fmt.format ("dir", vm.dir_path) @@ -143,30 +143,30 @@ def set_netvm(vms, vm, args): netvm = args[0] if netvm == "none": - netvm_vm = None + netvm = None vm.uses_default_netvm = False elif netvm == "default": - netvm_vm = vms.get_default_netvm_vm() + netvm = vms.get_default_netvm() vm.uses_default_netvm = True else: - netvm_vm = vms.get_vm_by_name (netvm) - if netvm_vm is None: + netvm = vms.get_vm_by_name (netvm) + if netvm is None: print >> sys.stderr, "A VM with the name '{0}' does not exist in the system.".format(netvm) exit(1) - if not netvm_vm.is_netvm(): + if not netvm.is_netvm(): print >> sys.stderr, "VM '{0}' is not a NetVM".format(netvm) exit (1) vm.uses_default_netvm = False - vm.set_netvm_vm(netvm_vm) + vm.set_netvm(netvm) if not vm.is_running(): return # this can fail if VM was not connected to any NetVM subprocess.call(["xl", "network-detach", vm.name, "0"], stderr=subprocess.PIPE) - if vm.netvm_vm is None: + if vm.netvm is None: return - if not vm.netvm_vm.is_running(): - subprocess.check_call(["qvm-start", vm.netvm_vm.name]) + if not vm.netvm.is_running(): + subprocess.check_call(["qvm-start", vm.netvm.name]) # refresh IP, DNS etc vm.create_xenstore_entries() vm.attach_network(verbose = True) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index d80e1349..911bf68a 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -31,8 +31,8 @@ qvm_collection = None def get_netvm_of_vm(vm): netvm = vm - while netvm.netvm_vm is not None: - netvm = netvm.netvm_vm + while netvm.netvm is not None: + netvm = netvm.netvm if netvm is None or netvm.name == 'dom0': print >> sys.stderr, 'There seems to be no network connected to ClockVM, aborting.' sys.exit(1) From a5c69af85208be17b282ca03dbdac167a6d177ad Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 4 Mar 2012 22:00:41 +0100 Subject: [PATCH 044/386] dom0/core: netvm_vm -> netvm - HVM-specific --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 30ce2021..2ea8c35f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2204,7 +2204,7 @@ class QubesHVm(QubesVm): def vif(self): if self.xid < 0: return None - if self.netvm_vm is None: + if self.netvm is None: return None return "vif{0}.+".format(self.stubdom_xid) @@ -2295,7 +2295,7 @@ class QubesVmCollection(dict): qid = self.get_new_unused_qid() vm = QubesHVm (qid=qid, name=name, - netvm_vm = self.get_default_netvm_vm(), + netvm = self.get_default_netvm(), kernel = self.get_default_kernel(), uses_default_kernel = True, label=label) From 55c21b2f9e828ce03abc61c9f70555cad0371f71 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 6 Mar 2012 02:27:29 +0100 Subject: [PATCH 045/386] dom0/hvm-config: add parameters for DHCP server in stubdom This cannot be done via xenstore, because stubdom is started just after creating (unlike real VM, which is created paused), so there is no time for creating xenstore entries. --- dom0/misc/vm-template-hvm.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/misc/vm-template-hvm.conf b/dom0/misc/vm-template-hvm.conf index 8361bd6e..0849001c 100644 --- a/dom0/misc/vm-template-hvm.conf +++ b/dom0/misc/vm-template-hvm.conf @@ -31,3 +31,6 @@ vcpus = {vcpus} on_poweroff = 'destroy' on_reboot = 'destroy' on_crash = 'destroy' + +# Use of DNS2 as DHCP server IP makes DNS2 not accessible, but DNS1 still should work +device_model_args = [ '-net', 'lwip,client_ip={ip},server_ip={dns2},dns={dns1},gw={gateway},netmask={netmask}' ] From 77a1eed064d6257864e171ccac14eeb1cfedefd9 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 7 Mar 2012 11:05:14 +0100 Subject: [PATCH 046/386] version 2.0.6 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index e0102586..157e54f3 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.5 +2.0.6 From e2c62b9424c2c0709f9e32c3c32007eb1cf9e88e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 7 Mar 2012 17:04:25 +0100 Subject: [PATCH 047/386] dom0/dispvm: icons for DispVM Beautiful icons thanks to Agnieszka Kostrzewa! --- dom0/icons/dispvm-black.png | Bin 0 -> 11275 bytes dom0/icons/dispvm-blue.png | Bin 0 -> 11181 bytes dom0/icons/dispvm-gray.png | Bin 0 -> 11084 bytes dom0/icons/dispvm-green.png | Bin 0 -> 11979 bytes dom0/icons/dispvm-orange.png | Bin 0 -> 11748 bytes dom0/icons/dispvm-padlock-layers.xcf | Bin 0 -> 49215 bytes dom0/icons/dispvm-purple.png | Bin 0 -> 11764 bytes dom0/icons/dispvm-red.png | Bin 0 -> 11173 bytes dom0/icons/dispvm-yellow.png | Bin 0 -> 11762 bytes dom0/qvm-core/qubes.py | 5 +++++ 10 files changed, 5 insertions(+) create mode 100644 dom0/icons/dispvm-black.png create mode 100644 dom0/icons/dispvm-blue.png create mode 100644 dom0/icons/dispvm-gray.png create mode 100644 dom0/icons/dispvm-green.png create mode 100644 dom0/icons/dispvm-orange.png create mode 100644 dom0/icons/dispvm-padlock-layers.xcf create mode 100644 dom0/icons/dispvm-purple.png create mode 100644 dom0/icons/dispvm-red.png create mode 100644 dom0/icons/dispvm-yellow.png diff --git a/dom0/icons/dispvm-black.png b/dom0/icons/dispvm-black.png new file mode 100644 index 0000000000000000000000000000000000000000..2896be79aa4a634bc0e35c6dad68d704a6483f71 GIT binary patch literal 11275 zcmY*fWl&pPw+`-Z!J$Ygr3H#haVYLk+=^SV;I753KyeBbEnZxLOMz0zO9KRVcemX0 z{k)S&&YUxonPly~9$PzBQ~d)0E)6aS1R_vUl+y;Tq5pehV*;N85|-n@1;tbQgAAzl z58WPcgK4GmK@Noc->ay*JRNv~S zGYG^4Qj(L_^<6mXc1WP#^ILhSzB&vjG@ECQ*_=q>W3|hAF&1aX-$>6alw%NUvq~cb zk8_?^3I$$+W!Pkz<33%zXb#{bA0n_O-|D_B1u7z;|7VA>fcVt&%*hxQG+C zJ2;u~=@e@&N%n27EF5wlfii4AIRCQ1+M_YS#>k*$(w@Im>vMg5TkpbtoPnunz`^$Y zq$KK{WXJ8Oo&$obDnKwm$zy~8czW;v)e2x7Tr zzI8E#yd4R79N9(z9nai8mP=$b@KuJ~&ux?=$L!1kd7p1L%3o2&S5(p9z9%krG5&>c zF{+`w@~3BdOe98yLzK#4UzOP!=jj>@oN0X{iG`D7JD02=ki?-OjOC!6{7FXW#kJ%e zO!DauBWN82k{mjlp92j)ZX2`%Hx_TJB?sN(zBu-A%U3c5LkMlk~p20z% zE>1#r#8&(^K%kJJjcmJu>22F`TX< zJUslFHfbHgo1wh@CtnO%elyOecfy!~oaeKfl6aPco@cD&Wfw});f}VraAx4nI%XKC zzRXrFcHpdi?PiKK9;sg^-!xqc+jD!m7jWfTDl)2E6;|i))zcf>^2ifD97GlRp+E81~$->cb= z0a)y-EMUnSPwvM+;J%H>R8!j`o;zBYhO8@~K+n81nj>%B_o}#ug@EDQXLQsS_4~pdcgyePq z#T4{8vK>%^7*Ct z#>|iLUkff=2ygn4d5PLj+gd;cGo{4 zPy&l|(2CcJH{Vx0$;}k#j#;BO2@>S;-wimmxX4xDR3FVJw(yWP4i01Q|AH9bO^97Q znunacHou!J+47)PgSnYzxt0%H9l)vaF@a`!myMrvur6HSf{cfo@Aw4oK>s>7ha>l0 zR-NLC1E2b%@OD6UbAl-qmW= zOERex3;~bs>u18X2Qw!(cWXo;y&s|XSRtnY&>JkMM-hqyx-fEk<*6U}cx8_KozBPC zWS^b6~R1=V{~%xz`fwETp=ov>4M}x6{;}4?uV&ibD>&_- zLciL!+YG8%J^QRvscSShH|Kkw@v$dA2qn7m!wc^)3;?!Jt- z(bI_?+4%1O(veS?RcBIWR+p~GTA|OWTTRh(9}_Yfg-1oV+WOYK=W(iPcHi7#SFc7t zA6TQTAKH6UKdWECeyWhYte#sUTRYoVnaXXoJNC2t5ZBro%N+J*$BfBIwdc!>j|S!|_R49O zGh5?X(0f?dAETNU(f9A4KB%aSOCnsGZE=TC%Pe20@X#c3Y~m#-u>9UqA~zg%r`ON? zSTMSShxD_t`QZZ!HML)sZE9M%U#AKY$sMy*Vo&F%A+VO;{=M~@KZl^!96J1On{ww* z{wGgQCmpS?8fIO-XOo@o-5JV1$dX4wT9+I{X26LIGhT`6ow5>zACiZ@?9s$kX&2;` zPFHM*CjF{+yV~2z$Uq{^{I<`#(L-gJZ)m5Wr~S-o@KM`$mk;mx)k@}_t&G^SxJ@?~ z)?dWO$N&87Ow&vC)}*c8SE$a<#l@v!#LB$Q>+W}AJk{I!UtSTjvjX@7QZPuz(%UkJ z^S`o0ynK8SwN6tZ=jnxkk08)V(?enWkF>FnpvOU+#%!*ngBME63xPHI8^ehQTyNg+ zf(hrVbV0!v=Ud||P^#J|0Gb>OGq2h+GMc5k&Fn1KaP!q^Vf?W}RzT&}&(LECCs~xz zN-NJ#7(f=z!qI2hB_EP0)5chnpi*ez{@ugF!u*88p{z!HKIuuQ^!NQHkOua#!s$DiYfk|ja|Rws^4B6A+;A*smr2mZ?-SZ(+H{DT6J##Lz2gZeqfJtcU7kodXr5 zp{}(tH0f+nY=r}W&1%SAICTM36Q#&$VTTa3noMOLcs4(95d)hyNs@aJ%QY^Xq}DlW zYvY%_=Jtg+JUGPdc;<%+bn3nM{}#(CA)yWpsIDa#b09VBKor1gb@4}@sw&dt5!__S z=i68`5UAEA7|?p+cYzFQuoPAtgg1Z}CY`|q%;+V+cRG;dZtWv6KdX?6*v$9?7A}ws zv(^a9Z-bZMJCh`!=EYT!MF;{7TAfvXE$lq0xev3+ zzPt|tbdC&mbjezw8zTX{0f}A&bKSUCDy^zYQ?mP(m%~aK&pdYiIF|lW<$(q?C4MpC zC7Q3zKRI59mnLQk{{cI5&byj(2IS^viHiij6uuso9HiuGflbSRfb=KxZKA!EFGEj;nF=KAH#3Voo=?(8A8& znqr3)a{vo*ekb1GOJ`wgjs_|vi?#087|Kkwsly#ii5DmBY5nQYzf2!d$|%%wAVL_-VcSM5!6@b;J0AG@DEA1=s>H>K~jv( zn5Up%3)E}PRI~IlED>^XH`LD;p$xhhZU@hVAh(r?6s-3X-8+Gy0h0<0_Mx4tXyR?E zt05V7y_r4!i;D~LczJ-x;obj* zPTNOXg1;4%!`DlESx#z{Og0?!yB<*2At(AA~(!34q*6-8f%yb)X?Kl-Gm_ zGnAudXZ7Bib$vPL0QNaeB4+J@BhfFMIR}8pYR$TpoA;aDT?BL2CWvg)T@V#j%7D&d zJnR-Uf!pwa|DN2q)4e?8WU$Zi6+fnk}`c%8YOrDa%ivw(j$Lqs1Fx^$5lWXXvzUy)Ujm2|BE{^#l+W%3B{k1f$gR-0-M zz7GTX7pT0AVS+-5%Lw3rz|kM~#OSO5Lr|E;-@Vi**lgb^V96Sfl4<0^W6~|mdTWXsFE?zrXwQ#p zz6$&u*;xi>6l^a&w&gwI6R$7L2#%$vFP64L$k+uCw8c-I9ps|0Au9+ zpDy|dbG=J|u|1Xb69ce*pGJ}ZHkD;h$5GP|XV@7{WeHp-D_o^rxgCDSkb047VQXuP zh=^Y}0v4g&gpe_?Wcs!@ME1aI)Y&!7$h=&)Qj=dzxmLx@Beortnj3HsWBhE{ImMcj zwhnZngBHOIC7NxX$qS#w>Z&-mJhD~U$wX_kbcpFRR8=)O$N@TdzyoPb(O}b8^d5f@ zLbRmXWShLD`ZKt?qLTK@1<%SE(V|3%`Bg~po4N6ZLF+j4nuj8ZwY3|>&5KyD4K)(2 z@qnolFqqRn6Ah|o+x*v1Rbq&m?*7W+YriTicUx{H5`3loM7Ee^V|dcZEw9yo!63c4 zC~&;t3X=NApQy`;(K{4RHNUX%B3~V7q#FX4NO*#a)sK( z-%rj=;MR#U%v*)lEzY5D`@6WRjEu0uZU~QZ=&$iPBFNbjKX;6z^EPQ%mAl6dy;yYo_^WL7`VcCjogz9erfH9K*e-eW)fBCsLSnDdZZfjd*juPuf8) ztLqNf^HHgIEI4J>x1~;=Yl%VzhhDpZ`#Qo~=e6*59Y5MoH#)ijsd=`@Zd!+R9}19< z|A1Ds%geQq%&hF^?zh7w=XzkiJ9e#Pk{|M zJ}SXN_Y`mfp8WlD3;p(j(q1VxFlX(LH<3euk|Hpkw;~_W|jZ@=lcijCb%|MGaZwI zA!L(Z5D5{QQ(gRM!Jpt$b}~|s!LsC4f~WI+{Y?-E=y2MG;Xym2*bz83tsKvj-uGHNw;c$uRJih zenJ_8D0z2I5XI!}-H5yg^H?G#P>oZ|VUG zN^$oz&3d%x9kWe;HDZb4+pW2JBpbuiXqX&*Mcq-+1pZ-xMyZ}@^VK?Sj&G`-T}hZ5 zIsu!-)xpJoI@LN4BhEoz;U({X2K&Lj^(pd!`XPKMMR4E~N2aI|5X@ut?DA@LIIrd!I&MnCq3Mv_~aEvU9-)cSj zIO@N!9!50-DatP>rWP#uWgcs&d(M>dT3~$4Ux*_noX8@r?H(&sAa~Br&bIXMI1f@? z{r8U&z)Htv<&x>5C0CX=Z?(;g`cVY`XU5=FuXkKcQ=Iz zZRk$ zB`&&iLQ6ZS4l!@jV#c}*v~ZEF&z z)`q%oz22RPmf-In7Ef+kvqOQD=Py1WC}%!H6W=N=e#ph{Hd2@oXc>Wm8)*|`fQk0=Q z9XFx{hc`Uw_4lIl=l%~u4NXj}KYjWX!W#yp+avDZ^79Gw%vT9Ma#8@`*7y5&oE_O~ z3S1{A6Loe&aAJLCmTVuE459X*_aycVgkSB#7X@l;m%_mAOlt?B*qRi|?(&NLVEl$5 zO**rW+R2#w3T1QDZW0cPLyDY;MIMZ?($-L(-}`?f`N^R?>gDR{>ajP&*3!~)O+^M4 z|8hpmQ501&UVZ1CYxHhRMk1MIye;_KO?sau6Bk~qk-YyC#AD~rnPN$wJGDp7&RpUn z2Ajw#rnehvL_)C?o_!CyA}XyETkcTW7LU1`_+lr*`mZU56w~4EArXVNn;9QIm)_R> zAbJ_}{zePCz@L6E-zQ}`AXz67bHw`FzrMkX=X`7|rU(A|0~ND4VU7NfFPYHfyXzH< z7XCydQ8lZ>XK&Q!p3?9LUiE17rXh$amr}77hsCu&M`qNU$nspt$W=C&Tn#+dyj|vg zT|Viq>N(|jix5BJlBWxTGIDbo88A+g;25^Ms250(a%P7lHqc<*Wg{Jo?Bz)~Wk7@4 zt!Vf4aS>@ZMErMXVSD)yggbFO_ryQl@tI~-xt3rl0wc+!_c)b66)y-0np)=8w96ELyQTWf3rxkQTG8}v* z+}ELiqcs4N*5_$i9KL4PghMbRP=H92EqyFfPbSkwt5UcBmlH7RKnRx85ESg*G_b|0 zEgA3Eu%`b?Q@W2u*B3uVQPA_TMioGmS%9tC*+<#a4W1-&BT&*a<)<4*S^iRdrhMH4 zKUozE>l2mIMN>q`$|A62riHK|dOwUgif-Yvj?LJ4=4vqeRs>+(Q*P&dR97b^@Btw@ zHa5odzC)7(m`)rV9Q@}f00hi{yEwjqY5@D?52%Cqk|3hi@~=ay!^p-j50QH^GW>Vc za_tGmT*Z{Q#K|QuNl!kZ3K$MM2s#Ml@(T&3{DUh2n%F_`l~?Cx0*M1Uj(N>N4`qGO zS_jD+;#;(;ki6b;TCl3d#pV=Jyq)YN5Xu6nw5^@pK!1vD6ZN*lvKsqo!8i_`ISF|! zUUl`?XjxtHmv5N;oX*ogPW)CD3A-*X(>=ba>YVbOnnjW#vAn!t-?F92;}xS&Jr+tF zS@q=KWKG-JY5ge}+P~S;ulCx9=>LNQ`bNRK$`@|?b5gS`n z>az#w7U5`B#r}$qNZ1CE#fayX=>25wS9&b0UH9?V@X)r;K6s>bndr9Ak@}SqXp6GW zto;v|SD=(I3^vEdrwD^_+=-(%2b>8nT=J`Ge999Jn?K>RZ>^j?;QClyVQgGlr8hIl zK4g~l)h3l}d4&)xiGZWa7NsikaAqkf%t7;IdV{9WTM$R}&$UagG4kJ?oSby4^?>z= zXkA`+`yqqLE$H*Yy)7}z?fb1zF`gzHhq5N-Ha%X`lJ%VHOuKu23qwhcI&5rbFJt`D z&Q^1K+wI(MQ5Sb@=d80fo^8DC2dS-SBA-Ys;()moF_@#ao`@NxA0JpZvgxMy8!`qm z98;mJ+!cjmq5Z1EsBLz3c0g!b-WdTdz>`5pQ1JRC+1!zLs*T9c13X+dASqP` z*u=0#yDcy~whuIp6*}=ChTYzOvFzeX5y0Wg?`m=l?!ZCm7vwR*9I(ybJ||f4&nqMP zay^Ky(C~$Wl6w0hA#%=))*kUKCpu$NMm%YB>n|4C%#%cvS@O9>?=MT@CYM^AzS){L zU;9D{pHL%GTujt31A=&p{&VGHMkfd<+Zpb! zbs5E_v=5A&JFnsYERQ)9ReD%?l(t#?4b6WRg^H7cl9JM`tW0yNKwkNW)Y9EFw&CzJ z|Aci~ZEaJAqLg5~bIu^3(4wW)^mxgmHs7wDppaoBI-KQldF2?tEW7fFfQ!&xOF#?a z-A<3eEIW{D6a`k$m(;Z_{4)~E>b^$DdLv}67=p5{TUk*YO3a> zj5Fsi2YPkGXyRu-P!3NI)7g&t5CoBbf!fuq;Kdfs%EM9o+MRI zjOvR@!KpFpr0^7QP9WreX8~%<_ovEXKh-sK0AsH8Hm0j3x}&}QlV?TIp6q3(z22!W zghxsSTm8zPHMH3zDYEc8-R5ij7+HYazKm=zlg*vnq}up}Y@=t6+bI7aB_kuV#Hg_` zbgr#!ycL7W9yY_>&i>5;yQ$a4y`5(3xXI{zzrBz{uK$zu`38niyc$)Xs7$39qTMeyDjaQ0|Z(4 zWM(vp!=}}QJqNEWH)f?kwk2VZD^BVWOK|KJz3UI-4|<8C0;aaI{s%Q;*T<46G&QrM$lVVWHI&^0F%2H=VwBG4`;7*iZSt#Hsp9{U(-lut8+1dinO z7VYW&J>Z_hN-83ACzY)&HnV$v^h=|q{pBe_8MZw`no|Ziwf+ZAa$L)%ctG#a5CFD3 zL)j)o9}9i}0m7*vtJJZv|D{+Fi3FvsE4Ke2yr{=3RQCNlPvwE?ARMDlW7%@Pp}o9x zqdaV@V@4DkQ^-68&Zyu+gKuPD0$A~zHCH$r7tGn?aF}3QjQ+lHqPW(xXMXS}TuV>D zIXZjNR#voa){!K61V|BpSU^xvaBg9t7`C@a0dUDFNTiA*Ml3~jMrzvelS+o9C21Z0;c{r zv%P;3)@VVnF#MMwKS)$-&$WPPAyOQ$EWt%ii3FIc&aNKbE{S%SLHw(4^tK$oOTA`@ zK}5PwFGq*Hnr{VRuOF?>9eQbIWsc%VFH?0L2V6-0<6l-|ZOa_{tI96&4y?JbSi0$( z$gr@UNsZkW`uEl4>i{llYmB7IqMtRV8_4Swd&vi`<7~c^$z#8o-}Z8~+G}%(wBrBl zPk+|OzBb_*f|MJcI>KXYCXyB4P|apB`cq1^1NV|UlBCy{b8MUQAwT!$&ahD zy7PO2HyW}>%d*oF6l5~7b-hr1wazE^X^^QBmiFH9wjQ(cH)fWZUsNs?_d8J!^Z@^b z12CtOa7&^XxagM=xuZZ?ON;P7XODkio^s!b^<+9 z1P}KdkyTVVR$%z&6OK8-H5Xi3SYth-P(P}$xt7BIBafD}3?4)+HseASHaK}TWM}vnXV&{-#B&)WeqiaHeOF<7#UBQ_|%t{~g3TFL} zM|g8i)iFh*cQm|}%lA$G+WG{3i8bl0y9~PqHi>AM7CSMvN`FANS=%v*cyiDPdZscP zFjW8=KCi6d@&x&Q0Pwrdm*v^Mx0b+(oS1<3Mm751xJV~2XLTujY@&wXX0mnqzW<$I z+s569g{=w&og)Ttpje@0{Xa4Jk`gT!@F#oVv{K>UHsu*Q2y;+*F)&$t5s|I7J8qIs z4(d~r%t|vYy54ZeG$cPZHui=$44CQ5YXMU=;DpJvV{^Z~z4uz*?5s3kgXL z4Y-4MCpe$*kb+i)bo;w3zr@w6+Ma6~qozKbvGIL+%xxy^ezM3YW}nsY4YJhV=bfO+z`U z5FLNXXnFA8E6k*b&XyLJE1r%on;pkVs;fYjot~aL@_u6lv_u3QlhvE%4iQ7c* zBF7qAMipuvGnbLuP}I1N&QCg#{_Raxg}NA+EA%7?rH?Yma!{DefQ#}~hBBgJ)wW3q zAPDogh7;A^Huyt&q%1IZt0c#>`|~#^+Y;gsyU|QT)cMx4s+B$T;0l#ef|nH~=fDTe z^SjM}+D9w3-Yf0c-)jT9M2xmY4%jfc#ZPrX0TzLwVkF1v#$KjoTI9*be<6-Bgwwfs zrAC!*exB)jMv09M@3uOuqogR9atmmANdJDd-fvVDU?>scl@9UG`Li~Vu}Wte6pI?975$uqA@Q7oW=#7e(Qy+Vam1aLVw&Z_DbGwdCXF>V zj0>itms6!I4|fnHvit)*m4HsKUCe>zz_iO#BQTvAQmudTt zYl(%llFP&1cj}HWQkl}nG`T26JT?_~sSZ<#JIFxZ3#cbUOAhZ3Bd`xjh;LoPm-jlG zM;HRQGE~`t$pp|YTEH0-8+|6-=DvxZ4LoYJezVXou3|WW+{_`G0*tf7(u6Xn5~X){ zehMX8b9~c~r75%!cP!ACWE6|?qdI)hIsL?WeouPXL0oaEkH;-4^ArEYCK~9GAGv({ z9<%qfa?QMp0EFt9(uD?Eq{N@WA{S+pTHOdI;;fM*nz*+%sjpnDYSbSV^mDG0d!E{D z=o-J0t9!4_-sp0oa6K(APvRHa*Wj6pb+ouX^AcPt zM&3n7lF~IG;*fO_mO{G7S(^A@JhL+L*nP}65-0{f1P*$|F}w~4m0z%gB7%3_v4OdJg^pX@*ji+kULz$0#jpx%&ni3<*Ri$W(?Xal}c zo_y}04lI8l;@}K~sNQy(W;Mp2-k_p%hW5@|X3l>axt=?7&80?B1mV9%Ww;S6=;?~! z%o^c`-`*h#bTbMhU`R{26RsPk&9A)#}ZR2;oXs4 zI*Kh+;9-|*vupFDN887fqsto~)IN1i&sJjhR$>jgJQ2IYZ>EuBF6iB4!k@7SZwQ-5 zW7xwbDo(ddebHT6ZV~y2y{2CyS3yiCzErvU#}=ORvK2lrZV@;S1IJ76pRYeCV62Qe z_t1mq22`Lred7Tp2#tX;h-9ywPcla&0{eIXJ9z303fd{=^As?s;GTDKzpfsMU94E8YCyMtR$d% zjQa4UgJ!HKD+NIOcjdL0B)*JbI>_lb0RY&<{}m)aMi%+YAiA@>vNZY%3J?p8bPR^$ z2msInD$<( zNJ~fkNgPXKQTv>M`7f87XCJuz?b-So+1%eRIOcQqr<~20pYNZoy_ZJG zwgtMlGm`$Ax+|tcY7!sT5Hpqu{h&AniXaQH@Xq^iu_VW{{1=-4aP5lk!>O0niWgt+ z?WD``T)T>vmXXf;?QN6a)w-tuhBz>nf&I#_@K8-Gt=T`jX2ZnW#Q3_Och|L6pZA(N zpT3&m0#Y5CVU5eKf)Te6MeAX&_qI!I*GCmKM(1noeZ-iWTGAR?q*&O(uqy_e!Th>> z!d@OWP^9KxQ#?H%+|yHANO6eia?QXkU_~abI}rdbTb~ z*DJ7H`}LelX#V5ajqNI3`(29e%yIQcIWI5tmg>TCj)(&K;Can?m-L(*GYbn0cKsho z82J-ROMeHVsnkKJ((0t^F8XBCeCg@`-H)4YFA==oigYUR^78wTZTFm6<8x}gM+q<} z{8yc6r?6PoS97}BgwS5|emI@0a&p>n6f`q41CXxAgST3^ zhQ21Gq>xflQie-0Dt0jy^?jq>+jGRhkDZvGAC8obQEGG8xij=Q$d~QF`NI!ri`ac* z?*aS%-frQ-obI+uwc%vFGgtEyN_jzEDF;}AbGQJ)$s?9)Zp5Hk2a&=cBw}O0r6-m3 zaaiYJWKP5+3TFTJj#%ym0;5FKs zEZ-2B^AOY*Tat&?SxEi}w&0U=a^fBOilskK7NEuk67YQ_R~5eeeZAuJUF=^M3gR+k zxJ+zzcx0~WY^{BJGxupRw{ySB-iJzAS=k~ZlpqjX)^~BiLrhHkyIN{m6C{nw46Z*w z0S4mRctIJFmGjDvh}I>hoe>D|pMBWK`1rN}*Q5nddHO9*(Ab!Zvx`d^Zds@sE79eE z$zY6_bMsZ1>s{$%lb*{)R|n$pc2I1x`P+7}G}2<@=*$c#T`5$qkDfNR@R+jt^*4R= z;oud?n8g!L7z~yrI6b}?@bhbNu>-Za`b9?ZS0r4DNdLn^qwU8xZ>oMZH2A!u3_lTba=j3V6}egH$-s0+{Y&Gv z;yRqU?mg({yJs#6vbC|1(h}*{;z%Z^rv3ruA`X|akmIKZ^=ph`V~>oECk~G$WT$Ty zr5bGYlNo-s;`nKSMm^Y_Or)iyrbVKquCA5r+!Fuv0RL%zZZKD+D{HNY9ev1>Ftk&^ zGPDl^MWSY8X6n3&shcaoR*0{qWoc)b-(1$btF(S`8hu#oM@~-eFwfUDj03A~x!xzy09kI*pcNuB;+?9dmPO;%V*nWOD9_w?mJ@4%5`a%&{ zVQ+8m;P~9c$|}NHBg36>tfvP#X8S*ApCi`JVH-`I%FW;*0AjfDG&V=n=YG7Tq=at# z>pNmHq8e3Y<yj+L`wQ+ zpX|?=nWd$r^t_9+eo0YL2!zvBt6A@F_RFq^`~W>Ek8`i}Cv&>{iSK>|tzPJ%M)XBr zU0qW)H;qC=(d7HKnTh1hoPI7ej>2j0xcn~n{km(v=3X z($fXsiikY9y?OJdeS3R*UgYt@ZTh3DGjZeqTe8B7)vjOU>^F{2KcrY%T6&BFqht0P zZ`!t~n*x(?q4Bw45^;sgTs;`ro*&a!Wg}IqojEl4LqiwTZj^9b$puI8+v6Yh(_6tOR zfZ2;#SnF&vhsxwLGBUykx7j2&6xh*1(au*BtZplEHjSKc0k4x<&st#1@DJt(Hv)gvCLup#xD^6^R@Ul;b$BOq@Mk2x)^Ypl;lk5s!>bbd?ayEhL-ieKg*+b`P z^Y5Xdq;r5;oYB_&isNp0`}rUx7#Fv1``e3nBFZP6%Du9gK{RCaRRYWh7(_jVZVM)zFkUI<_Gc zb8sr+v$`=cA*RpaQ>~`}u&}avT-3F1wGFa6;QIjvVPPM%jGdft7MnUA?I>QsuP5i{ z2N!OoP~FGFiCOOrhV5x7DA+0D|9Gk790@*5g%ji8WSP3V2P+f>+L7&t7a%Ad-S23-hyGBa~?a`sLZd2w)X)HsvVvNDiw z`^q#*a#}zgPk-W>1c&R-Ui>Wk*vQDl@^bIvBXzMQQMlBL50ol=``%_Dj6m`r<6j6r zU8VGlG%bFK-_I;>unge2dr$4D6oWS-)mH}JCErvym$C)^Bvuv^*jNhhTU$fNzU%4Du_QNhfcmeTa3)8DmzVlOr;A6~A{aHb z?qK|YU`Qu~^Eo9ZCPrFiHJNDo-O!lX;i*V;Qo`LMa+m$h^|cn47IKA62Hl&~*VU#v zS8#Z|A*AcwYYb_IY?Yrb$DaW>`kmIe0N)qazFf2Z>zhV>eqB6-Gp2w|AZAq0E+)TQ zLZOHVtbi4=RreqA!WDnN7);|*aJ4XihlfYJ2%N83z0rafFBg19^KpVN+JbNDm;HLj z89x9}ZR`7WyEyvCw57AYEJlFs$FJ`w?#Hi~ihk(5EIF$|;!1T_=R5V2V>f+?Bfh$) zg**x;N67bu#o5_>9Zq>;ks-rLde{H5lcf6D+0hAOvces}U!h1czqV^)Bd_Gk@b2OZ z&(9qwl0JRMi%u`*=PddPb@0FQrd@8Fbk6?D(cfsh+@8d%+-i;s5N9SjmAh?zSgWLi zqzp;si#O}ZD9D%T-MeuWZVBCVqP(c}=DqxnjN*8OVvBPNR-$lvkm>f>YOC&NegGb= z@NcekrP7wO-FeiZ?CRrpV&_%uwVYIg@rLb{0RMk}-NRoJ{F8{J)#X?cnG@NK>&VLs zu-JD`D<}cw<+M?Q+rIybLd!WK1#j=}+6D;)VyeoI3R8&zIK2m{;J+`^cQTlYn2Dm} z_>>@px&GNvn zHq}&cK{>~Z9Gr!enJG~Z^kxBoNt(#PM@<`4>C4ZXkj4;8&&`hGzr&8|#m>8Y;zh=R zxk{9Py!`z5Fr!LKfHYy|3l$mF4<3)m^ZFU}`z>d;rkH>}0bqFQlzok4U)aP%Tn`VU zMMjHP>5e@Q+og|#&CNtQnQEVX2(#-8v;`sFbE2Ic6EfcST3HZP%lz* z?-;lVbg!i*z&cLSDS(-XttzP)DaMX*7^QWY;;8LEJ(i(lUEowKTHq@?YXD^6#?X>7 zuY8p&JJi6DQansZw2OrAo|~VzL@y%SdDja0u*qH-g|mVs$kQ|7;GxcEb&&`iC};s@Z>o?s>M0nsJ=45~?f|J7(R$N>ngD!<-FE@j z00Dc&?j`EOc0TqX^tAt)=y1_2pPJqN1aT zV+UX6rsd?Ys>Ycty*6cg2_zop4%uGi+>bPY#%okyn9DgsG-ggHnzCoHNE2@xkT9l<-YE-ux2$DEmRa_4nD|{mrA6{f>RisRx7>318LHdu3R; zIbQi`X72Y%b@wav)aPejv8m~w+vwVrXmTYQ181uQ(Vwk_aHFFMB0XqGoR!`X1jba6 z7@uAm=Z1vnd9_V=HH?FbI4%Id?&c&lu21=Z#Y(q!Q*4{HN{79u0>ep`JOlRB3R(7i za9NDIec`@U$f4Wie}Gs6J7d)*(%=wg4_2ugif^PKQjo^135nY)~-RzwvM?;@Opfm7K^}s!_=;K znpUYz4aWLSDS#$NrH46%)bFBZL%huOZu#RNdSeULE{&$# ze31#QAw*bnGQ{0=;L9=FWnRP3%?3dpRHK(;T${N>uHGa-j+t+A^)&jxVulx~4ly_5Hl$GhC&?+{rQYxdKlIjjlJly*2^RaLfin%Yq!s-3lNMUF-7Zj4&S7iqd^HzG z)hq}J<;L!J$gt>7&OKG((H(QY+`SUIts@M+!EW`g9*sMQ=;f)unn=KFF6aZx+B_Op zPN>f!$_VM7qQ)`Fj*UZVZg`wjk?zSUeKO+H-$`D^j=%|C@ z#_PwP;B$WzlMuW33xdwU)=X;kMhjpHz0SyxZ1m0Y%rLt(X%jD28ODIEFAyhl@Yky;4cj z-}ovbq3)NuKRof{Id&lU)F@xp9e6LVsZ!Iv*YdWOhvhAW&Z9`ASz>qYkEyEP&LPaE z%g%oq24E7$4Cu0TTyo8{iYoLr`t)V!jvJv6Q#BPB_@MktY5F;A-AsHbdkz7NIrwie zPudSh**Z$dV(33V>4^(e;{|nnJBodt+D1s-PjuERw`6_GbAv0VH9ZO_i~XZ5u+^{p zwFg%GVbOdeL;2p00Ty)bu*K`wQ=M!Tv2?UvM zvJ9vtGwY818qcLo{-jV!IYT$5$r#+o7`yhH8V;5T9^o2a&lZKG;Pftf zWQVMyHh*1qu*biiP-%PoES2f{U;E8VgkGT70Bs9nKRfyQ;zbSLE zkoVt0&ALc)wq^gIVsOJDfDrY)4)mvLS5V9H)S5>$eg?KISB zdfKLm@6OHx$W(!-uO4nclq%s&c`tiG5Z#8XjlRdP;rf@rQ@6E9A2_-|p{zt8Ess}# z&SeM{sbgMqqWd{ITvPZo4kcl}EoUb**)7QHOW4SjC8hRl24 zi}`TZj(@Ec(z;8Q&HE*3E%#_FfKRAenjT1!fn@nksB(Ao7l%M1_daz@3*V>F()fc2 zKR>Ov0TN5v8=8wZU}7~k&DlcBo&^(piMI5s_Rg3^Pm;MTajoP1hY(wz-=P{md(P2$ z!y7Htb4E3ynA1|Q^s6JegwG8xdnL(IPK=4ukWs=O%(`x5J8?C?v`)CKi4VQYgIucy zE_Q*3Opt>fyR>?NEJOw+gWFnF1i`Yq^{GTD;}82!C23xp=m#}^VtWI+>FHWzs5;!I z$KLEl0T-!1g40==6J^ugHzFaiK8d!4<_kwb17(YiY$qse`PQrRfO5a=8yd+*!`RgY zL>AYbcWZsYnv=7mj9j zvxE|xdiS1!aKOz8vlXNA*3HLniB)3GZJb4Y?5XTHxn@UH2)VOXgv|T`y*7L87=U>E z!A+9de`~s{n%jfWG3Up6c#2=t?aewW)}e~=at*qOqYBYbxjAz081(c2;%M6!Zsvu%s!qA{IP!WSU!#7Smwp-2|XXH*p$m1XB z;k(H2cl`m!wj>u>M5fG^_a?L*l8K*ZyB6DM_t8`1)Tbx;{{_^wdkGCpN9(;m1fU%{8#e=xT&8S3kUC_c<&_TFB z^|AE(yEZq?q$0uCiUiE4!3xD*Mncuw&`r!X&GLG`-FG;-qLObvjA;2AC9_3kGm5!J z+?jW%H0M+Nw8l0*rcF9~>T5h>X)$_T*XVK(t$aY(JC79|*6v2%M+40SvC6PTUnQQ4 zbSoj)$q%II=vdN6<2d)^<-VuY%;6ehFLXGp#*tz?B8`g0Ztmi;t$HoogzEF1Ym$ag zMQV|S0(domNrh$`Y?h-tTs~adwuaj-C{(sb%C!tF*DdqN*)7TRrr1_`P1B@dV{=Buf+=b8Cf0jT z7HN07EU)Sqws?vAusssMM2Q6I!r}r`4=H&>$P%;xbq_)XRj<#1bT=rU^;I?;jnr-p zzB&8%T$(RhrF`>8EjMV!lk#a@W)_#Da`KFtx*`uLMD%;}Nz^rGH;*ZYRkeoMEGxHp zaSti$hPza>B;wNSWC#T+i~sb0-&F?U85{>wiYY$dvFe1CKr9ZS#U?0@!z#ufZ{nBg zVs8iRqUKaUTD{+Z?-B+MlnQH>r60Ra(_l`TW+m*g`1L$1gCmQHQMhfv@8(n;J)=r( z6Obu`Q#p;RjtA^kW$jcLwrViLWZK_{rgu4vZI^#V4q_hf`ZVWKV}guUD`04J6w>>n zJ`o}c0FA9m{7KG%+iB>Z50*XHAV zG;e03!afwbIGddQ#%zUjeMu{P#~&=>fo8jEko46_f4Xr1I7jGuibov@y4YZ6ENmz5 ziW{%_5Gvr_6dLcO)6$1c@lP<&6goAHg-q_4XDIn16&km;)RYgMnYUxd;<1Jo_@LJ< z0U3PsbHP(>s4mM?4n?7fH2w0@3`_Mt+Pg*38%_-xG%p-MwHoZ|Cq6lSBW#W5kNuyF z(g=wfF=C$yc!FcG4h#DT@`QM-K8f)xHYD$TJTn?!URP~<0D#{*6m69qr8cW3PvB&2 zCjJ@HaM)1ZpIF;u+Xq8Y3^iDIvJiA5Q>ZvbrdHI)JG{;dEU4?P1{fa8wR{?~p{y2< zI+TaR9|$osf}^l~h*;jAGP?|aT!5Y7Pt}?RsQE7}~ zKdpwpz%QR&YW%gDg#;|zbVF8T&IcoPhEkWxP?FUykieB_W5qr;sUwmzGN@uy5>UphNNHp z2^3bn?5}2U$D%lI`n;f_^b9l1mmy}ZX{M+{-qjhuso4c?jn40n->3_EB#|3{izvWa z(w##5U;N`XQ0Rep+pgk1x5rAp$HM~2|6Z>ZZ>1AQc|YT`;bpTt4YY>Yu6*n6!OyK} zneFc0BX|ks2!COj4&;giz7qm!YE+>h|G83@)RlW(%75fHiGwlzwU5q|`Xx_*;lEq} zW|9N0UBTzsP7^Db!IGV);%Zjc1=g7DFy+SLQcX3aG{!|n_azQIsn z4yZ?D?@(16*-bt8^=2BO{R|lT0UxOs&L_iK`?~=?Y%oIR4p_&-i{>0G5}5fu4MQ%A zYga`&?ZSgbs$#+)n8fh*6W(uT*@_MIYC>C)mt(wh!^NIV&0<9!{`EpCdU_^hb#70% zr#w#xGYCspKM*u;iU!l_)KxX$99Zjcg|GIINkG$gRH@9QiMP_L^%1z&VcDPDSi0)zYqj4)p4_0P9#lu6){~h_?b!nBx4u{?+z$UHJNJcpazO4pA`+RB?qir@ zMdgpKoKDhDOxm$BkjDiA7mv@2H*?m-`!Z8+2{+pT$EU=PR`r*6HfL=Gp4>u28CR?eAxEBnvQy!Et&YP zI{l`tat#c{lT>sMtaXV0=+J#R@5qiO^{Ou@nqHIcQ^()AfV+3Xh5>aIe!;kO|2@(E zDZdF0xfTqN2!G#Hds*eipgFos+2I&~$St0BoYt57**CHOOaLEIJkb=U(oZl5jSKB; zh(t8GJhB@P5h zy8M*GIDI7H1mTXJY@Va%wd6HJzc|z*bN5qDu3s`Noj<&idN3o6FqUW2rdmQ}p|{yn z5d8=l2PO?y#9`t%?grXUGsPdZ_(KsZ7b*-5V&rwdC`&)u6>aX%@m|l0y`1H1epU#p zre6FCINisIm^d?hw~_YrTYckIvK3Jl(Undht@b;=Q(NZqdyKNowa6lwGSCrkuu)1a zEirixF3u9D5|b@e+frrYH3gX>dwAu##Qr$q)!p%W5BB=~M^9DJQP*YT_M?QWkT+Ul zl2;nN&hzWIBOzJ1CSX%3NxPTeXYI;PX#IZrpepl`Ii~iz#~s}Z9XTAwv3Dk zadOHMT0+qKgnM z6heJhTn6UC{%abtsMCF5p>@$>kWG4a;GdH6Wz-xUJNq-T_%AfT^^qSHAPJj%_d16? zUFkEe&`fyJnraWKrp0aQCmPw?#h#;r?cETa90G}Z8>q_+I`Ylg@Pr6yE>eeUoQt2p zJMzm}Ob$ZiK!`W3f6w-{2vjrIEAP^mN-YaEoWJ=PL}qy9SHQ9>jV>ZWqSsVe?;WGK zKut~t@F(fc)BiEij1j<1*oNpHI60YI_q^!N=b}3-Pio{SszQoLYGf(eT{jfw@cqu# zErRgA>^T0MG_g+joPsC$7kZ4YlPTY^<8~A>@q|ZY#M*=UgCIT+<<$n3kpN@ur;U5W zd+)R0bL{+w`3%1*L4H{>hu{f4c3W$+y&A6zqFmeZq48^PB>tJsed2qMZh9`Y3yE2) z>R!d|WYaaROSWq$gY8VsHw5`*Y^WdYtOhRu7k^SE~%Epgs_$^CBFHjbNcS z0{B2;&5zE%B;_;)M@p!B?mocTL1xnVZtBj=s(W@_KDlTg(OF-hFj}1&c*%B znRaO7IGsT~J@Zzzz-@FFBur?DFFoknhOU!`vBR@U&XX@adqha$_Km*mM z*TepKq=3Kgpfxn|^(wL-UAi{7Ot7qKMk%A|k1_7N0eLaggQyrji?GP_SqLU@pSZr1 z=>iszKWCOZ{`@-M%?e@A-f4&ryw)t%E8boeikG+;sV4Mv7<#fmCW8lFvxjITfE1G+qb zg?fGMu;|-Jk~YU2doTVhJvd|aDol!@lKyup(=99ofuCy#d2grXvHOxs3y_yqk*b!2 G2L2CzBn(gh literal 0 HcmV?d00001 diff --git a/dom0/icons/dispvm-gray.png b/dom0/icons/dispvm-gray.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd79c2099fbfb6443e1b2e5c1269c45661788e8 GIT binary patch literal 11084 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¥#LSxUaP)cV4N3 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 L>at)N^RWK`dp~gc literal 0 HcmV?d00001 diff --git a/dom0/icons/dispvm-green.png b/dom0/icons/dispvm-green.png new file mode 100644 index 0000000000000000000000000000000000000000..55325f121ebfefb61c9d6a59b9078b71dbf2f7f9 GIT binary patch literal 11979 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 literal 0 HcmV?d00001 diff --git a/dom0/icons/dispvm-orange.png b/dom0/icons/dispvm-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..68197f65d6049ad482686d02d986b3287fa1499b GIT binary patch literal 11748 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 B0QUd@ literal 0 HcmV?d00001 diff --git a/dom0/icons/dispvm-padlock-layers.xcf b/dom0/icons/dispvm-padlock-layers.xcf new file mode 100644 index 0000000000000000000000000000000000000000..36cf2fb00288ed98a6af91e89aba7a653d3083ef GIT binary patch literal 49215 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 literal 0 HcmV?d00001 diff --git a/dom0/icons/dispvm-yellow.png b/dom0/icons/dispvm-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..5fa532603d2d5e2101025ab4ee311bb9bf5d590d GIT binary patch literal 11762 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 Date: Wed, 7 Mar 2012 18:50:56 +0100 Subject: [PATCH 048/386] dom0/dispvm: clone QubesVmLabel object for DispVM --- dom0/qvm-core/qubes.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index abbdad7b..bdd3551c 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -186,6 +186,17 @@ QubesVmLabels = { "black" : QubesVmLabel ("black", 8), } +QubesDispVmLabels = { + "red" : QubesVmLabel ("red", 1, icon="dispvm-red"), + "orange" : QubesVmLabel ("orange", 2, icon="dispvm-orange"), + "yellow" : QubesVmLabel ("yellow", 3, icon="dispvm-yellow"), + "green" : QubesVmLabel ("green", 4, color="0x5fa05e", icon="dispvm-green"), + "gray" : QubesVmLabel ("gray", 5, icon="dispvm-gray"), + "blue" : QubesVmLabel ("blue", 6, icon="dispvm-blue"), + "purple" : QubesVmLabel ("purple", 7, color="0xb83374", icon="dispvm-purple"), + "black" : QubesVmLabel ("black", 8, icon="dispvm-black"), +} + default_appvm_label = QubesVmLabels["red"] default_template_label = QubesVmLabels["gray"] default_servicevm_label = QubesVmLabels["red"] @@ -2011,9 +2022,9 @@ class QubesDisposableVm(QubesVm): super(QubesDisposableVm, self).__init__(dir_path="/nonexistent", **kwargs) # Use DispVM icon with the same color - self._label.icon = "dispvm-" + self.label.icon - self._label.icon_path = "/usr/share/qubes/icons/" + self.label.icon + ".png" - self.icon_path = self._label.icon_path + if self._label: + self._label = QubesDispVmLabels[self._label.name] + self.icon_path = self._label.icon_path @property def type(self): From f6c222d957fb11cca37e3a24416370824e6170ce Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 7 Mar 2012 19:03:55 +0100 Subject: [PATCH 049/386] dom0/QubesVm: add include_in_backups property --- dom0/qvm-core/qubes.py | 10 ++++++++-- dom0/qvm-tools/qvm-prefs | 10 ++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index bdd3551c..6adf817e 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -231,6 +231,7 @@ class QubesVm(object): kernelopts = "", uses_default_kernelopts = True, mac = None, + include_in_backups = True, services = None): @@ -264,6 +265,8 @@ class QubesVm(object): self.config_file_template = config_template_pv self.updateable = updateable + self.include_in_backups = include_in_backups + self._label = label if label is not None else QubesVmLabels["red"] if self.dir_path is not None: self.icon_path = self.dir_path + "/icon.png" @@ -1439,7 +1442,7 @@ class QubesVm(object): for prop in ['memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ 'kernelopts', 'services', 'updateable', 'installed_by_rpm',\ - 'uses_default_netvm' ]: + 'uses_default_netvm', 'include_in_backups' ]: if hasattr(self, prop): attrs[prop] = str(self.__getattribute__(prop)) if self._mac is not None: @@ -2624,7 +2627,7 @@ class QubesVmCollection(dict): "installed_by_rpm", "updateable", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services" ) + "mac", "services", "include_in_backups" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) @@ -2635,6 +2638,9 @@ class QubesVmCollection(dict): if "updateable" in kwargs: kwargs["updateable"] = True if kwargs["updateable"] == "True" else False + if "include_in_backups" in kwargs: + kwargs["include_in_backups"] = True if kwargs["include_in_backups"] == "True" else False + if "installed_by_rpm" in kwargs: kwargs["installed_by_rpm"] = True if kwargs["installed_by_rpm"] == "True" else False diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 0b31053c..5692bb07 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -43,6 +43,7 @@ def do_list(vm): print fmt.format ("netvm", vm.netvm.name) print fmt.format ("updateable?", vm.is_updateable()) print fmt.format ("installed by RPM?", vm.installed_by_rpm) + print fmt.format ("include in backups", vm.include_in_backups) print fmt.format ("dir", vm.dir_path) print fmt.format ("config", vm.conf_file) print fmt.format ("pcidevs", vm.pcidevs) @@ -326,7 +327,16 @@ def set_drive(vms, vm, args): vm.drive = args[0] return True +def set_include_in_backups(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing value (True/False)!" + return False + + vm.include_in_backups = bool(eval(args[0].capitalize())) + return True + properties = { + "include_in_backups": set_include_in_backups, "updateable": set_updateable, "nonupdateable": set_nonupdateable, "pcidevs": set_pcidevs, From 07d7620f2335e97d0c31b8ab17c9d99631ceb49d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 11:22:46 +0100 Subject: [PATCH 050/386] dom0/core: major rework of QubesVm.__init__ and serialization No more manually set attributes, each in different way. Now there is one dict with attrs, defaults, used also for object serialization to XML. --- dom0/qvm-core/qubes.py | 269 ++++++++++++++++++++--------------------- 1 file changed, 129 insertions(+), 140 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 6adf817e..6d56106e 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -209,143 +209,141 @@ class QubesVm(object): Note that qid is not the same as Xen's domid! """ - def __init__(self, qid, name, - dir_path, conf_file = None, - uses_default_netvm = True, - netvm = None, - installed_by_rpm = False, - updateable = False, - label = None, - root_img = None, - private_img = None, - memory = default_memory, - maxmem = None, - template_vm = None, - firewall_conf = None, - volatile_img = None, - pcidevs = None, - internal = False, - vcpus = None, - kernel = None, - uses_default_kernel = True, - kernelopts = "", - uses_default_kernelopts = True, - mac = None, - include_in_backups = True, - services = None): + def _get_attrs_config(self): + """ Object attributes for serialization/deserialization + inner dict keys: + - order: initialization order (to keep dependency intact) + attrs without order will be evaluated at the end + - default: default value used when attr not given to object constructor + - attr: set value to this attribute instead of parameter name + - eval: assign result of this expression instead of value directly; + local variable 'value' contains attribute value (or default if it was not given) + - save: use evaluation result as value for XML serialization; only attrs with 'save' key will be saved in XML + - save_skip: if present and evaluates to true, attr will be omitted in XML + - save_attr: save to this XML attribute instead of parameter name + """ + attrs = { + # __qid cannot be accessed by setattr, so must be set manually in __init__ + "qid": { "attr": "_qid", "order": 0 }, + "name": { "order": 1 }, + "dir_path": { "default": None, "order": 2 }, + "conf_file": { "eval": 'self.absolute_path(value, self.name + ".conf")', 'order': 3 }, + # order >= 10: have base attrs set + "root_img": { "eval": 'self.absolute_path(value, default_root_img)', 'order': 10 }, + "private_img": { "eval": 'self.absolute_path(value, default_private_img)', 'order': 10 }, + "volatile_img": { "eval": 'self.absolute_path(value, default_volatile_img)', 'order': 10 }, + "firewall_conf": { "eval": 'self.absolute_path(value, default_firewall_conf_file)', 'order': 10 }, + "installed_by_rpm": { "default": False, 'order': 10 }, + "updateable": { "default": False, 'order': 10 }, + "template_vm": { "default": None, 'order': 10 }, + # order >= 20: have template set + "uses_default_netvm": { "default": True, 'order': 20 }, + "netvm": { "default": None, 'order': 20 }, + "label": { "attr": "_label", "default": QubesVmLabels["red"], 'order': 20 }, + "memory": { "default": default_memory, 'order': 20 }, + "maxmem": { "default": None, 'order': 20 }, + "pcidevs": { "default": '[]', 'order': 20, "eval": \ + '[] if value in ["none", None] else eval(value) if value.find("[") >= 0 else eval("[" + value + "]")' }, + # Internal VM (not shown in qubes-manager, doesn't create appmenus entries + "internal": { "default": False }, + "vcpus": { "default": None }, + "kernel": { "default": None, 'eval': \ + 'self.template_vm.kernel if self.template_vm is not None else value' }, + "uses_default_kernel": { "default": True }, + "uses_default_kernelopts": { "default": True }, + "kernelopts": { "default": "", "eval": \ + 'value if not self.uses_default_kernelopts else default_kernelopts_pcidevs if len(self.pcidevs) > 0 else default_kernelopts' }, + "mac": { "attr": "_mac", "default": None }, + "include_in_backups": { "default": True }, + "services": { "default": {}, "eval": "eval(str(value))" }, + ##### Internal attributes - will be overriden in __init__ regardless of args + "appmenus_templates_dir": { "eval": \ + 'self.dir_path + "/" + default_appmenus_templates_subdir if self.updateable else ' + \ + 'self.template_vm.appmenus_templates_dir if self.template_vm is not None else None' }, + "config_file_template": { "eval": "config_template_pv" }, + "icon_path": { "eval": 'self.dir_path + "/icon.png" if self.dir_path is not None else None' }, + "kernels_dir": { 'eval': 'self.template_vm.kernels_dir if self.template_vm is not None else ' + \ + 'qubes_kernels_base_dir + "/" + self.kernel if self.kernel is not None else ' + \ + # for backward compatibility (or another rare case): kernel=None -> kernel in VM dir + 'self.dir_path + "/" + default_kernels_subdir' }, + } - assert qid < qubes_max_qid, "VM id out of bounds!" - self.__qid = qid - self.name = name + ### Mark attrs for XML inclusion + # Simple string attrs + for prop in ['qid', 'name', 'dir_path', 'memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ + 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ + 'kernelopts', 'services', 'updateable', 'installed_by_rpm',\ + 'uses_default_netvm', 'include_in_backups' ]: + attrs[prop]['save'] = 'str(self.%s)' % prop + # Simple paths + for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: + attrs[prop]['save'] = 'self.relative_path(self.%s)' % prop + attrs[prop]['save_skip'] = 'self.%s is None' % prop - self.dir_path = dir_path + attrs['mac']['save'] = 'str(self._mac)' + attrs['mac']['save_skip'] = 'self._mac is None' - self.conf_file = self.absolute_path(conf_file, name + ".conf") + attrs['netvm']['save'] = 'str(self.netvm.qid) if self.netvm is not None else "none"' + attrs['netvm']['save_attr'] = "netvm_qid" + attrs['template_vm']['save'] = 'str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none"' + attrs['template_vm']['save_attr'] = "template_qid" + attrs['label']['save'] = 'self.label.name' - self.uses_default_netvm = uses_default_netvm - self.netvm = netvm - if netvm is not None: - netvm.connected_vms[qid] = self + return attrs - self._mac = mac + def __init__(self, **kwargs): - # We use it in remove from disk to avoid removing rpm files (for templates) - self.installed_by_rpm = installed_by_rpm + attrs = self._get_attrs_config() + for attr_name in sorted(attrs, key=lambda _x: attrs[_x]['order'] if 'order' in attrs[_x] else 1000): + attr_config = attrs[attr_name] + attr = attr_name + if 'attr' in attr_config: + attr = attr_config['attr'] + value = None + if attr_name not in kwargs: + if 'default' in attr_config: + value = attr_config['default'] + else: + value = kwargs[attr_name] + if 'eval' in attr_config: + setattr(self, attr, eval(attr_config['eval'])) + else: + #print "setting %s to %s" % (attr, value) + setattr(self, attr, value) - # Setup standard VM storage; some VM types may not use them all - self.root_img = self.absolute_path(root_img, default_root_img) + #Init private attrs + self.__qid = self._qid - self.volatile_img = self.absolute_path(volatile_img, default_volatile_img) + assert self.__qid < qubes_max_qid, "VM id out of bounds!" + assert self.name is not None - self.private_img = self.absolute_path(private_img, default_private_img) + if self.netvm is not None: + self.netvm.connected_vms[self.qid] = self - self.firewall_conf = self.absolute_path(firewall_conf, default_firewall_conf_file) - - self.config_file_template = config_template_pv - - self.updateable = updateable - self.include_in_backups = include_in_backups - - self._label = label if label is not None else QubesVmLabels["red"] - if self.dir_path is not None: - self.icon_path = self.dir_path + "/icon.png" - else: - self.icon_path = None - - # PCI devices - used only by NetVM - if pcidevs is None or pcidevs == "none": - self.pcidevs = [] - elif pcidevs.find('[') < 0: - # Backward compatibility - self.pcidevs = eval('[' + pcidevs + ']') - else: - self.pcidevs = eval(pcidevs) - - self.memory = memory - - if maxmem is None: - host = QubesHost() - total_mem_mb = host.memory_total/1024 + # Not in generic way to not create QubesHost() to frequently + if self.maxmem is None: + qubes_host = QubesHost() + total_mem_mb = qubes_host.memory_total/1024 self.maxmem = total_mem_mb/2 - else: - self.maxmem = maxmem - - self.template_vm = template_vm - if template_vm is not None: - if updateable: - print >> sys.stderr, "ERROR: Template based VM cannot be updateable!" - return False - if not template_vm.is_template(): - print >> sys.stderr, "ERROR: template_qid={0} doesn't point to a valid TemplateVM".\ - format(template_vm.qid) - return False - - template_vm.appvms[qid] = self - else: - assert self.root_img is not None, "Missing root_img for standalone VM!" - - self.kernel = kernel - - if template_vm is not None: - self.kernels_dir = template_vm.kernels_dir - self.kernel = template_vm.kernel - elif self.kernel is not None: - self.kernels_dir = qubes_kernels_base_dir + "/" + self.kernel - else: - # for backward compatibility (or another rare case): kernel=None -> kernel in VM dir - self.kernels_dir = self.dir_path + "/" + default_kernels_subdir - - self.uses_default_kernel = uses_default_kernel - - self.appmenus_templates_dir = None - if updateable: - self.appmenus_templates_dir = self.dir_path + "/" + default_appmenus_templates_subdir - elif template_vm is not None: - self.appmenus_templates_dir = template_vm.appmenus_templates_dir # By default allow use all VCPUs - if vcpus is None: + if self.vcpus is None: qubes_host = QubesHost() self.vcpus = qubes_host.no_cpus + + # Some additional checks for template based VM + if self.template_vm is not None: + if self.updateable: + print >> sys.stderr, "ERROR: Template based VM cannot be updateable!" + return False + if not self.template_vm.is_template(): + print >> sys.stderr, "ERROR: template_qid={0} doesn't point to a valid TemplateVM".\ + format(self.template_vm.qid) + return False + self.template_vm.appvms[self.qid] = self else: - self.vcpus = vcpus - - self.uses_default_kernelopts = uses_default_kernelopts - if self.uses_default_kernelopts: - if len(self.pcidevs) > 0: - self.kernelopts = default_kernelopts_pcidevs - else: - self.kernelopts = default_kernelopts - else: - self.kernelopts = kernelopts - - self.services = {} - if services is not None: - self.services = eval(str(services)) - - # Internal VM (not shown in qubes-manager, doesn't create appmenus entries - self.internal = internal + assert self.root_img is not None, "Missing root_img for standalone VM!" self.xid = -1 self.xid = self.get_xid() @@ -496,7 +494,7 @@ class QubesVm(object): self.appmenus_templates_dir = self.appmenus_templates_dir.replace(old_dirpath, new_dirpath) if self.icon_path is not None: self.icon_path = self.icon_path.replace(old_dirpath, new_dirpath) - if self.kernels_dir is not None: + if hasattr(self, 'kernels_dir') and self.kernels_dir is not None: self.kernels_dir = self.kernels_dir.replace(old_dirpath, new_dirpath) self.post_rename(old_name) @@ -1431,25 +1429,16 @@ class QubesVm(object): def get_xml_attrs(self): attrs = {} - attrs["qid"] = str(self.qid) - attrs["name"] = self.name - attrs["dir_path"] = self.dir_path - # Simple paths - for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: - if hasattr(self, prop) and self.__getattribute__(prop) is not None: - attrs[prop] = self.relative_path(self.__getattribute__(prop)) - # Simple string attrs - for prop in ['memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ - 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ - 'kernelopts', 'services', 'updateable', 'installed_by_rpm',\ - 'uses_default_netvm', 'include_in_backups' ]: - if hasattr(self, prop): - attrs[prop] = str(self.__getattribute__(prop)) - if self._mac is not None: - attrs["mac"] = str(self._mac) - attrs["netvm_qid"] = str(self.netvm.qid) if self.netvm is not None else "none" - attrs["template_qid"] = str(self.template_vm.qid) if self.template_vm and not self.is_updateable() else "none" - attrs["label"] = self.label.name + attrs_config = self._get_attrs_config() + for attr in attrs_config: + attr_config = attrs_config[attr] + if 'save' in attr_config: + if 'save_skip' in attr_config and eval(attr_config['save_skip']): + continue + if 'save_attr' in attr_config: + attrs[attr_config['save_attr']] = eval(attr_config['save']) + else: + attrs[attr] = eval(attr_config['save']) return attrs def create_xml_element(self): From 567229c1049d9627868d6cae969a3a7bcfe63370 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 11:56:26 +0100 Subject: [PATCH 051/386] dom0/core: follow new __init__ api in subclasses --- dom0/qvm-core/qubes.py | 137 ++++++++++++++++++++--------------------- 1 file changed, 67 insertions(+), 70 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 6d56106e..39ab7f26 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -242,8 +242,8 @@ class QubesVm(object): "netvm": { "default": None, 'order': 20 }, "label": { "attr": "_label", "default": QubesVmLabels["red"], 'order': 20 }, "memory": { "default": default_memory, 'order': 20 }, - "maxmem": { "default": None, 'order': 20 }, - "pcidevs": { "default": '[]', 'order': 20, "eval": \ + "maxmem": { "default": None, 'order': 25 }, + "pcidevs": { "default": '[]', 'order': 25, "eval": \ '[] if value in ["none", None] else eval(value) if value.find("[") >= 0 else eval("[" + value + "]")' }, # Internal VM (not shown in qubes-manager, doesn't create appmenus entries "internal": { "default": False }, @@ -1456,28 +1456,27 @@ class QubesTemplateVm(QubesVm): """ A class that represents an TemplateVM. A child of QubesVm. """ + + def _get_attrs_config(self): + attrs_config = super(QubesTemplateVm, self)._get_attrs_config() + attrs_config['dir_path']['eval'] = 'value if value is not None else qubes_templates_dir + "/" + self.name' + attrs_config['updateable']['default'] = True + attrs_config['label']['default'] = default_template_label + + # New attributes + + # Image for template changes + attrs_config['rootcow_img'] = { 'eval': 'self.dir_path + "/" + default_rootcow_img' } + # Clean image for root-cow and swap (AppVM side) + attrs_config['clean_volatile_img'] = { 'eval': 'self.dir_path + "/" + default_clean_volatile_img' } + + attrs_config['appmenus_templates_dir'] = { 'eval': 'self.dir_path + "/" + default_appmenus_templates_subdir' } + return attrs_config + def __init__(self, **kwargs): - if "dir_path" not in kwargs or kwargs["dir_path"] is None: - kwargs["dir_path"] = qubes_templates_dir + "/" + kwargs["name"] - - if "updateable" not in kwargs or kwargs["updateable"] is None : - kwargs["updateable"] = True - - if "label" not in kwargs or kwargs["label"] == None: - kwargs["label"] = default_template_label - super(QubesTemplateVm, self).__init__(**kwargs) - dir_path = kwargs["dir_path"] - - # Clean image for root-cow and swap (AppVM side) - self.clean_volatile_img = self.dir_path + "/" + default_clean_volatile_img - - # Image for template changes - self.rootcow_img = self.dir_path + "/" + default_rootcow_img - - self.appmenus_templates_dir = self.dir_path + "/" + default_appmenus_templates_subdir self.appvms = QubesVmCollection() @property @@ -1652,44 +1651,40 @@ class QubesTemplateVm(QubesVm): f_cow.close () f_root.close() - def get_xml_attrs(self): - attrs = super(QubesTemplateVm, self).get_xml_attrs() - attrs["clean_volatile_img"] = self.clean_volatile_img - attrs["rootcow_img"] = self.rootcow_img - return attrs - class QubesNetVm(QubesVm): """ A class that represents a NetVM. A child of QubesCowVM. """ + def _get_attrs_config(self): + attrs_config = super(QubesNetVm, self)._get_attrs_config() + attrs_config['dir_path']['eval'] = 'value if value is not None else qubes_servicevms_dir + "/" + self.name' + attrs_config['label']['default'] = default_servicevm_label + attrs_config['vcpus']['default'] = default_servicevm_vcpus + attrs_config['memory']['default'] = 200 + attrs_config['maxmem']['eval'] = 'self.memory' + + # New attributes + attrs_config['netid'] = { 'save': 'str(self.netid)', 'order': 30 } + attrs_config['netprefix'] = { 'eval': '"10.137.{0}.".format(self.netid)' } + attrs_config['dispnetprefix'] = { 'eval': '"10.138.{0}.".format(self.netid)' } + + # Dont save netvm prop + attrs_config['netvm'].pop('save') + attrs_config['uses_default_netvm'].pop('save') + + return attrs_config + def __init__(self, **kwargs): - netid = kwargs.pop("netid") - self.netid = netid - self.__network = "10.137.{0}.0".format(netid) - self.netprefix = "10.137.{0}.".format(netid) - self.dispnetprefix = "10.138.{0}.".format(netid) + super(QubesNetVm, self).__init__(**kwargs) + self.connected_vms = QubesVmCollection() + + self.__network = "10.137.{0}.0".format(self.netid) self.__netmask = vm_default_netmask self.__gateway = self.netprefix + "1" self.__secondary_dns = self.netprefix + "254" - if "dir_path" not in kwargs or kwargs["dir_path"] is None: - kwargs["dir_path"] = qubes_servicevms_dir + "/" + kwargs["name"] self.__external_ip_allowed_xids = set() - if "label" not in kwargs or kwargs["label"] is None: - kwargs["label"] = default_servicevm_label - - if "vcpus" not in kwargs or kwargs["vcpus"] is None: - kwargs["vcpus"] = default_servicevm_vcpus - - if "memory" not in kwargs or kwargs["memory"] is None: - kwargs["memory"] = 200 - - kwargs["maxmem"] = kwargs["memory"] - - super(QubesNetVm, self).__init__(**kwargs) - self.connected_vms = QubesVmCollection() - @property def type(self): return "NetVM" @@ -1797,19 +1792,20 @@ class QubesNetVm(QubesVm): self.__external_ip_allowed_xids.discard(int(xid)) self.update_external_ip_permissions() - def get_xml_attrs(self): - attrs = super(QubesNetVm, self).get_xml_attrs() - attrs.pop("netvm_qid") - attrs.pop("uses_default_netvm") - attrs["netid"] = str(self.netid) - return attrs - class QubesProxyVm(QubesNetVm): """ A class that represents a ProxyVM, ex FirewallVM. A child of QubesNetVM. """ + + def _get_attrs_config(self): + attrs_config = super(QubesProxyVm, self)._get_attrs_config() + attrs_config['uses_default_netvm']['eval'] = 'False' + # Save netvm prop again + attrs_config['netvm']['save'] = 'str(self.netvm.qid) if self.netvm is not None else "none"' + + return attrs_config + def __init__(self, **kwargs): - kwargs["uses_default_netvm"] = False super(QubesProxyVm, self).__init__(**kwargs) self.rules_applied = None @@ -1935,11 +1931,6 @@ class QubesProxyVm(QubesNetVm): self.rules_applied = None xs.write('', "/local/domain/{0}/qubes_iptables".format(self.get_xid()), 'reload') - def get_xml_attrs(self): - attrs = super(QubesProxyVm, self).get_xml_attrs() - attrs["netvm_qid"] = str(self.netvm.qid) if self.netvm is not None else "none" - return attrs - class QubesDom0NetVm(QubesNetVm): def __init__(self): super(QubesDom0NetVm, self).__init__(qid=0, name="dom0", netid=0, @@ -2004,15 +1995,21 @@ class QubesDisposableVm(QubesVm): """ A class that represents an DisposableVM. A child of QubesVm. """ + + def _get_attrs_config(self): + attrs_config = super(QubesDisposableVm, self)._get_attrs_config() + + # New attributes + attrs_config['dispid'] = { 'save': 'str(self.dispid)' } + + return attrs_config + def __init__(self, **kwargs): - template_vm = kwargs["template_vm"] - assert template_vm is not None, "Missing template_vm for DisposableVM!" - - self.dispid = kwargs.pop("dispid") - super(QubesDisposableVm, self).__init__(dir_path="/nonexistent", **kwargs) + assert self.template_vm is not None, "Missing template_vm for DisposableVM!" + # Use DispVM icon with the same color if self._label: self._label = QubesDispVmLabels[self._label.name] @@ -2031,6 +2028,7 @@ class QubesDisposableVm(QubesVm): def get_xml_attrs(self): + # Minimal set - do not inherit rest of attributes attrs = {} attrs["qid"] = str(self.qid) attrs["name"] = self.name @@ -2048,12 +2046,11 @@ class QubesAppVm(QubesVm): """ A class that represents an AppVM. A child of QubesVm. """ - def __init__(self, **kwargs): + def _get_attrs_config(self): + attrs_config = super(QubesAppVm, self)._get_attrs_config() + attrs_config['dir_path']['eval'] = 'value if value is not None else qubes_appvms_dir + "/" + self.name' - if "dir_path" not in kwargs or kwargs["dir_path"] is None: - kwargs["dir_path"] = qubes_appvms_dir + "/" + kwargs["name"] - - super(QubesAppVm, self).__init__(**kwargs) + return attrs_config @property def type(self): From fc573d04672915507f8dead63c927a34f69722a3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 11:57:47 +0100 Subject: [PATCH 052/386] dom0/core: follow new __init__ API in QubesHVm --- dom0/qvm-core/qubes.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 39ab7f26..117705c0 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2095,6 +2095,22 @@ class QubesHVm(QubesVm): # FIXME: logically should inherit after QubesAppVm, but none of its methods # are useful for HVM + + def _get_attrs_config(self): + attrs = super(QubesHVm, self)._get_attrs_config() + attrs.pop('kernel') + attrs.pop('kernels_dir') + attrs.pop('kernelopts') + attrs.pop('uses_default_kernel') + attrs.pop('uses_default_kernelopts') + attrs['private_img']['eval'] = 'None' + attrs['volatile_img']['eval'] = 'None' + attrs['config_file_template']['eval'] = 'config_template_hvm' + attrs['drive'] = { 'save': 'str(self.drive)' } + attrs['maxmem'].pop('save') + + return attrs + def __init__(self, **kwargs): if "dir_path" not in kwargs or kwargs["dir_path"] is None: @@ -2107,22 +2123,10 @@ class QubesHVm(QubesVm): kwargs["memory"] = default_hvm_memory super(QubesHVm, self).__init__(**kwargs) - self.updateable = True self.config_file_template = config_template_hvm - self.private_img = None - self.volatile_img = None - # remove settings not used by HVM (at least for now) - self.__delattr__('kernel') - self.__delattr__('kernelopts') - self.__delattr__('uses_default_kernel') - self.__delattr__('uses_default_kernelopts') # HVM doesn't support dynamic memory management self.maxmem = self.memory - self.drive = None - if 'drive' in kwargs.keys(): - self.drive = kwargs['drive'] - @property def type(self): return "HVM" @@ -2130,15 +2134,6 @@ class QubesHVm(QubesVm): def is_appvm(self): return True - def get_clone_attrs(self): - attrs = super(QubesHVm, self).get_clone_attrs() - attrs.remove('kernel') - attrs.remove('uses_default_kernel') - attrs.remove('kernelopts') - attrs.remove('uses_default_kernelopts') - attrs.remove('maxmem') - return attrs - def create_on_disk(self, verbose, source_template = None): if dry_run: return From 07f560042c5a95e5b86e5ff5342e4bab43747aff Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 12:03:49 +0100 Subject: [PATCH 053/386] dom0/core: use QubesVm.pause/unpause instead of xl directly --- dom0/qvm-core/qubes.py | 12 ++++++++++++ dom0/qvm-tools/qvm-run | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 117705c0..f6261a5c 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1420,6 +1420,18 @@ class QubesVm(object): subprocess.call (['/usr/sbin/xl', 'destroy', self.name]) #xc.domain_destroy(self.get_xid()) + def pause(self): + if dry_run: + return + + xc.domain_pause(self.get_xid()) + + def unpause(self): + if dry_run: + return + + xc.domain_unpause(self.get_xid()) + def remove_from_disk(self): if dry_run: return diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index 73f929d0..db5ad720 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -63,13 +63,13 @@ def vm_run_cmd(vm, cmd, options): if options.pause: if options.verbose: print >> sys.stderr, "Pausing VM: '{0}'...".format(vm.name) - subprocess.call (["/usr/sbin/xl", "pause", vm.name]) + vm.pause() return if options.unpause: if options.verbose: print >> sys.stderr, "UnPausing VM: '{0}'...".format(vm.name) - subprocess.call (["/usr/sbin/xl", "unpause", vm.name]) + vm.unpause() return if options.verbose: From 8c794d95e296c4e4c154c9f6b9d14414292d2e0c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 12:06:30 +0100 Subject: [PATCH 054/386] dom0/core: pause also stubdom when pausing HVM --- dom0/qvm-core/qubes.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f6261a5c..09cb89f5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2247,6 +2247,20 @@ class QubesHVm(QubesVm): def start_qrexec_daemon(self, **kwargs): pass + def pause(self): + if dry_run: + return + + xc.domain_pause(self.stubdom_xid) + super(QubesHVm, self).pause() + + def unpause(self): + if dry_run: + return + + xc.domain_unpause(self.stubdom_xid) + super(QubesHVm, self).unpause() + def get_xml_attrs(self): attrs = super(QubesHVm, self).get_xml_attrs() attrs["drive"] = str(self.drive) From 1d5f54c976eac4e5498b0a3037cbbe0ec3d95913 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 14:40:00 +0100 Subject: [PATCH 055/386] dom0/qvm-firewall: make firewall IP-based, not IF-based Some VMs (especially HVM) can have more than one vif, so to not dupplicate rules, make it IP based. --- dom0/qvm-core/qubes.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 09cb89f5..1bdc8ba5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1895,12 +1895,12 @@ class QubesProxyVm(QubesNetVm): if xid < 0: # VM not active ATM continue - vif = vm.vif - if vif is None: + ip = vm.ip + if ip is None: continue iptables += "# '{0}' VM:\n".format(vm.name) - iptables += "-A FORWARD ! -s {0}/32 -i {1} -j DROP\n".format(vm.ip, vif) + # Anti-spoof rules are added by vif-script (vif-route-qubes), here we trust IP address accept_action = "ACCEPT" reject_action = "REJECT --reject-with icmp-host-prohibited" @@ -1913,7 +1913,7 @@ class QubesProxyVm(QubesNetVm): rules_action = accept_action for rule in conf["rules"]: - iptables += "-A FORWARD -i {0} -d {1}".format(vif, rule["address"]) + iptables += "-A FORWARD -s {0} -d {1}".format(ip, rule["address"]) if rule["netmask"] != 32: iptables += "/{0}".format(rule["netmask"]) @@ -1928,12 +1928,12 @@ class QubesProxyVm(QubesNetVm): if conf["allowDns"]: # PREROUTING does DNAT to NetVM DNSes, so we need self.netvm. properties - iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm.gateway) - iptables += "-A FORWARD -i {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(vif,self.netvm.secondary_dns) + iptables += "-A FORWARD -s {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(ip,self.netvm.gateway) + iptables += "-A FORWARD -s {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(ip,self.netvm.secondary_dns) if conf["allowIcmp"]: - iptables += "-A FORWARD -i {0} -p icmp -j ACCEPT\n".format(vif) + iptables += "-A FORWARD -s {0} -p icmp -j ACCEPT\n".format(ip) - iptables += "-A FORWARD -i {0} -j {1}\n".format(vif, default_action) + iptables += "-A FORWARD -s {0} -j {1}\n".format(ip, default_action) iptables += "COMMIT\n" xs.write('', "/local/domain/"+str(self.get_xid())+"/qubes_iptables_domainrules/"+str(xid), iptables) # no need for ending -A FORWARD -j DROP, cause default action is DROP From 4d0839d05b52261bc2e8551c6ef783c1c3c9ba81 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 14:56:39 +0100 Subject: [PATCH 056/386] vm/network: really place anti-spoof rules in 'raw' table This fixes commit: 4d68998 vm/network: place anti-spoof rules in 'raw' table --- network/vif-route-qubes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/vif-route-qubes b/network/vif-route-qubes index 385b6656..597e2842 100755 --- a/network/vif-route-qubes +++ b/network/vif-route-qubes @@ -48,7 +48,7 @@ if [ "${ip}" ] ; then ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} || true done echo ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP - ${cmdprefix} iptables $iptables_cmd -i ${vif} \! -s ${ip} -j DROP + ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP fi log debug "Successful vif-route-qubes $command for $vif." From eed0b16174b66da6a69a30a1bfd9570db23713c6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 8 Mar 2012 14:57:10 +0100 Subject: [PATCH 057/386] vm/network: use metric to allow multiple routes to same VM This is required when VM has multiple interfaces (eg HVM: PV and stubdom). Prefer the later one. --- network/vif-route-qubes | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/network/vif-route-qubes b/network/vif-route-qubes index 597e2842..c8070177 100755 --- a/network/vif-route-qubes +++ b/network/vif-route-qubes @@ -29,7 +29,7 @@ case "$command" in online) ifconfig ${vif} up echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp - ipcmd='replace' + ipcmd='add' iptables_cmd='-I PREROUTING 1' cmdprefix='' ;; @@ -41,11 +41,17 @@ case "$command" in ;; esac +domid=${vif/vif/} +domid=${domid/.*/} +# metric must be possitive, but prefer later interface +# 32752 is max XID aka domid +metric=$[ 32752 - $domid ] + if [ "${ip}" ] ; then # If we've been given a list of IP addresses, then add routes from dom0 to # the guest using those addresses. for addr in ${ip} ; do - ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} || true + ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} metric $metric done echo ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP From eac46002c09a44bee1cc5def206de02d47f2a662 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 9 Mar 2012 00:02:05 +0100 Subject: [PATCH 058/386] version 2.0.7 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 157e54f3..f1547e6d 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.6 +2.0.7 From 5517a013cf1f085864e17898bbb651c2c604826f Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 9 Mar 2012 10:48:43 +0100 Subject: [PATCH 059/386] version 2.0.8 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index f1547e6d..815e68dd 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.7 +2.0.8 From 86265475441282da9a162811bcf5a263170a4d25 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 9 Mar 2012 17:06:50 +0100 Subject: [PATCH 060/386] dom0/qvm-ls: don't crash when multiple options given --- dom0/qvm-tools/qvm-ls | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index 3927ccfc..48d4217b 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -130,12 +130,15 @@ def main(): fields_to_display += ["mem"] if (options.network): - fields_to_display.remove ("template") + if 'template' in fields_to_display: + fields_to_display.remove ("template") fields_to_display += ["ip", "netmask", "gateway"] if (options.disk): - fields_to_display.remove ("template") - fields_to_display.remove ("netvm") + if 'template' in fields_to_display: + fields_to_display.remove ("template") + if 'netvm' in fields_to_display: + fields_to_display.remove ("netvm") fields_to_display += ["priv-curr", "priv-max", "root-curr", "root-max", "disk" ] From 8faed05ebaf712410c192b0f59ee1d7db285de66 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 9 Mar 2012 17:23:41 +0100 Subject: [PATCH 061/386] dom0/qvm-ls: improve performance Do not evaluate each field twice - some of them (eg. disk usage) are expensive. --- dom0/qvm-tools/qvm-ls | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index 48d4217b..2d2c750b 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -167,16 +167,28 @@ def main(): assert len(vms_to_display) == no_vms # First calculate the maximum width of each field we want to display - total_width = 0; + # also collect data to display for f in fields_to_display: fields[f]["max_width"] = len(f) - for vm in vms_to_display: - l = len(str(eval(fields[f]["func"]))) + data_to_display = [] + for vm in vms_to_display: + data_row = {} + for f in fields_to_display: + data_row[f] = str(eval(fields[f]["func"])) + l = len(data_row[f]) if l > fields[f]["max_width"]: fields[f]["max_width"] = l + data_to_display.append(data_row) + try: + vm.verify_files() + except QubesException as err: + print >> sys.stderr, "WARNING: VM '{0}' has corrupted files!".format(vm.name) + + # XXX: For what? + total_width = 0; + for f in fields_to_display: total_width += fields[f]["max_width"] - # Display the header s = "" for f in fields_to_display: @@ -195,16 +207,11 @@ def main(): print s # ... and the actual data - for vm in vms_to_display: + for row in data_to_display: s = "" for f in fields_to_display: fmt="{{0:>{0}}} |".format(fields[f]["max_width"] + 1) - s += fmt.format(eval(fields[f]["func"])) + s += fmt.format(row[f]) print s - try: - vm.verify_files() - except QubesException as err: - print >> sys.stderr, "WARNING: VM '{0}' has corrupted files!".format(vm.name) - main() From e7b65b457b23bf8136289f06f61a328a3ba8a86a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 9 Mar 2012 20:16:55 +0100 Subject: [PATCH 062/386] dom0/pm-utils: initial clock sync also in ClockVM after resume When there is no internet connection, clockvm will have no chance to sync clock itself. --- dom0/pm-utils/01qubes-sync-vms-clock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/pm-utils/01qubes-sync-vms-clock b/dom0/pm-utils/01qubes-sync-vms-clock index 58344c7f..ccc7eeae 100755 --- a/dom0/pm-utils/01qubes-sync-vms-clock +++ b/dom0/pm-utils/01qubes-sync-vms-clock @@ -8,7 +8,7 @@ sync_qubes_vms_wallclock() DATE=$(date) echo echo "Syncing VMs clock to: $DATE" - qvm-run --all --exclude=`qubes-prefs --get clockvm` -u root "date -s \"$DATE\"" + qvm-run --all -u root "date -s \"$DATE\"" # Then try to sync from the network /usr/bin/qvm-sync-clock & } From e8772352e2f4773094297f2b3d9c49e582c7b67e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 10 Mar 2012 03:14:51 +0100 Subject: [PATCH 063/386] dom0/qvm-tools: introduce cmdline firewall editor: qvm-firewall --- dom0/qvm-tools/qvm-firewall | 316 ++++++++++++++++++++++++++++++++++++ 1 file changed, 316 insertions(+) create mode 100755 dom0/qvm-tools/qvm-firewall diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall new file mode 100755 index 00000000..301c6a0c --- /dev/null +++ b/dom0/qvm-tools/qvm-firewall @@ -0,0 +1,316 @@ +#!/usr/bin/python2.6 +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Marek Marczykowski +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# + +from qubes.qubes import QubesVmCollection +from optparse import OptionParser; +import subprocess +import sys +import re + +services = list() + +def load_services(): + global services + services = list() + pattern = re.compile("(?P[a-z][a-z0-9-]+)\s+(?P[0-9]+)/(?P[a-z]+)", re.IGNORECASE) + f = open('/etc/services', 'r') + for line in f: + match = pattern.match(line) + if match is not None: + service = match.groupdict() + services.append( (service["name"], int(service["port"]), service["protocol"]) ) + f.close() + +def get_service_name(port): + for service in services: + if service[1] == port: + return service[0] + return str(port) + +def get_service_port(name): + for service in services: + if service[0] == name: + return int(service[1]) + return None + +def parse_rule(args): + if len(args) < 2: + print >>sys.stderr, "ERROR: Rule must have at least address and protocol" + return None + + address = args[0] + netmask = 32 + proto = args[1] + port = args[2] if len(args) > 2 else None + port_end = None + + unmask = address.split("/", 1) + if len(unmask) == 2: + address = unmask[0] + netmask = unmask[1] + if netmask.isdigit(): + if re.match("^([0-9]{1,3}\.){3}[0-9]{1,3}$", address) is None: + print >>sys.stderr, "ERROR: Only IP is allowed when specyfying netmask" + return None + if netmask != "": + netmask = int(unmask[1]) + if netmask < 0 or netmask > 32: + print >>sys.stderr, "ERROR: Invalid netmask" + return None + else: + print >>sys.stderr, "ERROR: Invalid netmask" + return None + + if address[-1:] == ".": + address = address[:-1] + + allowed = re.compile("(?!-)[A-Z\d-]{1,63}(?>sys.stderr, "ERROR: Invalid hostname" + return None + + proto_split = proto.split('/', 1) + if len(proto_split) == 2: + proto = proto_split[0] + port = proto_split[1] + + if proto not in ['tcp', 'udp', 'any']: + print >>sys.stderr, "ERROR: Protocol must be one of: 'tcp', 'udp', 'any'" + return None + + if proto != "any" and port is None: + print >>sys.stderr, "ERROR: Port required for protocol %s" % args[1] + return None + + if port is not None: + port_range = port.split('-', 1) + if len(port_range) == 2: + port = port_range[0] + port_end = port_range[1] + + if get_service_port(port): + port = get_service_port(port) + elif not port.isdigit(): + print >>sys.stderr, "ERROR: Invalid port/service name '%s'" % port + return None + else: + port = int(port) + + if port_end is not None and not port_end.isdigit(): + print >>sys.stderr, "ERROR: Invalid port '%s'" % port_end + return None + + if port_end is not None: + port_end = int(port_end) + + rule = {} + rule['address'] = address + rule['netmask'] = netmask + rule['proto'] = proto + rule['portBegin'] = port + rule['portEnd'] = port_end + return rule + +def list_rules(rules): + fields = [ "num", "address", "proto", "port(s)" ] + + rules_to_display = list() + counter = 1 + for rule in rules: + parsed_rule = { + 'num': "{0:>2}".format(counter), + 'address': rule['address'] + ('/' + str(rule['netmask']) if rule['netmask'] < 32 else ""), + 'proto': rule['proto'], + 'port(s)': '', + } + if rule['proto'] in ['tcp', 'udp']: + parsed_rule['port(s)'] = str(rule['portBegin']) + \ + ('-' + str(rule['portEnd']) if rule['portEnd'] is not None else '') + if rule['portBegin'] is not None and rule['portEnd'] is None: + parsed_rule['port(s)'] = get_service_name(rule['portBegin']) + + rules_to_display.append(parsed_rule) + counter += 1 + + fields_width = {} + for f in fields: + fields_width[f] = len(f) + for r in rules_to_display: + if len(r[f]) > fields_width[f]: + fields_width[f] = len(r[f]) + + # Display the header + s = "" + for f in fields: + fmt="{{0:-^{0}}}-+".format(fields_width[f] + 1) + s += fmt.format('-') + print s + + s = "" + for f in fields: + fmt=" {{0:^{0}}} |".format(fields_width[f]) + s += fmt.format(f) + print s + + s = "" + for f in fields: + fmt="{{0:-^{0}}}-+".format(fields_width[f] + 1) + s += fmt.format('-') + print s + + # And the content + for r in rules_to_display: + s = "" + for f in fields: + fmt=" {{0:<{0}}} |".format(fields_width[f]) + s += fmt.format(r[f]) + print s + +def display_firewall(conf): + print "Firewall policy: %s" % ( + "ALLOW all traffic except" if conf['allow'] else "DENY all traffic except") + print "ICMP: %s" % ("ALLOW" if conf['allowIcmp'] else 'DENY') + print "DMS: %s" % ("ALLOW" if conf['allowDns'] else 'DENY') + list_rules(conf['rules']) + +def add_rule(conf, args): + rule = parse_rule(args) + if rule is None: + return False + + conf['rules'].append(rule) + return True + +def del_rule(conf, args): + if len(args) == 1 and args[0].isdigit(): + rulenum = int(args[0]) + if rulenum < 1 or rulenum > len(conf['rules']): + print >>sys.stderr, "ERROR: Rule number out of range" + return False + conf['rules'].pop(rulenum-1) + else: + rule = parse_rule(args) + #print "PARSED: %s" % str(rule) + #print "ALL: %s" % str(conf['rules']) + if rule is None: + return False + try: + conf['rules'].remove(rule) + except ValueError: + print >>sys.stderr, "ERROR: Rule not found" + return False + + return True + +def allow_deny_value(s): + value = None + if s == "allow": + value = True + elif s == "deny": + value = False + else: + print >>sys.stderr, 'ERROR: Only "allow" or "deny" allowed' + exit(1) + return value + +def main(): + usage = "usage: %prog [-n] [action] [rule spec]\n" + usage += " rule specification can be one of:\n" + usage += " address|hostname[/netmask] tcp|udp port[-port]\n" + usage += " address|hostname[/netmask] tcp|udp service_name\n" + usage += " address|hostname[/netmask] any\n" + parser = OptionParser (usage) + parser.add_option ("-l", "--list", dest="do_list", action="store_true", default=True, + help="List firewall settings (default action)") + parser.add_option ("-a", "--add", dest="do_add", action="store_true", default=False, + help="Add rule") + parser.add_option ("-d", "--del", dest="do_del", action="store_true", default=False, + help="Remove rule (given by number or by rule spec)") + parser.add_option ("-P", "--policy", dest="set_policy", action="store", default=None, + help="Set firewall policy (allow/deny)") + parser.add_option ("-i", "--icmp", dest="set_icmp", action="store", default=None, + help="Set ICMP access (allow/deny)") + parser.add_option ("-D", "--dns", dest="set_dns", action="store", default=None, + help="Set DNS access (allow/deny)") + + parser.add_option ("-n", "--numeric", dest="numeric", action="store_true", default=False, + help="Display port numbers instead of services (makes sense only with --list)") + + (options, args) = parser.parse_args () + if (len (args) < 1): + parser.error ("You must specify VM name!") + vmname = args[0] + args = args[1:] + + if options.do_add or options.do_del or options.set_policy or options.set_icmp or options.set_dns: + options.do_list = False + qvm_collection = QubesVmCollection() + if options.do_list: + qvm_collection.lock_db_for_reading() + qvm_collection.load() + qvm_collection.unlock_db() + else: + qvm_collection.lock_db_for_writing() + qvm_collection.load() + + vm = qvm_collection.get_vm_by_name(vmname) + if vm is None: + print >> sys.stderr, "A VM with the name '{0}' does not exist in the system.".format(vmname) + exit(1) + + changed = False + conf = vm.get_firewall_conf() + + if options.set_policy: + conf['allow'] = allow_deny_value(options.set_policy) + changed = True + if options.set_icmp: + conf['allowIcmp'] = allow_deny_value(options.set_icmp) + changed = True + if options.set_dns: + conf['allowDns'] = allow_deny_value(options.set_dns) + changed = True + + if options.do_add: + load_services() + changed = add_rule(conf, args) + elif options.do_del: + load_services() + changed = del_rule(conf, args) + elif options.do_list: + if not options.numeric: + load_services() + if not vm.has_firewall(): + print "INFO: This VM has no firewall set, below defaults are listed" + display_firewall(conf) + + if changed: + vm.write_firewall_conf(conf) + if vm.is_running(): + if vm.netvm is not None and vm.netvm.is_proxyvm(): + vm.netvm.write_iptables_xenstore_entry() + + if not options.do_list: + qvm_collection.unlock_db() + + +main() From 7e317dbf9aa701b37236b0d4da1d8fd823e6f6fa Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 10 Mar 2012 20:57:59 +0100 Subject: [PATCH 064/386] dom0/qvm-backup: do not fail on VMs without private.img --- dom0/qvm-core/qubesutils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 454603c0..bd2dcc37 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -385,8 +385,9 @@ def backup_prepare(base_backup_dir, vms_list = None, exclude_list = [], print_ca # handle templates later continue - vm_sz = vm.get_disk_usage (vm.private_img) - files_to_backup += file_to_backup(vm.private_img, vm_sz ) + if vm.private_img is not None: + vm_sz = vm.get_disk_usage (vm.private_img) + files_to_backup += file_to_backup(vm.private_img, vm_sz ) if vm.is_appvm(): files_to_backup += file_to_backup(vm.icon_path) From 242c074dd0cb0ed9780629869a141c24ea042d11 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 10 Mar 2012 21:00:51 +0100 Subject: [PATCH 065/386] dom0/hvm: do not inhibit private.img for HVM --- dom0/qvm-core/qubes.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 9cb51175..4bee260f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -80,6 +80,7 @@ default_kernelopts = "" default_kernelopts_pcidevs = "iommu=soft swiotlb=2048" default_hvm_disk_size = 20*1024*1024*1024 +default_hvm_private_img_size = 2*1024*1024*1024 default_hvm_memory = 512 config_template_pv = '/usr/share/qubes/vm-template.conf' @@ -2137,7 +2138,6 @@ class QubesHVm(QubesVm): attrs.pop('kernelopts') attrs.pop('uses_default_kernel') attrs.pop('uses_default_kernelopts') - attrs['private_img']['eval'] = 'None' attrs['volatile_img']['eval'] = 'None' attrs['config_file_template']['eval'] = 'config_template_hvm' attrs['drive'] = { 'save': 'str(self.drive)' } @@ -2195,6 +2195,10 @@ class QubesHVm(QubesVm): f_root.truncate(default_hvm_disk_size) f_root.close() + # create empty private.img + f_private = open(self.private_img, "w") + f_private.truncate(default_private_img_size) + f_root.close() def get_disk_utilization_private_img(self): return 0 @@ -2210,7 +2214,6 @@ class QubesHVm(QubesVm): params = super(QubesHVm, self).get_config_params(source_template=source_template) params['volatiledev'] = '' - params['privatedev'] = '' if self.drive: stat_res = os.stat(self.drive) if stat.S_ISBLK(stat_res.st_mode): From 1227741e283a6e689252fa18ad6a864f343b9ea2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 10 Mar 2012 21:03:15 +0100 Subject: [PATCH 066/386] dom0/core: disable automatic starting NetVM when trying attach to --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4bee260f..9d16677b 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -383,6 +383,8 @@ class QubesVm(object): self._set_netvm(new_netvm) def _set_netvm(self, new_netvm): + if self.is_running() and not new_netvm.is_running(): + raise QubesException("Cannot dynamically attach to stopped NetVM") if self.netvm is not None: self.netvm.connected_vms.pop(self.qid) if self.is_running(): @@ -406,8 +408,6 @@ class QubesVm(object): return if self.is_running(): - if not new_netvm.is_running(): - new_netvm.start() # refresh IP, DNS etc self.create_xenstore_entries() self.attach_network() From cd8c64b345277dbe07f288e8d912647a1a313896 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 11 Mar 2012 00:30:49 +0100 Subject: [PATCH 067/386] dom0/hvm: detect missing private.img --- dom0/qvm-core/qubes.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 9d16677b..4a1e97bc 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2238,6 +2238,11 @@ class QubesHVm(QubesVm): "VM root image file doesn't exist: {0}".\ format(self.root_img)) + if not os.path.exists (self.private_img): + raise QubesException ( + "VM private image file doesn't exist: {0}".\ + format(self.private_img)) + return True def reset_volatile_storage(self, **kwargs): From b4adf6fdd0ecda8b7f2013708cba965658aeb45e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 11 Mar 2012 00:32:46 +0100 Subject: [PATCH 068/386] dom0/core: verify files before starting VM --- dom0/qvm-core/qubes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4a1e97bc..194f9ef1 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1337,6 +1337,8 @@ class QubesVm(object): if self.get_power_state() != "Halted": raise QubesException ("VM is already running!") + self.verify_files() + if self.netvm is not None: if self.netvm.qid != 0: if not self.netvm.is_running(): From 6f13ceba0ca7003d6dd39880ae2154a39ce9ed82 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 11 Mar 2012 00:57:29 +0100 Subject: [PATCH 069/386] dom0/vm-config: connect private.img --- dom0/misc/vm-template-hvm.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/misc/vm-template-hvm.conf b/dom0/misc/vm-template-hvm.conf index 0849001c..2ddfe056 100644 --- a/dom0/misc/vm-template-hvm.conf +++ b/dom0/misc/vm-template-hvm.conf @@ -19,6 +19,7 @@ usbdevice='tablet' sdl=0 vnc=0 disk = [ {rootdev} + {privatedev} {otherdevs} ] vif = [ {netdev} ] From 466eaa02c1555ce23cf59240eda4a9b6b689c37e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 11 Mar 2012 13:28:25 +0100 Subject: [PATCH 070/386] dom0/core: create HVM private.img if it doesn't exists --- dom0/qvm-core/qubes.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 194f9ef1..ce94f1cf 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2241,9 +2241,11 @@ class QubesHVm(QubesVm): format(self.root_img)) if not os.path.exists (self.private_img): - raise QubesException ( - "VM private image file doesn't exist: {0}".\ + print >>sys.stderr, "WARNING: Creating empty VM private image file: {0}".\ format(self.private_img)) + f_private = open(self.private_img, "w") + f_private.truncate(default_private_img_size) + f_root.close() return True From e77bdf63db3dd24747755fbd38a0875f54935abf Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 11 Mar 2012 21:12:49 +0100 Subject: [PATCH 071/386] dom0/rpm-spec: fix xenconsoled setup XENCONSOLED_LOG_GUESTS was erroneously replaced by XENCONSOLED_LOG_HYPERVISOR. So to config fresh systems and broken by prevoius version, remove any XENCONSOLED_LOG_ entries and add correct one at the config end. --- rpm_spec/core-dom0.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 9316e9b9..7208bf12 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -215,8 +215,9 @@ echo 'installonlypkgs = kernel, kernel-qubes-vm' >> /etc/yum.conf sed 's/^PRELINKING\s*=.*/PRELINKING=no/' -i /etc/sysconfig/prelink -sed 's/^#\?\s*XENCONSOLED_LOG_HYPERVISOR\s*=.*/XENCONSOLED_LOG_HYPERVISOR=yes/' -i /etc/sysconfig/xenconsoled -sed 's/^#\?\s*XENCONSOLED_LOG_GUESTS\s*=.*/XENCONSOLED_LOG_HYPERVISOR=yes/' -i /etc/sysconfig/xenconsoled +sed '/^\s*XENCONSOLED_LOG_\(HYPERVISOR\|GUESTS\)\s*=.*/d' -i /etc/sysconfig/xenconsoled +echo XENCONSOLED_LOG_HYPERVISOR=yes >> /etc/sysconfig/xenconsoled +echo XENCONSOLED_LOG_GUESTS=yes >> /etc/sysconfig/xenconsoled chkconfig --add qubes_core || echo "WARNING: Cannot add service qubes_core!" chkconfig --add qubes_netvm || echo "WARNING: Cannot add service qubes_netvm!" From 870a4f452a4a5ad91ea85e76a2378635aeff4068 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 12 Mar 2012 08:17:22 +0100 Subject: [PATCH 072/386] dom0/core: typo fix --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index ce94f1cf..aa4519d2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2242,7 +2242,7 @@ class QubesHVm(QubesVm): if not os.path.exists (self.private_img): print >>sys.stderr, "WARNING: Creating empty VM private image file: {0}".\ - format(self.private_img)) + format(self.private_img) f_private = open(self.private_img, "w") f_private.truncate(default_private_img_size) f_root.close() From 8eedebf00a2c53e628d640c23b1cbbadbaaefa9d Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 12 Mar 2012 01:52:44 +0100 Subject: [PATCH 073/386] version 2.0.9 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 815e68dd..09843e3b 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.8 +2.0.9 From afe0eee244c6a0d7cc6f914061d81c5787344c1f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 12 Mar 2012 13:26:07 +0100 Subject: [PATCH 074/386] dom0/qvm-backup: do not backup volatile.img It is always cleaned before VM start anyway. --- dom0/qvm-core/qubesutils.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index bd2dcc37..322f3ae8 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -410,9 +410,6 @@ def backup_prepare(base_backup_dir, vms_list = None, exclude_list = [], print_ca sz = vm.get_disk_usage(vm.root_img) files_to_backup += file_to_backup(vm.root_img, sz) vm_sz += sz - sz = vm.get_disk_usage(vm.volatile_img) - files_to_backup += file_to_backup(vm.volatile_img, sz) - vm_sz += sz s = "" fmt="{{0:>{0}}} |".format(fields_to_display[0]["width"] + 1) From 123e7cce5380e11b3d93a86d7b58e03a6b15faa4 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 12 Mar 2012 19:13:19 +0100 Subject: [PATCH 075/386] version 2.0.10 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 09843e3b..0a692060 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.9 +2.0.10 From 32228296ac771cf202b3dc52787ced5dc25a2cd3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 14 Mar 2012 13:34:01 +0100 Subject: [PATCH 076/386] dom0/qvm-create: template_vm->template fix --- dom0/qvm-tools/qvm-create | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-create b/dom0/qvm-tools/qvm-create index e4208528..1f8c47b1 100755 --- a/dom0/qvm-tools/qvm-create +++ b/dom0/qvm-tools/qvm-create @@ -106,7 +106,7 @@ def main(): print >> sys.stderr, "A VM with the name '{0}' already exists in the system.".format(vmname) exit(1) - template_vm = None + template = None if options.template is not None: template = qvm_collection.get_vm_by_name(options.template) if template is None: From 6defb6536693e4758e774e427db7ffba2b75c4c1 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 14 Mar 2012 21:30:35 +0100 Subject: [PATCH 077/386] version 2.0.11 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 0a692060..6cbacdc8 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.10 +2.0.11 From e632c5c3d044943a054e2f1bd4cf1829219143f7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 14 Mar 2012 21:39:13 +0100 Subject: [PATCH 078/386] dom0/core: fix typo on creating HVM private.img --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index aa4519d2..a61a62ff 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2199,7 +2199,7 @@ class QubesHVm(QubesVm): # create empty private.img f_private = open(self.private_img, "w") - f_private.truncate(default_private_img_size) + f_private.truncate(default_hvm_private_img_size) f_root.close() def get_disk_utilization_private_img(self): @@ -2244,7 +2244,7 @@ class QubesHVm(QubesVm): print >>sys.stderr, "WARNING: Creating empty VM private image file: {0}".\ format(self.private_img) f_private = open(self.private_img, "w") - f_private.truncate(default_private_img_size) + f_private.truncate(default_hvm_private_img_size) f_root.close() return True From 3da47b395cdb596d9ecf08884cab084545d829c2 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 14 Mar 2012 21:51:45 +0100 Subject: [PATCH 079/386] version 2.0.12 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 6cbacdc8..280a1e33 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.11 +2.0.12 From 91b810a03554221496f0867c0eeee8672285e58e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 15 Mar 2012 10:58:57 +0100 Subject: [PATCH 080/386] dom0/qvm-block: add support for d0p1 style names, especially mmcblk* (#489) --- dom0/qvm-core/qubesutils.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 322f3ae8..4089b35f 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -119,16 +119,23 @@ def block_name_to_majorminor(name): major = 0 minor = 0 + dXpY_style = False name_match = re.match(r"([a-z]+)([a-z])([0-9]*)", name) if not name_match: - raise QubesException("Invalid device name: %s" % name) + name_match = re.match(r"([a-z]+)([0-9]*)(?:p([0-9]+)?", name) + if not name_match: + raise QubesException("Invalid device name: %s" % name) + else: + dXpY_style = True disk = True if name_match.group(1) == "xvd": major = 202 elif name_match.group(1) == "sd": major = 8 + elif name_match.group(1) == "mmcblk": + major = 179 elif name.startswith("scd"): disk = False major = 11 @@ -143,7 +150,10 @@ def block_name_to_majorminor(name): return (0, 0) if disk: - minor = (ord(name_match.group(2))-ord('a')) * 16 + if dXpY_style: + minor = int(name_match.group(2))*8 + else: + minor = (ord(name_match.group(2))-ord('a')) * 16 else: minor = 0 if name_match.group(3): From 616a86d211253fe0cd85a2a135ee9ae1bdb45329 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 15 Mar 2012 20:24:56 +0100 Subject: [PATCH 081/386] dom0/core: one more "nonupdatable template" cleanup --- dom0/qvm-core/qubes.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index a61a62ff..934680b1 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1622,19 +1622,6 @@ class QubesTemplateVm(QubesVm): return True - def start(self, debug_console = False, verbose = False, preparing_dvm=False): - if dry_run: - return - - self.reset_volatile_storage(verbose=verbose) - - if not self.updateable: - raise QubesException ("Cannot start Template VM that is marked \"nonupdatable\"") - - # TODO?: check if none of running appvms are outdated - - return super(QubesTemplateVm, self).start(debug_console=debug_console, verbose=verbose) - def reset_volatile_storage(self, verbose = False): assert not self.is_running(), "Attempt to clean volatile image of running Template VM!" From edecda6a978b23f2c0b3ebaea836be77eb3d6d2d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 15 Mar 2012 20:58:12 +0100 Subject: [PATCH 082/386] dom0/qvm-start: support for custom Xen config --- dom0/qvm-core/qubes.py | 6 ++++++ dom0/qvm-tools/qvm-start | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 934680b1..15c398d6 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -881,9 +881,15 @@ class QubesVm(object): return args + @property + def uses_custom_config(self): + return self.conf_file != self.absolute_path(self.name + ".conf", None) + def create_config_file(self, file_path = None, source_template = None, prepare_dvm = False): if file_path is None: file_path = self.conf_file + if self.uses_custom_config: + return if source_template is None: source_template = self.template diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 5ec3c1c5..9b4f5995 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -41,6 +41,8 @@ def main(): help="Temporarily attach specified drive as CD/DVD") parser.add_option ("--dvm", action="store_true", dest="preparing_dvm", default=False, help="Do actions necessary when preparing DVM image") + parser.add_option ("--custom-config", action="store", dest="custom_config", default=None, + help="Use custom Xen config instead of Qubes-generated one") (options, args) = parser.parse_args () if (len (args) != 1): @@ -64,6 +66,9 @@ def main(): print >> sys.stderr, "This VM does not support attaching drives" exit (1) + if options.custom_config: + vm.conf_file = options.custom_config + try: vm.verify_files() xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm) From 420329437a5695cb9f2dddedf4685e4dddf3a610 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 16 Mar 2012 10:25:15 +0100 Subject: [PATCH 083/386] version 2.0.13 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 280a1e33..82bd22f9 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.12 +2.0.13 From 0e195de5f641df58e6e47e249626a6741595cff8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 16 Mar 2012 12:26:31 +0100 Subject: [PATCH 084/386] dom0/dispvm: new progress window for DispVM generation (#422) --- ...es_update_dispvm_savefile_with_progress.sh | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/dom0/restore/qubes_update_dispvm_savefile_with_progress.sh b/dom0/restore/qubes_update_dispvm_savefile_with_progress.sh index aaaa5578..9410478b 100755 --- a/dom0/restore/qubes_update_dispvm_savefile_with_progress.sh +++ b/dom0/restore/qubes_update_dispvm_savefile_with_progress.sh @@ -1,14 +1,26 @@ #!/bin/sh -trap "exit 1" USR1 TERM -export SHELL_PID=$$ -( - echo "1" - if ! qvm-create-default-dvm --used-template --default-script >/var/run/qubes/qvm-create-default-dvm.stdout + + Please wait (up to 120s) while the DispVM savefile is being updated. +
    + + This only happens when you have updated the template.
    + Next time will be much faster. +
    +
    +" 0`; + +trap "qdbus $ref close" EXIT + +#qdbus $ref showCancelButton true; + +ret=0 + +if ! qvm-create-default-dvm --used-template --default-script >/var/run/qubes/qvm-create-default-dvm.stdout Date: Tue, 20 Mar 2012 16:21:03 +0100 Subject: [PATCH 085/386] dom0/drive: allow to specify backend domain and force "disk" type --- dom0/qvm-core/qubes.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 15c398d6..2a4488b5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2210,11 +2210,26 @@ class QubesHVm(QubesVm): params['volatiledev'] = '' if self.drive: - stat_res = os.stat(self.drive) - if stat.S_ISBLK(stat_res.st_mode): - params['otherdevs'] = "'phy:%s,xvdc:cdrom,r'," % self.drive + type_mode = ":cdrom,r" + drive_path = self.drive + # leave empty to use standard syntax in case of dom0 + backend_domain = "" + if drive_path.startswith("hd:"): + type_mode = ",w" + drive_path = drive_path[3:] + backend_split = re.match(r"^([a-zA-Z0-9]*):(.*)", drive_path) + if backend_split: + backend_domain = "," + backend_split.group(1) + drive_path = backend_split.group(2) + + # FIXME: os.stat will work only when backend in dom0... + stat_res = None + if backend_domain == "": + stat_res = os.stat(drive_path) + if stat_res and stat.S_ISBLK(stat_res.st_mode): + params['otherdevs'] = "'phy:%s,xvdc%s%s'," % (drive_path, type_mode, backend_domain) else: - params['otherdevs'] = "'script:file:%s,xvdc:cdrom,r'," % self.drive + params['otherdevs'] = "'script:file:%s,xvdc%s%s'," % (drive_path, type_mode, backend_domain) else: params['otherdevs'] = '' return params From 3a587f8abecf4d75fb93e0bf21c32f4266c3f0f8 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 21 Mar 2012 11:32:46 +0100 Subject: [PATCH 086/386] version 2.0.14 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 82bd22f9..3d45b5c6 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.13 +2.0.14 From 1465b8f1045cf92d1381fd2dd3134b7e1f212e2d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 26 Mar 2012 11:33:30 +0200 Subject: [PATCH 087/386] dom0/core: fix clone of HVM (#17) --- dom0/qvm-core/qubes.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 2a4488b5..5c046bab 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2163,6 +2163,14 @@ class QubesHVm(QubesVm): def is_appvm(self): return True + def get_clone_attrs(self): + attrs = super(QubesHVm, self).get_clone_attrs() + attrs.remove('kernel') + attrs.remove('uses_default_kernel') + attrs.remove('kernelopts') + attrs.remove('uses_default_kernelopts') + return attrs + def create_on_disk(self, verbose, source_template = None): if dry_run: return From 7d66d7c8426bc0b71a373b7ae8faa85c4227501b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 26 Mar 2012 20:25:49 +0200 Subject: [PATCH 088/386] dom0/drive: add "cdrom:" prefix (#19) To deal with VM named "hd". Also add --cdrom and --hddisk options to qvm-start. --- dom0/qvm-core/qubes.py | 4 +++- dom0/qvm-tools/qvm-start | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 5c046bab..167e14fd 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2224,7 +2224,9 @@ class QubesHVm(QubesVm): backend_domain = "" if drive_path.startswith("hd:"): type_mode = ",w" - drive_path = drive_path[3:] + elif drive_path.startswith("cdrom:"): + type_mode = ":cdrom,r" + drive_path = drive_path[6:] backend_split = re.match(r"^([a-zA-Z0-9]*):(.*)", drive_path) if backend_split: backend_domain = "," + backend_split.group(1) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 9b4f5995..4f3c3732 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -38,6 +38,10 @@ def main(): parser.add_option ("--console", action="store_true", dest="debug_console", default=False, help="Attach debugging console to the newly started VM") parser.add_option ("--drive", dest="drive", default=None, + help="Temporarily attach specified drive as CD/DVD or hard disk (can be specified with prefix 'hd:' or 'cdrom:', default is cdrom)") + parser.add_option ("--hddisk", dest="drive_hd", default=None, + help="Temporarily attach specified drive as hard disk") + parser.add_option ("--cdrom", dest="drive_cdrom", default=None, help="Temporarily attach specified drive as CD/DVD") parser.add_option ("--dvm", action="store_true", dest="preparing_dvm", default=False, help="Do actions necessary when preparing DVM image") @@ -59,6 +63,16 @@ def main(): print >> sys.stderr, "A VM with the name '{0}' does not exist in the system.".format(vmname) exit(1) + if bool(options.drive_hd) + bool(options.drive_cdrom) + bool(options.drive) > 1: + print >> sys.stderr, "Only one of --drive, --cdrom, --hddisk can be specified" + exit(1) + + if options.drive_hd: + options.drive = 'hd:' + options.drive_hd + + if options.drive_cdrom: + options.drive = 'cdrom:' + options.drive_hd + if options.drive: if hasattr(vm, 'drive'): vm.drive = options.drive From 84e6cacec6be899933468018e75d0730c60624d5 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 26 Mar 2012 20:29:49 +0200 Subject: [PATCH 089/386] dom0+vm: qvm-block --attach-file Allow to attach disk image from different VM as block device. File attached with qvm-block -A will be visible as loopX device and as such can be detached. File path will be in device description. --- dom0/qvm-core/qubesutils.py | 27 ++++++++++++++++++++++----- dom0/qvm-tools/qvm-block | 21 ++++++++++++++++----- misc/block_add_change | 10 ++++++++++ misc/qubes_block.rules | 3 --- 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 4089b35f..190ccbb3 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -142,6 +142,9 @@ def block_name_to_majorminor(name): elif name.startswith("sr"): disk = False major = 11 + elif name.startswith("loop"): + disk = False + major = 7 elif name.startswith("md"): disk = False major = 9 @@ -242,25 +245,34 @@ def block_check_attached(backend_vm, device, backend_xid = None): vm_list = xs.ls('', '/local/domain/%d/backend/vbd' % backend_xid) if vm_list is None: return None - device_majorminor = block_name_to_majorminor(device) + device_majorminor = None + try: + device_majorminor = block_name_to_majorminor(device) + except: + # Unknown devices will be compared directly - perhaps it is a filename? + pass for vm_xid in vm_list: for devid in xs.ls('', '/local/domain/%d/backend/vbd/%s' % (backend_xid, vm_xid)): (tmp_major, tmp_minor) = (0, 0) phys_device = xs.read('', '/local/domain/%d/backend/vbd/%s/%s/physical-device' % (backend_xid, vm_xid, devid)) + dev_params = xs.read('', '/local/domain/%d/backend/vbd/%s/%s/params' % (backend_xid, vm_xid, devid)) if phys_device and phys_device.find(':'): (tmp_major, tmp_minor) = phys_device.split(":") tmp_major = int(tmp_major, 16) tmp_minor = int(tmp_minor, 16) else: # perhaps not ready yet - check params - dev_params = xs.read('', '/local/domain/%d/backend/vbd/%s/%s/params' % (backend_xid, vm_xid, devid)) - if not dev_params or not dev_params.startswith('/dev/'): + if not dev_params: # Skip not-phy devices continue + elif not dev_params.startswith('/dev/'): + # will compare params directly + pass else: (tmp_major, tmp_minor) = block_name_to_majorminor(dev_params.lstrip('/dev/')) - if (tmp_major, tmp_minor) == device_majorminor: + if (device_majorminor and (tmp_major, tmp_minor) == device_majorminor) or \ + (device_majorminor is None and dev_params == device): vm_name = xl_ctx.domid_to_name(int(vm_xid)) frontend = block_devid_to_name(int(devid)) return {"xid":int(vm_xid), "frontend": frontend, "devid": int(devid), "vm": vm_name} @@ -290,7 +302,12 @@ def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=Fa else: raise QubesException("Device %s from %s already connected to VM %s as %s" % (device, backend_vm.name, attached_vm['vm'], attached_vm['frontend'])) - xl_cmd = [ '/usr/sbin/xl', 'block-attach', vm.name, 'phy:/dev/' + device, frontend, mode, str(backend_vm.xid) ] + if device.startswith('/'): + backend_dev = 'script:file:' + device + else: + backend_dev = 'phy:/dev/' + device + + xl_cmd = [ '/usr/sbin/xl', 'block-attach', vm.name, backend_dev, frontend, mode, str(backend_vm.xid) ] subprocess.check_call(xl_cmd) def block_detach(vm, frontend = "xvdi", vm_xid = None): diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index bcdb8eac..e46d9438 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -37,6 +37,8 @@ def main(): parser = OptionParser (usage) parser.add_option ("-l", "--list", action="store_true", dest="do_list", default=False) + parser.add_option ("-A", "--attach-file", action="store", dest="file_path", default=None, + help="Attach specified file instead of physical device (syntax: qvm-block -A file backend-VM frontend-VM)") parser.add_option ("-a", "--attach", action="store_true", dest="do_attach", default=False) parser.add_option ("-d", "--detach", action="store_true", dest="do_detach", default=False) parser.add_option ("-f", "--frontend", dest="frontend", @@ -48,8 +50,11 @@ def main(): (options, args) = parser.parse_args () + if options.file_path: + options.do_attach = True + if options.do_list + options.do_attach + options.do_detach > 1: - print >> sys.stderr, "Only one of -l -a -d is allowed!" + print >> sys.stderr, "Only one of -l -a/-A -d is allowed!" exit (1) if options.do_attach or options.do_detach: @@ -64,10 +69,16 @@ def main(): vm = qvm_collection.get_vm_by_name(args[1]) if vm is None: parser.error ("Invalid VM name: %s" % args[1]) - dev_list = block_list() - if not args[0] in dev_list.keys(): - parser.error ("Invalid device name: %s" % args[0]) - dev = dev_list[args[0]] + if options.file_path: + dev = {} + dev['vm'] = args[0] + dev['device'] = options.file_path + dev['mode'] = 'w' + else: + dev_list = block_list() + if not args[0] in dev_list.keys(): + parser.error ("Invalid device name: %s" % args[0]) + dev = dev_list[args[0]] backend_vm = qvm_collection.get_vm_by_name(dev['vm']) assert backend_vm is not None kwargs = {} diff --git a/misc/block_add_change b/misc/block_add_change index 3d675aa1..e1b25ca9 100755 --- a/misc/block_add_change +++ b/misc/block_add_change @@ -16,6 +16,11 @@ if [ -n "`ls -A /sys/$DEVPATH/holders 2> /dev/null`" ]; then xenstore-rm "$XS_KEY" exit 0 fi +# ... and "empty" loop devices +if [ "$MAJOR" -eq 7 -a ! -d /sys/$DEVPATH/loop ]; then + xenstore-rm "$XS_KEY" + exit 0 +fi # Special case for CD if [ "$ID_TYPE" = "cd" ]; then @@ -26,6 +31,11 @@ if [ "$ID_TYPE" = "cd" ]; then fi MODE=r fi + +# Special description for loop devices +if [ -d /sys/$DEVPATH/loop ]; then + DESC=$(cat /sys/$DEVPATH/loop/backing_file) +fi xenstore-write "$XS_KEY/desc" "$DESC" "$XS_KEY/size" "$SIZE" "$XS_KEY/mode" "$MODE" # Make sure that block backend is loaded diff --git a/misc/qubes_block.rules b/misc/qubes_block.rules index 1a0864e0..343553f5 100644 --- a/misc/qubes_block.rules +++ b/misc/qubes_block.rules @@ -6,9 +6,6 @@ SUBSYSTEM!="block", GOTO="qubes_block_end" # Skip xen-blkfront devices ENV{MAJOR}=="202", GOTO="qubes_block_end" -# Skip loop devices -ENV{MAJOR}=="7", GOTO="qubes_block_end" - # Skip device-mapper devices ENV{MAJOR}=="253", GOTO="qubes_block_end" From 5e1a9c203f437fba7e528c2b22a60edb6a06f228 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 26 Mar 2012 20:36:06 +0200 Subject: [PATCH 090/386] dom0/drive: allow dashes in VM name (#19 pro) --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 167e14fd..a3b1c936 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2227,7 +2227,7 @@ class QubesHVm(QubesVm): elif drive_path.startswith("cdrom:"): type_mode = ":cdrom,r" drive_path = drive_path[6:] - backend_split = re.match(r"^([a-zA-Z0-9]*):(.*)", drive_path) + backend_split = re.match(r"^([a-zA-Z0-9-]*):(.*)", drive_path) if backend_split: backend_domain = "," + backend_split.group(1) drive_path = backend_split.group(2) From 194ac8ddcbf1e4b4910f21c2c5dfdac4b5b05e19 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 27 Mar 2012 12:59:47 +0200 Subject: [PATCH 091/386] dom0/qvm-block: hide system disks by default (#5 pro) --- dom0/qvm-core/qubesutils.py | 7 ++++++- dom0/qvm-tools/qvm-block | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 190ccbb3..be2d3cdf 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -188,7 +188,7 @@ def block_find_unused_frontend(vm = None): return block_devid_to_name(major << 8 | minor) return None -def block_list(vm = None): +def block_list(vm = None, system_disks = False): device_re = re.compile(r"^[a-z0-9]{1,8}$") # FIXME: any better idea of desc_re? desc_re = re.compile(r"^.{1,255}$") @@ -232,6 +232,11 @@ def block_list(vm = None): if block_name_to_majorminor(device) == (0, 0): print >> sys.stderr, "Unsupported device %s:%s" % (vm_name, device) continue + + if not system_disks: + if xid == '0' and device_desc.startswith(qubes_base_dir): + continue + visible_name = "%s:%s" % (vm_name, device) devices_list[visible_name] = {"name": visible_name, "xid":int(xid), "vm": vm_name, "device":device, "size":int(device_size), diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index e46d9438..dce876e9 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -47,6 +47,8 @@ def main(): help="Force read-only mode") parser.add_option ("--no-auto-detach", dest="auto_detach", action="store_false", default=True, help="Fail when device already connected to other VM") + parser.add_option ("--show-system-disks", dest="system_disks", action="store_true", default=False, + help="List also system disks") (options, args) = parser.parse_args () @@ -113,7 +115,9 @@ def main(): block_detach(None, attached_to['devid'], vm_xid=attached_to['xid']) else: # do_list - for dev in block_list().values(): + kwargs = {} + kwargs['system_disks'] = options.system_disks + for dev in block_list(**kwargs).values(): attached_to = block_check_attached(None, dev['device'], backend_xid = dev['xid']) attached_to_str = "" if attached_to: From 262400c6d886bedb4d1335b96a1062d5b8541825 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 27 Mar 2012 13:13:10 +0200 Subject: [PATCH 092/386] dom0/core: ensure that vm.services['meminfo-writer'] is present --- dom0/qvm-core/qubes.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index a3b1c936..78ed65c3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -332,6 +332,10 @@ class QubesVm(object): qubes_host = QubesHost() self.vcpus = qubes_host.no_cpus + # Always set if meminfo-writer should be active or not + if 'meminfo-writer' not in self.services: + self.services['meminfo-writer'] = not (len(self.pcidevs) > 0) + # Some additional checks for template based VM if self.template is not None: if not self.template.is_template(): From 5924d2fcc3a7faf44cb709d0f1ab9c6929ab9199 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 00:20:13 +0200 Subject: [PATCH 093/386] dom0/utils: minor for for parse_size --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index be2d3cdf..f31a35d5 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -78,7 +78,7 @@ def parse_size(size): size = size.strip().upper() if size.isdigit(): - return size + return int(size) for unit, multiplier in units: if size.endswith(unit): From 2e6e9bfab944cc7bceb3eb12a4d783708597ef4a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 00:21:01 +0200 Subject: [PATCH 094/386] dom0/qmemman: add support for config file --- dom0/misc/qmemman.conf | 13 +++++++++++++ dom0/qmemman/qmemman_algo.py | 8 ++++++-- dom0/qmemman/qmemman_server.py | 24 ++++++++++++++++++++++++ rpm_spec/core-dom0.spec | 4 ++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 dom0/misc/qmemman.conf diff --git a/dom0/misc/qmemman.conf b/dom0/misc/qmemman.conf new file mode 100644 index 00000000..f43daa9f --- /dev/null +++ b/dom0/misc/qmemman.conf @@ -0,0 +1,13 @@ +# The only section in this file +[global] +# vm-min-mem - give at least this amount of RAM for dynamically managed VM +# Default: 200M +vm-min-mem = 200M + +# dom0-mem-boost - additional memory given to dom0 for disk caches etc +# Default: 350M +dom0-mem-boost = 350M + +# cache-margin-factor - calculate VM preferred memory as (used memory)*cache-margin-factor +# Default: 1.3 +cache-margin-factor = 1.3 diff --git a/dom0/qmemman/qmemman_algo.py b/dom0/qmemman/qmemman_algo.py index d8c1f6b2..b61d9d17 100755 --- a/dom0/qmemman/qmemman_algo.py +++ b/dom0/qmemman/qmemman_algo.py @@ -1,5 +1,11 @@ import string +# This are only defaults - can be overriden by QMemmanServer with values from +# config file +CACHE_FACTOR = 1.3 +MIN_PREFMEM = 200*1024*1024 +DOM0_MEM_BOOST = 350*1024*1024 + #untrusted meminfo size is taken from xenstore key, thus its size is limited #so splits do not require excessive memory def parse_meminfo(untrusted_meminfo): @@ -57,8 +63,6 @@ def refresh_meminfo_for_domain(domain, untrusted_xenstore_key): domain.mem_used = domain.meminfo['MemTotal'] - domain.meminfo['MemFree'] - domain.meminfo['Cached'] - domain.meminfo['Buffers'] + domain.meminfo['SwapTotal'] - domain.meminfo['SwapFree'] def prefmem(domain): - CACHE_FACTOR = 1.3 - MIN_PREFMEM = 200*1024*1024 #dom0 is special, as it must have large cache, for vbds. Thus, give it a special boost if domain.id == '0': return min(domain.mem_used*CACHE_FACTOR + 350*1024*1024, domain.memory_maximum) diff --git a/dom0/qmemman/qmemman_server.py b/dom0/qmemman/qmemman_server.py index 63fddfb5..515b5fdd 100755 --- a/dom0/qmemman/qmemman_server.py +++ b/dom0/qmemman/qmemman_server.py @@ -6,6 +6,12 @@ import xen.lowlevel.xs import sys import os from qmemman import SystemState +import qmemman_algo +from ConfigParser import SafeConfigParser +from optparse import OptionParser +from qubesutils import parse_size + +config_path = '/etc/qubes/qmemman.conf' system_state = SystemState() global_lock = thread.allocate_lock() @@ -113,5 +119,23 @@ def start_server(): class QMemmanServer: @staticmethod def main(): + usage = "usage: %prog [options]" + parser = OptionParser(usage) + parser.add_option("-c", "--config", action="store", dest="config", default=config_path) + (options, args) = parser.parse_args() + + config = SafeConfigParser({ + 'vm-min-mem': str(qmemman_algo.MIN_PREFMEM), + 'dom0-mem-boost': str(qmemman_algo.DOM0_MEM_BOOST), + 'cache-margin-factor': str(qmemman_algo.CACHE_FACTOR) + }) + config.read(options.config) + if config.has_section('global'): + qmemman_algo.MIN_PREFMEM = parse_size(config.get('global', 'vm-min-mem')) + qmemman_algo.DOM0_MEM_BOOST = parse_size(config.get('global', 'dom0-mem-boost')) + qmemman_algo.CACHE_FACTOR = config.getfloat('global', 'cache-margin-factor') + + print "values: %s, %s, %s" % (str(qmemman_algo.MIN_PREFMEM), str(qmemman_algo.DOM0_MEM_BOOST), str(qmemman_algo.CACHE_FACTOR)) + thread.start_new_thread(start_server, tuple([])) XS_Watcher().watch_loop() diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 7208bf12..cc2fd64d 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -92,6 +92,9 @@ cp qvm-core/__init__.py[co] $RPM_BUILD_ROOT%{python_sitearch}/qubes cp qmemman/qmemman*py $RPM_BUILD_ROOT%{python_sitearch}/qubes cp qmemman/qmemman*py[co] $RPM_BUILD_ROOT%{python_sitearch}/qubes +mkdir -p $RPM_BUILD_DIR/etc/qubes +cp dom0/misc/qmemman.conf $RPM_BUILD_DIR%{_sysconfdir}/qubes/ + mkdir -p $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/patch_appvm_initramfs.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/unbind_pci_device.sh $RPM_BUILD_ROOT/usr/lib/qubes @@ -307,6 +310,7 @@ fi /etc/init.d/qubes_core /etc/init.d/qubes_netvm /etc/init.d/qubes_setupdvm +%config(noreplace) %{_sysconfdir}/qubes/qmemman.conf /usr/bin/qvm-* /usr/bin/qubes-* /usr/bin/qclipd From f4e9128bc5e884ce7be0f735efc766601755a196 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 00:35:14 +0200 Subject: [PATCH 095/386] dom0/core: do not inherit kernel version from template (#488) --- dom0/qvm-core/qubes.py | 12 +++++------- dom0/qvm-tools/qvm-prefs | 8 +------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 78ed65c3..8335b7ec 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -248,11 +248,10 @@ class QubesVm(object): # Internal VM (not shown in qubes-manager, doesn't create appmenus entries "internal": { "default": False }, "vcpus": { "default": None }, - "kernel": { "default": None, 'eval': \ - 'self.template.kernel if self.template is not None else value' }, - "uses_default_kernel": { "default": True }, - "uses_default_kernelopts": { "default": True }, - "kernelopts": { "default": "", "eval": \ + "kernel": { "default": None, 'order': 30 }, + "uses_default_kernel": { "default": True, 'order': 30 }, + "uses_default_kernelopts": { "default": True, 'order': 30 }, + "kernelopts": { "default": "", 'order': 30, "eval": \ 'value if not self.uses_default_kernelopts else default_kernelopts_pcidevs if len(self.pcidevs) > 0 else default_kernelopts' }, "mac": { "attr": "_mac", "default": None }, "include_in_backups": { "default": True }, @@ -263,8 +262,7 @@ class QubesVm(object): 'self.template.appmenus_templates_dir if self.template is not None else None' }, "config_file_template": { "eval": "config_template_pv" }, "icon_path": { "eval": 'self.dir_path + "/icon.png" if self.dir_path is not None else None' }, - "kernels_dir": { 'eval': 'self.template.kernels_dir if self.template is not None else ' + \ - 'qubes_kernels_base_dir + "/" + self.kernel if self.kernel is not None else ' + \ + "kernels_dir": { 'eval': 'qubes_kernels_base_dir + "/" + self.kernel if self.kernel is not None else ' + \ # for backward compatibility (or another rare case): kernel=None -> kernel in VM dir 'self.dir_path + "/" + default_kernels_subdir' }, } diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index e785302a..3d652201 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -65,9 +65,7 @@ def do_list(vm): print fmt.format ("MAC", "%s%s" % (vm.mac, " (auto)" if vm._mac is None else "")) if hasattr(vm, 'kernel'): - if vm.template is not None: - print fmt.format ("kernel", "%s (from template)" % vm.kernel) - elif vm.uses_default_kernel: + if vm.uses_default_kernel: print fmt.format ("kernel", "%s (default)" % vm.kernel) else: print fmt.format ("kernel", vm.kernel) @@ -162,10 +160,6 @@ def set_netvm(vms, vm, args): vm.netvm = netvm def set_kernel(vms, vm, args): - if vm.template is not None: - print >> sys.stderr, "Cannot set kernel for template-based VM. Set it for template instead." - return False - if len (args) != 1: print >> sys.stderr, "Missing kernel version argument!" print >> sys.stderr, "Possible values:" From 9c4c1113367d72ea482341226735bf55333fb28d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 00:35:55 +0200 Subject: [PATCH 096/386] dom0/core: minor HVM creation cleanup Setting kernel is senseless here - it will be ignored --- dom0/qvm-core/qubes.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 8335b7ec..fde604ec 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2380,8 +2380,6 @@ class QubesVmCollection(dict): qid = self.get_new_unused_qid() vm = QubesHVm (qid=qid, name=name, netvm = self.get_default_netvm(), - kernel = self.get_default_kernel(), - uses_default_kernel = True, label=label) if not self.verify_new_vm (vm): From 8705cf9e9ac7ef204e80108645b1f5fe705da226 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 00:43:59 +0200 Subject: [PATCH 097/386] vm/init: Use the same default services for TemplateVM as for AppVM (#503) Actually it already was done in traditional init.d script, so do the same in systemd version. --- vm-systemd/qubes-sysinit.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index dc93de5e..65c36063 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -4,6 +4,7 @@ DEFAULT_ENABLED_NETVM="network-manager qubes-network" DEFAULT_ENABLED_PROXYVM="meminfo-writer qubes-network qubes-firewall qubes-netwatcher" DEFAULT_ENABLED_APPVM="meminfo-writer cups" +DEFAULT_ENABLED_TEMPLATEVM=$DEFAULT_ENABLED_APPVM DEFAULT_ENABLED="meminfo-writer" XS_READ=/usr/bin/xenstore-read @@ -30,6 +31,7 @@ TYPE=`$XS_READ qubes_vm_type 2> /dev/null` [ "$TYPE" == "AppVM" ] && DEFAULT_ENABLED=$DEFAULT_ENABLED_APPVM [ "$TYPE" == "NetVM" ] && DEFAULT_ENABLED=$DEFAULT_ENABLED_NETVM [ "$TYPE" == "ProxyVM" ] && DEFAULT_ENABLED=$DEFAULT_ENABLED_PROXYVM +[ "$TYPE" == "TemplateVM" ] && DEFAULT_ENABLED=$DEFAULT_ENABLED_TEMPLATEVM # Enable default services for srv in $DEFAULT_ENABLED; do From 7dafb32ee100e6584d51dbd155200c82fb455822 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 28 Mar 2012 11:52:23 +0200 Subject: [PATCH 098/386] dom0/drive: fix hd: prefix parsing --- dom0/qvm-core/qubes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index fde604ec..41f09d09 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2226,6 +2226,7 @@ class QubesHVm(QubesVm): backend_domain = "" if drive_path.startswith("hd:"): type_mode = ",w" + drive_path = drive_path[3:] elif drive_path.startswith("cdrom:"): type_mode = ":cdrom,r" drive_path = drive_path[6:] From 7bee34dfb0742111a8ac7bf4a960551c98937817 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 29 Mar 2012 16:17:10 +0200 Subject: [PATCH 099/386] dom0/spec: fix spec for qmemman.conf --- rpm_spec/core-dom0.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index cc2fd64d..49f4856e 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -92,8 +92,8 @@ cp qvm-core/__init__.py[co] $RPM_BUILD_ROOT%{python_sitearch}/qubes cp qmemman/qmemman*py $RPM_BUILD_ROOT%{python_sitearch}/qubes cp qmemman/qmemman*py[co] $RPM_BUILD_ROOT%{python_sitearch}/qubes -mkdir -p $RPM_BUILD_DIR/etc/qubes -cp dom0/misc/qmemman.conf $RPM_BUILD_DIR%{_sysconfdir}/qubes/ +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/qubes +cp misc/qmemman.conf $RPM_BUILD_ROOT%{_sysconfdir}/qubes/ mkdir -p $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/patch_appvm_initramfs.sh $RPM_BUILD_ROOT/usr/lib/qubes @@ -310,7 +310,7 @@ fi /etc/init.d/qubes_core /etc/init.d/qubes_netvm /etc/init.d/qubes_setupdvm -%config(noreplace) %{_sysconfdir}/qubes/qmemman.conf +%config(noreplace) %attr(0664,root,qubes) %{_sysconfdir}/qubes/qmemman.conf /usr/bin/qvm-* /usr/bin/qubes-* /usr/bin/qclipd From 9b61f8c901149cff425a00fe3e6bb060c77a87c8 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 29 Mar 2012 20:32:09 +0200 Subject: [PATCH 100/386] version 2.0.15 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 3d45b5c6..b8061b50 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.14 +2.0.15 From cebc24b670592d6ed97080a094944d07d51a287e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 30 Mar 2012 00:19:15 +0200 Subject: [PATCH 101/386] dom0/qvm-block: ignore devices with some field missing --- dom0/qvm-core/qubesutils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index f31a35d5..f3cdb79b 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -219,6 +219,9 @@ def block_list(vm = None, system_disks = False): device_desc = xs.read('', '/local/domain/%s/qubes-block-devices/%s/desc' % (xid, device)) device_mode = xs.read('', '/local/domain/%s/qubes-block-devices/%s/mode' % (xid, device)) + if device_size is None or device_desc is None or device_mode is None: + print >> sys.stderr, "Missing field in %s device parameters" % device + continue if not device_size.isdigit(): print >> sys.stderr, "Invalid %s device size in VM '%s'" % (device, vm_name) continue From e22fc84715e319ebcbe78d17c33f6b917a4991d5 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 31 Mar 2012 19:01:51 +0200 Subject: [PATCH 102/386] dom0/qvm-block: change order of parameters (#514) --- dom0/qvm-tools/qvm-block | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index dce876e9..f5be46e6 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -30,15 +30,16 @@ import os def main(): usage = "usage: %prog -l [options]\n"\ - "usage: %prog -a [options] \n"\ - "usage: %prog -d [options] \n"\ + "usage: %prog -a [options] :\n"\ + "usage: %prog -A [options] :\n"\ + "usage: %prog -d [options] :\n"\ "usage: %prog -d [options] \n"\ "List/set VM PCI devices." parser = OptionParser (usage) parser.add_option ("-l", "--list", action="store_true", dest="do_list", default=False) - parser.add_option ("-A", "--attach-file", action="store", dest="file_path", default=None, - help="Attach specified file instead of physical device (syntax: qvm-block -A file backend-VM frontend-VM)") + parser.add_option ("-A", "--attach-file", action="store_true", dest="do_file_attach", default=False, + help="Attach specified file instead of physical device") parser.add_option ("-a", "--attach", action="store_true", dest="do_attach", default=False) parser.add_option ("-d", "--detach", action="store_true", dest="do_detach", default=False) parser.add_option ("-f", "--frontend", dest="frontend", @@ -68,19 +69,21 @@ def main(): if options.do_attach: if (len (args) < 2): parser.error ("You must provide device and vm name!") - vm = qvm_collection.get_vm_by_name(args[1]) + vm = qvm_collection.get_vm_by_name(args[0]) if vm is None: - parser.error ("Invalid VM name: %s" % args[1]) - if options.file_path: + parser.error ("Invalid VM name: %s" % args[0]) + # FIXME: here we assume that device is always in form "domain:dev", which can be changed in the future + if args[1].find(":") < 0: + parser.error ("Invalid device syntax" % args[1]) + if options.do_file_attach: dev = {} - dev['vm'] = args[0] - dev['device'] = options.file_path + (dev['vm'], dev['device']) = args[1].split(":") dev['mode'] = 'w' else: dev_list = block_list() - if not args[0] in dev_list.keys(): - parser.error ("Invalid device name: %s" % args[0]) - dev = dev_list[args[0]] + if not args[1] in dev_list.keys(): + parser.error ("Invalid device name: %s" % args[1]) + dev = dev_list[args[1]] backend_vm = qvm_collection.get_vm_by_name(dev['vm']) assert backend_vm is not None kwargs = {} From 2ee071020b3b369e93bbabc1b381ecaaaf38e5eb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 31 Mar 2012 19:10:47 +0200 Subject: [PATCH 103/386] dom0/qvm-tools: fix auto-detach --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index f3cdb79b..957d01a2 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -306,7 +306,7 @@ def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=Fa attached_vm = block_check_attached(backend_vm, device) if attached_vm: if auto_detach: - block_detach(None, attached_vm['devid'], vm_xid=attached_vm['vm_xid']) + block_detach(None, attached_vm['devid'], vm_xid=attached_vm['xid']) else: raise QubesException("Device %s from %s already connected to VM %s as %s" % (device, backend_vm.name, attached_vm['vm'], attached_vm['frontend'])) From 3c59cabee3ed02c66c324dd4e5b9db4f7de65b73 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 31 Mar 2012 19:22:07 +0200 Subject: [PATCH 104/386] dom0/qvm-block: one more file-attach fix --- dom0/qvm-tools/qvm-block | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index f5be46e6..ed8de53d 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -53,7 +53,7 @@ def main(): (options, args) = parser.parse_args () - if options.file_path: + if options.do_file_attach: options.do_attach = True if options.do_list + options.do_attach + options.do_detach > 1: From 59133164614659efe614a18b6de8cc483f7af098 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Sat, 31 Mar 2012 19:54:35 +0200 Subject: [PATCH 105/386] version 2.0.16 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index b8061b50..a14da290 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.15 +2.0.16 From f01b480476c302fc352cb7e73a385637fcae237f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 2 Apr 2012 09:52:29 +0200 Subject: [PATCH 106/386] dom0/qvm-block: use xenstore transactions (#507) --- dom0/qvm-core/qubesutils.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 957d01a2..7f4a20ef 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -203,10 +203,11 @@ def block_list(vm = None, system_disks = False): else: vm_list = xs.ls('', '/local/domain') + xs_trans = xs.transaction_start() devices_list = {} for xid in vm_list: - vm_name = xs.read('', '/local/domain/%s/name' % xid) - vm_devices = xs.ls('', '/local/domain/%s/qubes-block-devices' % xid) + vm_name = xs.read(xs_trans, '/local/domain/%s/name' % xid) + vm_devices = xs.ls(xs_trans, '/local/domain/%s/qubes-block-devices' % xid) if vm_devices is None: continue for device in vm_devices: @@ -215,9 +216,9 @@ def block_list(vm = None, system_disks = False): print >> sys.stderr, "Invalid device name in VM '%s'" % vm_name continue - device_size = xs.read('', '/local/domain/%s/qubes-block-devices/%s/size' % (xid, device)) - device_desc = xs.read('', '/local/domain/%s/qubes-block-devices/%s/desc' % (xid, device)) - device_mode = xs.read('', '/local/domain/%s/qubes-block-devices/%s/mode' % (xid, device)) + device_size = xs.read(xs_trans, '/local/domain/%s/qubes-block-devices/%s/size' % (xid, device)) + device_desc = xs.read(xs_trans, '/local/domain/%s/qubes-block-devices/%s/desc' % (xid, device)) + device_mode = xs.read(xs_trans, '/local/domain/%s/qubes-block-devices/%s/mode' % (xid, device)) if device_size is None or device_desc is None or device_mode is None: print >> sys.stderr, "Missing field in %s device parameters" % device @@ -245,13 +246,16 @@ def block_list(vm = None, system_disks = False): "vm": vm_name, "device":device, "size":int(device_size), "desc":device_desc, "mode":device_mode} + xs.transaction_end(xs_trans) return devices_list def block_check_attached(backend_vm, device, backend_xid = None): if backend_xid is None: backend_xid = backend_vm.xid - vm_list = xs.ls('', '/local/domain/%d/backend/vbd' % backend_xid) + xs_trans = xs.transaction_start() + vm_list = xs.ls(xs_trans, '/local/domain/%d/backend/vbd' % backend_xid) if vm_list is None: + xs.transaction_end(xs_trans) return None device_majorminor = None try: @@ -260,10 +264,10 @@ def block_check_attached(backend_vm, device, backend_xid = None): # Unknown devices will be compared directly - perhaps it is a filename? pass for vm_xid in vm_list: - for devid in xs.ls('', '/local/domain/%d/backend/vbd/%s' % (backend_xid, vm_xid)): + for devid in xs.ls(xs_trans, '/local/domain/%d/backend/vbd/%s' % (backend_xid, vm_xid)): (tmp_major, tmp_minor) = (0, 0) - phys_device = xs.read('', '/local/domain/%d/backend/vbd/%s/%s/physical-device' % (backend_xid, vm_xid, devid)) - dev_params = xs.read('', '/local/domain/%d/backend/vbd/%s/%s/params' % (backend_xid, vm_xid, devid)) + phys_device = xs.read(xs_trans, '/local/domain/%d/backend/vbd/%s/%s/physical-device' % (backend_xid, vm_xid, devid)) + dev_params = xs.read(xs_trans, '/local/domain/%d/backend/vbd/%s/%s/params' % (backend_xid, vm_xid, devid)) if phys_device and phys_device.find(':'): (tmp_major, tmp_minor) = phys_device.split(":") tmp_major = int(tmp_major, 16) @@ -283,7 +287,9 @@ def block_check_attached(backend_vm, device, backend_xid = None): (device_majorminor is None and dev_params == device): vm_name = xl_ctx.domid_to_name(int(vm_xid)) frontend = block_devid_to_name(int(devid)) + xs.transaction_end(xs_trans) return {"xid":int(vm_xid), "frontend": frontend, "devid": int(devid), "vm": vm_name} + xs.transaction_end(xs_trans) return None def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=False): From 4dc0fb6ddcd45a4f71db76643e52623bc23d6b4d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 3 Apr 2012 17:41:48 +0200 Subject: [PATCH 107/386] vm: load block backend in every VM (#516) --- misc/qubes_core.modules | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/qubes_core.modules b/misc/qubes_core.modules index 77267064..9f39e795 100755 --- a/misc/qubes_core.modules +++ b/misc/qubes_core.modules @@ -1 +1,2 @@ modprobe evtchn 2>/dev/null || modprobe xen-evtchn +modprobe xen-blkback 2> /dev/null || modprobe blkbk From 1e9cad6498557b0503046b258e9658e136a074fa Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Apr 2012 23:47:21 +0200 Subject: [PATCH 108/386] dom0/core: fix create private.img --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 41f09d09..b564605d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2266,7 +2266,7 @@ class QubesHVm(QubesVm): format(self.private_img) f_private = open(self.private_img, "w") f_private.truncate(default_hvm_private_img_size) - f_root.close() + f_private.close() return True From 96756fa1fac7329944102d57e9cb44cddc2b005d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 7 Apr 2012 01:26:34 +0200 Subject: [PATCH 109/386] dom0/core: minor netvm switching Do not fail when setting netvm to none of running VM. --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index b564605d..67799830 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -385,7 +385,7 @@ class QubesVm(object): self._set_netvm(new_netvm) def _set_netvm(self, new_netvm): - if self.is_running() and not new_netvm.is_running(): + if self.is_running() and new_netvm is not None and not new_netvm.is_running(): raise QubesException("Cannot dynamically attach to stopped NetVM") if self.netvm is not None: self.netvm.connected_vms.pop(self.qid) From 711bd242681f36fd2a247bb4e542602f876d2737 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 11 Apr 2012 01:34:17 +0200 Subject: [PATCH 110/386] dom0/core: watch interface --- dom0/qvm-core/qubesutils.py | 83 +++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 7f4a20ef..1d3ae20d 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -340,6 +340,89 @@ def block_detach(vm, frontend = "xvdi", vm_xid = None): xl_cmd = [ '/usr/sbin/xl', 'block-detach', str(vm_xid), str(frontend)] subprocess.check_call(xl_cmd) +def only_in_first_list(l1, l2): + ret=[] + for i in l1: + if not i in l2: + ret.append(i) + return ret + +class QubesWatch(object): + class WatchType(object): + def __init__(self, fn, param): + self.fn = fn + self.param = param + + def __init__(self): + self.xs = xen.lowlevel.xs.xs() + self.watch_tokens_block = {} + self.watch_tokens_vbd = {} + self.block_callback = None + self.domain_callback = None + self.xs.watch('@introduceDomain', QubesWatch.WatchType(self.domain_list_changed, None)) + self.xs.watch('@releaseDomain', QubesWatch.WatchType(self.domain_list_changed, None)) + + def setup_block_watch(self, callback): + old_block_callback = self.block_callback + self.block_callback = callback + if old_block_callback is not None and callback is None: + # remove watches + self.update_watches_vbd([]) + self.update_watches_block([]) + else: + # possibly add watches + self.domain_list_changed(None) + + def setup_domain_watch(self, callback): + self.domain_callback = callback + + def get_block_key(self, xid): + return '/local/domain/%s/qubes-block-devices' % xid + + def get_vbd_key(self, xid): + return '/local/domain/%s/device/vbd' % xid + + def update_watches_block(self, xid_list): + for i in only_in_first_list(xid_list, self.watch_tokens_block.keys()): + #new domain has been created + watch = QubesWatch.WatchType(self.block_callback, i) + self.watch_tokens_block[i] = watch + self.xs.watch(self.get_block_key(i), watch) + for i in only_in_first_list(self.watch_tokens_block.keys(), xid_list): + #domain destroyed + self.xs.unwatch(self.get_block_key(i), self.watch_tokens_block[i]) + self.watch_tokens_block.pop(i) + + def update_watches_vbd(self, xid_list): + for i in only_in_first_list(xid_list, self.watch_tokens_vbd.keys()): + #new domain has been created + watch = QubesWatch.WatchType(self.block_callback, i) + self.watch_tokens_block[i] = watch + self.xs.watch(self.get_vbd_key(i), watch) + for i in only_in_first_list(self.watch_tokens_vbd.keys(), xid_list): + #domain destroyed + self.xs.unwatch(self.get_vbd_key(i), self.watch_tokens_vbd[i]) + self.watch_tokens_vbd.pop(i) + + def domain_list_changed(self, param): + curr = self.xs.ls('', '/local/domain') + if curr == None: + return + if self.domain_callback: + self.domain_callback() + if self.block_callback: + self.update_watches_block(curr) + self.update_watches_vbd(curr) + + def watch_single(self): + result = self.xs.read_watch() + token = result[1] + token.fn(token.param) + + def watch_loop(self): + while True: + self.watch_single() + def get_disk_usage(file_or_dir): if not os.path.exists(file_or_dir): return 0 From 04d3ef34451f02df7baea92f5975234260ce4664 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 11 Apr 2012 01:35:51 +0200 Subject: [PATCH 111/386] dom0/core: section headers in qubesutils --- dom0/qvm-core/qubesutils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 1d3ae20d..e1c4a808 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -93,6 +93,8 @@ def print_stdout(text): def print_stderr(text): print >> sys.stderr, (text) +###### Block devices ######## + def block_devid_to_name(devid): major = devid / 256 minor = devid % 256 @@ -340,6 +342,8 @@ def block_detach(vm, frontend = "xvdi", vm_xid = None): xl_cmd = [ '/usr/sbin/xl', 'block-detach', str(vm_xid), str(frontend)] subprocess.check_call(xl_cmd) +####### QubesWatch ###### + def only_in_first_list(l1, l2): ret=[] for i in l1: @@ -423,6 +427,8 @@ class QubesWatch(object): while True: self.watch_single() +######## Backups ######### + def get_disk_usage(file_or_dir): if not os.path.exists(file_or_dir): return 0 From 0c5640970c0289b07066c16d2d8c41eb4b69a427 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Apr 2012 15:51:10 +0200 Subject: [PATCH 112/386] dom0/core: do not fail on VM shutdown in QubesWatch --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index e1c4a808..d9602fe9 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -401,7 +401,7 @@ class QubesWatch(object): for i in only_in_first_list(xid_list, self.watch_tokens_vbd.keys()): #new domain has been created watch = QubesWatch.WatchType(self.block_callback, i) - self.watch_tokens_block[i] = watch + self.watch_tokens_vbd[i] = watch self.xs.watch(self.get_vbd_key(i), watch) for i in only_in_first_list(self.watch_tokens_vbd.keys(), xid_list): #domain destroyed From b4d25b1405c60b891e48d1e70fc02f112189a582 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Apr 2012 18:03:40 +0200 Subject: [PATCH 113/386] dom0/qvm-block: handle block-attach errors (#515) --- dom0/qvm-core/qubesutils.py | 32 +++++++++++++++++++++++++++++++- dom0/qvm-tools/qvm-block | 8 ++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index d9602fe9..bcc610ee 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -294,7 +294,7 @@ def block_check_attached(backend_vm, device, backend_xid = None): xs.transaction_end(xs_trans) return None -def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=False): +def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=False, wait=True): if not vm.is_running(): raise QubesException("VM %s not running" % vm.name) @@ -325,6 +325,36 @@ def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=Fa xl_cmd = [ '/usr/sbin/xl', 'block-attach', vm.name, backend_dev, frontend, mode, str(backend_vm.xid) ] subprocess.check_call(xl_cmd) + if wait: + be_path = '/local/domain/%d/backend/vbd/%d/%d' % (backend_vm.xid, vm.xid, block_name_to_devid(frontend)) + # There is no way to use xenstore watch with a timeout, so must check in a loop + interval = 0.100 + # 5sec timeout + timeout = 5/interval + while timeout > 0: + be_state = xs.read('', be_path + '/state') + hotplug_state = xs.read('', be_path + '/hotplug-status') + if be_state is None: + raise QubesException("Backend device disappeared, something weird happend") + elif int(be_state) == 4: + # Ok + return + elif int(be_state) > 4: + # Error + error = xs.read('/local/domain/%d/error/backend/vbd/%d/%d/error' % (backend_vm.xid, vm.xid, block_name_to_devid(frontend))) + if error is None: + raise QubesException("Error while connecting block device: " + error) + else: + raise QubesException("Unknown error while connecting block device") + elif hotplug_state == 'error': + hotplug_error = xs.read('', be_path + '/hotplug-error') + if hotplug_error: + raise QubesException("Error while connecting block device: " + hotplug_error) + else: + raise QubesException("Unknown hotplug error while connecting block device") + time.sleep(interval) + timeout -= interval + raise QubesException("Timeout while waiting for block defice connection") def block_detach(vm, frontend = "xvdi", vm_xid = None): # Get XID if not provided already diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index ed8de53d..72530b19 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -20,7 +20,7 @@ # # -from qubes.qubes import QubesVmCollection +from qubes.qubes import QubesVmCollection, QubesException from qubes.qubesutils import block_list,block_attach,block_detach,block_check_attached from qubes.qubesutils import kbytes_to_kmg, bytes_to_kmg from optparse import OptionParser @@ -94,7 +94,11 @@ def main(): else: kwargs['mode'] = dev['mode'] kwargs['auto_detach'] = options.auto_detach - block_attach(vm, backend_vm, dev['device'], **kwargs) + try: + block_attach(vm, backend_vm, dev['device'], **kwargs) + except QubesException as e: + print >> sys.stderr, "ERROR: %s" % str(e) + sys.exit(1) elif options.do_detach: if (len (args) < 1): parser.error ("You must provide device or vm name!") From c970d2dbdf33d267c57708ee576fa91b47c739cd Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 13 Apr 2012 00:29:13 +0200 Subject: [PATCH 114/386] dom0/qvm-block: qvm-block -d detaches all devices (#517) Exception: if frontend specified, detaches only this one device. --- dom0/qvm-core/qubesutils.py | 28 ++++++++++++++++++++++++++++ dom0/qvm-tools/qvm-block | 6 ++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index bcc610ee..09f63401 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -372,6 +372,34 @@ def block_detach(vm, frontend = "xvdi", vm_xid = None): xl_cmd = [ '/usr/sbin/xl', 'block-detach', str(vm_xid), str(frontend)] subprocess.check_call(xl_cmd) +def block_detach_all(vm, vm_xid = None): + """ Detach all non-system devices""" + # Get XID if not provided already + if vm_xid is None: + if not vm.is_running(): + raise QubesException("VM %s not running" % vm.name) + # FIXME: potential race + vm_xid = vm.xid + + xs_trans = xs.transaction_start() + devices = xs.ls(xs_trans, '/local/domain/%d/device/vbd' % vm_xid) + if devices is None: + return + devices_to_detach = [] + for devid in devices: + # check if this is system disk + be_path = xs.read(xs_trans, '/local/domain/%d/device/vbd/%s/backend' % (vm_xid, devid)) + assert be_path is not None + be_params = xs.read(xs_trans, be_path + '/params') + if be_path.startswith('/local/domain/0/') and be_params is not None and be_params.startswith(qubes_base_dir): + # system disk + continue + devices_to_detach.append(devid) + xs.transaction_end(xs_trans) + for devid in devices_to_detach: + xl_cmd = [ '/usr/sbin/xl', 'block-detach', str(vm_xid), devid] + subprocess.check_call(xl_cmd) + ####### QubesWatch ###### def only_in_first_list(l1, l2): diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index 72530b19..f31f7848 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -21,7 +21,7 @@ # from qubes.qubes import QubesVmCollection, QubesException -from qubes.qubesutils import block_list,block_attach,block_detach,block_check_attached +from qubes.qubesutils import block_list,block_attach,block_detach,block_detach_all,block_check_attached from qubes.qubesutils import kbytes_to_kmg, bytes_to_kmg from optparse import OptionParser import subprocess @@ -108,7 +108,9 @@ def main(): kwargs = {} if options.frontend: kwargs['frontend'] = options.frontend - block_detach(vm, **kwargs) + block_detach(vm, **kwargs) + else: + block_detach_all(vm) else: # Maybe device? dev_list = block_list() From 30d9048be05ed117cf982855ef79f8c67bd51a7e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 17 Apr 2012 02:43:30 +0200 Subject: [PATCH 115/386] dom0/core: pass all start() parameters to the base class --- dom0/qvm-core/qubes.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 67799830..2668c040 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1758,18 +1758,18 @@ class QubesNetVm(QubesVm): return subprocess.check_call(command) - def start(self, debug_console = False, verbose = False, preparing_dvm=False): + def start(self, **kwargs): if dry_run: return - xid=super(QubesNetVm, self).start(debug_console=debug_console, verbose=verbose) + xid=super(QubesNetVm, self).start(**kwargs) # Connect vif's of already running VMs for vm in self.connected_vms.values(): if not vm.is_running(): continue - if verbose: + if 'verbose' in kwargs and kwargs['verbose']: print >> sys.stderr, "--> Attaching network to '{0}'...".format(vm.name) # Cleanup stale VIFs @@ -1845,10 +1845,10 @@ class QubesProxyVm(QubesNetVm): self.write_iptables_xenstore_entry() - def start(self, debug_console = False, verbose = False, preparing_dvm = False): + def start(self, **kwargs): if dry_run: return - retcode = super(QubesProxyVm, self).start(debug_console=debug_console, verbose=verbose, preparing_dvm=preparing_dvm) + retcode = super(QubesProxyVm, self).start(**kwargs) self.netvm.add_external_ip_permission(self.get_xid()) self.write_netvm_domid_entry() return retcode @@ -1997,7 +1997,7 @@ class QubesDom0NetVm(QubesNetVm): def ip(self): return "10.137.0.1" - def start(self, debug_console = False, verbose = False): + def start(self, **kwargs): raise QubesException ("Cannot start Dom0 fake domain!") def get_xl_dominfo(self): From 6d52e388745f79c5e3f7123f8c69afd5c649cdb8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 17 Apr 2012 02:52:26 +0200 Subject: [PATCH 116/386] dom0/qvm-start: fix --no-guid switch (#528) --- dom0/qvm-core/qubes.py | 4 ++-- dom0/qvm-tools/qvm-start | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 2668c040..59ab113b 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1337,7 +1337,7 @@ class QubesVm(object): self.force_shutdown() raise OSError ("ERROR: Cannot execute qrexec_daemon!") - def start(self, debug_console = False, verbose = False, preparing_dvm = False): + def start(self, debug_console = False, verbose = False, preparing_dvm = False, start_guid = True): if dry_run: return @@ -1412,7 +1412,7 @@ class QubesVm(object): if not preparing_dvm: self.start_qrexec_daemon(verbose=verbose) - if not preparing_dvm and os.path.exists('/var/run/shm.id'): + if start_guid and not preparing_dvm and os.path.exists('/var/run/shm.id'): self.start_guid(verbose=verbose) if preparing_dvm: diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 4f3c3732..fd1bf67e 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -85,7 +85,7 @@ def main(): try: vm.verify_files() - xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm) + xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm, start_guid=not options.noguid) except (IOError, OSError, QubesException) as err: print >> sys.stderr, "ERROR: {0}".format(err) exit (1) From 3f06aca119d447806c1e4a795b87529fe3392646 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 17 Apr 2012 16:32:31 +0200 Subject: [PATCH 117/386] dom0/core: If dynamic memory management disabled, set maxmem=mem (#525) --- dom0/qvm-core/qubes.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 59ab113b..1706877a 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -856,6 +856,9 @@ class QubesVm(object): args['pcidev'] = str(self.pcidevs).strip('[]') args['mem'] = str(self.memory) args['maxmem'] = str(self.maxmem) + if 'meminfo-writer' in self.services and not self.services['meminfo-writer']: + # If dynamic memory management disabled, set maxmem=mem + args['maxmem'] = args['mem'] args['vcpus'] = str(self.vcpus) args['ip'] = self.ip args['mac'] = self.mac From 4214572344c0145647e10c5f17bb02f99538baef Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Apr 2012 10:11:45 +0200 Subject: [PATCH 118/386] dom0/appmenus: remove menu file left by xdg-desktop-menu (#529) --- dom0/aux-tools/remove_appvm_appmenus.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/aux-tools/remove_appvm_appmenus.sh b/dom0/aux-tools/remove_appvm_appmenus.sh index 4e881c53..c7a7a853 100755 --- a/dom0/aux-tools/remove_appvm_appmenus.sh +++ b/dom0/aux-tools/remove_appvm_appmenus.sh @@ -15,6 +15,7 @@ fi if ls $APPSDIR/*.directory $APPSDIR/*.desktop > /dev/null 2>&1; then xdg-desktop-menu uninstall $APPSDIR/*.directory $APPSDIR/*.desktop rm -f $APPSDIR/*.desktop $APPSDIR/*.directory + rm -f $HOME/.config/menus/applications-merged/user-$VMNAME-vm.menu fi if [ -n "$KDE_SESSION_UID" ]; then From c5d0b4e5de19e904ae8e80e24aa58f9630ec05c3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Apr 2012 10:24:12 +0200 Subject: [PATCH 119/386] dom0/core: remove appmenus for HVM on qvm-remove (#23 pro) --- dom0/qvm-core/qubes.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 1706877a..cdd99627 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2208,6 +2208,19 @@ class QubesHVm(QubesVm): f_private.truncate(default_hvm_private_img_size) f_root.close() + def remove_from_disk(self): + if dry_run: + return + + self.remove_appmenus() + super(QubesHVm, self).remove_from_disk() + + def pre_rename(self, new_name): + self.remove_appmenus() + + def post_rename(self, old_name): + self.create_appmenus(False) + def get_disk_utilization_private_img(self): return 0 From 8e6e03d4881269ad10c0d9ac0c1f91f5bcbc0e98 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 18 Apr 2012 10:38:07 +0200 Subject: [PATCH 120/386] version 2.0.17 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index a14da290..a6e7bcb3 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.16 +2.0.17 From 300d0e184134ee46df3a2e8397794e4ff15caf48 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Apr 2012 11:09:53 +0200 Subject: [PATCH 121/386] dom0/core: detect if PCI device not already attached to some other VM (#522) --- dom0/aux-tools/unbind_pci_device.sh | 8 ++++++++ dom0/qvm-core/qubes.py | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dom0/aux-tools/unbind_pci_device.sh b/dom0/aux-tools/unbind_pci_device.sh index 3995ec06..8df56f2c 100755 --- a/dom0/aux-tools/unbind_pci_device.sh +++ b/dom0/aux-tools/unbind_pci_device.sh @@ -29,6 +29,14 @@ BDF=0000:$BDF #echo -n "Binding device $BDF to xen-pciback..." if [ -e /sys/bus/pci/drivers/pciback/$BDF ]; then # Already bound to pciback + # Check if device not assigned to any RUNNING VM + XS_PATH=/local/domain/0/backend/pci + GREP_RE="^$XS_PATH/[0-9]*/[0-9]*/dev-[0-9]* = \"$BDF\"" + if xenstore-ls -f $XS_PATH | grep -q "$GREP_RE"; then + DOMID=`xenstore-ls -f $XS_PATH | grep "$GREP_RE"|cut -d/ -f7` + echo "ERROR: Device already attached to the running VM '`xl domname $DOMID`'" >&2 + exit 1 + fi exit 0 fi diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index cdd99627..3d0f6e96 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1372,7 +1372,10 @@ class QubesVm(object): # Bind pci devices to pciback driver for pci in self.pcidevs: - subprocess.check_call(['sudo', qubes_pciback_cmd, pci]) + try: + subprocess.check_call(['sudo', qubes_pciback_cmd, pci]) + except subprocess.CalledProcessError: + raise QubesException("Failed to prepare PCI device %s" % pci) xl_cmdline = ['sudo', '/usr/sbin/xl', 'create', self.conf_file, '-q', '-p'] From e844d31ac916f93fbd5fed5cc404f30a9a9e8beb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Apr 2012 12:31:24 +0200 Subject: [PATCH 122/386] dom0/qvm-prefs: validate memory parameters (#497) --- dom0/qvm-tools/qvm-prefs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 3d652201..4d17a3d8 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -98,14 +98,38 @@ def set_memory(vms, vm, args): print >> sys.stderr, "Missing memory argument!" exit (1) - vm.memory = int(args[0]) + new_memory = int(args[0]) + + if new_memory <= 0: + print >>sys.stderr, "Memory size must be positive" + return False + + if new_memory > vm.maxmem: + print >>sys.stderr, "Memory size must be less or equal to maxmem" + return False + + vm.memory = new_memory def set_maxmem(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing maxmem argument!" exit (1) - vm.maxmem = int(args[0]) + new_maxmem = int(args[0]) + + if new_maxmem <= 0: + print >>sys.stderr, "Memory size must be positive" + return False + + qubes_host = QubesHost() + if new_maxmem > qubes_host.memory_total/1024: + print >> sys.stderr, "This host has only {0} MB of RAM".format(qubes_host.memory_total/1024) + return False + + if new_maxmem < vm.memory: + print >> sys.stderr, "WARNING: new maxmem smaller than memory property - VM will be able to use only 'maxmem' memory amount". + + vm.maxmem = new_maxmem def set_mac(vms, vm, args): if len (args) != 1: From 202edd63e6ca36a7c934b0cc2c664f2dc6a7a4ff Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Apr 2012 12:31:58 +0200 Subject: [PATCH 123/386] dom0/core: force memory <= maxmem at VM startup (#497) --- dom0/qvm-core/qubes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 3d0f6e96..f587d462 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -855,6 +855,8 @@ class QubesVm(object): args['vmdir'] = self.dir_path args['pcidev'] = str(self.pcidevs).strip('[]') args['mem'] = str(self.memory) + if self.maxmem < self.memory: + args['mem'] = str(self.maxmem) args['maxmem'] = str(self.maxmem) if 'meminfo-writer' in self.services and not self.services['meminfo-writer']: # If dynamic memory management disabled, set maxmem=mem From 5bfe1f7c60f4c4bfcf7a8c0b00a905586862b6bf Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 19 Apr 2012 01:13:26 +0200 Subject: [PATCH 124/386] dom0/core: introduce "Starting" state (#520) Represent VM which is running, but gui daemon hasn't connected yet. --- dom0/qvm-core/qubes.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f587d462..4c9aeba2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -640,14 +640,28 @@ class QubesVm(object): elif dominfo['dying']: return "Dying" else: - return "Running" + if not self.is_fully_usable(): + return "Starting" + else: + return "Running" else: return 'Halted' return "NA" + def is_fully_usable(self): + xid = self.get_xid() + if xid < 0: + return False + if not os.path.exists('/var/run/qubes/guid_running.%d' % xid): + return False + # currently qrexec daemon doesn't cleanup socket in /var/run/qubes, so + # it can be left from some other VM + return True + def is_running(self): - if self.get_power_state() == "Running": + # in terms of Xen and internal logic - starting VM is running + if self.get_power_state() in ["Running", "Starting"]: return True else: return False From 85609a764f219858493dacc62938c8b68d5bd751 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 19 Apr 2012 14:43:05 +0200 Subject: [PATCH 125/386] dom0/core: do not write netvm_domid for halted VMs --- dom0/qvm-core/qubes.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4c9aeba2..75c8a063 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1896,11 +1896,17 @@ class QubesProxyVm(QubesNetVm): self.write_iptables_xenstore_entry() def write_netvm_domid_entry(self, xid = -1): + if not self.is_running(): + return + if xid < 0: xid = self.get_xid() - xs.write('', "/local/domain/{0}/qubes_netvm_domid".format(xid), - "{0}".format(self.netvm.get_xid())) + if self.netvm is None: + xs.write('', "/local/domain/{0}/qubes_netvm_domid".format(xid), '') + else: + xs.write('', "/local/domain/{0}/qubes_netvm_domid".format(xid), + "{0}".format(self.netvm.get_xid())) def write_iptables_xenstore_entry(self): xs.rm('', "/local/domain/{0}/qubes_iptables_domainrules".format(self.get_xid())) From 13d1080eb0f612ccada3faa9a81ab2f6946ac60b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 00:11:06 +0200 Subject: [PATCH 126/386] dom0/backup-restore: support for restore of HVM --- dom0/qvm-core/qubesutils.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 09f63401..9cfe57b5 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -885,8 +885,7 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): + ('}' if vm.is_netvm() else '')"}, "type": {"func": "'Tpl' if vm.is_template() else \ - ('Proxy' if vm.is_proxyvm() else \ - (' Net' if vm.is_netvm() else 'App'))"}, + vm.type.replace('VM','')"}, "updbl" : {"func": "'Yes' if vm.updateable else ''"}, @@ -1135,10 +1134,14 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca new_vm = None try: restore_vm_dir (backup_dir, vm.dir_path, qubes_appvms_dir); - new_vm = host_collection.add_new_appvm(vm.name, template, - conf_file=vm.conf_file, - dir_path=vm.dir_path, - label=vm.label) + if vm.type == "HVM": + new_vm = host_collection.add_new_hvm(vm.name, + label=vm.label) + else: + new_vm = host_collection.add_new_appvm(vm.name, template, + conf_file=vm.conf_file, + dir_path=vm.dir_path, + label=vm.label) except Exception as err: error_callback("ERROR: {0}".format(err)) error_callback("*** Skiping VM: {0}".format(vm.name)) From 0654a41c6acd7eece41777c2f1c924fdad2465e3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 00:14:09 +0200 Subject: [PATCH 127/386] vm version 1.7.19 - sync with master branch --- version_vm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_vm b/version_vm index 50ffc5aa..ae6ddf7e 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.3 +1.7.19 From b52add2590abb99a3dbea33b8ec08edf760c81d2 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 20 Apr 2012 00:31:13 +0200 Subject: [PATCH 128/386] version 2.0.18-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index a6e7bcb3..c945ef14 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.17 +2.0.18 From 27b5aac7ad4900ea9c89d3e0e2aae1051cb92303 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 02:52:05 +0200 Subject: [PATCH 129/386] dom0/backup-restore: restore all attributes --- dom0/qvm-core/qubesutils.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 9cfe57b5..c2c29a34 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -834,6 +834,12 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): else: netvm_name = vm.netvm.name vms_to_restore[vm.name]['netvm'] = netvm_name + # Set to None to not confuse QubesVm object from backup + # collection with host collection (further in clone_attrs). Set + # directly _netvm to suppress setter action, especially + # modifying firewall + vm._netvm = None + netvm_on_host = host_collection.get_vm_by_name (netvm_name) # No netvm on the host? @@ -1036,6 +1042,12 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca host_collection.pop(new_vm.qid) continue + try: + new_vm.clone_attrs(vm) + except Exception as err: + error_callback("ERROR: {0}".format(err)) + error_callback("*** Some VM property will not be restored") + try: new_vm.create_appmenus(verbose=True) except Exception as err: @@ -1095,6 +1107,12 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca new_vm.uses_default_netvm = False new_vm.netvm = netvm + try: + new_vm.clone_attrs(vm) + except Exception as err: + error_callback("ERROR: {0}".format(err)) + error_callback("*** Some VM property will not be restored") + try: new_vm.verify_files() except Exception as err: @@ -1153,6 +1171,12 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca new_vm.uses_default_netvm = False new_vm.netvm = netvm + try: + new_vm.clone_attrs(vm) + except Exception as err: + error_callback("ERROR: {0}".format(err)) + error_callback("*** Some VM property will not be restored") + try: new_vm.create_appmenus(verbose=True) except Exception as err: From c46edd9fb13b91bc94ab5583b1d184ced740eec4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 02:55:11 +0200 Subject: [PATCH 130/386] dom0/backup-restore: minor fix for HVM restore summary --- dom0/qvm-core/qubesutils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index c2c29a34..154b77c9 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -891,6 +891,7 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): + ('}' if vm.is_netvm() else '')"}, "type": {"func": "'Tpl' if vm.is_template() else \ + 'HVM' if vm.type == 'HVM' else \ vm.type.replace('VM','')"}, "updbl" : {"func": "'Yes' if vm.updateable else ''"}, From 1b966eae80046f2aeab5f32047451b3f2254084a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 02:56:09 +0200 Subject: [PATCH 131/386] dom0/backup-restore: display netvm of proxyvm --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 154b77c9..5b777f38 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -899,7 +899,7 @@ def backup_restore_print_summary(restore_info, print_callback = print_stdout): "template": {"func": "'n/a' if vm.is_template() or vm.template is None else\ vm_info['template']"}, - "netvm": {"func": "'n/a' if vm.is_netvm() else\ + "netvm": {"func": "'n/a' if vm.is_netvm() and not vm.is_proxyvm() else\ ('*' if vm.uses_default_netvm else '') +\ vm_info['netvm'] if vm.netvm is not None else '-'"}, From 924886a6390def265d997219081dcb28382c1ad9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 02:56:46 +0200 Subject: [PATCH 132/386] dom0/backup-restore: set network dependencies when all VMs are restored To avoid complex restore order resolution. --- dom0/qvm-core/qubesutils.py | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 5b777f38..67cd3b9f 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -1077,12 +1077,6 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca template_name = vm_info['template'] template = host_collection.get_vm_by_name(template_name) - if not vm.uses_default_netvm: - uses_default_netvm = False - netvm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None - else: - uses_default_netvm = True - new_vm = None try: restore_vm_dir (backup_dir, vm.dir_path, qubes_servicevms_dir); @@ -1104,10 +1098,6 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca host_collection.pop(new_vm.qid) continue - if vm.is_proxyvm() and not uses_default_netvm: - new_vm.uses_default_netvm = False - new_vm.netvm = netvm - try: new_vm.clone_attrs(vm) except Exception as err: @@ -1144,12 +1134,6 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca template_name = vm_info['template'] template = host_collection.get_vm_by_name(template_name) - if not vm.uses_default_netvm: - uses_default_netvm = False - netvm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None - else: - uses_default_netvm = True - new_vm = None try: restore_vm_dir (backup_dir, vm.dir_path, qubes_appvms_dir); @@ -1168,10 +1152,6 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca host_collection.pop(new_vm.qid) continue - if not uses_default_netvm: - new_vm.uses_default_netvm = False - new_vm.netvm = netvm - try: new_vm.clone_attrs(vm) except Exception as err: @@ -1192,6 +1172,21 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca host_collection.pop(new_vm.qid) continue + # Set network dependencies - only non-default netvm setting + for vm_info in restore_info.values(): + if not vm_info['good-to-go']: + continue + if 'vm' not in vm_info: + continue + vm = vm_info['vm'] + host_vm = host_collection.get_vm_by_name(vm.name) + if host_vm is None: + # Failed/skipped VM + continue + + if not vm.uses_default_netvm: + host_vm.netvm = host_collection.get_vm_by_name (vm_info['netvm']) if vm_info['netvm'] is not None else None + host_collection.save() if lock_obtained: host_collection.unlock_db() From cc5ce33e91ef86a64e150ec22bf423cbe52830b8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 03:12:06 +0200 Subject: [PATCH 133/386] dom0/core: include pcidevs and include_in_backups in cloned attrs Preserve it in qvm-clone and backup-restore --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 75c8a063..00997af2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1011,7 +1011,7 @@ class QubesVm(object): def get_clone_attrs(self): return ['kernel', 'uses_default_kernel', 'netvm', 'uses_default_netvm', \ 'memory', 'maxmem', 'kernelopts', 'uses_default_kernelopts', 'services', 'vcpus', \ - '_mac'] + '_mac', 'pcidevs', 'include_in_backups'] def clone_attrs(self, src_vm): for prop in self.get_clone_attrs(): From ff2be63090b5552c9afe512c45de6f73ec11faf9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 13:49:33 +0200 Subject: [PATCH 134/386] dom0/core: rename "Starting" start to "Transient" This state can also appear at VM shutdown. --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 00997af2..53104c6e 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -641,7 +641,7 @@ class QubesVm(object): return "Dying" else: if not self.is_fully_usable(): - return "Starting" + return "Transient" else: return "Running" else: @@ -661,7 +661,7 @@ class QubesVm(object): def is_running(self): # in terms of Xen and internal logic - starting VM is running - if self.get_power_state() in ["Running", "Starting"]: + if self.get_power_state() in ["Running", "Transient"]: return True else: return False From ff0b6d4352473596bc9d02133ea0b6eaf144ff7b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 14:47:55 +0200 Subject: [PATCH 135/386] dom0/core: parse memory and maxmem as int --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 53104c6e..83cfbb68 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -241,8 +241,8 @@ class QubesVm(object): "uses_default_netvm": { "default": True, 'order': 20 }, "netvm": { "default": None, "attr": "_netvm", 'order': 20 }, "label": { "attr": "_label", "default": QubesVmLabels["red"], 'order': 20 }, - "memory": { "default": default_memory, 'order': 20 }, - "maxmem": { "default": None, 'order': 25 }, + "memory": { "default": default_memory, 'order': 20, "eval": "int(value)" }, + "maxmem": { "default": None, 'order': 25, "eval": "int(value) if value eles None" }, "pcidevs": { "default": '[]', 'order': 25, "eval": \ '[] if value in ["none", None] else eval(value) if value.find("[") >= 0 else eval("[" + value + "]")' }, # Internal VM (not shown in qubes-manager, doesn't create appmenus entries From 9b798799534b3f6d0c1167f59eab9db3443df6f8 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 20 Apr 2012 15:07:09 +0200 Subject: [PATCH 136/386] version 2.0.19-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index c945ef14..ed2af5c1 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.18 +2.0.19 From 19d10d382919ed5f0b3c32703cb92309ef8ef670 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Apr 2012 15:39:13 +0200 Subject: [PATCH 137/386] dom0/core: fix memory parse fix --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 83cfbb68..ce88d74d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -242,7 +242,7 @@ class QubesVm(object): "netvm": { "default": None, "attr": "_netvm", 'order': 20 }, "label": { "attr": "_label", "default": QubesVmLabels["red"], 'order': 20 }, "memory": { "default": default_memory, 'order': 20, "eval": "int(value)" }, - "maxmem": { "default": None, 'order': 25, "eval": "int(value) if value eles None" }, + "maxmem": { "default": None, 'order': 25, "eval": "int(value) if value else None" }, "pcidevs": { "default": '[]', 'order': 25, "eval": \ '[] if value in ["none", None] else eval(value) if value.find("[") >= 0 else eval("[" + value + "]")' }, # Internal VM (not shown in qubes-manager, doesn't create appmenus entries From f12bc915cd5d7dfd1361b51faf7d306a40ea191e Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 20 Apr 2012 17:36:15 +0200 Subject: [PATCH 138/386] version 2.0.20-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index ed2af5c1..d17d1f3b 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.19 +2.0.20 From 07314a5db00862c220adfe5d8adb18a36ff115d0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 22 Apr 2012 23:56:04 +0200 Subject: [PATCH 139/386] dom0/qvm-start: fix --cdrom support. --- dom0/qvm-tools/qvm-start | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index fd1bf67e..493e09f9 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -71,7 +71,7 @@ def main(): options.drive = 'hd:' + options.drive_hd if options.drive_cdrom: - options.drive = 'cdrom:' + options.drive_hd + options.drive = 'cdrom:' + options.drive_cdrom if options.drive: if hasattr(vm, 'drive'): From c93744d762542d9cb32e084a88e190d04c9650ce Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 12:15:50 +0200 Subject: [PATCH 140/386] dom0/qvm-prefs: typo fix --- dom0/qvm-tools/qvm-prefs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 4d17a3d8..b4e7d075 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -127,7 +127,7 @@ def set_maxmem(vms, vm, args): return False if new_maxmem < vm.memory: - print >> sys.stderr, "WARNING: new maxmem smaller than memory property - VM will be able to use only 'maxmem' memory amount". + print >> sys.stderr, "WARNING: new maxmem smaller than memory property - VM will be able to use only 'maxmem' memory amount" vm.maxmem = new_maxmem From f84f2fd762a3d0679adad14d1db863245524a831 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 12:17:28 +0200 Subject: [PATCH 141/386] dom0/qvm-prefs: remove duplicated set_include_in_backups --- dom0/qvm-tools/qvm-prefs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index b4e7d075..7ceefb2a 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -289,14 +289,6 @@ def set_include_in_backups(vms, vm, args): vm.include_in_backups = bool(eval(args[0].capitalize())) return True -def set_include_in_backups(vms, vm, args): - if len (args) != 1: - print >> sys.stderr, "Missing value (True/False)!" - return False - - vm.include_in_backups = bool(eval(args[0].capitalize())) - return True - properties = { "include_in_backups": set_include_in_backups, "pcidevs": set_pcidevs, From c76d2fd864ba820a8e055b566fd2ae05f524457b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 12:18:44 +0200 Subject: [PATCH 142/386] dom0/qvm-start: remove obsolete --console switch --- dom0/qvm-tools/qvm-start | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 493e09f9..c8c8031f 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -35,8 +35,6 @@ def main(): parser.add_option ("-q", "--quiet", action="store_false", dest="verbose", default=True) parser.add_option ("--no-guid", action="store_true", dest="noguid", default=False, help="Do not start the GUId (ignored)") - parser.add_option ("--console", action="store_true", dest="debug_console", default=False, - help="Attach debugging console to the newly started VM") parser.add_option ("--drive", dest="drive", default=None, help="Temporarily attach specified drive as CD/DVD or hard disk (can be specified with prefix 'hd:' or 'cdrom:', default is cdrom)") parser.add_option ("--hddisk", dest="drive_hd", default=None, @@ -85,7 +83,7 @@ def main(): try: vm.verify_files() - xid = vm.start(debug_console=options.debug_console, verbose=options.verbose, preparing_dvm=options.preparing_dvm, start_guid=not options.noguid) + xid = vm.start(verbose=options.verbose, preparing_dvm=options.preparing_dvm, start_guid=not options.noguid) except (IOError, OSError, QubesException) as err: print >> sys.stderr, "ERROR: {0}".format(err) exit (1) From a38f1b4284aeb3ccb21d8a06f5ee3b6432ffc482 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 12:19:54 +0200 Subject: [PATCH 143/386] dom0/core: add 'debug' VM property (#537) --- dom0/qvm-core/qubes.py | 16 +++++++++++++--- dom0/qvm-tools/qvm-prefs | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index ce88d74d..98997838 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -256,6 +256,7 @@ class QubesVm(object): "mac": { "attr": "_mac", "default": None }, "include_in_backups": { "default": True }, "services": { "default": {}, "eval": "eval(str(value))" }, + "debug": { "default": False }, ##### Internal attributes - will be overriden in __init__ regardless of args "appmenus_templates_dir": { "eval": \ 'self.dir_path + "/" + default_appmenus_templates_subdir if self.updateable else ' + \ @@ -272,7 +273,7 @@ class QubesVm(object): for prop in ['qid', 'name', 'dir_path', 'memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ 'kernelopts', 'services', 'installed_by_rpm',\ - 'uses_default_netvm', 'include_in_backups' ]: + 'uses_default_netvm', 'include_in_backups', 'debug' ]: attrs[prop]['save'] = 'str(self.%s)' % prop # Simple paths for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: @@ -899,6 +900,9 @@ class QubesVm(object): args['otherdevs'] = "'script:file:{dir}/modules.img,xvdd,{mode}',".format(dir=self.kernels_dir, mode=modulesmode) if hasattr(self, 'kernelopts'): args['kernelopts'] = self.kernelopts + if self.debug: + print >> sys.stderr, "--> Debug mode: adding 'earlyprintk=xen' to kernel opts" + args['kernelopts'] += ' earlyprintk=xen' return args @@ -1332,7 +1336,10 @@ class QubesVm(object): print >> sys.stderr, "--> Starting Qubes GUId..." xid = self.get_xid() - retcode = subprocess.call ([qubes_guid_path, "-d", str(xid), "-c", self.label.color, "-i", self.label.icon, "-l", str(self.label.index)]) + guid_cmd = [qubes_guid_path, "-d", str(xid), "-c", self.label.color, "-i", self.label.icon, "-l", str(self.label.index)] + if self.debug: + guid_cmd += ['-v', '-v'] + retcode = subprocess.call (guid_cmd) if (retcode != 0) : raise QubesException("Cannot start qubes_guid!") @@ -2724,7 +2731,7 @@ class QubesVmCollection(dict): "installed_by_rpm", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services", "include_in_backups" ) + "mac", "services", "include_in_backups", "debug" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) @@ -2783,6 +2790,9 @@ class QubesVmCollection(dict): if "kernelopts" not in kwargs: kwargs["uses_default_kernelopts"] = True + if "debug" in kwargs: + kwargs["debug"] = True if kwargs["debug"] == "True" else False + return kwargs def set_netvm_dependency(self, element): diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 7ceefb2a..f2707d48 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -75,6 +75,8 @@ def do_list(vm): print fmt.format ("kernelopts", "%s (default)" % vm.kernelopts) else: print fmt.format ("kernelopts", vm.kernelopts) + if hasattr(vm, 'debug'): + print fmt.format("debug", "on" if vm.debug else "off") if hasattr(vm, 'drive'): print fmt.format("drive", str(vm.drive)) @@ -289,6 +291,19 @@ def set_include_in_backups(vms, vm, args): vm.include_in_backups = bool(eval(args[0].capitalize())) return True +def set_debug(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing value (True/False or on/off)!" + return False + + if args[0].lower() == "on": + vm.debug = True + elif args[0].lower() == "off": + vm.debug = False + else: + vm.debug = bool(eval(args[0].capitalize())) + return True + properties = { "include_in_backups": set_include_in_backups, "pcidevs": set_pcidevs, @@ -303,6 +318,7 @@ properties = { "name": set_name, "drive": set_drive, "mac": set_mac, + "debug": set_debug, } From 90845484566b97fc09ee009483c2d59fba3f6f21 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 12:38:55 +0200 Subject: [PATCH 144/386] dom0/qvm-start: allow temporally enable debug mode (#537) --- dom0/qvm-tools/qvm-start | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index c8c8031f..17d80fc6 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -45,6 +45,8 @@ def main(): help="Do actions necessary when preparing DVM image") parser.add_option ("--custom-config", action="store", dest="custom_config", default=None, help="Use custom Xen config instead of Qubes-generated one") + parser.add_option ("--debug", action="store_true", dest="debug", default=False, + help="Enable debug mode for this VM (until its shutdown)") (options, args) = parser.parse_args () if (len (args) != 1): @@ -81,6 +83,9 @@ def main(): if options.custom_config: vm.conf_file = options.custom_config + if options.debug: + vm.debug = True + try: vm.verify_files() xid = vm.start(verbose=options.verbose, preparing_dvm=options.preparing_dvm, start_guid=not options.noguid) @@ -88,4 +93,10 @@ def main(): print >> sys.stderr, "ERROR: {0}".format(err) exit (1) + if options.debug: + print >> sys.stderr, "--> Debug mode enabled. Useful logs: " + print >> sys.stderr, " /var/log/xen/console/guest-%s.log" % vmname + print >> sys.stderr, " /var/log/qubes/guid.%d.log" % xid + print >> sys.stderr, " /var/log/qubes/qrexec.%d.log" % xid + main() From ac804b5c2df5d7e389440811bb8090a7e2678c03 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 22:01:13 +0200 Subject: [PATCH 145/386] dom0/qvm-prefs: relax memory check Allow memory > maxmem, anyway it will be enforced at VM boot. This allows to set memory and maxmem in any order. Also required to increase memory for HVM. --- dom0/qvm-tools/qvm-prefs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index f2707d48..a69a919a 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -106,8 +106,9 @@ def set_memory(vms, vm, args): print >>sys.stderr, "Memory size must be positive" return False - if new_memory > vm.maxmem: - print >>sys.stderr, "Memory size must be less or equal to maxmem" + qubes_host = QubesHost() + if new_memory > qubes_host.memory_total/1024: + print >> sys.stderr, "This host has only {0} MB of RAM".format(qubes_host.memory_total/1024) return False vm.memory = new_memory From db6b9b642c5e20d81c662e52628f8ccd0dd0d706 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 23 Apr 2012 23:26:40 +0200 Subject: [PATCH 146/386] dom0/core: setup xen logs permissions (#539) --- dom0/init.d/qubes_core | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index a3974289..dbcadccc 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -36,6 +36,9 @@ start() touch /var/run/qubes/xl-lock chgrp qubes /var/run/qubes/xl-lock chmod 660 /var/run/qubes/xl-lock + chgrp -R qubes /var/log/xen + chmod -R g+rX /var/log/xen + chmod g+s /var/log/xen/console mkdir -p /var/run/xen-hotplug xenstore-write /local/domain/0/name dom0 From 705699baf2659d4f2acd21bda739693098a40a4f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 01:38:02 +0200 Subject: [PATCH 147/386] dom0/core: include VM name in "insufficient memory" message (#534) --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 98997838..b34a5eb2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1391,7 +1391,7 @@ class QubesVm(object): qmemman_client = QMemmanClient() if not qmemman_client.request_memory(mem_required): qmemman_client.close() - raise MemoryError ("ERROR: insufficient memory to start this VM") + raise MemoryError ("ERROR: insufficient memory to start VM '%s'" % self.name) # Bind pci devices to pciback driver for pci in self.pcidevs: From 7d799e1d12253e76081674c44352f953228c36db Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 01:40:56 +0200 Subject: [PATCH 148/386] dom0/qvm-tools: add GUI (tray balloon) error reporing to qvm-start and extend it in qvm-run (#534) --- dom0/qvm-tools/qvm-run | 2 ++ dom0/qvm-tools/qvm-start | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index db5ad720..84f7e099 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -87,6 +87,8 @@ def vm_run_cmd(vm, cmd, options): notify_function = tray_notify_generic if options.tray else None, passio = options.passio, localcmd = options.localcmd) except QubesException as err: + if options.tray: + tray_notify_error(str(err)) print >> sys.stderr, "ERROR: %s" % str(err) exit(1) diff --git a/dom0/qvm-tools/qvm-start b/dom0/qvm-tools/qvm-start index 17d80fc6..bceadff8 100755 --- a/dom0/qvm-tools/qvm-start +++ b/dom0/qvm-tools/qvm-start @@ -26,13 +26,24 @@ from optparse import OptionParser import subprocess import os import sys +import dbus qubes_guid_path = "/usr/bin/qubes_guid" +notify_object = None + +def tray_notify(str, label, timeout = 3000): + notify_object.Notify("Qubes", 0, label.icon, "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications") + +def tray_notify_error(str, timeout = 3000): + notify_object.Notify("Qubes", 0, "dialog-error", "Qubes", str, [], [], timeout, dbus_interface="org.freedesktop.Notifications") + def main(): usage = "usage: %prog [options] " parser = OptionParser (usage) parser.add_option ("-q", "--quiet", action="store_false", dest="verbose", default=True) + parser.add_option ("--tray", action="store_true", dest="tray", default=False, + help="Use tray notifications instead of stdout" ) parser.add_option ("--no-guid", action="store_true", dest="noguid", default=False, help="Do not start the GUId (ignored)") parser.add_option ("--drive", dest="drive", default=None, @@ -53,6 +64,10 @@ def main(): parser.error ("You must specify VM name!") vmname = args[0] + if options.tray: + global notify_object + notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_reading() qvm_collection.load() @@ -89,8 +104,11 @@ def main(): try: vm.verify_files() xid = vm.start(verbose=options.verbose, preparing_dvm=options.preparing_dvm, start_guid=not options.noguid) - except (IOError, OSError, QubesException) as err: - print >> sys.stderr, "ERROR: {0}".format(err) + except (IOError, OSError, QubesException, MemoryError) as err: + if options.tray: + tray_notify_error(str(err)) + else: + print >> sys.stderr, "ERROR: {0}".format(err) exit (1) if options.debug: From b0eb5d5f1460ec3975b21bb6efb6465e4c887af0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 01:41:22 +0200 Subject: [PATCH 149/386] dom0/appmenus: run qvm-start with --tray (#534) --- dom0/misc/qubes-start.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/misc/qubes-start.desktop b/dom0/misc/qubes-start.desktop index e9eb63cc..63db9f3e 100644 --- a/dom0/misc/qubes-start.desktop +++ b/dom0/misc/qubes-start.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Version=1.0 Type=Application -Exec=qvm-start --quiet %VMNAME% +Exec=qvm-start --quiet --tray %VMNAME% Icon=%VMDIR%/icon.png Terminal=false Name=%VMNAME%: Start From 2e7eb69c1a934b2785055174cf7505eb74a7cc9a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 02:08:49 +0200 Subject: [PATCH 150/386] dom0/qvm-firewall: clarify message (#24 pro) --- dom0/qvm-tools/qvm-firewall | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall index 301c6a0c..f85bc6ff 100755 --- a/dom0/qvm-tools/qvm-firewall +++ b/dom0/qvm-tools/qvm-firewall @@ -300,7 +300,7 @@ def main(): if not options.numeric: load_services() if not vm.has_firewall(): - print "INFO: This VM has no firewall set, below defaults are listed" + print "INFO: This VM has no firewall rules set, below defaults are listed" display_firewall(conf) if changed: From 016837a19c95621131e290be4852b4e5b9c75439 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 12:34:31 +0200 Subject: [PATCH 151/386] dom0/core: fix 'drive' saving logic There is no longer need to override get_xml_attrs. Also include 'drive' in properties retrieved from qubes.xml. --- dom0/qvm-core/qubes.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index b34a5eb2..4124f7cf 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2364,11 +2364,6 @@ class QubesHVm(QubesVm): xc.domain_unpause(self.stubdom_xid) super(QubesHVm, self).unpause() - def get_xml_attrs(self): - attrs = super(QubesHVm, self).get_xml_attrs() - attrs["drive"] = str(self.drive) - return attrs - class QubesVmCollection(dict): """ A collection of Qubes VMs indexed by Qubes id (qid) @@ -2731,7 +2726,7 @@ class QubesVmCollection(dict): "installed_by_rpm", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services", "include_in_backups", "debug" ) + "mac", "services", "include_in_backups", "debug", "drive" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) @@ -2793,6 +2788,9 @@ class QubesVmCollection(dict): if "debug" in kwargs: kwargs["debug"] = True if kwargs["debug"] == "True" else False + if "drive" in kwargs and kwargs["drive"] == "None": + kwargs["drive"] = None + return kwargs def set_netvm_dependency(self, element): From 4ce7824fa0d40b8a6d3f8cfb2b43e2dbb6c1e8ca Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 13:07:21 +0200 Subject: [PATCH 152/386] dom0/core: remove unnecessary assignment This is already done by 'eval' entry in _get_attrs_config. --- dom0/qvm-core/qubes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4124f7cf..10a0b4b4 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2189,7 +2189,6 @@ class QubesHVm(QubesVm): kwargs["memory"] = default_hvm_memory super(QubesHVm, self).__init__(**kwargs) - self.config_file_template = config_template_hvm # HVM doesn't support dynamic memory management self.maxmem = self.memory From a8ec5a6506d8e525f7faf4e5925dd98e6648f659 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 13:09:27 +0200 Subject: [PATCH 153/386] dom0/core: add 'timezone' property support (#1 pro) --- dom0/misc/vm-template-hvm.conf | 2 ++ dom0/qvm-core/qubes.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/dom0/misc/vm-template-hvm.conf b/dom0/misc/vm-template-hvm.conf index 2ddfe056..aae0f1b4 100644 --- a/dom0/misc/vm-template-hvm.conf +++ b/dom0/misc/vm-template-hvm.conf @@ -18,6 +18,8 @@ device_model='stubdom-dm' usbdevice='tablet' sdl=0 vnc=0 +localtime = {localtime} +rtc_timeoffset = {timeoffset} disk = [ {rootdev} {privatedev} {otherdevs} diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 10a0b4b4..87b5a70f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2174,6 +2174,7 @@ class QubesHVm(QubesVm): attrs['config_file_template']['eval'] = 'config_template_hvm' attrs['drive'] = { 'save': 'str(self.drive)' } attrs['maxmem'].pop('save') + attrs['timezone'] = { 'default': 'localtime', 'save': 'str(self.timezone)' } return attrs @@ -2205,6 +2206,7 @@ class QubesHVm(QubesVm): attrs.remove('uses_default_kernel') attrs.remove('kernelopts') attrs.remove('uses_default_kernelopts') + attrs += [ 'timezone' ] return attrs def create_on_disk(self, verbose, source_template = None): @@ -2292,6 +2294,17 @@ class QubesHVm(QubesVm): params['otherdevs'] = "'script:file:%s,xvdc%s%s'," % (drive_path, type_mode, backend_domain) else: params['otherdevs'] = '' + + if self.timezone.lower() == 'localtime': + params['localtime'] = '1' + params['timeoffset'] = '0' + elif self.timezone.isdigit(): + params['localtime'] = '0' + params['timeoffset'] = self.timezone + else: + print >>sys.stderr, "WARNING: invalid 'timezone' value: %s" % self.timezone + params['localtime'] = '0' + params['timeoffset'] = '0' return params def verify_files(self): From a43fa8f06bbf2cee754b4135e4a9a487338afb3a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 13:10:01 +0200 Subject: [PATCH 154/386] dom0/qvm-prefs: support for setting timezone (#1 pro) --- dom0/qvm-tools/qvm-prefs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index a69a919a..dab46bdd 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -81,6 +81,9 @@ def do_list(vm): if hasattr(vm, 'drive'): print fmt.format("drive", str(vm.drive)) + if hasattr(vm, 'timezone'): + print fmt.format("timezone", str(vm.timezone)) + def set_label(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing label name argument!" @@ -305,6 +308,18 @@ def set_debug(vms, vm, args): vm.debug = bool(eval(args[0].capitalize())) return True +def set_timezone(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing value ('localtime' or timeoffset in seconds)!" + return False + + if not args[0].isdigit() and args[0].lower() == 'localtime': + print >> sys.stderr, "Invalid timezone value!" + return False + + vm.timezone = args[0] + return True + properties = { "include_in_backups": set_include_in_backups, "pcidevs": set_pcidevs, @@ -320,6 +335,7 @@ properties = { "drive": set_drive, "mac": set_mac, "debug": set_debug, + "timezone": set_timezone, } From 3aedb8f363f6660948367e30ad683333358f3cbf Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 24 Apr 2012 13:10:25 +0200 Subject: [PATCH 155/386] dom0/qvm-prefs: fix 'drive' setting Allow clear the property. --- dom0/qvm-tools/qvm-prefs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index dab46bdd..a1e60002 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -284,7 +284,10 @@ def set_drive(vms, vm, args): print >> sys.stderr, "Missing new drive content (file/device)!" return False - vm.drive = args[0] + if args[0] == '' or args[0].lower() == 'none': + vm.drive = None + else: + vm.drive = args[0] return True def set_include_in_backups(vms, vm, args): From db6e655ce71917348ecbf1f43cba48d0ffe03363 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Tue, 24 Apr 2012 16:07:42 +0200 Subject: [PATCH 156/386] version 2.0.21-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index d17d1f3b..7d5624f9 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.20 +2.0.21 From 67722e72bbec700384957b37cffcb823b1a0070e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 25 Apr 2012 00:25:54 +0200 Subject: [PATCH 157/386] vm/qubes-dom0-update: display info when no updates available --- misc/qubes_download_dom0_updates.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/qubes_download_dom0_updates.sh b/misc/qubes_download_dom0_updates.sh index 575ebe77..33bc46d3 100755 --- a/misc/qubes_download_dom0_updates.sh +++ b/misc/qubes_download_dom0_updates.sh @@ -57,6 +57,9 @@ fi if [ -z "$PKGLIST" ]; then # No new updates + if [ "$GUI" = 1 ]; then + zenity --info --text="No new updates available" + fi exit 0 fi From 6a489c0fafe9a135f547107788f24b6509b5afc6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 25 Apr 2012 23:37:03 +0200 Subject: [PATCH 158/386] dom0: fix check-updates cron job --- dom0/aux-tools/qubes-dom0-updates.cron | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/aux-tools/qubes-dom0-updates.cron b/dom0/aux-tools/qubes-dom0-updates.cron index 4942ee6c..8cf805fe 100755 --- a/dom0/aux-tools/qubes-dom0-updates.cron +++ b/dom0/aux-tools/qubes-dom0-updates.cron @@ -13,7 +13,7 @@ echo $$ > $PIDFILE trap "rm $PIDFILE" EXIT # If no updates available - exit here -qvm-dom0-updates --check-only && exit +qubes-dom0-updates --check-only && exit RETCODE=$? if [ "$RETCODE" -ne 100 ]; then @@ -32,4 +32,4 @@ zenity --notification --window-icon=$NOTIFY_ICON --text="Qubes dom0 updates avai zenity --question --title="Qubes Dom0 updates" \ --text="There are updates for dom0 available, do you want to download them now?" || exit 0 -su -c "DISPLAY=:0 qvm-dom0-update --gui" $LOCAL_USER +su -c "DISPLAY=:0 qubes-dom0-update --gui" $LOCAL_USER From bf325fe573cad312d57f2fffb0651bd3260414b6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 25 Apr 2012 23:41:48 +0200 Subject: [PATCH 159/386] dom0+vm/hotplug-script: improve error checking, log only important messages (#477) --- misc/block-snapshot | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/misc/block-snapshot b/misc/block-snapshot index 719b10aa..c57cad4f 100755 --- a/misc/block-snapshot +++ b/misc/block-snapshot @@ -14,7 +14,9 @@ fi shopt -s nullglob -HOTPLUG_STORE="/var/run/xen-hotplug/${XENBUS_PATH//\//-}" +if [ -n "$XENBUS_PATH" ]; then + HOTPLUG_STORE="/var/run/xen-hotplug/${XENBUS_PATH//\//-}" +fi get_dev() { dev=$1 @@ -102,7 +104,10 @@ case "$command" in add) case $t in snapshot|origin) - p=$(xenstore_read "$XENBUS_PATH/params") + p=$(xenstore_read_default "$XENBUS_PATH/params" 'MISSING') + if [ "$p" == "MISSING" ]; then + fatal "Missing device parameters ($t $XENBUS_PATH/params)" + fi base=${p/:*/} cow=${p/*:/} @@ -191,18 +196,20 @@ case "$command" in if [ "$command" = "cleanup" ]; then t=$2 else - t=$(cat $HOTPLUG_STORE-type) + t=$(cat $HOTPLUG_STORE-type 2>/dev/null || echo 'MISSING') fi - case $t in + case "$t" in snapshot|origin) if [ "$command" = "cleanup" ]; then node=$3 else - node=$(cat "$HOTPLUG_STORE-node") + node=$(cat "$HOTPLUG_STORE-node" 2> /dev/null) fi if [ -z "$node" ]; then - fatal "No device node to remove" + #fatal "No device node to remove" + #Most likely already removed + exit 0 fi if [ ! -e "$node" ]; then @@ -258,10 +265,13 @@ case "$command" in for dev in $deps; do if [ -b "$dev" ]; then log debug "Removing $dev" - losetup -d $dev || true 2> /dev/null + losetup -d $dev 2> /dev/null || true fi done + if [ -n "$HOTPLUG_STORE" ]; then + rm $HOTPLUG_STORE-* + fi release_lock "block" exit 0 From 187bc242e5493c3d3f0b735a849301891b218ba8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 26 Apr 2012 14:29:19 +0200 Subject: [PATCH 160/386] dom0: add missing 2> /dev/null to unbind_pci_device.sh (#550) --- dom0/aux-tools/unbind_pci_device.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/aux-tools/unbind_pci_device.sh b/dom0/aux-tools/unbind_pci_device.sh index 8df56f2c..f3839949 100755 --- a/dom0/aux-tools/unbind_pci_device.sh +++ b/dom0/aux-tools/unbind_pci_device.sh @@ -32,7 +32,7 @@ if [ -e /sys/bus/pci/drivers/pciback/$BDF ]; then # Check if device not assigned to any RUNNING VM XS_PATH=/local/domain/0/backend/pci GREP_RE="^$XS_PATH/[0-9]*/[0-9]*/dev-[0-9]* = \"$BDF\"" - if xenstore-ls -f $XS_PATH | grep -q "$GREP_RE"; then + if xenstore-ls -f $XS_PATH 2> /dev/null | grep -q "$GREP_RE"; then DOMID=`xenstore-ls -f $XS_PATH | grep "$GREP_RE"|cut -d/ -f7` echo "ERROR: Device already attached to the running VM '`xl domname $DOMID`'" >&2 exit 1 From f41f0e965bad2c1a0f3d65070498cb590777089a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 28 Apr 2012 02:03:43 +0200 Subject: [PATCH 161/386] dom0/qvm-ls: show 'n/a' in disk usage for dom0 --- dom0/qvm-tools/qvm-ls | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index 2d2c750b..d4e4e0ee 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -174,7 +174,10 @@ def main(): for vm in vms_to_display: data_row = {} for f in fields_to_display: - data_row[f] = str(eval(fields[f]["func"])) + if vm.qid == 0 and (f.startswith('priv-') or f.startswith('root-') or f == 'disk'): + data_row[f] = 'n/a' + else: + data_row[f] = str(eval(fields[f]["func"])) l = len(data_row[f]) if l > fields[f]["max_width"]: fields[f]["max_width"] = l From 1b9e7808617defe077a140de839fc99376c60efe Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 28 Apr 2012 02:17:04 +0200 Subject: [PATCH 162/386] dom0/core: do not relay on any max xid (#445) What is really required is the maximum number of domains, not its IDs. Use max QID as maximum number of domains. --- dom0/qvm-core/qubes.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 87b5a70f..671e9946 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -60,7 +60,6 @@ qubes_servicevms_dir = qubes_base_dir + "/servicevms" qubes_store_filename = qubes_base_dir + "/qubes.xml" qubes_kernels_base_dir = qubes_base_dir + "/vm-kernels" -qubes_max_xid = 1024 qubes_max_qid = 254 qubes_max_netid = 254 vm_default_netmask = "255.255.255.0" @@ -142,7 +141,7 @@ class QubesHost(object): if previous is None: previous_time = time.time() previous = {} - info = xc.domain_getinfo(0, qubes_max_xid) + info = xc.domain_getinfo(0, qubes_max_qid) for vm in info: previous[vm['domid']] = {} previous[vm['domid']]['cpu_time'] = vm['cpu_time']/vm['online_vcpus'] @@ -151,7 +150,7 @@ class QubesHost(object): current_time = time.time() current = {} - info = xc.domain_getinfo(0, qubes_max_xid) + info = xc.domain_getinfo(0, qubes_max_qid) for vm in info: current[vm['domid']] = {} current[vm['domid']]['cpu_time'] = vm['cpu_time']/max(vm['online_vcpus'],1) @@ -553,7 +552,7 @@ class QubesVm(object): if start_xid < 0: start_xid = 0 try: - domains = xc.domain_getinfo(start_xid, qubes_max_xid-start_xid) + domains = xc.domain_getinfo(start_xid, qubes_max_qid) except xen.lowlevel.xc.Error: return None From 2ec08734dd3395e6f8db240fa317ed5ca02057f0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 28 Apr 2012 02:51:43 +0200 Subject: [PATCH 163/386] dom0/core: guid for HVM is connected to stubdom - respect it when checking its state (#25 pro) --- dom0/qvm-core/qubes.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 671e9946..e882ff77 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2375,6 +2375,14 @@ class QubesHVm(QubesVm): xc.domain_unpause(self.stubdom_xid) super(QubesHVm, self).unpause() + def is_fully_usable(self): + xid = self.stubdom_xid + if xid < 0: + return False + if not os.path.exists('/var/run/qubes/guid_running.%d' % xid): + return False + return True + class QubesVmCollection(dict): """ A collection of Qubes VMs indexed by Qubes id (qid) From 366e405df0b125bec38364a4e2e06ad3f99f4e79 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 30 Apr 2012 13:29:01 +0200 Subject: [PATCH 164/386] dom0: remove unused reset_vm_configs.py --- dom0/aux-tools/reset_vm_configs.py | 24 ------------------------ rpm_spec/core-dom0.spec | 2 -- 2 files changed, 26 deletions(-) delete mode 100755 dom0/aux-tools/reset_vm_configs.py diff --git a/dom0/aux-tools/reset_vm_configs.py b/dom0/aux-tools/reset_vm_configs.py deleted file mode 100755 index e7e6841e..00000000 --- a/dom0/aux-tools/reset_vm_configs.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/python2.6 -from qubes.qubes import QubesVmCollection -import sys -def main(): - if len(sys.argv) != 2: - print 'Usage: fixconf templatename' - sys.exit(1) - qvm_collection = QubesVmCollection() - qvm_collection.lock_db_for_reading() - qvm_collection.load() - qvm_collection.unlock_db() - templ = sys.argv[1] - tvm = qvm_collection.get_vm_by_name(templ) - if tvm is None: - print 'Template', templ, 'does not exist' - sys.exit(1) - if not tvm.is_template(): - print templ, 'is not a template' - sys.exit(1) - for vm in qvm_collection.values(): - if vm.template is not None and vm.template.qid == tvm.qid: - vm.create_config_file() - -main() diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 49f4856e..308beefe 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -103,7 +103,6 @@ cp aux-tools/convert_apptemplate2vm.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/convert_dirtemplate2vm.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/create_apps_for_appvm.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/remove_appvm_appmenus.sh $RPM_BUILD_ROOT/usr/lib/qubes -cp aux-tools/reset_vm_configs.py $RPM_BUILD_ROOT/usr/lib/qubes cp qmemman/server.py $RPM_BUILD_ROOT/usr/lib/qubes/qmemman_daemon.py cp ../misc/meminfo-writer $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../qrexec/qrexec_daemon $RPM_BUILD_ROOT/usr/lib/qubes/ @@ -334,7 +333,6 @@ fi /usr/lib/qubes/convert_dirtemplate2vm.sh /usr/lib/qubes/create_apps_for_appvm.sh /usr/lib/qubes/remove_appvm_appmenus.sh -/usr/lib/qubes/reset_vm_configs.py* /usr/lib/qubes/qmemman_daemon.py* /usr/lib/qubes/meminfo-writer /usr/lib/qubes/qfile-daemon-dvm* From aa4f8aab2c5fd09c75c7278a7a416ec537167e6b Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 30 Apr 2012 13:31:58 +0200 Subject: [PATCH 165/386] version 2.0.22-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 7d5624f9..1b8629f5 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.21 +2.0.22 From fa41bf840c1163a9c97f2368c2baef4f43cab137 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 01:12:19 +0200 Subject: [PATCH 166/386] dom0: provide service for VM to notify about updates availability (#475) --- dom0/aux-tools/qubes-notify-updates | 74 +++++++++++++++++++++++ dom0/aux-tools/qubes.NotifyUpdates | 1 + dom0/aux-tools/qubes.NotifyUpdates.policy | 6 ++ dom0/qvm-core/qubes.py | 1 + rpm_spec/core-dom0.spec | 6 ++ 5 files changed, 88 insertions(+) create mode 100755 dom0/aux-tools/qubes-notify-updates create mode 100644 dom0/aux-tools/qubes.NotifyUpdates create mode 100644 dom0/aux-tools/qubes.NotifyUpdates.policy diff --git a/dom0/aux-tools/qubes-notify-updates b/dom0/aux-tools/qubes-notify-updates new file mode 100755 index 00000000..53bc57cd --- /dev/null +++ b/dom0/aux-tools/qubes-notify-updates @@ -0,0 +1,74 @@ +#!/usr/bin/python +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Marek Marczykowski +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# +import os +import os.path +import sys +import subprocess +import shutil +from datetime import datetime +from qubes.qubes import QubesVmCollection +from qubes.qubes import updates_stat_file + +def main(): + + qvm_collection = QubesVmCollection() + qvm_collection.lock_db_for_reading() + qvm_collection.load() + qvm_collection.unlock_db() + + source = os.getenv("QREXEC_REMOTE_DOMAIN") + + source_vm = qvm_collection.get_vm_by_name(source) + if source_vm is None: + print >> sys.stderr, 'Domain ' + source + ' does not exists (?!)' + exit(1) + + update_count = sys.stdin.readline(128).strip() + if not update_count.isdigit(): + print >> sys.stderr, 'Domain ' + source + ' sent invalid number of updates: ' + update_count + exit(1) + if source_vm.updateable: + # Just trust information from VM itself + update_f = open(vm.dir_path + '/' + updates_stat_file, "w") + update_f.write(update_count) + update_f.close() + elif source_vm.template is not None: + # Hint about updates availability in template + # If template is running - it will notify about updates itself + if source_vm.template.is_running(): + return + # Ignore no-updates info + if int(update_count) > 0: + stat_file = source_vm.template.dir_path + '/' + updates_stat_file + # If VM is started before last updates.stat - it means that updates + # already was installed (but VM still hasn't been restarted), or other + # VM has already notified about updates availability + if os.path.exists(stat_file) and \ + source_vm.get_start_time() < datetime.fromtimestamp(os.path.getmtime(stat_file)): + return + update_f = open(stat_file, "w") + update_f.write(update_count) + update_f.close() + else: + print >> sys.stderr, 'Ignoring notification of no updates' + +main() diff --git a/dom0/aux-tools/qubes.NotifyUpdates b/dom0/aux-tools/qubes.NotifyUpdates new file mode 100644 index 00000000..b2ea16ed --- /dev/null +++ b/dom0/aux-tools/qubes.NotifyUpdates @@ -0,0 +1 @@ +/usr/lib/qubes/qubes-notify-updates diff --git a/dom0/aux-tools/qubes.NotifyUpdates.policy b/dom0/aux-tools/qubes.NotifyUpdates.policy new file mode 100644 index 00000000..0f00b0b6 --- /dev/null +++ b/dom0/aux-tools/qubes.NotifyUpdates.policy @@ -0,0 +1,6 @@ +## Note that policy parsing stops at the first match, +## so adding anything below "$anyvm $anyvm action" line will have no effect + +## Please use a single # to start your custom comments + +$anyvm dom0 allow diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index e882ff77..03dcaa49 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -90,6 +90,7 @@ start_appmenu_template = '/usr/share/qubes/qubes-start.desktop' qubes_whitelisted_appmenus = 'whitelisted-appmenus.list' dom0_update_check_interval = 6*3600 +updates_stat_file = 'updates.stat' # how long (in sec) to wait for VMs to shutdown # before killing them (when used qvm-run with --wait option) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 308beefe..f6ec33e1 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -109,6 +109,7 @@ cp ../qrexec/qrexec_daemon $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../qrexec/qrexec_client $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../qrexec/qrexec_policy $RPM_BUILD_ROOT/usr/lib/qubes/ cp aux-tools/qfile-dom0-unpacker $RPM_BUILD_ROOT/usr/lib/qubes/ +cp aux-tools/qubes-notify-updates $RPM_BUILD_ROOT/usr/lib/qubes/ cp aux-tools/qubes-receive-updates $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_add_change $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_remove $RPM_BUILD_ROOT/usr/lib/qubes/ @@ -121,6 +122,8 @@ cp ../qubes_rpc/qubes.VMShell.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes. cp qubes.SyncAppMenus.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes.SyncAppMenus cp qubes.SyncAppMenus $RPM_BUILD_ROOT/etc/qubes_rpc/ cp ../qrexec/qubes_rpc_multiplexer $RPM_BUILD_ROOT/usr/lib/qubes +cp aux-tools/qubes.NotifyUpdates.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes.NotifyUpdates +cp aux-tools/qubes.NotifyUpdates $RPM_BUILD_ROOT/etc/qubes_rpc/ cp aux-tools/qubes.ReceiveUpdates.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes.ReceiveUpdates cp aux-tools/qubes.ReceiveUpdates $RPM_BUILD_ROOT/etc/qubes_rpc/ install -D aux-tools/qubes-dom0.modules $RPM_BUILD_ROOT/etc/sysconfig/modules/qubes-dom0.modules @@ -336,6 +339,7 @@ fi /usr/lib/qubes/qmemman_daemon.py* /usr/lib/qubes/meminfo-writer /usr/lib/qubes/qfile-daemon-dvm* +/usr/lib/qubes/qubes-notify-updates /usr/lib/qubes/qubes-receive-updates /usr/lib/qubes/block_add_change /usr/lib/qubes/block_remove @@ -381,9 +385,11 @@ fi %attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.Filecopy %attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.OpenInVM %attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.SyncAppMenus +%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.NotifyUpdates %attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.ReceiveUpdates %attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.VMShell /etc/qubes_rpc/qubes.SyncAppMenus +/etc/qubes_rpc/qubes.NotifyUpdates /etc/qubes_rpc/qubes.ReceiveUpdates %attr(4750,root,qubes) /usr/lib/qubes/qrexec_daemon %attr(2770,root,qubes) %dir /var/log/qubes From af1f88755d4f363b981f8aa9464458cfde27fbce Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 01:14:04 +0200 Subject: [PATCH 167/386] vm: notify dom0 when updates available in VM (#475) --- rpm_spec/core-vm.spec | 5 +++++ vm-systemd/qubes-sysinit.sh | 6 +++--- vm-systemd/qubes-update-check.service | 7 +++++++ vm-systemd/qubes-update-check.timer | 11 +++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 vm-systemd/qubes-update-check.service create mode 100644 vm-systemd/qubes-update-check.timer diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index c11b699d..3158b57b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -87,6 +87,7 @@ install vm-init.d/* $RPM_BUILD_ROOT/etc/init.d/ install -d $RPM_BUILD_ROOT/lib/systemd/system $RPM_BUILD_ROOT/usr/lib/qubes/init install -m 0755 vm-systemd/*.sh $RPM_BUILD_ROOT/usr/lib/qubes/init/ install -m 0644 vm-systemd/qubes-*.service $RPM_BUILD_ROOT/lib/systemd/system/ +install -m 0644 vm-systemd/qubes-*.timer $RPM_BUILD_ROOT/lib/systemd/system/ install -m 0644 vm-systemd/NetworkManager.service $RPM_BUILD_ROOT/usr/lib/qubes/init/ install -m 0644 vm-systemd/cups.service $RPM_BUILD_ROOT/usr/lib/qubes/init/ install -m 0644 vm-systemd/ntpd.service $RPM_BUILD_ROOT/usr/lib/qubes/init/ @@ -484,6 +485,8 @@ The Qubes core startup configuration for SystemD init. /lib/systemd/system/qubes-netwatcher.service /lib/systemd/system/qubes-network.service /lib/systemd/system/qubes-sysinit.service +/lib/systemd/system/qubes-update-check.service +/lib/systemd/system/qubes-update-check.timer %dir /usr/lib/qubes/init /usr/lib/qubes/init/prepare-dvm.sh /usr/lib/qubes/init/network-proxy-setup.sh @@ -502,6 +505,8 @@ for srv in qubes-dvm qubes-meminfo-writer qubes-qrexec-agent qubes-sysinit qubes /bin/systemctl enable $srv.service 2> /dev/null done +/bin/systemctl enable qubes-update-check.timer 2> /dev/null + # Install overriden services only when original exists for srv in cups NetworkManager ntpd; do if [ -f /lib/systemd/system/$srv.service ]; then diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 65c36063..d78929ca 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -1,9 +1,9 @@ #!/bin/sh # List of services enabled by default (in case of absence of xenstore entry) -DEFAULT_ENABLED_NETVM="network-manager qubes-network" -DEFAULT_ENABLED_PROXYVM="meminfo-writer qubes-network qubes-firewall qubes-netwatcher" -DEFAULT_ENABLED_APPVM="meminfo-writer cups" +DEFAULT_ENABLED_NETVM="network-manager qubes-network qubes-update-check" +DEFAULT_ENABLED_PROXYVM="meminfo-writer qubes-network qubes-firewall qubes-netwatcher qubes-update-check" +DEFAULT_ENABLED_APPVM="meminfo-writer cups qubes-update-check" DEFAULT_ENABLED_TEMPLATEVM=$DEFAULT_ENABLED_APPVM DEFAULT_ENABLED="meminfo-writer" diff --git a/vm-systemd/qubes-update-check.service b/vm-systemd/qubes-update-check.service new file mode 100644 index 00000000..5566eda4 --- /dev/null +++ b/vm-systemd/qubes-update-check.service @@ -0,0 +1,7 @@ +[Unit] +Description=Qubes check for VM updates and notify dom0 +ConditionPathExists=/var/run/qubes-service/qubes-update-check + +[Service] +Type=oneshot +ExecStart=/usr/lib/qubes/qrexec_client_vm dom0 qubes.NotifyUpdates /bin/sh -c 'yum -q check-update|wc -l' diff --git a/vm-systemd/qubes-update-check.timer b/vm-systemd/qubes-update-check.timer new file mode 100644 index 00000000..d63cf45f --- /dev/null +++ b/vm-systemd/qubes-update-check.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Periodically check for updates +ConditionPathExists=/var/run/qubes-service/qubes-update-check + +[Timer] +OnBootSec=5min +OnUnitActiveSec=2d + +[Install] +WantedBy=multi-user.target + From 478b57f3a99878a37ae0002e6da3ba352ad507b3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 02:04:16 +0200 Subject: [PATCH 168/386] dom0: create appmenus template and icon for all VMs --- dom0/qvm-core/qubes.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 03dcaa49..3fb1e6fe 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -988,9 +988,18 @@ class QubesVm(object): for f in ("vmlinuz", "initramfs", "modules.img"): shutil.copy(kernels_dir + '/' + f, self.dir_path + '/kernels/' + f) + if verbose: + print >> sys.stderr, "--> Copying the template's appmenus templates dir:\n{0} ==>\n{1}".\ + format(source_template.appmenus_templates_dir, self.appmenus_templates_dir) + shutil.copytree (source_template.appmenus_templates_dir, self.appmenus_templates_dir) + # Create volatile.img self.reset_volatile_storage(source_template = source_template, verbose=verbose) + if verbose: + print >> sys.stderr, "--> Creating icon symlink: {0} -> {1}".format(self.icon_path, self.label.icon_path) + os.symlink (self.label.icon_path, self.icon_path) + def create_appmenus(self, verbose, source_template = None): if source_template is None: source_template = self.template @@ -2129,16 +2138,6 @@ class QubesAppVm(QubesVm): super(QubesAppVm, self).create_on_disk(verbose, source_template=source_template) - if self.updateable: - if verbose: - print >> sys.stderr, "--> Copying the template's appmenus templates dir:\n{0} ==>\n{1}".\ - format(source_template.appmenus_templates_dir, self.appmenus_templates_dir) - shutil.copytree (source_template.appmenus_templates_dir, self.appmenus_templates_dir) - - if verbose: - print >> sys.stderr, "--> Creating icon symlink: {0} -> {1}".format(self.icon_path, self.label.icon_path) - os.symlink (self.label.icon_path, self.icon_path) - if not self.internal: self.create_appmenus (verbose, source_template=source_template) From 929d6b52c983d676e27ae5501b64d2be88bd75b3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 02:05:07 +0200 Subject: [PATCH 169/386] dom0: create appmenus for NetVMs, using separate whitelist (#538) --- dom0/qvm-core/qubes.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 3fb1e6fe..283bbe7f 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1012,9 +1012,9 @@ class QubesVm(object): try: if source_template is not None: - subprocess.check_call ([qubes_appmenu_create_cmd, source_template.appmenus_templates_dir, self.name]) + subprocess.check_call ([qubes_appmenu_create_cmd, source_template.appmenus_templates_dir, self.name, vmtype]) elif self.appmenus_templates_dir is not None: - subprocess.check_call ([qubes_appmenu_create_cmd, self.appmenus_templates_dir, self.name]) + subprocess.check_call ([qubes_appmenu_create_cmd, self.appmenus_templates_dir, self.name, vmtype]) else: # Only add apps to menu subprocess.check_call ([qubes_appmenu_create_cmd, "none", self.name, vmtype]) @@ -1843,6 +1843,22 @@ class QubesNetVm(QubesVm): self.__external_ip_allowed_xids.discard(int(xid)) self.update_external_ip_permissions() + def create_on_disk(self, verbose, source_template = None): + if dry_run: + return + + super(QubesNetVm, self).create_on_disk(verbose, source_template=source_template) + + if os.path.exists(source_template.dir_path + '/netvm-' + qubes_whitelisted_appmenus): + if verbose: + print >> sys.stderr, "--> Creating default whitelisted apps list: {0}".\ + format(self.dir_path + '/' + qubes_whitelisted_appmenus) + shutil.copy(source_template.dir_path + '/netvm-' + qubes_whitelisted_appmenus, + self.dir_path + '/' + qubes_whitelisted_appmenus) + + if not self.internal: + self.create_appmenus (verbose, source_template=source_template) + class QubesProxyVm(QubesNetVm): """ A class that represents a ProxyVM, ex FirewallVM. A child of QubesNetVM. From 99e784bfc0a07cf76012af07b2c0290cdd016784 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 02:22:36 +0200 Subject: [PATCH 170/386] dom0/qvm-backup: chown user dir before backup (#492) --- dom0/qvm-core/qubesutils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 67cd3b9f..46a5f69a 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -645,6 +645,11 @@ def backup_prepare(base_backup_dir, vms_list = None, exclude_list = [], print_ca if not 'dom0' in exclude_list: local_user = grp.getgrnam('qubes').gr_mem[0] home_dir = pwd.getpwnam(local_user).pw_dir + # Home dir should have only user-owned files, so fix it now to prevent + # permissions problems - some root-owned files can left after + # 'sudo bash' and similar commands + subprocess.check_call(['sudo', 'chown', '-R', local_user, home_dir]) + home_sz = get_disk_usage(home_dir) home_to_backup = [ { "path" : home_dir, "size": home_sz, "subdir": 'dom0-home'} ] files_to_backup += home_to_backup From 7eac1426d07e602539b4052c16535ae791cc6b11 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 23:48:25 +0200 Subject: [PATCH 171/386] vm: include /proc/xen in fstab (#466) --- misc/fstab | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/fstab b/misc/fstab index 877e6e49..b7d0feec 100644 --- a/misc/fstab +++ b/misc/fstab @@ -13,4 +13,5 @@ tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 +xen /proc/xen xenfs defaults 0 0 /dev/xvdi /mnt/removable auto noauto,user,rw 0 0 From 079b8a421cd4e8adfe41892c845354aae73072f6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 1 May 2012 23:48:45 +0200 Subject: [PATCH 172/386] vm/systemd: do not depend on proc-xen.mount (#466) local-fs.target already covers /proc/xen --- vm-systemd/qubes-sysinit.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm-systemd/qubes-sysinit.service b/vm-systemd/qubes-sysinit.service index c6ca7a0c..29bb1e4f 100644 --- a/vm-systemd/qubes-sysinit.service +++ b/vm-systemd/qubes-sysinit.service @@ -2,7 +2,7 @@ Description=Init Qubes Services settings DefaultDependencies=no Before=sysinit.target -After=local-fs.target proc-xen.mount +After=local-fs.target [Service] Type=oneshot From 7f6a3c665b7838b26a5492f9a7ff50f75dc17d2c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 3 May 2012 03:54:05 +0200 Subject: [PATCH 173/386] dom0/qvm-pci: add info about required restart after PCI device add/remove --- dom0/qvm-tools/qvm-pci | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dom0/qvm-tools/qvm-pci b/dom0/qvm-tools/qvm-pci index e2b81a48..7a41bc0e 100755 --- a/dom0/qvm-tools/qvm-pci +++ b/dom0/qvm-tools/qvm-pci @@ -73,6 +73,8 @@ def main(): exit(1) if vm.pcidevs.count(pci) == 0: vm.pcidevs.append(pci) + if vm.is_running(): + print >>sys.stderr, "NOTICE: Changes will be seen by VM after VM restart" qvm_collection.save() qvm_collection.unlock_db() @@ -84,6 +86,8 @@ def main(): pci = args[1] if vm.pcidevs.count(pci) > 0: vm.pcidevs.remove(pci) + if vm.is_running(): + print >>sys.stderr, "NOTICE: Changes will be seen by VM after VM restart" qvm_collection.save() qvm_collection.unlock_db() From fdaee4bf92cb3f1f6fd6f229a795e3216452a99e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 4 May 2012 02:42:21 +0200 Subject: [PATCH 174/386] dom0/dom0-update: clean up metadata caches after downloading updates (#558) --- dom0/aux-tools/qubes-receive-updates | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom0/aux-tools/qubes-receive-updates b/dom0/aux-tools/qubes-receive-updates index 366066cc..02cbebee 100755 --- a/dom0/aux-tools/qubes-receive-updates +++ b/dom0/aux-tools/qubes-receive-updates @@ -75,6 +75,15 @@ def handle_dom0updates(updatevm): subprocess.check_call(["/usr/bin/createrepo", "-q", updates_dir]) os.chown(updates_repodata_dir, -1, qubes_gid) os.chmod(updates_repodata_dir, 0775) + # Clean old cache + subprocess.call(["/usr/bin/yum", "-q", "clean", "all"], stdout=sys.stderr) + # This will fail because of "smart" detection of no-network, but it will invalidate the cache + try: + null = open('/dev/null','w') + subprocess.call(["/usr/bin/pkcon", "refresh"], stdout=null) + null.close() + except: + pass exit(0) def main(): From c78d38fb0d52143a7e9a3632be732d9413e00115 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 4 May 2012 13:20:10 +0200 Subject: [PATCH 175/386] dom0/core: disable private.img for HVM (#26 pro) --- dom0/qvm-core/qubes.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 283bbe7f..65c87843 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2310,6 +2310,9 @@ class QubesHVm(QubesVm): else: params['otherdevs'] = '' + # Disable currently unused private.img - to be enabled when TemplateHVm done + params['privatedev'] = '' + if self.timezone.lower() == 'localtime': params['localtime'] = '1' params['timeoffset'] = '0' From 81138182f6c7441d5d0ff5c333a6f56911ec87bb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 8 May 2012 15:54:29 +0200 Subject: [PATCH 176/386] dom0: var name fix, and one minor sanity check --- dom0/aux-tools/qubes-notify-updates | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dom0/aux-tools/qubes-notify-updates b/dom0/aux-tools/qubes-notify-updates index 53bc57cd..2e09f411 100755 --- a/dom0/aux-tools/qubes-notify-updates +++ b/dom0/aux-tools/qubes-notify-updates @@ -37,6 +37,10 @@ def main(): source = os.getenv("QREXEC_REMOTE_DOMAIN") + if source is None: + print >> sys.stderr, 'This script must be called as qrexec service!' + exit(1) + source_vm = qvm_collection.get_vm_by_name(source) if source_vm is None: print >> sys.stderr, 'Domain ' + source + ' does not exists (?!)' @@ -48,7 +52,7 @@ def main(): exit(1) if source_vm.updateable: # Just trust information from VM itself - update_f = open(vm.dir_path + '/' + updates_stat_file, "w") + update_f = open(source_vm.dir_path + '/' + updates_stat_file, "w") update_f.write(update_count) update_f.close() elif source_vm.template is not None: From 02e312ab04a214b81b04600443dfc999b34d2fb4 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Tue, 8 May 2012 18:30:21 +0200 Subject: [PATCH 177/386] vm: Add localhost alias to /etc/hosts ... or otherwise, some programs will hang for many secconds trying to resolve localhost. --- vm-init.d/qubes_core | 2 +- vm-systemd/qubes-sysinit.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vm-init.d/qubes_core b/vm-init.d/qubes_core index c3accd92..52bb1cdb 100755 --- a/vm-init.d/qubes_core +++ b/vm-init.d/qubes_core @@ -26,7 +26,7 @@ start() # because it makes some of the pre-created dotfiles invalid (e.g. .kde/cache-) # (let's be frank: nobody's gonna use xterm on DispVM) hostname $name - (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name") > /etc/hosts + (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name localhost") > /etc/hosts fi timezone=`/usr/bin/xenstore-read qubes-timezone 2> /dev/null` diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index d78929ca..356a18ba 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -52,7 +52,7 @@ done name=`$XS_READ name` if [ -n "$name" ]; then hostname $name - (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name") > /etc/hosts + (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name localhost") > /etc/hosts fi timezone=`$XS_READ qubes-timezone 2> /dev/null` From 02688196550197f97e879428620a746f4b5a9173 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 8 May 2012 23:34:01 +0200 Subject: [PATCH 178/386] vm: do not override /etc/hosts, just add VMNAME to 127.0.0.1 --- vm-init.d/qubes_core | 2 +- vm-systemd/qubes-sysinit.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vm-init.d/qubes_core b/vm-init.d/qubes_core index 52bb1cdb..7193d386 100755 --- a/vm-init.d/qubes_core +++ b/vm-init.d/qubes_core @@ -26,7 +26,7 @@ start() # because it makes some of the pre-created dotfiles invalid (e.g. .kde/cache-) # (let's be frank: nobody's gonna use xterm on DispVM) hostname $name - (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name localhost") > /etc/hosts + sed -i "s/^\(127\.0\.0\.1 .*\) \($name \)\?\(.*\)/\1\2 $name/" /etc/hosts fi timezone=`/usr/bin/xenstore-read qubes-timezone 2> /dev/null` diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 356a18ba..02e2a9a0 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -52,7 +52,7 @@ done name=`$XS_READ name` if [ -n "$name" ]; then hostname $name - (grep -v "\<$name\>" /etc/hosts; echo "127.0.0.1 $name localhost") > /etc/hosts + sed -i "s/^\(127\.0\.0\.1 .*\) \($name \)\?\(.*\)/\1\2 $name/" /etc/hosts fi timezone=`$XS_READ qubes-timezone 2> /dev/null` From b4aa6c6ddc57f8a389c2d4048e199f15c4ffb145 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 8 May 2012 23:41:53 +0200 Subject: [PATCH 179/386] vm/spec: fix /etc/hosts if it was broken by previous version --- rpm_spec/core-vm.spec | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 3158b57b..0b9d5ffd 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -237,6 +237,14 @@ sed 's/^net.ipv4.ip_forward.*/#\0/' -i /etc/sysctl.conf sed -i -e '/^exclude = kernel/d' /etc/yum.conf echo 'exclude = kernel, xorg-x11-drv-*, xorg-x11-drivers, xorg-x11-server-*' >> /etc/yum.conf +# qubes-core-vm has been broken for some time - it overrides /etc/hosts; restore original content +if ! grep -q localhost /etc/hosts; then + cat < /etc/hosts +127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 `hostname` +::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 +EOF +fi + if [ "$1" != 1 ] ; then # do the rest of %post thing only when updating for the first time... exit 0 From db82cf68518168e7e2d164e4a84be1db5a8408b6 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Sat, 12 May 2012 11:59:52 +0200 Subject: [PATCH 180/386] version 2.0.23-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 1b8629f5..18f812ff 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.22 +2.0.23 From 85f926efaa62d8a1db41d0f05897fd9230bc83a9 Mon Sep 17 00:00:00 2001 From: Alexander Tereshkin Date: Sat, 12 May 2012 18:22:16 +0400 Subject: [PATCH 181/386] Removed unnecessary access to /proc/u2mfn. --- vchan/init.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index a8192bf9..90e1e21a 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -52,7 +52,6 @@ static int ring_init(struct libvchan *ctrl) mfn = virtual_to_mfn(ring); #else - int u2mfn = open("/proc/u2mfn", O_RDONLY); ring = (struct vchan_interface *) u2mfn_alloc_kpage (); if (ring == MAP_FAILED) @@ -60,7 +59,6 @@ static int ring_init(struct libvchan *ctrl) if (u2mfn_get_last_mfn (&mfn) < 0) return -1; - close(u2mfn); #endif ctrl->ring = ring; From 0f13ea2a845a03c2b5f1c018a8521f959de03cc1 Mon Sep 17 00:00:00 2001 From: Alexander Tereshkin Date: Sat, 12 May 2012 18:32:36 +0400 Subject: [PATCH 182/386] Fixed a potential memory leak. --- vchan/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index 90e1e21a..58ddffd7 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -264,9 +264,9 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) if (!ref) goto fail; ctrl->ring_ref = atoi(ref); + free(ref); if (!ctrl->ring_ref) goto fail; - free(ref); snprintf(buf, sizeof buf, "/local/domain/%d/device/vchan/%d/event-channel", domain, devno); @@ -274,9 +274,9 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) if (!ref) goto fail; remote_port = atoi(ref); + free(ref); if (!remote_port) goto fail; - free(ref); #ifdef XENCTRL_HAS_XC_INTERFACE xcfd = xc_interface_open(NULL, NULL, 0); if (!xcfd) From 7ea3f4a7927013033404e4dba6e10e90e1c49928 Mon Sep 17 00:00:00 2001 From: Alexander Tereshkin Date: Sat, 12 May 2012 19:27:09 +0400 Subject: [PATCH 183/386] vchan modifications for the Windows build. --- vchan/init.c | 160 +++++++++++++++++++++++++++++++++++++++-------- vchan/io.c | 9 ++- vchan/libvchan.h | 19 ++++-- vchan/sources | 22 +++++++ 4 files changed, 178 insertions(+), 32 deletions(-) create mode 100644 vchan/sources diff --git a/vchan/init.c b/vchan/init.c index 58ddffd7..03227686 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -19,6 +19,8 @@ * */ +#ifndef WINNT + #include #include #include @@ -27,18 +29,66 @@ #include #include #include -#include #include #include #include -#include -#include "libvchan.h" #ifndef CONFIG_STUBDOM #include "../u2mfn/u2mfnlib.h" #else #include #endif +#endif + +#include +#include +#include +#include "libvchan.h" + + +static int fill_ctrl(struct libvchan *ctrl, struct vchan_interface *ring, int ring_ref) +{ + if (!ctrl || !ring) + return -1; + + ctrl->ring = ring; + ctrl->ring_ref = ring_ref; + + ring->cons_in = ring->prod_in = ring->cons_out = ring->prod_out = + 0; + ring->server_closed = ring->client_closed = 0; + ring->debug = 0xaabbccdd; + + return 0; +} + +#ifdef WINNT +static int ring_init(struct libvchan *ctrl) +{ + struct gntmem_handle* h; + grant_ref_t grants[1]; + int result; + struct vchan_interface *ring; + + h = gntmem_open(); + if (h == INVALID_HANDLE_VALUE) + return -1; + + gntmem_set_local_quota(h, 1); + gntmem_set_global_quota(h, 1); + + memset(grants, 0, sizeof(grants)); + ring = gntmem_grant_pages_to_domain(h, 0, 1, grants); + if (!ring) { + gntmem_close(h); + return -1; + } + + return fill_ctrl(ctrl, ring, grants[0]); +} + +#else + static int ring_init(struct libvchan *ctrl) { int mfn; @@ -61,14 +111,11 @@ static int ring_init(struct libvchan *ctrl) return -1; #endif - ctrl->ring = ring; - ctrl->ring_ref = mfn; - ring->cons_in = ring->prod_in = ring->cons_out = ring->prod_out = - 0; - ring->server_closed = ring->client_closed = 0; - ring->debug = 0xaabbccdd; - return 0; + return fill_ctrl(ctrl, ring, mfn); } + +#endif + /** creates event channel; creates "ring-ref" and "event-channel" xenstore entries; @@ -86,12 +133,16 @@ static int server_interface_init(struct libvchan *ctrl, int devno) unsigned int len; /* XXX temp hack end */ #ifdef XENCTRL_HAS_XC_INTERFACE - xc_evtchn *evfd; + xc_evtchn *evfd; #else - int evfd; + EVTCHN evfd; #endif evtchn_port_or_error_t port; +#ifdef WINNT + xs = xs_domain_open(); +#else xs = xs_daemon_open(); +#endif if (!xs) { return ret; } @@ -117,6 +168,10 @@ static int server_interface_init(struct libvchan *ctrl, int devno) if (domid_s) domid = atoi(domid_s); + snprintf(buf, sizeof buf, "device/vchan/%d/version", devno); + if (!xs_write(xs, 0, buf, "2", strlen("2"))) + goto fail2; + snprintf(ref, sizeof ref, "%d", ctrl->ring_ref); snprintf(buf, sizeof buf, "device/vchan/%d/ring-ref", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) @@ -151,8 +206,12 @@ static int server_interface_init(struct libvchan *ctrl, int devno) if (ret) #ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn_close(evfd); +#else +#ifdef WINNT + xc_evtchn_close(evfd); #else close(evfd); +#endif #endif fail: xs_daemon_close(xs); @@ -197,6 +256,8 @@ struct libvchan *libvchan_server_init(int devno) return ctrl; } +#ifndef WINNT + int libvchan_server_handle_connected(struct libvchan *ctrl) { struct xs_handle *xs; @@ -241,14 +302,16 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) unsigned int len; struct xs_handle *xs; #ifdef XENCTRL_HAS_XC_INTERFACE - xc_interface *xcfd; + xc_interface *xcfd; #else int xcfd; #endif + int xcg; char buf[64]; char *ref; + int version; #ifdef XENCTRL_HAS_XC_INTERFACE - xc_evtchn *evfd; + xc_evtchn *evfd; #else int evfd; #endif @@ -257,6 +320,18 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) if (!xs) { return ret; } + + version = 1; + snprintf(buf, sizeof buf, + "/local/domain/%d/device/vchan/%d/version", domain, + devno); + ref = xs_read(xs, 0, buf, &len); + if (ref) { + version = atoi(ref); + free(ref); + } + + snprintf(buf, sizeof buf, "/local/domain/%d/device/vchan/%d/ring-ref", domain, devno); @@ -277,23 +352,40 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) free(ref); if (!remote_port) goto fail; + + switch (version) { + case 1: + #ifdef XENCTRL_HAS_XC_INTERFACE - xcfd = xc_interface_open(NULL, NULL, 0); - if (!xcfd) - goto fail; + xcfd = xc_interface_open(NULL, NULL, 0); + if (!xcfd) + goto fail; #else - xcfd = xc_interface_open(); - if (xcfd < 0) - goto fail; + xcfd = xc_interface_open(); + if (xcfd < 0) + goto fail; #endif - ctrl->ring = (struct vchan_interface *) - xc_map_foreign_range(xcfd, domain, 4096, - PROT_READ | PROT_WRITE, ctrl->ring_ref); + ctrl->ring = (struct vchan_interface *) + xc_map_foreign_range(xcfd, domain, 4096, + PROT_READ | PROT_WRITE, ctrl->ring_ref); #ifdef XENCTRL_HAS_XC_INTERFACE - xc_interface_close(xcfd); + xc_interface_close(xcfd); #else - close(xcfd); + close(xcfd); #endif + break; + case 2: + xcg = xc_gnttab_open(); + if (xcg < 0) + goto fail; + ctrl->ring = (struct vchan_interface *) + xc_gnttab_map_grant_ref(xcg, domain, ctrl->ring_ref, PROT_READ | PROT_WRITE); + xc_gnttab_close(xcg); + break; + default: + goto fail; + } + if (ctrl->ring == 0 || ctrl->ring == MAP_FAILED) goto fail; #ifdef XENCTRL_HAS_XC_INTERFACE @@ -312,7 +404,7 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) #ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn_close(evfd); #else - close(evfd); + close(evfd); #endif else ret = 0; @@ -338,3 +430,19 @@ struct libvchan *libvchan_client_init(int domain, int devno) ctrl->is_server = 0; return ctrl; } + +#else + +// Windows domains can not be dom0 + +int libvchan_server_handle_connected(struct libvchan *ctrl) +{ + return -1; +} + +struct libvchan *libvchan_client_init(int domain, int devno) +{ + return NULL; +} + +#endif \ No newline at end of file diff --git a/vchan/io.c b/vchan/io.c index 23135a25..beed6caf 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -20,10 +20,15 @@ */ #include "libvchan.h" + +#ifndef WINNT #include -#include #include #include +#endif + +#include + /** \return How much data is immediately available for reading */ @@ -166,7 +171,7 @@ int libvchan_close(struct libvchan *ctrl) } /// The fd to use for select() set -int libvchan_fd_for_select(struct libvchan *ctrl) +EVTCHN libvchan_fd_for_select(struct libvchan *ctrl) { return xc_evtchn_fd(ctrl->evfd); } diff --git a/vchan/libvchan.h b/vchan/libvchan.h index 3f647462..63ab6e9f 100644 --- a/vchan/libvchan.h +++ b/vchan/libvchan.h @@ -22,7 +22,18 @@ #ifndef _LIBVCHAN_H #define _LIBVCHAN_H +#ifdef WINNT +#include +#include +#include +typedef HANDLE EVTCHN; +#define snprintf _snprintf +#else #include +typedef int EVTCHN; +#endif + + #include typedef uint32_t VCHAN_RING_IDX; @@ -42,9 +53,9 @@ struct libvchan { uint32_t ring_ref; /// descriptor to event channel interface #ifdef XENCTRL_HAS_XC_INTERFACE - xc_evtchn *evfd; + xc_evtchn *evfd; #else - int evfd; + EVTCHN evfd; #endif int evport; int devno; @@ -55,16 +66,16 @@ struct libvchan { }; struct libvchan *libvchan_server_init(int devno); -int libvchan_server_handle_connected(struct libvchan *ctrl); struct libvchan *libvchan_client_init(int domain, int devno); +int libvchan_server_handle_connected(struct libvchan *ctrl); int libvchan_write(struct libvchan *ctrl, char *data, int size); int libvchan_read(struct libvchan *ctrl, char *data, int size); int libvchan_wait(struct libvchan *ctrl); int libvchan_close(struct libvchan *ctrl); void libvchan_prepare_to_select(struct libvchan *ctrl); -int libvchan_fd_for_select(struct libvchan *ctrl); +EVTCHN libvchan_fd_for_select(struct libvchan *ctrl); int libvchan_is_eof(struct libvchan *ctrl); int libvchan_data_ready(struct libvchan *ctrl); int libvchan_buffer_space(struct libvchan *ctrl); diff --git a/vchan/sources b/vchan/sources new file mode 100644 index 00000000..6c3a4245 --- /dev/null +++ b/vchan/sources @@ -0,0 +1,22 @@ +TARGETNAME=libvchan +TARGETTYPE=LIBRARY +TARGETPATH=..\libs + +#BUILD_PASS0_CONSUMES=gntmem evtchn xenstore +#BUILD_PASS0_PRODUCES=vchan + +USE_MSVCRT=1 + +DLLDEF=libvchan.def + +INCLUDES=$(INCLUDES); \ + ..\include;\ + +SOURCES=io.c init.c + +TARGETLIBS=\ + $(SDK_LIB_PATH)\setupapi.lib \ + $(SDK_LIB_PATH)\kernel32.lib + + + From e31128341b65a5f21f8e0fa4f3df2bf50d47fff8 Mon Sep 17 00:00:00 2001 From: Alexander Tereshkin Date: Sat, 12 May 2012 20:19:56 +0400 Subject: [PATCH 184/386] Windows-related code moved to core/win directory. --- vchan/sources | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vchan/sources b/vchan/sources index 6c3a4245..9b5e8eb8 100644 --- a/vchan/sources +++ b/vchan/sources @@ -1,6 +1,6 @@ TARGETNAME=libvchan TARGETTYPE=LIBRARY -TARGETPATH=..\libs +TARGETPATH=..\win\libs #BUILD_PASS0_CONSUMES=gntmem evtchn xenstore #BUILD_PASS0_PRODUCES=vchan @@ -10,7 +10,7 @@ USE_MSVCRT=1 DLLDEF=libvchan.def INCLUDES=$(INCLUDES); \ - ..\include;\ + ..\win\include;\ SOURCES=io.c init.c From ba3d07d300c4332fb6da897ef69bb926af907325 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 14 May 2012 04:56:03 +0200 Subject: [PATCH 185/386] dom0/qubes-updates: one more qubes-dom0-update typo fix --- dom0/aux-tools/qubes-dom0-updates.cron | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/aux-tools/qubes-dom0-updates.cron b/dom0/aux-tools/qubes-dom0-updates.cron index 8cf805fe..4feb65f3 100755 --- a/dom0/aux-tools/qubes-dom0-updates.cron +++ b/dom0/aux-tools/qubes-dom0-updates.cron @@ -13,7 +13,7 @@ echo $$ > $PIDFILE trap "rm $PIDFILE" EXIT # If no updates available - exit here -qubes-dom0-updates --check-only && exit +qubes-dom0-update --check-only >/dev/null && exit RETCODE=$? if [ "$RETCODE" -ne 100 ]; then From be1e72cad7b41d9cf3fdb6597e253e2cef9f854c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 14 May 2012 04:56:30 +0200 Subject: [PATCH 186/386] dom0/qubes-updates: stat file for qubes-manager --- dom0/aux-tools/qubes-dom0-updates.cron | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dom0/aux-tools/qubes-dom0-updates.cron b/dom0/aux-tools/qubes-dom0-updates.cron index 4feb65f3..b30a0b43 100755 --- a/dom0/aux-tools/qubes-dom0-updates.cron +++ b/dom0/aux-tools/qubes-dom0-updates.cron @@ -4,6 +4,7 @@ LOCAL_USER=`users | sed -e 's/root *//' | cut -d' ' -f 1` PIDFILE=/var/run/qubes/dom0-update-notification.pid NOTIFY_ICON=/usr/share/qubes/icons/dom0-update-avail.svg +UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available # Do not allow multiple instances [ -r $PIDFILE ] && kill -0 `cat $PIDFILE` && exit 0 @@ -26,6 +27,9 @@ if [ -z "$LOCAL_USER" ]; then exit 1 fi +# Touch stat file for qubes-manager +touch $UPDATES_STAT_FILE + # Notify about updates using system tray zenity --notification --window-icon=$NOTIFY_ICON --text="Qubes dom0 updates available." @@ -33,3 +37,6 @@ zenity --question --title="Qubes Dom0 updates" \ --text="There are updates for dom0 available, do you want to download them now?" || exit 0 su -c "DISPLAY=:0 qubes-dom0-update --gui" $LOCAL_USER + +# Check if user installed updates +yum -q check-updates && rm $UPDATES_STAT_FILE From 2b439aedfe44214c16ec4cd5a48ef66a59f43531 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 16 May 2012 07:55:48 +0200 Subject: [PATCH 187/386] dom0/update-notify: ensure correct permissions for update stat file --- dom0/aux-tools/qubes-notify-updates | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dom0/aux-tools/qubes-notify-updates b/dom0/aux-tools/qubes-notify-updates index 2e09f411..d34de46c 100755 --- a/dom0/aux-tools/qubes-notify-updates +++ b/dom0/aux-tools/qubes-notify-updates @@ -24,6 +24,7 @@ import os.path import sys import subprocess import shutil +import grp from datetime import datetime from qubes.qubes import QubesVmCollection from qubes.qubes import updates_stat_file @@ -46,6 +47,9 @@ def main(): print >> sys.stderr, 'Domain ' + source + ' does not exists (?!)' exit(1) + os.umask(0002) + qubes_gid = grp.getgrnam('qubes').gr_gid + update_count = sys.stdin.readline(128).strip() if not update_count.isdigit(): print >> sys.stderr, 'Domain ' + source + ' sent invalid number of updates: ' + update_count @@ -55,6 +59,7 @@ def main(): update_f = open(source_vm.dir_path + '/' + updates_stat_file, "w") update_f.write(update_count) update_f.close() + os.chown(source_vm.dir_path + '/' + updates_stat_file, -1, qubes_gid) elif source_vm.template is not None: # Hint about updates availability in template # If template is running - it will notify about updates itself @@ -72,6 +77,7 @@ def main(): update_f = open(stat_file, "w") update_f.write(update_count) update_f.close() + os.chown(stat_file, -1, qubes_gid) else: print >> sys.stderr, 'Ignoring notification of no updates' From 659dec044f4e8605c7f8af88cba50eb6e94f1cae Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 20 May 2012 02:08:56 +0200 Subject: [PATCH 188/386] dom0/core: don't force maxmem=memory for NetVM (#572) --- dom0/qvm-core/qubes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 65c87843..4f3c27fc 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1712,7 +1712,6 @@ class QubesNetVm(QubesVm): attrs_config['label']['default'] = default_servicevm_label attrs_config['vcpus']['default'] = default_servicevm_vcpus attrs_config['memory']['default'] = 200 - attrs_config['maxmem']['eval'] = 'self.memory' # New attributes attrs_config['netid'] = { 'save': 'str(self.netid)', 'order': 30 } From b87806db17b7dd296fbcfaf0983f037e427cf1f1 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 22 May 2012 15:51:09 +0200 Subject: [PATCH 189/386] dom0: expose debug mode in xenstore (#567) --- dom0/qvm-core/qubes.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4f3c27fc..a8ba7f82 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -848,6 +848,9 @@ class QubesVm(object): "{0}/qubes-block-devices".format(domain_path), '') + xs.write('', "{0}/qubes-debug-mode".format(domain_path), + str(int(self.debug))) + # Fix permissions xs.set_permissions('', '{0}/device'.format(domain_path), [{ 'dom': xid }]) From 1e0117ca5026490a559aec44f3e81a7581160cbf Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 22 May 2012 16:49:03 +0200 Subject: [PATCH 190/386] vm/systemd: generate opts for GUI based on debug-mode (#567) --- vm-systemd/qubes-sysinit.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 02e2a9a0..1fb463c1 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -61,3 +61,11 @@ if [ -n "$timezone" ]; then echo "# Clock configuration autogenerated based on Qubes dom0 settings" > /etc/sysconfig/clock echo "ZONE=\"$timezone\"" >> /etc/sysconfig/clock fi + +# Prepare environment for other services +echo > /var/run/qubes-service-environment + +debug_mode=`$XS_READ qubes-debug-mode 2> /dev/null` +if [ -n "$debug_mode" -a "$debug_mode" -gt 0 ]; then + echo "GUI_OPTS=-vv" >> /var/run/qubes-service-environment +fi From 05123c09f25af91c0bb00757f940b0ce6d93dca2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 24 May 2012 12:11:03 +0200 Subject: [PATCH 191/386] qrexec: describe msg types in header file --- qrexec/qrexec.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/qrexec/qrexec.h b/qrexec/qrexec.h index e3a556ea..4313d119 100644 --- a/qrexec/qrexec.h +++ b/qrexec/qrexec.h @@ -19,6 +19,8 @@ * */ +/* See also http://wiki.qubes-os.org/trac/wiki/Qrexec */ + #define QREXEC_DAEMON_SOCKET_DIR "/var/run/qubes" #define MAX_FDS 256 #define MAX_DATA_CHUNK 4096 @@ -30,26 +32,52 @@ #define MEMINFO_WRITER_PIDFILE "/var/run/meminfo-writer.pid" enum { + /* messages from qrexec_client to qrexec_daemon (both in dom0) */ + /* start process in VM and pass its stdin/out/err to dom0 */ MSG_CLIENT_TO_SERVER_EXEC_CMDLINE = 0x100, + /* start process in VM discarding its stdin/out/err (connect to /dev/null) */ MSG_CLIENT_TO_SERVER_JUST_EXEC, + /* connect to existing process in VM to receive its stdin/out/err + * struct connect_existing_params passed as data */ MSG_CLIENT_TO_SERVER_CONNECT_EXISTING, + /* messages qrexec_daemon(dom0)->qrexec_agent(VM) */ + /* same as MSG_CLIENT_TO_SERVER_CONNECT_EXISTING */ MSG_SERVER_TO_AGENT_CONNECT_EXISTING, + /* same as MSG_CLIENT_TO_SERVER_EXEC_CMDLINE */ MSG_SERVER_TO_AGENT_EXEC_CMDLINE, + /* same as MSG_CLIENT_TO_SERVER_JUST_EXEC */ MSG_SERVER_TO_AGENT_JUST_EXEC, + /* pass data to process stdin */ MSG_SERVER_TO_AGENT_INPUT, + /* detach from process; qrexec_agent should close pipes to process + * stdin/out/err; it's up to the VM child process if it cause its termination */ MSG_SERVER_TO_AGENT_CLIENT_END, + /* flow control, qrexec_daemon->qrexec_agent */ + /* suspend reading of named fd from child process */ MSG_XOFF, + /* resume reading of named fd from child process */ MSG_XON, + /* messages qrexec_agent(VM)->qrexec_daemon(dom0) */ + /* pass data from process stdout */ MSG_AGENT_TO_SERVER_STDOUT, + /* pass data from process stderr */ MSG_AGENT_TO_SERVER_STDERR, + /* inform that process terminated and pass its exit code; this should be + * send after all data from stdout/err are send */ MSG_AGENT_TO_SERVER_EXIT_CODE, + /* call Qubes RPC service + * struct trigger_connect_params passed as data */ MSG_AGENT_TO_SERVER_TRIGGER_CONNECT_EXISTING, + /* messages qrexec_daemon->qrexec_client (both in dom0) */ + /* same as MSG_AGENT_TO_SERVER_STDOUT */ MSG_SERVER_TO_CLIENT_STDOUT, + /* same as MSG_AGENT_TO_SERVER_STDERR */ MSG_SERVER_TO_CLIENT_STDERR, + /* same as MSG_AGENT_TO_SERVER_EXIT_CODE */ MSG_SERVER_TO_CLIENT_EXIT_CODE }; From 44c14d409cdf87ab22ed279ce006ce6cad0cbe8e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 25 May 2012 15:06:00 +0200 Subject: [PATCH 192/386] dom0/core: don't limit netvm/proxyvm vcpu count to 1 (#571) --- dom0/qvm-core/qubes.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index a8ba7f82..e7222140 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -74,7 +74,6 @@ default_appmenus_template_templates_subdir = "apps-template.templates" default_kernels_subdir = "kernels" default_firewall_conf_file = "firewall.xml" default_memory = 400 -default_servicevm_vcpus = 1 default_kernelopts = "" default_kernelopts_pcidevs = "iommu=soft swiotlb=2048" @@ -1713,7 +1712,6 @@ class QubesNetVm(QubesVm): attrs_config = super(QubesNetVm, self)._get_attrs_config() attrs_config['dir_path']['eval'] = 'value if value is not None else qubes_servicevms_dir + "/" + self.name' attrs_config['label']['default'] = default_servicevm_label - attrs_config['vcpus']['default'] = default_servicevm_vcpus attrs_config['memory']['default'] = 200 # New attributes From 2e8765e1e11648fa98e9c81a8316d9db7ff04b4c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 26 May 2012 12:21:42 +0200 Subject: [PATCH 193/386] dom0/qvm-ls: add 'kernel' and 'kernelopts' columns --- dom0/qvm-tools/qvm-ls | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index d4e4e0ee..ac94a71d 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -76,6 +76,9 @@ fields = { "label" : {"func" : "vm.label.name"}, + "kernel" : {"func" : "('*' if vm.uses_default_kernel else '') + str(vm.kernel) if hasattr(vm, 'kernel') else 'n/a'"}, + "kernelopts" : {"func" : "('*' if vm.uses_default_kernelopts else '') + str(vm.kernelopts) if hasattr(vm, 'kernelopts') else 'n/a'"}, + "on" : {"func" : "'*' if vm.is_running() else ''"} } @@ -102,6 +105,10 @@ def main(): action="store_true", default=False, help="Show VM disk utilization statistics") + parser.add_option ("-k", "--kernel", dest="kernel", + action="store_true", default=False, + help="Show VM kernel options") + parser.add_option ("-i", "--ids", dest="ids", action="store_true", default=False, help="Show Qubes and Xen id#s") @@ -141,6 +148,9 @@ def main(): fields_to_display.remove ("netvm") fields_to_display += ["priv-curr", "priv-max", "root-curr", "root-max", "disk" ] + if (options.kernel): + fields_to_display += ["kernel", "kernelopts" ] + vms_list = [vm for vm in qvm_collection.values()] no_vms = len (vms_list) From db324b270e18f218039cf47ca736fe731147b2fb Mon Sep 17 00:00:00 2001 From: Alexander Tereshkin Date: Tue, 29 May 2012 17:07:17 +0400 Subject: [PATCH 194/386] libvchan_server_init() now does not wait for a client to connect. A server should wait for an incoming event and then call libvchan_server_handle_connected(). --- vchan/init.c | 18 +++++++++++------- vchan/io.c | 17 +++++++++++++++++ vchan/sources | 2 ++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index 03227686..d870aea2 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -256,7 +256,7 @@ struct libvchan *libvchan_server_init(int devno) return ctrl; } -#ifndef WINNT + int libvchan_server_handle_connected(struct libvchan *ctrl) { @@ -264,14 +264,21 @@ int libvchan_server_handle_connected(struct libvchan *ctrl) char buf[64]; int ret = -1; int libvchan_fd; - fd_set rfds; +// fd_set rfds; +#ifdef WINNT + xs = xs_domain_open(); +#else xs = xs_daemon_open(); +#endif if (!xs) { return ret; } + +#ifndef WINNT // clear the pending flag xc_evtchn_pending(ctrl->evfd); +#endif snprintf(buf, sizeof buf, "device/vchan/%d", ctrl->devno); xs_rm(xs, 0, buf); @@ -291,6 +298,8 @@ fail2: return ret; } +#ifndef WINNT + /** retrieves ring-ref and event-channel numbers from xenstore (if they don't exist, return error, because nobody seems to listen); @@ -435,11 +444,6 @@ struct libvchan *libvchan_client_init(int domain, int devno) // Windows domains can not be dom0 -int libvchan_server_handle_connected(struct libvchan *ctrl) -{ - return -1; -} - struct libvchan *libvchan_client_init(int domain, int devno) { return NULL; diff --git a/vchan/io.c b/vchan/io.c index beed6caf..e735c86a 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -71,6 +71,22 @@ int libvchan_is_eof(struct libvchan *ctrl) /** \return -1 return value means peer has closed */ + +#ifdef WINNT +int libvchan_wait(struct libvchan *ctrl) +{ + int ret; + + ret = xc_evtchn_pending(ctrl->evfd); + if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport)) + return -1; + if (ret!=-1 && libvchan_is_eof(ctrl)) + return -1; + return ret; +} + +#else + int libvchan_wait(struct libvchan *ctrl) { int ret; @@ -98,6 +114,7 @@ int libvchan_wait(struct libvchan *ctrl) return -1; return ret; } +#endif /** may sleep (only if no buffer space available); diff --git a/vchan/sources b/vchan/sources index 9b5e8eb8..1baae972 100644 --- a/vchan/sources +++ b/vchan/sources @@ -9,6 +9,8 @@ USE_MSVCRT=1 DLLDEF=libvchan.def +C_DEFINES = $(C_DEFINES) /DCONFIG_STUBDOM + INCLUDES=$(INCLUDES); \ ..\win\include;\ From b55da785f75ecef76d4eaaffb803a062645b707d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 30 May 2012 00:54:24 +0200 Subject: [PATCH 195/386] dom0/qvm-block: hide devices mounted in dom0 (#579) --- dom0/init.d/qubes_core | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index dbcadccc..072f0ac2 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -53,6 +53,9 @@ start() MEMINFO_DELAY_USEC=100000 /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC & + # Reply block events to hide mounted devices from qubes-block list (at first udev run, only / is mounted) + udevadm trigger --subsystem-match=block --action=add + touch /var/lock/subsys/qubes_core success echo From 36f4086254b4604eb51265af12a76817b82995bb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 30 May 2012 13:40:27 +0200 Subject: [PATCH 196/386] vm/notify-update: do not treat network problems as updates pending symptom --- vm-systemd/qubes-update-check.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm-systemd/qubes-update-check.service b/vm-systemd/qubes-update-check.service index 5566eda4..6ac37e3d 100644 --- a/vm-systemd/qubes-update-check.service +++ b/vm-systemd/qubes-update-check.service @@ -4,4 +4,4 @@ ConditionPathExists=/var/run/qubes-service/qubes-update-check [Service] Type=oneshot -ExecStart=/usr/lib/qubes/qrexec_client_vm dom0 qubes.NotifyUpdates /bin/sh -c 'yum -q check-update|wc -l' +ExecStart=/usr/lib/qubes/qrexec_client_vm dom0 qubes.NotifyUpdates /bin/sh -c 'yum -q check-update >/dev/null; [ $? -eq 100 ] && echo 1 || echo 0' From 6bc609fbc3cac807b8264eabf6bc7f5e13719b24 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 30 May 2012 13:47:25 +0200 Subject: [PATCH 197/386] dom0/qvm-tools: introduce qvm-service tool Allow setting vm services same as in qubes-manager --- dom0/qvm-tools/qvm-service | 97 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100755 dom0/qvm-tools/qvm-service diff --git a/dom0/qvm-tools/qvm-service b/dom0/qvm-tools/qvm-service new file mode 100755 index 00000000..6dbb8a6c --- /dev/null +++ b/dom0/qvm-tools/qvm-service @@ -0,0 +1,97 @@ +#!/usr/bin/python +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Marek Marczykowski +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# + +from qubes.qubes import QubesVmCollection +from optparse import OptionParser; +import subprocess +import sys +import re + +def do_list(vm): + max_len = 0 + for s in vm.services.keys(): + max_len = max(max_len, len(s)) + fmt="{{0:<{0}}}: {{1}}".format(max_len) + + for s in vm.services.keys(): + print fmt.format (s, "Enabled" if vm.services[s] else "Disabled") + + +def main(): + usage = "usage: %prog [action] [service]\n" + parser = OptionParser (usage) + parser.add_option ("-l", "--list", dest="do_list", action="store_true", default=True, + help="List services (default action)") + parser.add_option ("-e", "--enable", dest="set_enable", action="store_true", default=False, + help="Enable service") + parser.add_option ("-d", "--disable", dest="set_disable", action="store_true", default=False, + help="Disable service") + parser.add_option ("-D", "--default", dest="set_default", action="store_true", default=False, + help="Reset service to its default state (remove from the list)") + + (options, args) = parser.parse_args () + if (len (args) < 1): + parser.error ("You must specify VM name!") + vmname = args[0] + args = args[1:] + + if options.set_enable or options.set_disable or options.set_default: + if (len(args) < 1): + parser.error("You must specify service name!") + options.do_list = False + + qvm_collection = QubesVmCollection() + if options.do_list: + qvm_collection.lock_db_for_reading() + qvm_collection.load() + qvm_collection.unlock_db() + else: + qvm_collection.lock_db_for_writing() + qvm_collection.load() + + vm = qvm_collection.get_vm_by_name(vmname) + if vm is None: + print >> sys.stderr, "A VM with the name '{0}' does not exist in the system.".format(vmname) + exit(1) + + changed = False + if options.do_list: + do_list(vm) + elif options.set_enable: + vm.services[args[0]] = True + changed = True + elif options.set_disable: + vm.services[args[0]] = False + changed = True + elif options.set_default: + if vm.services.has_key(args[0]): + vm.services.pop(args[0]) + changed = True + + if changed: + qvm_collection.save() + + if not options.do_list: + qvm_collection.unlock_db() + + +main() From 6a9b4cadd0c419bd331c98829be285f91930a7bd Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:03:12 +0200 Subject: [PATCH 198/386] vm+dom0/vif-script: indent fix --- network/vif-route-qubes | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/network/vif-route-qubes b/network/vif-route-qubes index c8070177..f4e89893 100755 --- a/network/vif-route-qubes +++ b/network/vif-route-qubes @@ -53,8 +53,7 @@ if [ "${ip}" ] ; then for addr in ${ip} ; do ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} metric $metric done - echo ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP - ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP + ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP fi log debug "Successful vif-route-qubes $command for $vif." From 10ed263c129e3a146c837c1dc80fd5f594475b34 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:03:55 +0200 Subject: [PATCH 199/386] dom0+vm/vif-script: setup IP address of net backend interface This is needed to connect to ProxyVM/NetVM, not only pass traffic ahead. Still firewall rules applies. --- network/vif-route-qubes | 2 ++ 1 file changed, 2 insertions(+) diff --git a/network/vif-route-qubes b/network/vif-route-qubes index f4e89893..6809028b 100755 --- a/network/vif-route-qubes +++ b/network/vif-route-qubes @@ -54,6 +54,8 @@ if [ "${ip}" ] ; then ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} metric $metric done ${cmdprefix} iptables -t raw $iptables_cmd -i ${vif} \! -s ${ip} -j DROP + back_ip=${ip%.*}.1 + ${cmdprefix} ip addr ${ipcmd} ${back_ip}/32 dev ${vif} fi log debug "Successful vif-route-qubes $command for $vif." From f11882f1ac098ca13ec40c70f0387180e7be928b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:07:01 +0200 Subject: [PATCH 200/386] dom0+vm/iptables: add PR-QBS-SERVICES chain in PREROUTING nat table Additional chain for some qubes-related redirections. BTW PR-QBS should be renamed now to PR-QBS-DNS... --- network/iptables | 2 ++ 1 file changed, 2 insertions(+) diff --git a/network/iptables b/network/iptables index 6e6e6d89..5977ff22 100644 --- a/network/iptables +++ b/network/iptables @@ -4,7 +4,9 @@ :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :PR-QBS - [0:0] +:PR-QBS-SERVICES - [0:0] -A PREROUTING -j PR-QBS +-A PREROUTING -j PR-QBS-SERVICES -A POSTROUTING -o vif+ -j ACCEPT -A POSTROUTING -o lo -j ACCEPT -A POSTROUTING -j MASQUERADE From a953e560420ee2063b4e2c0d95e917e7a53cce60 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:17:09 +0200 Subject: [PATCH 201/386] vm/spec: remove executable perm where not needed --- rpm_spec/core-vm.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 0b9d5ffd..4473e089 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -80,7 +80,7 @@ su user -c 'touch /home/user/.gnome2/nautilus-scripts/.scripts_created2' %install -install -D misc/fstab $RPM_BUILD_ROOT/etc/fstab +install -m 0644 -D misc/fstab $RPM_BUILD_ROOT/etc/fstab install -d $RPM_BUILD_ROOT/etc/init.d install vm-init.d/* $RPM_BUILD_ROOT/etc/init.d/ @@ -116,7 +116,7 @@ mkdir -p $RPM_BUILD_ROOT/usr/lib/qubes install -D misc/qubes_core.modules $RPM_BUILD_ROOT/etc/sysconfig/modules/qubes_core.modules -install network/qubes_network.rules $RPM_BUILD_ROOT/etc/udev/rules.d/99-qubes_network.rules +install -m 0644 network/qubes_network.rules $RPM_BUILD_ROOT/etc/udev/rules.d/99-qubes_network.rules install network/qubes_setup_dnat_to_ns $RPM_BUILD_ROOT/usr/lib/qubes install network/qubes_fix_nm_conf.sh $RPM_BUILD_ROOT/usr/lib/qubes install network/setup_ip $RPM_BUILD_ROOT/usr/lib/qubes/ @@ -126,7 +126,7 @@ ln -s /usr/lib/qubes/qubes_setup_dnat_to_ns $RPM_BUILD_ROOT/etc/dhclient.d/qubes install -d $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install network/{qubes_nmhook,30-qubes_external_ip} $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install -D network/vif-route-qubes $RPM_BUILD_ROOT/etc/xen/scripts/vif-route-qubes -install -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables +install -m 0644 -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables install -d $RPM_BUILD_ROOT/usr/sbin install network/qubes_firewall $RPM_BUILD_ROOT/usr/sbin/ From b2cfd736911c12b5b8f305c5edb0f5e6e289e88a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:24:49 +0200 Subject: [PATCH 202/386] vm: qubes-yum-proxy service (#568) Introduce proxy service, which allow only http(s) traffic to yum repos. The filter rules are based on URL regexp, so it isn't full-featured content inspection and can be easy bypassed, but should be enough to prevent some erroneus user actions (like clicking on invalid link). It is set up to intercept connections to 10.137.255.254:8082, so VM can connect to this IP regardless of VM in which proxy is running. By default it is started in every NetVM, but this can be changed using qvm-service or qubes-manager (as always). --- network/filter-qubes-yum | 6 ++ network/tinyproxy-qubes-yum.conf | 30 +++++++ rpm_spec/core-vm.spec | 12 ++- vm-init.d/qubes-yum-proxy | 121 +++++++++++++++++++++++++++++ vm-systemd/qubes-sysinit.sh | 2 +- vm-systemd/qubes-yum-proxy.service | 14 ++++ 6 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 network/filter-qubes-yum create mode 100644 network/tinyproxy-qubes-yum.conf create mode 100755 vm-init.d/qubes-yum-proxy create mode 100644 vm-systemd/qubes-yum-proxy.service diff --git a/network/filter-qubes-yum b/network/filter-qubes-yum new file mode 100644 index 00000000..b244f3cf --- /dev/null +++ b/network/filter-qubes-yum @@ -0,0 +1,6 @@ +.*/repodata/[A-Za-z0-9-]*\(primary\|filelist\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ +.*/repodata/repomd\.xml$ +.*\.rpm$ +.*\.drpm$ +mirrors.fedoraproject.org:443 +^http://mirrors\..*/mirrorlist diff --git a/network/tinyproxy-qubes-yum.conf b/network/tinyproxy-qubes-yum.conf new file mode 100644 index 00000000..43b5082f --- /dev/null +++ b/network/tinyproxy-qubes-yum.conf @@ -0,0 +1,30 @@ +User tinyproxy +Group tinyproxy +Port 8082 +Timeout 60 +DefaultErrorFile "/usr/share/tinyproxy/default.html" + +#StatHost "tinyproxy.stats" +StatFile "/usr/share/tinyproxy/stats.html" +Syslog On +LogLevel Notice +PidFile "/var/run/tinyproxy/tinyproxy-qubes-yum.pid" + +MaxClients 50 +MinSpareServers 2 +MaxSpareServers 10 +StartServers 2 +MaxRequestsPerChild 0 +ViaProxyName "tinyproxy" + +Allow 127.0.0.1 +Allow 10.137.0.0/16 + + +Filter "/etc/tinyproxy/filter-qubes-yum" +FilterURLs On +#FilterExtended On +#FilterCaseSensitive On +FilterDefaultDeny Yes +ConnectPort 443 + diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 4473e089..10da4d2a 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -37,6 +37,7 @@ Requires: yum-plugin-post-transaction-actions Requires: NetworkManager >= 0.8.1-1 Requires: /usr/bin/mimeopen Requires: /sbin/ethtool +Requires: tinyproxy Provides: qubes-core-vm Obsoletes: qubes-core-commonvm Obsoletes: qubes-core-appvm @@ -127,6 +128,8 @@ install -d $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install network/{qubes_nmhook,30-qubes_external_ip} $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install -D network/vif-route-qubes $RPM_BUILD_ROOT/etc/xen/scripts/vif-route-qubes install -m 0644 -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables +install -m 0644 -D network/tinyproxy-qubes-yum.conf $RPM_BUILD_ROOT/etc/tinyproxy/tinyproxy-qubes-yum.conf +install -m 0644 -D network/filter-qubes-yum $RPM_BUILD_ROOT/etc/tinyproxy/filter-qubes-yum install -d $RPM_BUILD_ROOT/usr/sbin install network/qubes_firewall $RPM_BUILD_ROOT/usr/sbin/ @@ -334,6 +337,8 @@ rm -rf $RPM_BUILD_ROOT /etc/sudoers.d/qubes /etc/sysconfig/iptables /etc/sysconfig/modules/qubes_core.modules +/etc/tinyproxy/filter-qubes-yum +/etc/tinyproxy/tinyproxy-qubes-yum.conf /etc/udev/rules.d/50-qubes_memory.rules /etc/udev/rules.d/99-qubes_block.rules /etc/udev/rules.d/99-qubes_network.rules @@ -422,6 +427,7 @@ The Qubes core startup configuration for SysV init (or upstart). /etc/init.d/qubes_core_netvm /etc/init.d/qubes-firewall /etc/init.d/qubes-netwatcher +/etc/init.d/qubes-yum-proxy %post sysvinit @@ -454,6 +460,8 @@ chkconfig --add qubes_firewall || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes_firewall on || echo "WARNING: Cannot enable service qubes_core!" chkconfig --add qubes-netwatcher || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes-netwatcher on || echo "WARNING: Cannot enable service qubes_core!" +chkconfig --add qubes-yum-proxy || echo "WARNING: Cannot add service qubes-yum-proxy!" +chkconfig qubes-yum-proxy on || echo "WARNING: Cannot enable service qubes-yum-proxy!" # TODO: make this not display the silly message about security context... sed -i s/^id:.:initdefault:/id:3:initdefault:/ /etc/inittab @@ -466,6 +474,7 @@ if [ "$1" = 0 ] ; then chkconfig qubes_core_appvm off chkconfig qubes-firewall off chkconfig qubes-netwatcher off + chkconfig qubes-yum-proxy off fi %package systemd @@ -495,6 +504,7 @@ The Qubes core startup configuration for SystemD init. /lib/systemd/system/qubes-sysinit.service /lib/systemd/system/qubes-update-check.service /lib/systemd/system/qubes-update-check.timer +/lib/systemd/system/qubes-yum-proxy.service %dir /usr/lib/qubes/init /usr/lib/qubes/init/prepare-dvm.sh /usr/lib/qubes/init/network-proxy-setup.sh @@ -509,7 +519,7 @@ The Qubes core startup configuration for SystemD init. %post systemd -for srv in qubes-dvm qubes-meminfo-writer qubes-qrexec-agent qubes-sysinit qubes-misc-post qubes-netwatcher qubes-network qubes-firewall; do +for srv in qubes-dvm qubes-meminfo-writer qubes-qrexec-agent qubes-sysinit qubes-misc-post qubes-netwatcher qubes-network qubes-firewall qubes-yum-proxy; do /bin/systemctl enable $srv.service 2> /dev/null done diff --git a/vm-init.d/qubes-yum-proxy b/vm-init.d/qubes-yum-proxy new file mode 100755 index 00000000..52f329ba --- /dev/null +++ b/vm-init.d/qubes-yum-proxy @@ -0,0 +1,121 @@ +#!/bin/sh +# +# tinyproxy Startup script for the tinyproxy server as Qubes yum proxy +# +# chkconfig: - 85 15 +# description: small, efficient HTTP/SSL proxy daemon +# +# processname: tinyproxy +# config: /etc/tinyproxy/tinyproxy-qubes-yum.conf +# config: /etc/sysconfig/tinyproxy-qubes-yum +# pidfile: /var/run/tinyproxy/tinyproxy-qubes-yum.pid +# +# Note: pidfile is created by tinyproxy in its config +# see PidFile in the configuration file. + +# Source function library. +. /etc/rc.d/init.d/functions + +# Source networking configuration. +. /etc/sysconfig/network + +# Check that networking is up. +[ "$NETWORKING" = "no" ] && exit 0 + +exec="/usr/sbin/tinyproxy" +prog=$(basename $exec) +config="/etc/tinyproxy/tinyproxy-qubes-yum.conf" +pidfile="/var/run/tinyproxy/tinyproxy-qubes-yum.pid" + +[ -e /etc/sysconfig/tinyproxy-qubes-yum ] && . /etc/sysconfig/tinyproxy-qubes-yum + +lockfile=/var/lock/subsys/tinyproxy-qubes-yum + +start() { + type=`/usr/bin/xenstore-read qubes_vm_type` + start_yum_proxy=`/usr/bin/xenstore-read qubes-service/qubes-yum-proxy 2>/dev/null` + if [ -z "$start_yum_proxy" ] && [ "$type" != "NetVM" ] || [ "$start_yum_proxy" != "1" ]; then + # Yum proxy disabled + exit 0 + fi + + [ -x $exec ] || exit 5 + [ -f $config ] || exit 6 + # setup network redirection + /sbin/iptables -I INPUT -i vif+ -p tcp --dport 8082 -j ACCEPT + /sbin/iptables -t nat -A PR-QBS-SERVICES -i vif+ -d 10.137.255.254 -p tcp --dport 8082 -j REDIRECT + + echo -n $"Starting $prog (as Qubes yum proxy): " + daemon $exec -c $config + retval=$? + echo + [ $retval -eq 0 ] && touch $lockfile + return $retval +} + +stop() { + echo -n $"Stopping $prog: " + killproc -p $pidfile $prog + retval=$? + echo + /sbin/iptables -t nat -D PR-QBS-SERVICES -i vif+ -d 10.137.255.254 -p tcp --dport 8082 -j REDIRECT + /sbin/iptables -D INPUT -i vif+ -p tcp --dport 8082 -j ACCEPT + [ $retval -eq 0 ] && rm -f $lockfile + return $retval +} + +restart() { + stop + start +} + +reload() { + echo -n $"Reloading $prog: " + killproc -p $pidfile $prog -HUP + echo +} + +force_reload() { + restart +} + +rh_status() { + status $prog +} + +rh_status_q() { + rh_status >/dev/null 2>&1 +} + +case "$1" in + start) + rh_status_q && exit 0 + $1 + ;; + stop) + rh_status_q || exit 0 + $1 + ;; + restart) + $1 + ;; + reload) + rh_status_q || exit 7 + $1 + ;; + force-reload) + force_reload + ;; + status) + rh_status + ;; + condrestart|try-restart) + rh_status_q || exit 0 + restart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" + exit 2 +esac +exit $? + diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 1fb463c1..0c8e9d0f 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -1,7 +1,7 @@ #!/bin/sh # List of services enabled by default (in case of absence of xenstore entry) -DEFAULT_ENABLED_NETVM="network-manager qubes-network qubes-update-check" +DEFAULT_ENABLED_NETVM="network-manager qubes-network qubes-update-check qubes-yum-proxy" DEFAULT_ENABLED_PROXYVM="meminfo-writer qubes-network qubes-firewall qubes-netwatcher qubes-update-check" DEFAULT_ENABLED_APPVM="meminfo-writer cups qubes-update-check" DEFAULT_ENABLED_TEMPLATEVM=$DEFAULT_ENABLED_APPVM diff --git a/vm-systemd/qubes-yum-proxy.service b/vm-systemd/qubes-yum-proxy.service new file mode 100644 index 00000000..39c14ec8 --- /dev/null +++ b/vm-systemd/qubes-yum-proxy.service @@ -0,0 +1,14 @@ +[Unit] +Description=Qubes yum proxy (tinyproxy) +ConditionPathExists=/var/run/qubes-service/qubes-yum-proxy +After=iptables.service + +[Service] +ExecStartPre=/sbin/iptables -I INPUT -i vif+ -p tcp --dport 8082 -j ACCEPT +ExecStartPre=/sbin/iptables -t nat -A PR-QBS-SERVICES -i vif+ -d 10.137.255.254 -p tcp --dport 8082 -j REDIRECT +ExecStart=/usr/sbin/tinyproxy -d -c /etc/tinyproxy/tinyproxy-qubes-yum.conf +ExecStopPost=/sbin/iptables -t nat -D PR-QBS-SERVICES -i vif+ -d 10.137.255.254 -p tcp --dport 8082 -j REDIRECT +ExecStopPost=/sbin/iptables -D INPUT -i vif+ -p tcp --dport 8082 -j ACCEPT + +[Install] +WantedBy=multi-user.target From 332e9008f0053159faef4ccd992d46113d9bf43e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:33:56 +0200 Subject: [PATCH 203/386] vm/qubes-yum-proxy: create dir for pidfile under FC15 (#568) On FC>=15 /var/run is on tmpfs, so /var/run/tinyproxy from rpm don't survive reboot. This is bug in Fedora package (should include config file for tmpfiles service). For now create dir just before starting service. --- vm-systemd/qubes-yum-proxy.service | 1 + 1 file changed, 1 insertion(+) diff --git a/vm-systemd/qubes-yum-proxy.service b/vm-systemd/qubes-yum-proxy.service index 39c14ec8..b03c34de 100644 --- a/vm-systemd/qubes-yum-proxy.service +++ b/vm-systemd/qubes-yum-proxy.service @@ -4,6 +4,7 @@ ConditionPathExists=/var/run/qubes-service/qubes-yum-proxy After=iptables.service [Service] +ExecStartPre=/usr/bin/install -d --owner tinyproxy --group tinyproxy /var/run/tinyproxy ExecStartPre=/sbin/iptables -I INPUT -i vif+ -p tcp --dport 8082 -j ACCEPT ExecStartPre=/sbin/iptables -t nat -A PR-QBS-SERVICES -i vif+ -d 10.137.255.254 -p tcp --dport 8082 -j REDIRECT ExecStart=/usr/sbin/tinyproxy -d -c /etc/tinyproxy/tinyproxy-qubes-yum.conf From edc3518ec956feec1b1a09ce50fc58a75f60a127 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:37:53 +0200 Subject: [PATCH 204/386] vm/qubes-yum-proxy: setup yum to use qubes-yum-proxy (#568) The simplest way is just add proxy=... entry to /etc/yum.conf, but sometimes it is reasonable to bypass the proxy. Some examples: - usage of non-standard repos with some exotic file layout, which will be blocked by the proxy - usage of repos not-accessible via proxy (eg only via VPN stared in VpnVM) This commit introduces 'yum-proxy-setup' pseudo-service, which can be controlled via standard qvm-service or qubes-manager. When enabled - yum will be configured at VM startup to use qubes proxy, otherwise - to connect directly (proxy setting will be cleared). --- rpm_spec/core-vm.spec | 10 ++++++++++ vm-init.d/qubes_core | 7 +++++++ vm-systemd/misc-post.sh | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 10da4d2a..06004ea5 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -131,6 +131,9 @@ install -m 0644 -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables install -m 0644 -D network/tinyproxy-qubes-yum.conf $RPM_BUILD_ROOT/etc/tinyproxy/tinyproxy-qubes-yum.conf install -m 0644 -D network/filter-qubes-yum $RPM_BUILD_ROOT/etc/tinyproxy/filter-qubes-yum +install -d $RPM_BUILD_ROOT/etc/yum.conf.d +touch $RPM_BUILD_ROOT/etc/yum.conf.d/qubes-proxy.conf + install -d $RPM_BUILD_ROOT/usr/sbin install network/qubes_firewall $RPM_BUILD_ROOT/usr/sbin/ install network/qubes_netwatcher $RPM_BUILD_ROOT/usr/sbin/ @@ -236,6 +239,12 @@ fi # Remove ip_forward setting from sysctl, so NM will not reset it sed 's/^net.ipv4.ip_forward.*/#\0/' -i /etc/sysctl.conf +if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then + echo >> /etc/yum.conf + echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf + echo 'include=file:///etc/yum.conf.d/qubes-proxy.conf' >> /etc/yum.conf +fi + # Prevent unnecessary updates in VMs: sed -i -e '/^exclude = kernel/d' /etc/yum.conf echo 'exclude = kernel, xorg-x11-drv-*, xorg-x11-drivers, xorg-x11-server-*' >> /etc/yum.conf @@ -343,6 +352,7 @@ rm -rf $RPM_BUILD_ROOT /etc/udev/rules.d/99-qubes_block.rules /etc/udev/rules.d/99-qubes_network.rules /etc/xen/scripts/vif-route-qubes +/etc/yum.conf.d/qubes-proxy.conf /etc/yum.repos.d/qubes.repo /etc/yum/post-actions/qubes_trigger_sync_appmenus.action /lib/firmware/updates diff --git a/vm-init.d/qubes_core b/vm-init.d/qubes_core index 7193d386..de194f89 100755 --- a/vm-init.d/qubes_core +++ b/vm-init.d/qubes_core @@ -36,6 +36,13 @@ start() echo "ZONE=\"$timezone\"" >> /etc/sysconfig/clock fi + yum_proxy_setup=$(/usr/bin/xenstore-read qubes-service/yum-proxy-setup 2> /dev/null) + if [ "$yum_proxy_setup" != "0" ]; then + echo proxy=http://10.137.255.254:8082/ > /etc/yum.conf.d/qubes-proxy.conf + else + echo > /etc/yum.conf.d/qubes-proxy.conf + fi + # Set IP address again (besides action in udev rules); this is needed by # DispVM (to override DispVM-template IP) and in case when qubes_ip was # called by udev before loading evtchn kernel module - in which case diff --git a/vm-systemd/misc-post.sh b/vm-systemd/misc-post.sh index 9ebdf2e0..dbefd432 100755 --- a/vm-systemd/misc-post.sh +++ b/vm-systemd/misc-post.sh @@ -1,5 +1,11 @@ #!/bin/sh +if [ -f /var/run/qubes-service/yum-proxy-setup ]; then + echo proxy=http://10.137.255.254:8082/ > /etc/yum.conf.d/qubes-proxy.conf +else + echo > /etc/yum.conf.d/qubes-proxy.conf +fi + # Set IP address again (besides action in udev rules); this is needed by # DispVM (to override DispVM-template IP) and in case when qubes_ip was # called by udev before loading evtchn kernel module - in which case From 030584f026ad316f591c5a739c8d4bf427f96495 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:50:05 +0200 Subject: [PATCH 205/386] dom0/core-firewall: firewall setting for qubes-yum-proxy (#568) New setting for access to qubes-yum-proxy. The difference from other firewall setting (and reason for new top-level setting): 'deny' is enforced even if policy is set to 'allow'. This proxy service is mainly used to filter network traffic, so do not expose it to VMs which can connect to any host directly (eg 'untrusted' VM). --- dom0/qvm-core/qubes.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index e7222140..b06f107a 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -106,6 +106,9 @@ qubes_appmenu_create_cmd = "/usr/lib/qubes/create_apps_for_appvm.sh" qubes_appmenu_remove_cmd = "/usr/lib/qubes/remove_appvm_appmenus.sh" qubes_pciback_cmd = '/usr/lib/qubes/unbind_pci_device.sh' +yum_proxy_ip = '10.137.255.254' +yum_proxy_port = '8082' + class QubesException (Exception) : pass if not dry_run: @@ -400,7 +403,7 @@ class QubesVm(object): shutil.copy(self.firewall_conf, "%s/backup/%s-firewall-%s.xml" % (qubes_base_dir, self.name, time.strftime('%Y-%m-%d-%H:%M:%S'))) self.write_firewall_conf({'allow': False, 'allowDns': False, - 'allowIcmp': False, 'rules': []}) + 'allowIcmp': False, 'allowYumProxy': False, 'rules': []}) else: new_netvm.connected_vms[self.qid]=self @@ -1167,7 +1170,8 @@ class QubesVm(object): "QubesFirwallRules", policy = "allow" if conf["allow"] else "deny", dns = "allow" if conf["allowDns"] else "deny", - icmp = "allow" if conf["allowIcmp"] else "deny" + icmp = "allow" if conf["allowIcmp"] else "deny", + yumProxy = "allow" if conf["allowYumProxy"] else "deny" ) for rule in conf["rules"]: @@ -1213,7 +1217,7 @@ class QubesVm(object): return os.path.exists (self.firewall_conf) def get_firewall_conf(self): - conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True } + conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } try: tree = xml.etree.ElementTree.parse(self.firewall_conf) @@ -1222,6 +1226,7 @@ class QubesVm(object): conf["allow"] = (root.get("policy") == "allow") conf["allowDns"] = (root.get("dns") == "allow") conf["allowIcmp"] = (root.get("icmp") == "allow") + conf["allowYumProxy"] = (root.get("yumProxy") == "allow") for element in root: rule = {} @@ -1969,7 +1974,7 @@ class QubesProxyVm(QubesNetVm): if vm.has_firewall(): conf = vm.get_firewall_conf() else: - conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True } + conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } xid = vm.get_xid() if xid < 0: # VM not active ATM @@ -2012,6 +2017,10 @@ class QubesProxyVm(QubesNetVm): iptables += "-A FORWARD -s {0} -p udp -d {1} --dport 53 -j ACCEPT\n".format(ip,self.netvm.secondary_dns) if conf["allowIcmp"]: iptables += "-A FORWARD -s {0} -p icmp -j ACCEPT\n".format(ip) + if conf["allowYumProxy"]: + iptables += "-A FORWARD -s {0} -p tcp -d {1} --dport {2} -j ACCEPT\n".format(ip, yum_proxy_ip, yum_proxy_port) + else: + iptables += "-A FORWARD -s {0} -p tcp -d {1} --dport {2} -j DROP\n".format(ip, yum_proxy_ip, yum_proxy_port) iptables += "-A FORWARD -s {0} -j {1}\n".format(ip, default_action) iptables += "COMMIT\n" From c81cc32da26162f48b3f93dace3cd32626b42383 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:56:49 +0200 Subject: [PATCH 206/386] dom0/qvm-firewall: add support for 'allowYumProxy' setting (#568) --- dom0/qvm-tools/qvm-firewall | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall index f85bc6ff..b5af141e 100755 --- a/dom0/qvm-tools/qvm-firewall +++ b/dom0/qvm-tools/qvm-firewall @@ -189,7 +189,8 @@ def display_firewall(conf): print "Firewall policy: %s" % ( "ALLOW all traffic except" if conf['allow'] else "DENY all traffic except") print "ICMP: %s" % ("ALLOW" if conf['allowIcmp'] else 'DENY') - print "DMS: %s" % ("ALLOW" if conf['allowDns'] else 'DENY') + print "DNS: %s" % ("ALLOW" if conf['allowDns'] else 'DENY') + print "Qubes yum proxy: %s" % ("ALLOW" if conf['allowYumProxy'] else 'DENY') list_rules(conf['rules']) def add_rule(conf, args): @@ -251,6 +252,8 @@ def main(): help="Set ICMP access (allow/deny)") parser.add_option ("-D", "--dns", dest="set_dns", action="store", default=None, help="Set DNS access (allow/deny)") + parser.add_option ("-Y", "--yum-proxy", dest="set_yum_proxy", action="store", default=None, + help="Set access to Qubes yum proxy (allow/deny)") parser.add_option ("-n", "--numeric", dest="numeric", action="store_true", default=False, help="Display port numbers instead of services (makes sense only with --list)") @@ -261,7 +264,7 @@ def main(): vmname = args[0] args = args[1:] - if options.do_add or options.do_del or options.set_policy or options.set_icmp or options.set_dns: + if options.do_add or options.do_del or options.set_policy or options.set_icmp or options.set_dns or options.set_yum_proxy: options.do_list = False qvm_collection = QubesVmCollection() if options.do_list: @@ -289,6 +292,9 @@ def main(): if options.set_dns: conf['allowDns'] = allow_deny_value(options.set_dns) changed = True + if options.set_yum_proxy: + conf['allowYumProxy'] = allow_deny_value(options.set_yum_proxy) + changed = True if options.do_add: load_services() From d89733b51710bb4014af333b9b88977e10d7da3c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 02:57:28 +0200 Subject: [PATCH 207/386] dom0/core: setup yum to use proxy when it have access to it (#568) To simplify configuration, automatically enable 'yum-proxy-setup' pseudo-service when allowing access to the proxy. Also disable this service, when access is revoked. Thanks to this the user can enable this feature by one click in firewall settings. --- dom0/qvm-core/qubes.py | 7 +++++++ dom0/qvm-tools/qvm-firewall | 1 + 2 files changed, 8 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index b06f107a..6240d3cb 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1211,6 +1211,13 @@ class QubesVm(object): os.path.basename(sys.argv[0]), err) return False + # Automatically enable/disable 'yum-proxy-setup' service based on allowYumProxy + if conf['allowYumProxy']: + self.services['yum-proxy-setup'] = True + else: + if self.services.has_key('yum-proxy-setup'): + self.services.pop('yum-proxy-setup') + return True def has_firewall(self): diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall index b5af141e..581fd3ca 100755 --- a/dom0/qvm-tools/qvm-firewall +++ b/dom0/qvm-tools/qvm-firewall @@ -314,6 +314,7 @@ def main(): if vm.is_running(): if vm.netvm is not None and vm.netvm.is_proxyvm(): vm.netvm.write_iptables_xenstore_entry() + qvm_collection.save() if not options.do_list: qvm_collection.unlock_db() From c49ad3438bfe6b6aa4bec9b0a1a9b89cd38bffbc Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 31 May 2012 03:00:06 +0200 Subject: [PATCH 208/386] dom0/core: remove trailing spaces --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 6240d3cb..2db9fd1e 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1725,7 +1725,7 @@ class QubesNetVm(QubesVm): attrs_config['dir_path']['eval'] = 'value if value is not None else qubes_servicevms_dir + "/" + self.name' attrs_config['label']['default'] = default_servicevm_label attrs_config['memory']['default'] = 200 - + # New attributes attrs_config['netid'] = { 'save': 'str(self.netid)', 'order': 30 } attrs_config['netprefix'] = { 'eval': '"10.137.{0}.".format(self.netid)' } From 65a94681b267af3b9af2a2c45b446029a21d447f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 1 Jun 2012 20:46:23 +0200 Subject: [PATCH 209/386] vm/qrexec: removed obsolete "directly:" command prefix support This was used for launching DispVM editor in pre-qrexec-RPC times. --- qrexec/qrexec_agent.c | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index 0741f8e8..93fa100d 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -113,28 +113,6 @@ void no_colon_in_cmd() exit(1); } -void do_exec_directly(char *cmd) -{ - struct passwd *pwd; - char *sep = index(cmd, ':'); - if (!sep) - no_colon_in_cmd(); - *sep = 0; - pwd = getpwnam(cmd); - if (!pwd) { - perror("getpwnam"); - exit(1); - } - setgid(pwd->pw_gid); - initgroups(cmd, pwd->pw_gid); - setuid(pwd->pw_uid); - setenv("HOME", pwd->pw_dir, 1); - setenv("USER", cmd, 1); - execl(sep + 1, sep + 1, NULL); - perror("execl"); - exit(1); -} - void do_exec(char *cmd) { char *sep = index(cmd, ':'); @@ -144,8 +122,6 @@ void do_exec(char *cmd) signal(SIGCHLD, SIG_DFL); signal(SIGPIPE, SIG_DFL); - if (!strcmp(cmd, "directly")) - do_exec_directly(sep + 1); execl("/bin/su", "su", "-", cmd, "-c", sep + 1, NULL); perror("execl"); exit(1); From 1f194cbe08b0db8a01bd11d5cc158eff1632b229 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 1 Jun 2012 20:59:45 +0200 Subject: [PATCH 210/386] dom0: block_cleaner: removes ejected devices from xenstore When device is ejected by some VM (state=6, effectively inactive), it should be removed from xenstore to free slot for some another device. This should be done by libxl toolstack, but not implemented in xen 4.1 - AFAIR done in xen 4.2. --- dom0/aux-tools/block_cleaner_daemon.py | 53 ++++++++++++++++++++++++++ dom0/init.d/qubes_core | 2 + rpm_spec/core-dom0.spec | 2 + 3 files changed, 57 insertions(+) create mode 100755 dom0/aux-tools/block_cleaner_daemon.py diff --git a/dom0/aux-tools/block_cleaner_daemon.py b/dom0/aux-tools/block_cleaner_daemon.py new file mode 100755 index 00000000..76154759 --- /dev/null +++ b/dom0/aux-tools/block_cleaner_daemon.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +import xen.lowlevel.xs +import time +import subprocess + +xs = xen.lowlevel.xs.xs() + +domain_list = [] + +def setup_watches(): + global domain_list + + new_domain_list = xs.ls('', '/local/domain') + for dom in new_domain_list: + if dom not in domain_list: + print "Adding: %s" % dom + xs.watch('/local/domain/%s/backend/vbd' % dom, int(dom)) + for dom in domain_list: + if dom not in new_domain_list: + print "Removing: %s" % dom + xs.unwatch('/local/domain/%s/backend/vbd' % dom, int(dom)) + domain_list = new_domain_list + +def handle_vbd_state(path): + state = xs.read('', path) + if state == '6': + # Closed state; wait a moment to not interrupt reconnect + time.sleep(0.500) + state = xs.read('', path) + if state == '6': + # If still closed, detach device + path_components = path.split('/') + # /local/domain//backend/vbd///... + vm_xid = path_components[6] + vm_dev = path_components[7] + if vm_xid in domain_list: + subprocess.call('xl', 'block-detach', vm_xid, vm_dev) + +def main(): + + xs.watch('@introduceDomain', 'reload') + xs.watch('@releaseDomain', 'reload') + setup_watches() + while True: + (path, token) = xs.read_watch() + if token == 'reload': + setup_watches() + else: + if path.endswith('/state'): + handle_vbd_state(path) + +main() diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index 072f0ac2..b491da6d 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -53,6 +53,8 @@ start() MEMINFO_DELAY_USEC=100000 /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC & + /usr/lib/qubes/block_cleaner_daemon.py > /var/log/qubes/block_cleaner.log 2>&1 & + # Reply block events to hide mounted devices from qubes-block list (at first udev run, only / is mounted) udevadm trigger --subsystem-match=block --action=add diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index f6ec33e1..4de15029 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -114,6 +114,7 @@ cp aux-tools/qubes-receive-updates $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_add_change $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_remove $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_cleanup $RPM_BUILD_ROOT/usr/lib/qubes/ +cp aux-tools/block_cleaner_daemon.py $RPM_BUILD_ROOT/usr/lib/qubes/ mkdir -p $RPM_BUILD_ROOT/etc/qubes_rpc/policy cp ../qubes_rpc/qubes.Filecopy.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes.Filecopy @@ -344,6 +345,7 @@ fi /usr/lib/qubes/block_add_change /usr/lib/qubes/block_remove /usr/lib/qubes/block_cleanup +/usr/lib/qubes/block_cleaner_daemon.py* %attr(4750,root,qubes) /usr/lib/qubes/qfile-dom0-unpacker %attr(770,root,qubes) %dir /var/lib/qubes %attr(770,root,qubes) %dir /var/lib/qubes/vm-templates From dd60d3da956c06cebbd7e1075e9042b22d735c6d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 2 Jun 2012 12:32:49 +0200 Subject: [PATCH 211/386] makefile: rename vchan Makefile to not conflict with windows build --- rpm_spec/core-dom0.spec | 2 +- rpm_spec/core-vm.spec | 2 +- vchan/{Makefile => Makefile.linux} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename vchan/{Makefile => Makefile.linux} (100%) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 4de15029..e850371d 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -55,7 +55,7 @@ python -O -m compileall qvm-core qmemman make -C restore make -C aux-tools make -C ../qubes_rpc -make -C ../vchan +make -C ../vchan -f Makefile.linux make -C ../u2mfn make -C ../qrexec diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 06004ea5..88b26870 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -54,7 +54,7 @@ The Qubes core files for installation inside a Qubes VM. %build make -C u2mfn -make -C vchan +make -C vchan -f Makefile.linux make -C misc make -C qubes_rpc make -C qrexec diff --git a/vchan/Makefile b/vchan/Makefile.linux similarity index 100% rename from vchan/Makefile rename to vchan/Makefile.linux From 1462e36454c93c93023e268a8a70f4801dfe44b3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 2 Jun 2012 12:34:35 +0200 Subject: [PATCH 212/386] win: convert vchan/sources to windows EOL-style --- vchan/sources | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/vchan/sources b/vchan/sources index 1baae972..5d7cff39 100644 --- a/vchan/sources +++ b/vchan/sources @@ -1,24 +1,24 @@ -TARGETNAME=libvchan -TARGETTYPE=LIBRARY -TARGETPATH=..\win\libs - -#BUILD_PASS0_CONSUMES=gntmem evtchn xenstore -#BUILD_PASS0_PRODUCES=vchan - -USE_MSVCRT=1 - -DLLDEF=libvchan.def - -C_DEFINES = $(C_DEFINES) /DCONFIG_STUBDOM - -INCLUDES=$(INCLUDES); \ - ..\win\include;\ - -SOURCES=io.c init.c - -TARGETLIBS=\ - $(SDK_LIB_PATH)\setupapi.lib \ - $(SDK_LIB_PATH)\kernel32.lib - - - +TARGETNAME=libvchan +TARGETTYPE=LIBRARY +TARGETPATH=..\win\libs + +#BUILD_PASS0_CONSUMES=gntmem evtchn xenstore +#BUILD_PASS0_PRODUCES=vchan + +USE_MSVCRT=1 + +DLLDEF=libvchan.def + +C_DEFINES = $(C_DEFINES) /DCONFIG_STUBDOM + +INCLUDES=$(INCLUDES); \ + ..\win\include;\ + +SOURCES=io.c init.c + +TARGETLIBS=\ + $(SDK_LIB_PATH)\setupapi.lib \ + $(SDK_LIB_PATH)\kernel32.lib + + + From e4dab493da0d4612d0094d9c540527fcc84b10f8 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Sat, 2 Jun 2012 15:31:18 +0200 Subject: [PATCH 213/386] version 2.0.25 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 18f812ff..efb45341 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.23 +2.0.25 From 87115716ba1d7f2a643fa13d308a2e0adcd6cb4f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 2 Jun 2012 13:25:18 +0200 Subject: [PATCH 214/386] vchan/stubdom: remove temp hack (unneded now) This was needed when stubdom have no write access to device/vchan. --- vchan/init.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index d870aea2..21d774a8 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -127,11 +127,6 @@ static int server_interface_init(struct libvchan *ctrl, int devno) struct xs_handle *xs; char buf[64]; char ref[16]; - /* XXX temp hack begin */ - char *domid_s; - int domid = 0; - unsigned int len; - /* XXX temp hack end */ #ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn *evfd; #else @@ -163,11 +158,6 @@ static int server_interface_init(struct libvchan *ctrl, int devno) ctrl->evport = port; ctrl->devno = devno; - // stubdom debug HACK XXX - domid_s = xs_read(xs, 0, "domid", &len); - if (domid_s) - domid = atoi(domid_s); - snprintf(buf, sizeof buf, "device/vchan/%d/version", devno); if (!xs_write(xs, 0, buf, "2", strlen("2"))) goto fail2; @@ -175,21 +165,11 @@ static int server_interface_init(struct libvchan *ctrl, int devno) snprintf(ref, sizeof ref, "%d", ctrl->ring_ref); snprintf(buf, sizeof buf, "device/vchan/%d/ring-ref", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) -#ifdef CONFIG_STUBDOM - // TEMP HACK XXX FIXME goto fail2; - fprintf(stderr, "xenstore-write /local/domain/%d/%s %s\n", domid, buf, ref); -#else goto fail2; -#endif snprintf(ref, sizeof ref, "%d", ctrl->evport); snprintf(buf, sizeof buf, "device/vchan/%d/event-channel", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) -#ifdef CONFIG_STUBDOM - // TEMP HACK XXX FIXME goto fail2; - fprintf(stderr, "xenstore-write /local/domain/%d/%s %s\n", domid, buf, ref); -#else goto fail2; -#endif // do not block in stubdom - libvchan_server_handle_connected will be // called on first input #ifndef CONFIG_STUBDOM @@ -449,4 +429,4 @@ struct libvchan *libvchan_client_init(int domain, int devno) return NULL; } -#endif \ No newline at end of file +#endif From a2a21c046738fde689bd28cb766d103043b25aba Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 3 Jun 2012 16:32:46 +0200 Subject: [PATCH 215/386] vchan: unify calls to xc_evtchn_close Calls to this function can be the same on all systems and xen versions, so simplify code. --- vchan/init.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index 21d774a8..0f7756f5 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -184,15 +184,7 @@ static int server_interface_init(struct libvchan *ctrl, int devno) ret = 0; fail2: if (ret) -#ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn_close(evfd); -#else -#ifdef WINNT - xc_evtchn_close(evfd); -#else - close(evfd); -#endif -#endif fail: xs_daemon_close(xs); return ret; @@ -268,11 +260,7 @@ int libvchan_server_handle_connected(struct libvchan *ctrl) #if 0 fail2: if (ret) -#ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn_close(ctrl->evfd); -#else - close(ctrl->evfd); -#endif #endif xs_daemon_close(xs); return ret; @@ -357,11 +345,7 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) ctrl->ring = (struct vchan_interface *) xc_map_foreign_range(xcfd, domain, 4096, PROT_READ | PROT_WRITE, ctrl->ring_ref); -#ifdef XENCTRL_HAS_XC_INTERFACE xc_interface_close(xcfd); -#else - close(xcfd); -#endif break; case 2: xcg = xc_gnttab_open(); @@ -390,11 +374,7 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) ctrl->evport = xc_evtchn_bind_interdomain(evfd, domain, remote_port); if (ctrl->evport < 0 || xc_evtchn_notify(evfd, ctrl->evport)) -#ifdef XENCTRL_HAS_XC_INTERFACE xc_evtchn_close(evfd); -#else - close(evfd); -#endif else ret = 0; fail: From edf1ecfcfd9a72a6140033a176fa4abc25ac8226 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 3 Jun 2012 16:37:34 +0200 Subject: [PATCH 216/386] vchan: remove unused variables --- vchan/init.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index 0f7756f5..e93d5148 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -235,8 +235,6 @@ int libvchan_server_handle_connected(struct libvchan *ctrl) struct xs_handle *xs; char buf[64]; int ret = -1; - int libvchan_fd; -// fd_set rfds; #ifdef WINNT xs = xs_domain_open(); From f01b1b40ac9080d17f5db2514861c407bdfc0869 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 3 Jun 2012 16:38:00 +0200 Subject: [PATCH 217/386] vchan: fix xc_gnttab_open call --- vchan/init.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index e93d5148..de2991a6 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -278,10 +278,11 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) struct xs_handle *xs; #ifdef XENCTRL_HAS_XC_INTERFACE xc_interface *xcfd; + xc_gnttab *xcg; #else int xcfd; -#endif int xcg; +#endif char buf[64]; char *ref; int version; @@ -346,7 +347,7 @@ static int client_interface_init(struct libvchan *ctrl, int domain, int devno) xc_interface_close(xcfd); break; case 2: - xcg = xc_gnttab_open(); + xcg = xc_gnttab_open(NULL, 0); if (xcg < 0) goto fail; ctrl->ring = (struct vchan_interface *) From 22207ddf75b610e589aede548d64fa1e40b49004 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 3 Jun 2012 16:38:30 +0200 Subject: [PATCH 218/386] vchan: introduce features macros Use features macros (QREXEC_RING_V2 and ASYNC_INIT) instead of directly depending on building environment. The macros are turned on (when required) in libvchan.h based on target system. --- vchan/init.c | 12 +++++++----- vchan/libvchan.h | 12 ++++++++++-- vchan/sources | 2 -- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/vchan/init.c b/vchan/init.c index de2991a6..93d6fb09 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -62,7 +62,7 @@ static int fill_ctrl(struct libvchan *ctrl, struct vchan_interface *ring, int ri return 0; } -#ifdef WINNT +#ifdef QREXEC_RING_V2 static int ring_init(struct libvchan *ctrl) { struct gntmem_handle* h; @@ -158,9 +158,11 @@ static int server_interface_init(struct libvchan *ctrl, int devno) ctrl->evport = port; ctrl->devno = devno; +#ifdef QREXEC_RING_V2 snprintf(buf, sizeof buf, "device/vchan/%d/version", devno); if (!xs_write(xs, 0, buf, "2", strlen("2"))) goto fail2; +#endif snprintf(ref, sizeof ref, "%d", ctrl->ring_ref); snprintf(buf, sizeof buf, "device/vchan/%d/ring-ref", devno); @@ -170,10 +172,10 @@ static int server_interface_init(struct libvchan *ctrl, int devno) snprintf(buf, sizeof buf, "device/vchan/%d/event-channel", devno); if (!xs_write(xs, 0, buf, ref, strlen(ref))) goto fail2; - // do not block in stubdom - libvchan_server_handle_connected will be - // called on first input -#ifndef CONFIG_STUBDOM - // wait for the peer to arrive + // do not block in stubdom and windows - libvchan_server_handle_connected will be + // called on first input +#ifdef ASYNC_INIT + // wait for the peer to arrive if (xc_evtchn_pending(evfd) == -1) goto fail2; xc_evtchn_unmask(ctrl->evfd, ctrl->evport); diff --git a/vchan/libvchan.h b/vchan/libvchan.h index 63ab6e9f..6b19b2fa 100644 --- a/vchan/libvchan.h +++ b/vchan/libvchan.h @@ -28,11 +28,19 @@ #include typedef HANDLE EVTCHN; #define snprintf _snprintf -#else +#else /* WINNT */ #include typedef int EVTCHN; -#endif +#endif /* WINNT */ +/* config vchan features */ +#ifdef WINNT +#define QREXEC_RING_V2 +#define ASYNC_INIT +#endif /* WINNT */ +#ifdef CONFIG_STUBDOM +#define ASYNC_INIT +#endif /* CONFIG_STUBDOM */ #include typedef uint32_t VCHAN_RING_IDX; diff --git a/vchan/sources b/vchan/sources index 5d7cff39..5aea3939 100644 --- a/vchan/sources +++ b/vchan/sources @@ -9,8 +9,6 @@ USE_MSVCRT=1 DLLDEF=libvchan.def -C_DEFINES = $(C_DEFINES) /DCONFIG_STUBDOM - INCLUDES=$(INCLUDES); \ ..\win\include;\ From 01c9fdfe59c59546f6c703f986018c8f67b56c10 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 4 Jun 2012 14:59:11 +0200 Subject: [PATCH 219/386] vchan: fix ASYNC_INIT macro --- vchan/init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vchan/init.c b/vchan/init.c index 93d6fb09..09e05ff9 100644 --- a/vchan/init.c +++ b/vchan/init.c @@ -174,7 +174,7 @@ static int server_interface_init(struct libvchan *ctrl, int devno) goto fail2; // do not block in stubdom and windows - libvchan_server_handle_connected will be // called on first input -#ifdef ASYNC_INIT +#ifndef ASYNC_INIT // wait for the peer to arrive if (xc_evtchn_pending(evfd) == -1) goto fail2; From 038380984f10e3536c20747fb1d9f8059480c32d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 4 Jun 2012 15:29:26 +0200 Subject: [PATCH 220/386] vm/systemd: fix ProxyVM related services deps (#578) --- vm-systemd/qubes-firewall.service | 1 + vm-systemd/qubes-network.service | 1 + 2 files changed, 2 insertions(+) diff --git a/vm-systemd/qubes-firewall.service b/vm-systemd/qubes-firewall.service index df765dcd..e668271c 100644 --- a/vm-systemd/qubes-firewall.service +++ b/vm-systemd/qubes-firewall.service @@ -1,6 +1,7 @@ [Unit] Description=Qubes firewall updater ConditionPathExists=/var/run/qubes-service/qubes-firewall +After=qubes-network.service [Service] ExecStart=/usr/sbin/qubes_firewall diff --git a/vm-systemd/qubes-network.service b/vm-systemd/qubes-network.service index afb53f03..cdb01a78 100644 --- a/vm-systemd/qubes-network.service +++ b/vm-systemd/qubes-network.service @@ -3,6 +3,7 @@ Names=qubes_firewall.service Description=Qubes network forwarding setup ConditionPathExists=/var/run/qubes-service/qubes-network Before=network.target +After=iptables.service [Service] Type=oneshot From 8023c660208c2ad59fd9d24e7474929d9317fc57 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:28:59 +0200 Subject: [PATCH 221/386] vm: yum plugin to notify dom0 about installed updates (#592) --- misc/Makefile | 7 +++++-- misc/yum-qubes-hooks.py | 42 +++++++++++++++++++++++++++++++++++++++++ rpm_spec/core-vm.spec | 3 +++ 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 misc/yum-qubes-hooks.py diff --git a/misc/Makefile b/misc/Makefile index 3b015060..e6f653a0 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -1,9 +1,12 @@ CC=gcc CFLAGS=-Wall -g -O3 -all: meminfo-writer xenstore-watch +all: meminfo-writer xenstore-watch python meminfo-writer: meminfo-writer.o $(CC) -g -o meminfo-writer meminfo-writer.o -lxenstore xenstore-watch: xenstore-watch.o $(CC) -o xenstore-watch xenstore-watch.o -lxenstore +python: + python -m compileall . + python -O -m compileall . clean: - rm -f meminfo-writer xenstore-watch *.o *~ + rm -f meminfo-writer xenstore-watch *.o *~ *.pyc *.pyo diff --git a/misc/yum-qubes-hooks.py b/misc/yum-qubes-hooks.py new file mode 100644 index 00000000..f49eac2f --- /dev/null +++ b/misc/yum-qubes-hooks.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Marek Marczykowski +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# + + +from yum.plugins import TYPE_CORE +from yum.constants import * +import subprocess + +requires_api_version = '2.4' +plugin_type = (TYPE_CORE,) + +def posttrans_hook(conduit): + # Get all updates available _before_ this transaction + pkg_list = conduit._base.doPackageLists(pkgnarrow='updates') + + # Get packages installed in this transaction... + ts = conduit.getTsInfo() + all = ts.getMembers() + # ...and filter them out of available updates + filtered_updates = filter(lambda x: x not in all, pkg_list.updates) + + # Notify dom0 about left updates count + subprocess.call(['/usr/lib/qubes/qrexec_client_vm', 'dom0', 'qubes.NotifyUpdates', 'echo', str(len(filtered_updates))]) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 88b26870..7b647969 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -99,6 +99,8 @@ install -D -m 0644 misc/serial.conf $RPM_BUILD_ROOT/usr/lib/qubes/serial.conf install -D misc/qubes_serial_login $RPM_BUILD_ROOT/sbin/qubes_serial_login install -d $RPM_BUILD_ROOT/usr/share/glib-2.0/schemas/ install -m 0644 misc/org.gnome.settings-daemon.plugins.updates.gschema.override $RPM_BUILD_ROOT/usr/share/glib-2.0/schemas/ +install -d $RPM_BUILD_ROOT/usr/lib/yum-plugins/ +install -m 0644 misc/yum-qubes-hooks.py* $RPM_BUILD_ROOT/usr/lib/yum-plugins/ install -d $RPM_BUILD_ROOT/var/lib/qubes @@ -386,6 +388,7 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/vm-file-editor /usr/lib/qubes/vm-shell /usr/lib/qubes/wrap_in_html_if_url.sh +/usr/lib/yum-plugins/yum-qubes-hooks.py* /usr/sbin/qubes_firewall /usr/sbin/qubes_netwatcher /usr/share/glib-2.0/schemas/org.gnome.settings-daemon.plugins.updates.gschema.override From 01e8a2dff98f3d2e594a16a97a0b9a761b8d7589 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:37:12 +0200 Subject: [PATCH 222/386] dom0/core: implement per-VM-type firewall defaults --- dom0/qvm-core/qubes.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 2db9fd1e..ffb96306 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1223,8 +1223,11 @@ class QubesVm(object): def has_firewall(self): return os.path.exists (self.firewall_conf) + def get_firewall_defaults(self): + return { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } + def get_firewall_conf(self): - conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } + conf = self.get_firewall_defaults() try: tree = xml.etree.ElementTree.parse(self.firewall_conf) From 8b366f11489eb8a2dfd63eb142e44e77805f87b7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:37:39 +0200 Subject: [PATCH 223/386] dom0: default TemplateVM firewall: block all traffic and allow use of yum proxy (#590) --- dom0/qvm-core/qubes.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index ffb96306..0c6a71cf 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1577,6 +1577,9 @@ class QubesTemplateVm(QubesVm): def updateable(self): return True + def get_firewall_defaults(self): + return { "rules": list(), "allow": False, "allowDns": False, "allowIcmp": False, "allowYumProxy": True } + def get_rootdev(self, source_template=None): return "'script:origin:{dir}/root.img:{dir}/root-cow.img,xvda,w',".format(dir=self.dir_path) From c3a403f3953a2934068c13223814ceb3dc1f9af3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:38:37 +0200 Subject: [PATCH 224/386] vm: use yum proxy in TemplateVM by default (#590) --- vm-init.d/qubes_core | 3 ++- vm-systemd/qubes-sysinit.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/vm-init.d/qubes_core b/vm-init.d/qubes_core index de194f89..c5fe5d2a 100755 --- a/vm-init.d/qubes_core +++ b/vm-init.d/qubes_core @@ -37,7 +37,8 @@ start() fi yum_proxy_setup=$(/usr/bin/xenstore-read qubes-service/yum-proxy-setup 2> /dev/null) - if [ "$yum_proxy_setup" != "0" ]; then + type=$(/usr/bin/xenstore-read qubes_vm_type) + if [ "$yum_proxy_setup" != "0" ] || [ -z "$yum_proxy_setup" -a "$type" == "TemplateVM" ]; then echo proxy=http://10.137.255.254:8082/ > /etc/yum.conf.d/qubes-proxy.conf else echo > /etc/yum.conf.d/qubes-proxy.conf diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 0c8e9d0f..77dac3f4 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -4,7 +4,7 @@ DEFAULT_ENABLED_NETVM="network-manager qubes-network qubes-update-check qubes-yum-proxy" DEFAULT_ENABLED_PROXYVM="meminfo-writer qubes-network qubes-firewall qubes-netwatcher qubes-update-check" DEFAULT_ENABLED_APPVM="meminfo-writer cups qubes-update-check" -DEFAULT_ENABLED_TEMPLATEVM=$DEFAULT_ENABLED_APPVM +DEFAULT_ENABLED_TEMPLATEVM="$DEFAULT_ENABLED_APPVM yum-proxy-setup" DEFAULT_ENABLED="meminfo-writer" XS_READ=/usr/bin/xenstore-read From 3255f81a1cef5bd14c44ad3037b638126915eeca Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:57:19 +0200 Subject: [PATCH 225/386] dom0/core: fix QubesVM.gateway To be consistent with QubesNetVM, where gateway property contain gateway IP for _other_ VMs, in non-network-provider VM it should be empty. --- dom0/qvm-core/qubes.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 0c6a71cf..71edb707 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -435,10 +435,8 @@ class QubesVm(object): @property def gateway(self): - if self.netvm is not None: - return self.netvm.gateway - else: - return None + # This is gateway IP for _other_ VMs, so make sense only in NetVMs + return None @property def secondary_dns(self): From 2c7227066c2c340f2f72913dddb7ae0fa9f78bc3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 19:58:58 +0200 Subject: [PATCH 226/386] dom0/qvm-ls: replace 'netmask' column with 'ip back' (#573) --- dom0/qvm-tools/qvm-ls | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-tools/qvm-ls b/dom0/qvm-tools/qvm-ls index ac94a71d..27e63d29 100755 --- a/dom0/qvm-tools/qvm-ls +++ b/dom0/qvm-tools/qvm-ls @@ -56,8 +56,8 @@ fields = { if vm.netvm is not None else '-'"}, "ip" : {"func": "vm.ip"}, - "netmask" : {"func": "vm.netmask"}, - "gateway" : {"func": "vm.gateway"}, + "ip back" : {"func": "vm.gateway if vm.is_netvm() else 'n/a'"}, + "gateway/DNS" : {"func": "vm.netvm.gateway if vm.netvm else 'n/a'"}, "xid" : {"func" : "vm.get_xid() if vm.is_running() else '-'"}, @@ -139,7 +139,7 @@ def main(): if (options.network): if 'template' in fields_to_display: fields_to_display.remove ("template") - fields_to_display += ["ip", "netmask", "gateway"] + fields_to_display += ["ip", "ip back", "gateway/DNS"] if (options.disk): if 'template' in fields_to_display: From 3f3dc4708ce9b51c8f5f4c20be22a4b80802d2f5 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 5 Jun 2012 20:57:40 +0200 Subject: [PATCH 227/386] dom0: populate unchanged firewall settings with previous values (#589) Missed settings in new firewall configuration caused exception. In old qubes-manager (before #582 done) this exception silently broke saving operation, leaving user with progress bar windows infinitely... --- dom0/qvm-core/qubes.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 71edb707..f4c882f4 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1164,6 +1164,11 @@ class QubesVm(object): shutil.rmtree (self.dir_path) def write_firewall_conf(self, conf): + defaults = self.get_firewall_conf() + for item in defaults.keys(): + if item not in conf: + conf[item] = defaults[item] + root = xml.etree.ElementTree.Element( "QubesFirwallRules", policy = "allow" if conf["allow"] else "deny", From 1aebb12f30b1d9a74da309d2f5fc11ee10f85126 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 6 Jun 2012 02:12:10 +0200 Subject: [PATCH 228/386] dom0+vm/qvm-block: speed up udev block handler (#560) xenstore is very slow, so don't bother it when unneeded. Namely do not try to remove entries, which haven't even created. --- misc/block_add_change | 16 ++++++++++++---- misc/qubes_block.rules | 4 ++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/misc/block_add_change b/misc/block_add_change index e1b25ca9..b366f9dd 100755 --- a/misc/block_add_change +++ b/misc/block_add_change @@ -6,19 +6,26 @@ SIZE=$[ $(cat /sys/$DEVPATH/size) * 512 ] MODE=w XS_KEY="qubes-block-devices/$NAME" +xs_remove() { + if [ "$QUBES_EXPOSED" == "1" ]; then + xenstore-rm "$XS_KEY" + fi + echo QUBES_EXPOSED=0 +} + # Ignore mounted... if fgrep -q $DEVNAME /proc/mounts; then - xenstore-rm "$XS_KEY" + xs_remove exit 0 fi # ... and used by device-mapper if [ -n "`ls -A /sys/$DEVPATH/holders 2> /dev/null`" ]; then - xenstore-rm "$XS_KEY" + xs_remove exit 0 fi # ... and "empty" loop devices if [ "$MAJOR" -eq 7 -a ! -d /sys/$DEVPATH/loop ]; then - xenstore-rm "$XS_KEY" + xs_remove exit 0 fi @@ -26,7 +33,7 @@ fi if [ "$ID_TYPE" = "cd" ]; then if [ "$ID_CDROM_MEDIA" != "1" ]; then # Hide empty cdrom drive - xenstore-rm "$XS_KEY" + xs_remove exit 0 fi MODE=r @@ -37,6 +44,7 @@ if [ -d /sys/$DEVPATH/loop ]; then DESC=$(cat /sys/$DEVPATH/loop/backing_file) fi xenstore-write "$XS_KEY/desc" "$DESC" "$XS_KEY/size" "$SIZE" "$XS_KEY/mode" "$MODE" +echo QUBES_EXPOSED=1 # Make sure that block backend is loaded /sbin/modprobe xen-blkback 2> /dev/null || /sbin/modprobe blkbk diff --git a/misc/qubes_block.rules b/misc/qubes_block.rules index 343553f5..14503eef 100644 --- a/misc/qubes_block.rules +++ b/misc/qubes_block.rules @@ -9,8 +9,8 @@ ENV{MAJOR}=="202", GOTO="qubes_block_end" # Skip device-mapper devices ENV{MAJOR}=="253", GOTO="qubes_block_end" -ACTION=="add", RUN+="/usr/lib/qubes/block_add_change" -ACTION=="change", RUN+="/usr/lib/qubes/block_add_change" +ACTION=="add", IMPORT{program}="/usr/lib/qubes/block_add_change" +ACTION=="change", IMPORT{program}="/usr/lib/qubes/block_add_change" ACTION=="remove", RUN+="/usr/lib/qubes/block_remove" LABEL="qubes_block_end" From 4463701bf30ac3d322fb68d6599f8792326278db Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 6 Jun 2012 02:59:07 +0200 Subject: [PATCH 229/386] vm/spec: depend on ethtool _package_ --- rpm_spec/core-vm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 7b647969..c0aac4c0 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -36,7 +36,7 @@ Requires: fedora-release Requires: yum-plugin-post-transaction-actions Requires: NetworkManager >= 0.8.1-1 Requires: /usr/bin/mimeopen -Requires: /sbin/ethtool +Requires: ethtool Requires: tinyproxy Provides: qubes-core-vm Obsoletes: qubes-core-commonvm From 01ca42b5c4a540f301e4a78678ea7006d56fa32b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 6 Jun 2012 03:00:05 +0200 Subject: [PATCH 230/386] vm/spec: create firmware symlink only when needed On new systems, like FC16+, firmware is provided by separate package (like linux-firmware), so no longer need to get it from kernel package. --- rpm_spec/core-vm.spec | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index c0aac4c0..45dfb3ac 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -140,9 +140,6 @@ install -d $RPM_BUILD_ROOT/usr/sbin install network/qubes_firewall $RPM_BUILD_ROOT/usr/sbin/ install network/qubes_netwatcher $RPM_BUILD_ROOT/usr/sbin/ -install -d $RPM_BUILD_ROOT/lib/firmware -ln -s /lib/modules/firmware $RPM_BUILD_ROOT/lib/firmware/updates - install -d $RPM_BUILD_ROOT/usr/bin install qubes_rpc/{qvm-open-in-dvm,qvm-open-in-vm,qvm-copy-to-vm,qvm-run} $RPM_BUILD_ROOT/usr/bin @@ -241,6 +238,11 @@ fi # Remove ip_forward setting from sysctl, so NM will not reset it sed 's/^net.ipv4.ip_forward.*/#\0/' -i /etc/sysctl.conf +# Install firmware link only on system which haven't it yet +if ! [ -e /lib/firmware/updates ]; then + ln -s /lib/modules/firmware /lib/firmware/updates +fi + if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then echo >> /etc/yum.conf echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf @@ -320,6 +322,10 @@ fi %postun if [ $1 -eq 0 ] ; then /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + + if [ -l /lib/firmware/updates ]; then + rm /lib/firmware/updates + fi fi %posttrans @@ -357,7 +363,6 @@ rm -rf $RPM_BUILD_ROOT /etc/yum.conf.d/qubes-proxy.conf /etc/yum.repos.d/qubes.repo /etc/yum/post-actions/qubes_trigger_sync_appmenus.action -/lib/firmware/updates /sbin/qubes_serial_login /usr/bin/qvm-copy-to-vm /usr/bin/qvm-open-in-dvm From 730b10a7049c9e24009d436ca408cfa5fb84c8d9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 8 Jun 2012 00:24:46 +0200 Subject: [PATCH 231/386] vm: disable gnome update plugin, not only unattended installation --- misc/org.gnome.settings-daemon.plugins.updates.gschema.override | 2 ++ 1 file changed, 2 insertions(+) diff --git a/misc/org.gnome.settings-daemon.plugins.updates.gschema.override b/misc/org.gnome.settings-daemon.plugins.updates.gschema.override index da283e1d..c6c7b45a 100644 --- a/misc/org.gnome.settings-daemon.plugins.updates.gschema.override +++ b/misc/org.gnome.settings-daemon.plugins.updates.gschema.override @@ -1,2 +1,4 @@ [org.gnome.settings-daemon.plugins.updates] auto-update-type='none' +active=false +frequency-get-updates=0 From 53542491021e69cd8d0271f6c453e89f29b157d9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 8 Jun 2012 00:34:11 +0200 Subject: [PATCH 232/386] vm: enable yum-qubes-hooks plugin (#592) --- misc/yum-qubes-hooks.conf | 2 ++ rpm_spec/core-vm.spec | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 misc/yum-qubes-hooks.conf diff --git a/misc/yum-qubes-hooks.conf b/misc/yum-qubes-hooks.conf new file mode 100644 index 00000000..8e4d76c7 --- /dev/null +++ b/misc/yum-qubes-hooks.conf @@ -0,0 +1,2 @@ +[main] +enabled=1 diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 45dfb3ac..1fef666e 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -101,6 +101,7 @@ install -d $RPM_BUILD_ROOT/usr/share/glib-2.0/schemas/ install -m 0644 misc/org.gnome.settings-daemon.plugins.updates.gschema.override $RPM_BUILD_ROOT/usr/share/glib-2.0/schemas/ install -d $RPM_BUILD_ROOT/usr/lib/yum-plugins/ install -m 0644 misc/yum-qubes-hooks.py* $RPM_BUILD_ROOT/usr/lib/yum-plugins/ +install -D -m 0644 misc/yum-qubes-hooks.conf $RPM_BUILD_ROOT/etc/yum/pluginconf.d/yum-qubes-hooks.conf install -d $RPM_BUILD_ROOT/var/lib/qubes @@ -362,6 +363,7 @@ rm -rf $RPM_BUILD_ROOT /etc/xen/scripts/vif-route-qubes /etc/yum.conf.d/qubes-proxy.conf /etc/yum.repos.d/qubes.repo +/etc/yum/pluginconf.d/yum-qubes-hooks.conf /etc/yum/post-actions/qubes_trigger_sync_appmenus.action /sbin/qubes_serial_login /usr/bin/qvm-copy-to-vm From ab269f9eba923c543c6095d80e9cf1b196d9d3a4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 8 Jun 2012 04:36:33 +0200 Subject: [PATCH 233/386] vm: fix yum-qubes-hooks Program must be given as full path to qrexec_client_vm - it is passed directly to execv. --- misc/yum-qubes-hooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/yum-qubes-hooks.py b/misc/yum-qubes-hooks.py index f49eac2f..9d851bf9 100644 --- a/misc/yum-qubes-hooks.py +++ b/misc/yum-qubes-hooks.py @@ -39,4 +39,4 @@ def posttrans_hook(conduit): filtered_updates = filter(lambda x: x not in all, pkg_list.updates) # Notify dom0 about left updates count - subprocess.call(['/usr/lib/qubes/qrexec_client_vm', 'dom0', 'qubes.NotifyUpdates', 'echo', str(len(filtered_updates))]) + subprocess.call(['/usr/lib/qubes/qrexec_client_vm', 'dom0', 'qubes.NotifyUpdates', '/bin/echo', str(len(filtered_updates))]) From c5212ee438cbb2b24aaf3cb48fb599037300c51b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 11 Jun 2012 22:33:57 +0200 Subject: [PATCH 234/386] vm: chown /home/user to user if user UID have changed FC16 and FC17 starts normal users at UID 1000, not 500 as in <=FC15. --- vm-systemd/misc-post.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vm-systemd/misc-post.sh b/vm-systemd/misc-post.sh index dbefd432..b86e6a7f 100755 --- a/vm-systemd/misc-post.sh +++ b/vm-systemd/misc-post.sh @@ -30,6 +30,11 @@ if [ -e /dev/xvdb ] ; then touch /var/lib/qubes/first_boot_completed fi + # Chown home if user UID have changed - can be the case on template switch + HOME_USER_UID=`ls -dn /home/user | awk '{print $3}'` + if [ "`id -u user`" -ne "$HOME_USER_UID" ]; then + find /home/user -uid "$HOME_USER_UID" -print0 | xargs -0 chown user:user + fi fi [ -x /rw/config/rc.local ] && /rw/config/rc.local From 8963010151d99834d15275b2e89776a79892c187 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Tue, 12 Jun 2012 12:12:31 +0200 Subject: [PATCH 235/386] version 2.0.26 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index efb45341..f6ee9625 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.25 +2.0.26 diff --git a/version_vm b/version_vm index ae6ddf7e..f6ee9625 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -1.7.19 +2.0.26 From 653c056c999d6f7c6f7e4e80c43ee870ce0c8e64 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 12 Jun 2012 18:24:34 +0200 Subject: [PATCH 236/386] dom0/core: fix HVM network settings in xen config --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f4c882f4..03d2d09d 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -882,8 +882,8 @@ class QubesVm(object): args['vcpus'] = str(self.vcpus) args['ip'] = self.ip args['mac'] = self.mac - args['gateway'] = self.gateway - args['dns1'] = self.gateway + args['gateway'] = self.netvm.gateway + args['dns1'] = self.netvm.gateway args['dns2'] = self.secondary_dns args['netmask'] = self.netmask if self.netvm is not None: From 2eb7c5733dc79c8fab4e5a2cc8f640556286d9ff Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 12 Jun 2012 18:25:04 +0200 Subject: [PATCH 237/386] dom0/core: set network parameters only when VM have network access --- dom0/qvm-core/qubes.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 03d2d09d..09d311aa 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -880,18 +880,24 @@ class QubesVm(object): # If dynamic memory management disabled, set maxmem=mem args['maxmem'] = args['mem'] args['vcpus'] = str(self.vcpus) - args['ip'] = self.ip - args['mac'] = self.mac - args['gateway'] = self.netvm.gateway - args['dns1'] = self.netvm.gateway - args['dns2'] = self.secondary_dns - args['netmask'] = self.netmask if self.netvm is not None: + args['ip'] = self.ip + args['mac'] = self.mac + args['gateway'] = self.netvm.gateway + args['dns1'] = self.netvm.gateway + args['dns2'] = self.secondary_dns + args['netmask'] = self.netmask args['netdev'] = "'mac={mac},script=/etc/xen/scripts/vif-route-qubes,ip={ip}".format(ip=self.ip, mac=self.mac) if self.netvm.qid != 0: args['netdev'] += ",backend={0}".format(self.netvm.name) args['netdev'] += "'" else: + args['ip'] = '' + args['mac'] = '' + args['gateway'] = '' + args['dns1'] = '' + args['dns2'] = '' + args['netmask'] = '' args['netdev'] = '' args['rootdev'] = self.get_rootdev(source_template=source_template) args['privatedev'] = "'script:file:{dir}/private.img,xvdb,w',".format(dir=self.dir_path) From f39404cc8aca2ed3af4d39de9cba1824d0a1e619 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 01:59:25 +0200 Subject: [PATCH 238/386] vm/qubes-dom0-update: rebuild dom0 rpmdb before touching it with yum Dom0 can have different (older) rpmdb version than VM. Starting from FC17 yum refuses to work without rebuild. --- misc/qubes_download_dom0_updates.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/misc/qubes_download_dom0_updates.sh b/misc/qubes_download_dom0_updates.sh index 33bc46d3..de869c55 100755 --- a/misc/qubes_download_dom0_updates.sh +++ b/misc/qubes_download_dom0_updates.sh @@ -43,6 +43,10 @@ fi mkdir -p $DOM0_UPDATES_DIR/etc sed -i '/^reposdir\s*=/d' $DOM0_UPDATES_DIR/etc/yum.conf +# Rebuild rpm database in case of different rpm version +rm -f $DOM0_UPDATES_DIR/var/lib/rpm/__* +rpm --root=$DOM0_UPDATES_DIR --rebuilddb + if [ "$CLEAN" = "1" ]; then yum $OPTS clean all rm -f $DOM0_UPDATES_DIR/packages/* From dfbf078155424097c4635245eacd45be5b0cc53f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 04:08:09 +0200 Subject: [PATCH 239/386] dom0: do not reply all udev events at system boot (#595) This can cause some rules to fail and eg remove dm-* devices. Replace it with what is really needed to hide mounted (and other ignored) devices from qubes-block-devices. --- dom0/init.d/qubes_core | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index b491da6d..5d4ac77c 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -55,8 +55,12 @@ start() /usr/lib/qubes/block_cleaner_daemon.py > /var/log/qubes/block_cleaner.log 2>&1 & - # Reply block events to hide mounted devices from qubes-block list (at first udev run, only / is mounted) - udevadm trigger --subsystem-match=block --action=add + # Hide mounted devices from qubes-block list (at first udev run, only / is mounted) + for dev in `xenstore-list /local/domain/0/qubes-block-devices`; do + ( eval `udevadm info -q property -n $dev|sed -e 's/\([^=]*\)=\(.*\)/export \1="\2"/'`; + /usr/lib/qubes/block_add_change + ) + done touch /var/lock/subsys/qubes_core success From 6a929190d2073f32e86a2088708ea5ee7f9ee9b2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:01:57 +0200 Subject: [PATCH 240/386] dom0/core: fix order of loading VM attributes Parsing kernelopts depends on uses_default_kernelopts, so set 'order' appropriate. --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 09d311aa..c6945b28 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -253,7 +253,7 @@ class QubesVm(object): "kernel": { "default": None, 'order': 30 }, "uses_default_kernel": { "default": True, 'order': 30 }, "uses_default_kernelopts": { "default": True, 'order': 30 }, - "kernelopts": { "default": "", 'order': 30, "eval": \ + "kernelopts": { "default": "", 'order': 31, "eval": \ 'value if not self.uses_default_kernelopts else default_kernelopts_pcidevs if len(self.pcidevs) > 0 else default_kernelopts' }, "mac": { "attr": "_mac", "default": None }, "include_in_backups": { "default": True }, From 46db1e83f0d34aadd1f0d638020e809b01387e99 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:08:30 +0200 Subject: [PATCH 241/386] dom0/core: introduce is_guid_running() and use it in is_fully_usable() To improve code reuse, especially to remove direct checking for "/var/run/qubes/guid_running.{0}" in many places. --- dom0/qvm-core/qubes.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index c6945b28..83153eb5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -650,12 +650,18 @@ class QubesVm(object): return "NA" - def is_fully_usable(self): + def is_guid_running(self): xid = self.get_xid() if xid < 0: return False if not os.path.exists('/var/run/qubes/guid_running.%d' % xid): return False + return True + + def is_fully_usable(self): + # Running gui-daemon implies also VM running + if not self.is_guid_running(): + return False # currently qrexec daemon doesn't cleanup socket in /var/run/qubes, so # it can be left from some other VM return True @@ -1312,7 +1318,7 @@ class QubesVm(object): raise QubesException("Not enough memory to start '{0}' VM! Close one or more running VMs and try again.".format(self.name)) xid = self.get_xid() - if os.getenv("DISPLAY") is not None and not os.path.isfile("/var/run/qubes/guid_running.{0}".format(xid)): + if os.getenv("DISPLAY") is not None and not self.is_guid_running(): self.start_guid(verbose = verbose, notify_function = notify_function) args = [qrexec_client_path, "-d", str(xid), command] From 784f0f560794f76d22d898c47295ca53652b662a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:09:06 +0200 Subject: [PATCH 242/386] dom0/core/hvm: rename is_fully_usable() to is_guid_running() This is what this function does. --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 83153eb5..1cad8818 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2431,7 +2431,7 @@ class QubesHVm(QubesVm): xc.domain_unpause(self.stubdom_xid) super(QubesHVm, self).unpause() - def is_fully_usable(self): + def is_guid_running(self): xid = self.stubdom_xid if xid < 0: return False From 5504142187b7bd51c5c1ec318745558761546b30 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:11:21 +0200 Subject: [PATCH 243/386] dom0/core: fix race in QubesHVm.stubdom_xid device-model-domid is written to xenstore after domaid id itself, so do not assume the former is present when we know VM XID. --- dom0/qvm-core/qubes.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 1cad8818..2cccf5dd 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2404,7 +2404,11 @@ class QubesHVm(QubesVm): if self.xid < 0: return -1 - return int(xs.read('', '/local/domain/%d/image/device-model-domid' % self.xid)) + stubdom_xid_str = xs.read('', '/local/domain/%d/image/device-model-domid' % self.xid) + if stubdom_xid_str is not None: + return int(stubdom_xid_str) + else: + return -1 def start_guid(self, verbose = True, notify_function = None): if verbose: From e6a75c732e5f2cae013fb5e0087e617f8b18fc06 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:14:25 +0200 Subject: [PATCH 244/386] dom0/core: support for qrexec for Windows HVM Because not every HVM will have qrexec agent installed, introduce VM property 'qrexec_installed'. If it is set, spawn qrexec_daemon at VM startup and allow use of qvm-run. --- dom0/qvm-core/qubes.py | 21 +++++++++++++++++---- dom0/qvm-tools/qvm-prefs | 12 ++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 2cccf5dd..6447a486 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -268,6 +268,7 @@ class QubesVm(object): "kernels_dir": { 'eval': 'qubes_kernels_base_dir + "/" + self.kernel if self.kernel is not None else ' + \ # for backward compatibility (or another rare case): kernel=None -> kernel in VM dir 'self.dir_path + "/" + default_kernels_subdir' }, + "_start_guid_first": { 'eval': 'False' }, } ### Mark attrs for XML inclusion @@ -1479,10 +1480,13 @@ class QubesVm(object): # the successful unpause is some indicator of it qmemman_client.close() + if self._start_guid_first and start_guid and not preparing_dvm and os.path.exists('/var/run/shm.id'): + self.start_guid(verbose=verbose) + if not preparing_dvm: self.start_qrexec_daemon(verbose=verbose) - if start_guid and not preparing_dvm and os.path.exists('/var/run/shm.id'): + if not self._start_guid_first and start_guid and not preparing_dvm and os.path.exists('/var/run/shm.id'): self.start_guid(verbose=verbose) if preparing_dvm: @@ -2227,6 +2231,8 @@ class QubesHVm(QubesVm): attrs['drive'] = { 'save': 'str(self.drive)' } attrs['maxmem'].pop('save') attrs['timezone'] = { 'default': 'localtime', 'save': 'str(self.timezone)' } + attrs['qrexec_installed'] = { 'default': False, 'save': 'str(self.qrexec_installed)' } + attrs['_start_guid_first']['eval'] = 'True' return attrs @@ -2397,7 +2403,10 @@ class QubesHVm(QubesVm): return "vif{0}.+".format(self.stubdom_xid) def run(self, command, **kwargs): - raise NotImplementedError("Needs qrexec agent - TODO") + if self.qrexec_installed: + super(QubesHVm, self).run(command, **kwargs) + else: + raise QubesException("Needs qrexec agent installed in VM to use this function. See also qvm-prefs.") @property def stubdom_xid(self): @@ -2419,7 +2428,8 @@ class QubesHVm(QubesVm): raise QubesException("Cannot start qubes_guid!") def start_qrexec_daemon(self, **kwargs): - pass + if self.qrexec_installed: + super(QubesHVm, self).start_qrexec_daemon(**kwargs) def pause(self): if dry_run: @@ -2805,7 +2815,7 @@ class QubesVmCollection(dict): "installed_by_rpm", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services", "include_in_backups", "debug", "drive" ) + "mac", "services", "include_in_backups", "debug", "qrexec_installed", "drive" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) @@ -2867,6 +2877,9 @@ class QubesVmCollection(dict): if "debug" in kwargs: kwargs["debug"] = True if kwargs["debug"] == "True" else False + if "qrexec_installed" in kwargs: + kwargs["qrexec_installed"] = True if kwargs["qrexec_installed"] == "True" else False + if "drive" in kwargs and kwargs["drive"] == "None": kwargs["drive"] = None diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index a1e60002..84e21ee0 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -78,6 +78,9 @@ def do_list(vm): if hasattr(vm, 'debug'): print fmt.format("debug", "on" if vm.debug else "off") + if hasattr(vm, 'qrexec_installed'): + print fmt.format("qrexec_installed", str(vm.qrexec_installed)) + if hasattr(vm, 'drive'): print fmt.format("drive", str(vm.drive)) @@ -311,6 +314,14 @@ def set_debug(vms, vm, args): vm.debug = bool(eval(args[0].capitalize())) return True +def set_qrexec_installed(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing value (True/False)!" + return False + + vm.qrexec_installed = bool(eval(args[0].capitalize())) + return True + def set_timezone(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing value ('localtime' or timeoffset in seconds)!" @@ -338,6 +349,7 @@ properties = { "drive": set_drive, "mac": set_mac, "debug": set_debug, + "qrexec_installed": set_qrexec_installed, "timezone": set_timezone, } From 6bd988bf8104f330ecef7704de90fd21d5375335 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 13 Jun 2012 17:16:12 +0200 Subject: [PATCH 245/386] dom0/core: allow to change default user for qvm-run (#577) This doesn't make all dom0 code VM-username independent, still 'user' is hardcoded in many places. This only change behavior of qvm-run, especially for use in HVM. --- dom0/qvm-core/qubes.py | 6 ++++-- dom0/qvm-tools/qvm-prefs | 12 ++++++++++++ dom0/qvm-tools/qvm-run | 12 ++++++------ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 6447a486..08c2b727 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -259,6 +259,7 @@ class QubesVm(object): "include_in_backups": { "default": True }, "services": { "default": {}, "eval": "eval(str(value))" }, "debug": { "default": False }, + "default_user": { "default": "user" }, ##### Internal attributes - will be overriden in __init__ regardless of args "appmenus_templates_dir": { "eval": \ 'self.dir_path + "/" + default_appmenus_templates_subdir if self.updateable else ' + \ @@ -276,7 +277,8 @@ class QubesVm(object): for prop in ['qid', 'name', 'dir_path', 'memory', 'maxmem', 'pcidevs', 'vcpus', 'internal',\ 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ 'kernelopts', 'services', 'installed_by_rpm',\ - 'uses_default_netvm', 'include_in_backups', 'debug' ]: + 'uses_default_netvm', 'include_in_backups', 'debug',\ + 'default_user' ]: attrs[prop]['save'] = 'str(self.%s)' % prop # Simple paths for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: @@ -2815,7 +2817,7 @@ class QubesVmCollection(dict): "installed_by_rpm", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services", "include_in_backups", "debug", "qrexec_installed", "drive" ) + "mac", "services", "include_in_backups", "debug", "default_user", "qrexec_installed", "drive" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 84e21ee0..1f5d6e23 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -78,6 +78,9 @@ def do_list(vm): if hasattr(vm, 'debug'): print fmt.format("debug", "on" if vm.debug else "off") + if hasattr(vm, 'default_user'): + print fmt.format("default user", str(vm.default_user)) + if hasattr(vm, 'qrexec_installed'): print fmt.format("qrexec_installed", str(vm.qrexec_installed)) @@ -314,6 +317,14 @@ def set_debug(vms, vm, args): vm.debug = bool(eval(args[0].capitalize())) return True +def set_default_user(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing user name!" + return False + + vm.default_user = args[0] + return True + def set_qrexec_installed(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing value (True/False)!" @@ -349,6 +360,7 @@ properties = { "drive": set_drive, "mac": set_mac, "debug": set_debug, + "default_user": set_default_user, "qrexec_installed": set_qrexec_installed, "timezone": set_timezone, } diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index 84f7e099..89d53756 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -98,7 +98,7 @@ def main(): parser.add_option ("-q", "--quiet", action="store_false", dest="verbose", default=True) parser.add_option ("-a", "--auto", action="store_true", dest="auto", default=False, help="Auto start the VM if not running") - parser.add_option ("-u", "--user", action="store", dest="user", default="user", + parser.add_option ("-u", "--user", action="store", dest="user", default=None, help="Run command in a VM as a specified user") parser.add_option ("--tray", action="store_true", dest="tray", default=False, help="Use tray notifications instead of stdout" ) @@ -188,12 +188,12 @@ def main(): exit(1) vms_list.append(vm) - if takes_cmd_argument: - cmd = "{user}:{cmd}".format(user=options.user, cmd=cmdstr) - else: - cmd = None - for vm in vms_list: + if takes_cmd_argument: + cmd = "{user}:{cmd}".format(user=options.user if options.user else vm.default_user, cmd=cmdstr) + else: + cmd = None + vm_run_cmd(vm, cmd, options) From 0ea75f4cc365d7c5afe5a5bca77786ea0a92a23b Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 14 Jun 2012 10:45:30 +0200 Subject: [PATCH 246/386] version 2.0.27 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index f6ee9625..2ce45891 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.26 +2.0.27 diff --git a/version_vm b/version_vm index f6ee9625..2ce45891 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.26 +2.0.27 From 4dfad5f1aeb2cc46fef07a3f5cd6d4d2b8230e6d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 15 Jun 2012 17:37:19 +0200 Subject: [PATCH 247/386] dom0: qvm-run --nogui switch Can be used to not start guid. --- dom0/qvm-core/qubes.py | 4 ++-- dom0/qvm-tools/qvm-run | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 08c2b727..f7385009 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1301,7 +1301,7 @@ class QubesVm(object): return conf - def run(self, command, verbose = True, autostart = False, notify_function = None, passio = False, passio_popen = False, localcmd = None, wait = False): + def run(self, command, verbose = True, autostart = False, notify_function = None, passio = False, passio_popen = False, localcmd = None, wait = False, gui = True): """command should be in form 'user:cmdline'""" if not self.is_running(): @@ -1321,7 +1321,7 @@ class QubesVm(object): raise QubesException("Not enough memory to start '{0}' VM! Close one or more running VMs and try again.".format(self.name)) xid = self.get_xid() - if os.getenv("DISPLAY") is not None and not self.is_guid_running(): + if gui and os.getenv("DISPLAY") is not None and not self.is_guid_running(): self.start_guid(verbose = verbose, notify_function = notify_function) args = [qrexec_client_path, "-d", str(xid), command] diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index 89d53756..d83236cd 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -85,7 +85,7 @@ def vm_run_cmd(vm, cmd, options): return vm.run(cmd, autostart = options.auto, verbose = options.verbose, notify_function = tray_notify_generic if options.tray else None, - passio = options.passio, localcmd = options.localcmd) + passio = options.passio, localcmd = options.localcmd, gui = options.gui) except QubesException as err: if options.tray: tray_notify_error(str(err)) @@ -130,6 +130,9 @@ def main(): parser.add_option ("--force", action="store_true", dest="force", default=False, help="Force operation, even if may damage other VMs (eg shutdown of NetVM)") + parser.add_option ("--nogui", action="store_false", dest="gui", default=True, + help="Run command without gui") + (options, args) = parser.parse_args () From 92844a161ac923ce70f816d5728ac094e0c1c4c4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 15 Jun 2012 17:40:03 +0200 Subject: [PATCH 248/386] dom0: qvm-run --nogui support for HVM Translate it to "nogui:" command prefix. --- dom0/qvm-core/qubes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f7385009..4624c955 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2406,6 +2406,8 @@ class QubesHVm(QubesVm): def run(self, command, **kwargs): if self.qrexec_installed: + if 'gui' in kwargs and kwargs['gui']==False: + command = "nogui:" + command super(QubesHVm, self).run(command, **kwargs) else: raise QubesException("Needs qrexec agent installed in VM to use this function. See also qvm-prefs.") From 06d99b77df9750324dee36a152e68cd8a4de0efa Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 15 Jun 2012 17:42:14 +0200 Subject: [PATCH 249/386] dom0: minor qvm-sync-clock fix Catch any error in vm.run, to not break clock syncing of all VMs because one VM. --- dom0/qvm-tools/qvm-sync-clock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index 30978af4..449c664f 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -91,7 +91,8 @@ def main(): print >> sys.stderr, '--> Syncing \'%s\' clock.' % vm.name try: vm.run('root:date -u -s "%s"' % date_out, verbose=verbose) - except NotImplementedError: + except Exception as e: + print >> sys.stderr, "ERROR syncing time in VM '%s': %s" % (vm.name, str(e)) pass main() From a4e10f00c1aeea9781d76ac0f9cd8448d1bb3ec4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 18 Jun 2012 23:51:44 +0200 Subject: [PATCH 250/386] dom0/qvm-firewall: eliminate duplicate firewall defaults definition (#599) This caused ignore of different firewall defaults for TemplateVM. --- dom0/qvm-core/qubes.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4624c955..1a3db454 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2005,10 +2005,7 @@ class QubesProxyVm(QubesNetVm): vms = [vm for vm in self.connected_vms.values()] for vm in vms: iptables="*filter\n" - if vm.has_firewall(): - conf = vm.get_firewall_conf() - else: - conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } + conf = vm.get_firewall_conf() xid = vm.get_xid() if xid < 0: # VM not active ATM From 6b8f0902238e1327619ace200dabac1184f6dd40 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 18 Jun 2012 23:51:44 +0200 Subject: [PATCH 251/386] dom0/qvm-firewall: eliminate duplicate firewall defaults definition (#599) This caused ignore of different firewall defaults for TemplateVM. --- dom0/qvm-core/qubes.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4624c955..1a3db454 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2005,10 +2005,7 @@ class QubesProxyVm(QubesNetVm): vms = [vm for vm in self.connected_vms.values()] for vm in vms: iptables="*filter\n" - if vm.has_firewall(): - conf = vm.get_firewall_conf() - else: - conf = { "rules": list(), "allow": True, "allowDns": True, "allowIcmp": True, "allowYumProxy": False } + conf = vm.get_firewall_conf() xid = vm.get_xid() if xid < 0: # VM not active ATM From 154eef703f29f52851d64a5d6add1efec3254c15 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Tue, 19 Jun 2012 15:31:43 +0200 Subject: [PATCH 252/386] version 2.0.28 --- version_dom0 | 2 +- version_vm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version_dom0 b/version_dom0 index 2ce45891..0047786a 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.27 +2.0.28 diff --git a/version_vm b/version_vm index 2ce45891..0047786a 100644 --- a/version_vm +++ b/version_vm @@ -1 +1 @@ -2.0.27 +2.0.28 From 3109deebd5af199cf48585fdc3e3572cd97f2028 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 21 Jun 2012 11:50:52 +0200 Subject: [PATCH 253/386] Revert "dom0/appmenus: do not add "Add more shortcuts" menu (#458)" (#548) This reverts commit 8b613a10b4b5f5aba7c0d2f8577f2c0d3f05aae2. Restore this option. --- dom0/aux-tools/create_apps_for_appvm.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/aux-tools/create_apps_for_appvm.sh b/dom0/aux-tools/create_apps_for_appvm.sh index 80fdf491..0b6e53dd 100755 --- a/dom0/aux-tools/create_apps_for_appvm.sh +++ b/dom0/aux-tools/create_apps_for_appvm.sh @@ -42,6 +42,7 @@ if [ "$SRCDIR" != "none" ]; then else find $SRCDIR -name "*.desktop" $CHECK_WHITELISTED -exec /usr/lib/qubes/convert_apptemplate2vm.sh {} $APPSDIR $VMNAME $VMDIR \; fi + /usr/lib/qubes/convert_apptemplate2vm.sh /usr/share/qubes/qubes-appmenu-select.desktop $APPSDIR $VMNAME $VMDIR if [ "$VMTYPE" = "vm-templates" ]; then /usr/lib/qubes/convert_dirtemplate2vm.sh /usr/share/qubes/qubes-templatevm.directory.template $APPSDIR/$VMNAME-vm.directory $VMNAME $VMDIR From 51f4a60a44bf2df5499494cf9c35af1082207973 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 21 Jun 2012 11:57:36 +0200 Subject: [PATCH 254/386] dom0: use new qubes-manager appmenu applet (#548) --- dom0/misc/qubes-appmenu-select.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/misc/qubes-appmenu-select.desktop b/dom0/misc/qubes-appmenu-select.desktop index 2275f779..29f3ee1d 100644 --- a/dom0/misc/qubes-appmenu-select.desktop +++ b/dom0/misc/qubes-appmenu-select.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Version=1.0 Type=Application -Exec=qubes-appmenu-select %VMNAME% +Exec=qubes-vm-settings %VMNAME% applications Icon=/usr/share/qubes/icons/qubes.png Terminal=false Name=%VMNAME%: Add more shortcuts... From 36f6a2c42cf4c33a010b1632cf1c1afc8b22d110 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 22 Jun 2012 01:22:06 +0200 Subject: [PATCH 255/386] dom0: minor init.d script fix --- dom0/init.d/qubes_core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index 5d4ac77c..27399dd9 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -58,7 +58,7 @@ start() # Hide mounted devices from qubes-block list (at first udev run, only / is mounted) for dev in `xenstore-list /local/domain/0/qubes-block-devices`; do ( eval `udevadm info -q property -n $dev|sed -e 's/\([^=]*\)=\(.*\)/export \1="\2"/'`; - /usr/lib/qubes/block_add_change + /usr/lib/qubes/block_add_change > /dev/null ) done From ceb3feccd889af4d846c0af9ed7a6344dff5bc73 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 22 Jun 2012 15:29:03 +0200 Subject: [PATCH 256/386] version 2.0.29 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 0047786a..3df5a469 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.28 +2.0.29 From 28ca836e1425d0e9ffb609db3ca72545bb4c33e6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 22 Jun 2012 21:17:50 +0200 Subject: [PATCH 257/386] vm: support for magic QUBESRPC command Previously dom0 had to know full path of qubes_rpc_multiplexer in VM, which can differ between VMs (eg totally different on Windows). This commit enables dom0 to magic keyword instead of full path. --- qrexec/qrexec.h | 3 +++ qrexec/qrexec_agent.c | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/qrexec/qrexec.h b/qrexec/qrexec.h index 4313d119..d19126dd 100644 --- a/qrexec/qrexec.h +++ b/qrexec/qrexec.h @@ -30,6 +30,9 @@ #define QREXEC_AGENT_TRIGGER_PATH "/var/run/qubes/qrexec_agent" #define QREXEC_AGENT_FDPASS_PATH "/var/run/qubes/qrexec_agent_fdpass" #define MEMINFO_WRITER_PIDFILE "/var/run/meminfo-writer.pid" +#define QUBES_RPC_MULTIPLEXER_PATH "/usr/lib/qubes/qubes_rpc_multiplexer" + +#define QUBES_RPC_MAGIC_CMD "QUBESRPC" enum { /* messages from qrexec_client to qrexec_daemon (both in dom0) */ diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index 93fa100d..f8d7e20e 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -115,14 +115,23 @@ void no_colon_in_cmd() void do_exec(char *cmd) { - char *sep = index(cmd, ':'); - if (!sep) + char buf[strlen(QUBES_RPC_MULTIPLEXER_PATH) + strlen(cmd) - strlen(QUBES_RPC_MAGIC_CMD) + 1]; + char *realcmd = index(cmd, ':'); + if (!realcmd) no_colon_in_cmd(); - *sep = 0; + /* mark end of username and move to command */ + *realcmd = 0; + realcmd++; + /* replace magic RPC cmd with RPC multiplexer path */ + if (strncmp(realcmd, QUBES_RPC_MAGIC_CMD " ", strlen(QUBES_RPC_MAGIC_CMD)+1)==0) { + strcpy(buf, QUBES_RPC_MULTIPLEXER_PATH); + strcpy(buf + strlen(QUBES_RPC_MULTIPLEXER_PATH), realcmd + strlen(QUBES_RPC_MAGIC_CMD)); + realcmd = buf; + } signal(SIGCHLD, SIG_DFL); signal(SIGPIPE, SIG_DFL); - execl("/bin/su", "su", "-", cmd, "-c", sep + 1, NULL); + execl("/bin/su", "su", "-", cmd, "-c", realcmd, NULL); perror("execl"); exit(1); } From 8e616606871864db3cecfb5802532be12ed1bdc3 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 22 Jun 2012 21:59:15 +0200 Subject: [PATCH 258/386] vm: RPC service for NTP time sync (#603) --- qubes_rpc/qubes.SyncNtpClock | 1 + qubes_rpc/sync-ntp-clock | 12 ++++++++++++ rpm_spec/core-vm.spec | 6 +++++- 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 qubes_rpc/qubes.SyncNtpClock create mode 100755 qubes_rpc/sync-ntp-clock diff --git a/qubes_rpc/qubes.SyncNtpClock b/qubes_rpc/qubes.SyncNtpClock new file mode 100644 index 00000000..087a421f --- /dev/null +++ b/qubes_rpc/qubes.SyncNtpClock @@ -0,0 +1 @@ +/usr/lib/qubes/sync-ntp-clock diff --git a/qubes_rpc/sync-ntp-clock b/qubes_rpc/sync-ntp-clock new file mode 100755 index 00000000..f5dfa1bb --- /dev/null +++ b/qubes_rpc/sync-ntp-clock @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ -x /usr/libexec/ntpdate-wrapper ]; then + /usr/libexec/ntpdate-wrapper +elif [ -x /etc/init.d/ntpdate ]; then + /etc/init.d/ntpdate restart +elif [ -x /usr/sbin/ntpdate ]; then + /usr/sbin/ntpdate pool.ntp.org +else + echo "No ntpdate installed, giving up." + exit 1 +fi diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 1fef666e..df49f4e7 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -38,6 +38,7 @@ Requires: NetworkManager >= 0.8.1-1 Requires: /usr/bin/mimeopen Requires: ethtool Requires: tinyproxy +Requires: ntpdate Provides: qubes-core-vm Obsoletes: qubes-core-commonvm Obsoletes: qubes-core-appvm @@ -149,10 +150,11 @@ install qubes_rpc/qvm-copy-to-vm.kde $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/qvm-copy-to-vm.gnome $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/{vm-file-editor,qfile-agent,qopen-in-vm,qfile-unpacker} $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/{vm-shell,qrun-in-vm} $RPM_BUILD_ROOT/usr/lib/qubes +install qubes_rpc/sync-ntp-clock $RPM_BUILD_ROOT/usr/lib/qubes install -d $RPM_BUILD_ROOT/%{kde_service_dir} install -m 0644 qubes_rpc/{qvm-copy.desktop,qvm-dvm.desktop} $RPM_BUILD_ROOT/%{kde_service_dir} install -d $RPM_BUILD_ROOT/etc/qubes_rpc -install -m 0644 qubes_rpc/{qubes.Filecopy,qubes.OpenInVM,qubes.VMShell} $RPM_BUILD_ROOT/etc/qubes_rpc +install -m 0644 qubes_rpc/{qubes.Filecopy,qubes.OpenInVM,qubes.VMShell,qubes.SyncNtpClock} $RPM_BUILD_ROOT/etc/qubes_rpc install qrexec/qrexec_agent $RPM_BUILD_ROOT/usr/lib/qubes install qrexec/qrexec_client_vm $RPM_BUILD_ROOT/usr/lib/qubes @@ -352,6 +354,7 @@ rm -rf $RPM_BUILD_ROOT /etc/qubes_rpc/qubes.Filecopy /etc/qubes_rpc/qubes.OpenInVM /etc/qubes_rpc/qubes.VMShell +/etc/qubes_rpc/qubes.SyncNtpClock /etc/sudoers.d/qubes /etc/sysconfig/iptables /etc/sysconfig/modules/qubes_core.modules @@ -375,6 +378,7 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/block_add_change /usr/lib/qubes/block_cleanup /usr/lib/qubes/block_remove +/usr/lib/qubes/sync-ntp-clock /usr/lib/qubes/meminfo-writer /usr/lib/qubes/network-manager-prepare-conf-dir /usr/lib/qubes/qfile-agent From 1dad96b0e995a87a1d1a4bdd0a2d3479b25971b8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 22 Jun 2012 22:23:17 +0200 Subject: [PATCH 259/386] dom0: use RPC service to sync clock via NTP (#603) --- dom0/qvm-tools/qvm-sync-clock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index 449c664f..84f54ba8 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -67,7 +67,7 @@ def main(): net_vm.run('user:nm-online -x', verbose=verbose, wait=True) # Sync clock - if clock_vm.run('root:/etc/init.d/ntpdate restart', verbose=verbose, wait=True) != 0: + if clock_vm.run('root:QUBESRPC qubes.SyncNtpClock dom0', verbose=verbose, wait=True) != 0: print >> sys.stderr, 'Time sync failed, aborting!' sys.exit(1) From be7c079705ce9b62dfee305d227919ba684dd730 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 22 Jun 2012 23:44:05 +0200 Subject: [PATCH 260/386] dom0/updates: clean yum cache as root (#540) Actually looks like this solve problem, don't know why (cleaning as user didn't returned any error). --- dom0/aux-tools/qubes-receive-updates | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/aux-tools/qubes-receive-updates b/dom0/aux-tools/qubes-receive-updates index 02cbebee..6db39d4e 100755 --- a/dom0/aux-tools/qubes-receive-updates +++ b/dom0/aux-tools/qubes-receive-updates @@ -76,7 +76,7 @@ def handle_dom0updates(updatevm): os.chown(updates_repodata_dir, -1, qubes_gid) os.chmod(updates_repodata_dir, 0775) # Clean old cache - subprocess.call(["/usr/bin/yum", "-q", "clean", "all"], stdout=sys.stderr) + subprocess.call(["sudo", "/usr/bin/yum", "-q", "clean", "all"], stdout=sys.stderr) # This will fail because of "smart" detection of no-network, but it will invalidate the cache try: null = open('/dev/null','w') From 0008e71784954e38003bc0755f63de5e65968dc7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 24 Jun 2012 14:09:43 +0200 Subject: [PATCH 261/386] dom0: appmenu to start Firefox in new DispVM (#594) --- dom0/misc/qubes-dispvm-firefox.desktop | 10 ++++++++++ dom0/misc/qubes-dispvm.directory | 5 +++++ dom0/restore/qfile-daemon-dvm | 19 +++++++++++++++---- rpm_spec/core-dom0.spec | 8 ++++++++ 4 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 dom0/misc/qubes-dispvm-firefox.desktop create mode 100644 dom0/misc/qubes-dispvm.directory diff --git a/dom0/misc/qubes-dispvm-firefox.desktop b/dom0/misc/qubes-dispvm-firefox.desktop new file mode 100644 index 00000000..021bda61 --- /dev/null +++ b/dom0/misc/qubes-dispvm-firefox.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=sh -c 'echo firefox | /usr/lib/qubes/qfile-daemon-dvm qubes.VMShell dom0 user red' +Icon=/usr/share/qubes/icons/dispvm-red.png +Terminal=false +Name=DispVM: Firefox web browser +GenericName=DispVM: Web browser +StartupNotify=false +Categories=Network; diff --git a/dom0/misc/qubes-dispvm.directory b/dom0/misc/qubes-dispvm.directory new file mode 100644 index 00000000..9b5544d6 --- /dev/null +++ b/dom0/misc/qubes-dispvm.directory @@ -0,0 +1,5 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=DisposableVM +Icon=/usr/share/qubes/icons/dispvm-red.png diff --git a/dom0/restore/qfile-daemon-dvm b/dom0/restore/qfile-daemon-dvm index db779c65..a2fb8c72 100755 --- a/dom0/restore/qfile-daemon-dvm +++ b/dom0/restore/qfile-daemon-dvm @@ -29,6 +29,7 @@ import shutil from qubes.qubes import QubesVmCollection from qubes.qubes import QubesException from qubes.qubes import QubesDaemonPidfile +from qubes.qubes import QubesDispVmLabels from qubes.qmemman_client import QMemmanClient current_savefile = '/var/run/qubes/current_savefile' @@ -58,12 +59,16 @@ class QfileDaemonDvm: qvm_collection.unlock_db() qmemman_client.close() return None + label = vm.label + if len(sys.argv) > 4 and len(sys.argv[4]) > 0: + assert sys.argv[4] in QubesDispVmLabels.keys(), "Invalid label" + label = QubesDispVmLabels[sys.argv[4]] retcode = subprocess.call(['/usr/lib/qubes/qubes_restore', current_savefile, current_dvm_conf, - '-c', vm.label.color, - '-i', vm.label.icon, - '-l', str(vm.label.index)]) + '-c', label.color, + '-i', label.icon, + '-l', str(label.index)]) qmemman_client.close() if retcode != 0: subprocess.call(['/usr/bin/kdialog', '--sorry', 'DisposableVM creation failed, see qubes_restore.log']) @@ -80,12 +85,15 @@ class QfileDaemonDvm: qvm_collection.unlock_db() return None dispid=int(disp_name[4:]) - dispvm=qvm_collection.add_new_disposablevm(disp_name, vm_disptempl.template, label=vm.label, dispid=dispid) + dispvm=qvm_collection.add_new_disposablevm(disp_name, vm_disptempl.template, label=label, dispid=dispid) # By default inherit firewall rules from calling VM if os.path.exists(vm.firewall_conf): disp_firewall_conf = '/var/run/qubes/%s-firewall.xml' % disp_name shutil.copy(vm.firewall_conf, disp_firewall_conf) dispvm.firewall_conf = disp_firewall_conf + if len(sys.argv) > 5 and len(sys.argv[5]) > 0: + assert os.path.exists(sys.argv[5]), "Invalid firewall.conf location" + dispvm.firewall_conf = sys.argv[5] qvm_collection.save() qvm_collection.unlock_db() # Reload firewall rules @@ -137,6 +145,9 @@ def main(): exec_index = sys.argv[1] src_vmname = sys.argv[2] user = sys.argv[3] + #accessed directly by get_dvm() + # sys.argv[4] - override label + # sys.argv[5] - override firewall notify_object = dbus.SessionBus().get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications") qfile = QfileDaemonDvm(src_vmname) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index e850371d..04e368b2 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -157,6 +157,8 @@ mkdir -p $RPM_BUILD_ROOT/usr/share/qubes/icons cp icons/*.png $RPM_BUILD_ROOT/usr/share/qubes/icons cp misc/qubes-vm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-templatevm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ +cp misc/qubes-dispvm.directory $RPM_BUILD_ROOT/usr/share/qubes/ +cp misc/qubes-dispvm-firefox.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-appmenu-select.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-start.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/vm-template.conf $RPM_BUILD_ROOT/usr/share/qubes/ @@ -256,6 +258,8 @@ for i in /usr/share/qubes/icons/*.png ; do xdg-icon-resource install --novendor --size 48 $i done +xdg-desktop-menu install /usr/share/qubes/qubes-dispvm.directory /usr/share/qubes/qubes-dispvm-firefox.desktop + # Because we now have an installer # this script is always executed during upgrade # and we decided not to restart core during upgrade @@ -297,6 +301,8 @@ if [ "$1" = 0 ] ; then for i in /usr/share/qubes/icons/*.png ; do xdg-icon-resource uninstall --novendor --size 48 $i done + + xdg-desktop-menu uninstall /usr/share/qubes/qubes-dispvm.directory /usr/share/qubes/qubes-dispvm-firefox.desktop fi %postun @@ -358,6 +364,8 @@ fi /usr/share/qubes/icons/*.png /usr/share/qubes/qubes-vm.directory.template /usr/share/qubes/qubes-templatevm.directory.template +/usr/share/qubes/qubes-dispvm.directory +/usr/share/qubes/qubes-dispvm-firefox.desktop /usr/share/qubes/qubes-appmenu-select.desktop /usr/share/qubes/qubes-start.desktop /usr/share/qubes/vm-template.conf From 16b4eae2fc368ac46257c291a32f91ea469c35ff Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 25 Jun 2012 23:55:09 +0200 Subject: [PATCH 262/386] version 2.0.30-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 3df5a469..07a21997 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.29 +2.0.30 From 29e3593a023adcd778612c8ccef3897b9c817f79 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 26 Jun 2012 00:26:53 +0200 Subject: [PATCH 263/386] dom0/qmemman: allow balance when xen have low free memory (#563) --- dom0/qmemman/qmemman.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qmemman/qmemman.py b/dom0/qmemman/qmemman.py index 227cc812..cf6325a7 100755 --- a/dom0/qmemman/qmemman.py +++ b/dom0/qmemman/qmemman.py @@ -132,6 +132,9 @@ class SystemState: total_memory_transfer = 0 MIN_TOTAL_MEMORY_TRANSFER = 150*1024*1024 MIN_MEM_CHANGE_WHEN_UNDER_PREF = 15*1024*1024 + # If xenfree to low, return immediately + if self.XEN_FREE_MEM_LEFT - xenfree > MIN_MEM_CHANGE_WHEN_UNDER_PREF: + return True for rq in memset_reqs: dom, mem = rq last_target = self.domdict[dom].last_target From 71c4ca88045dbd02d2274335b4e7ebbb57b38f9e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 26 Jun 2012 03:30:06 +0200 Subject: [PATCH 264/386] vm/spec: fix enabling of qubes-firewall SysV service --- rpm_spec/core-vm.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index df49f4e7..6d97102b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -480,8 +480,8 @@ chkconfig --add qubes_core_netvm || echo "WARNING: Cannot add service qubes_core chkconfig qubes_core_netvm on || echo "WARNING: Cannot enable service qubes_core!" chkconfig --add qubes_core_appvm || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes_core_appvm on || echo "WARNING: Cannot enable service qubes_core!" -chkconfig --add qubes_firewall || echo "WARNING: Cannot add service qubes_core!" -chkconfig qubes_firewall on || echo "WARNING: Cannot enable service qubes_core!" +chkconfig --add qubes-firewall || echo "WARNING: Cannot add service qubes_core!" +chkconfig qubes-firewall on || echo "WARNING: Cannot enable service qubes_core!" chkconfig --add qubes-netwatcher || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes-netwatcher on || echo "WARNING: Cannot enable service qubes_core!" chkconfig --add qubes-yum-proxy || echo "WARNING: Cannot add service qubes-yum-proxy!" From 4cc7d9300fa58a28c7f9e1dce57c273198471fba Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 26 Jun 2012 03:31:28 +0200 Subject: [PATCH 265/386] vm/spec: fix error messages --- rpm_spec/core-vm.spec | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 6d97102b..85385134 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -476,14 +476,14 @@ chkconfig messagebus on chkconfig iptables on chkconfig --add qubes_core || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes_core on || echo "WARNING: Cannot enable service qubes_core!" -chkconfig --add qubes_core_netvm || echo "WARNING: Cannot add service qubes_core!" -chkconfig qubes_core_netvm on || echo "WARNING: Cannot enable service qubes_core!" -chkconfig --add qubes_core_appvm || echo "WARNING: Cannot add service qubes_core!" -chkconfig qubes_core_appvm on || echo "WARNING: Cannot enable service qubes_core!" -chkconfig --add qubes-firewall || echo "WARNING: Cannot add service qubes_core!" -chkconfig qubes-firewall on || echo "WARNING: Cannot enable service qubes_core!" -chkconfig --add qubes-netwatcher || echo "WARNING: Cannot add service qubes_core!" -chkconfig qubes-netwatcher on || echo "WARNING: Cannot enable service qubes_core!" +chkconfig --add qubes_core_netvm || echo "WARNING: Cannot add service qubes_core_netvm!" +chkconfig qubes_core_netvm on || echo "WARNING: Cannot enable service qubes_core_netvm!" +chkconfig --add qubes_core_appvm || echo "WARNING: Cannot add service qubes_core_appvm!" +chkconfig qubes_core_appvm on || echo "WARNING: Cannot enable service qubes_core_appvm!" +chkconfig --add qubes-firewall || echo "WARNING: Cannot add service qubes-firewall!" +chkconfig qubes-firewall on || echo "WARNING: Cannot enable service qubes-firewall!" +chkconfig --add qubes-netwatcher || echo "WARNING: Cannot add service qubes-netwatcher!" +chkconfig qubes-netwatcher on || echo "WARNING: Cannot enable service qubes-netwatcher!" chkconfig --add qubes-yum-proxy || echo "WARNING: Cannot add service qubes-yum-proxy!" chkconfig qubes-yum-proxy on || echo "WARNING: Cannot enable service qubes-yum-proxy!" From 4f7656e36facc5dcbe8a3498e600b64a28624e01 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 26 Jun 2012 03:36:22 +0200 Subject: [PATCH 266/386] vm/spec: fix enabling NetworkManager SystemD service --- rpm_spec/core-vm.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 85385134..3cb6a6b2 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -596,7 +596,9 @@ rm -f /etc/systemd/system/getty.target.wants/getty@tty*.service /bin/systemctl enable iptables.service 2> /dev/null /bin/systemctl enable rsyslog.service 2> /dev/null /bin/systemctl enable ntpd.service 2> /dev/null -/bin/systemctl enable NetworkManager.service +# Disable original service to enable overriden one +/bin/systemctl disable NetworkManager.service 2> /dev/null +/bin/systemctl enable NetworkManager.service 2> /dev/null # Enable cups only when it is real SystemD service [ -e /lib/systemd/system/cups.service ] && /bin/systemctl enable cups.service 2> /dev/null From 50dc08668230eecc0a3f28f70d3df54e72796636 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 26 Jun 2012 11:05:03 +0200 Subject: [PATCH 267/386] dom0/core: typo fix in clone_disk_files (#608) --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f8120b62..735f2a20 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1608,7 +1608,7 @@ class QubesTemplateVm(QubesVm): if dry_run: return - super(QubesTemplateVM, self).clone_disk_files(src_vm=src_vm, verbose=verbose) + super(QubesTemplateVm, self).clone_disk_files(src_vm=src_vm, verbose=verbose) if os.path.exists(src_vm.dir_path + '/vm-' + qubes_whitelisted_appmenus): if verbose: From 2854f08bca1c14da3a7a6eb4e7899ad9cedb2ccd Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 28 Jun 2012 12:28:14 +0200 Subject: [PATCH 268/386] dom0/core: fix the last merge... Remove duplicated lines by faulty conflict resolution. --- dom0/qvm-core/qubes.py | 1 - dom0/qvm-tools/qvm-prefs | 21 --------------------- 2 files changed, 22 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 735f2a20..7e0fffd1 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2817,7 +2817,6 @@ class QubesVmCollection(dict): "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", "mac", "services", "include_in_backups", "debug", "default_user", "qrexec_installed", "drive" ) - "mac", "services", "include_in_backups", "debug", "default_user" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 53ccf041..683448f0 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -325,27 +325,6 @@ def set_include_in_backups(vms, vm, args): vm.include_in_backups = bool(eval(args[0].capitalize())) return True -def set_debug(vms, vm, args): - if len (args) != 1: - print >> sys.stderr, "Missing value (True/False or on/off)!" - return False - - if args[0].lower() == "on": - vm.debug = True - elif args[0].lower() == "off": - vm.debug = False - else: - vm.debug = bool(eval(args[0].capitalize())) - return True - -def set_default_user(vms, vm, args): - if len (args) != 1: - print >> sys.stderr, "Missing user name!" - return False - - vm.default_user = args[0] - return True - def set_qrexec_installed(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing value (True/False)!" From ff7e0834f3d41ee7f44720311733a63373604374 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 28 Jun 2012 12:38:29 +0200 Subject: [PATCH 269/386] version 2.0.31 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 07a21997..e2355582 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.30 +2.0.31 From 11ab37b9ffb141b592786464eddc5776b00b0657 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 30 Jun 2012 00:58:06 +0200 Subject: [PATCH 270/386] dom0/qvm-block: fix error handling (#614) --- dom0/qvm-core/qubesutils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 46a5f69a..81d5a222 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -341,7 +341,7 @@ def block_attach(vm, backend_vm, device, frontend=None, mode="w", auto_detach=Fa return elif int(be_state) > 4: # Error - error = xs.read('/local/domain/%d/error/backend/vbd/%d/%d/error' % (backend_vm.xid, vm.xid, block_name_to_devid(frontend))) + error = xs.read('', '/local/domain/%d/error/backend/vbd/%d/%d/error' % (backend_vm.xid, vm.xid, block_name_to_devid(frontend))) if error is None: raise QubesException("Error while connecting block device: " + error) else: From 6d9ae12e475ab7d668aae9c456f1c3edf521951e Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Mon, 25 Jun 2012 23:55:09 +0200 Subject: [PATCH 271/386] version 2.0.30-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 3df5a469..07a21997 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.29 +2.0.30 From 4ea6a19d5b4bb41c6df5a470e79821be020d4ea5 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 28 Jun 2012 12:38:29 +0200 Subject: [PATCH 272/386] version 2.0.31 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 07a21997..e2355582 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.30 +2.0.31 From 2b452c9970eb6ba7d29e6a8b96a64fd6431dcfaf Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:29:16 +0200 Subject: [PATCH 273/386] dom0/qmemman: remove trainling spaces --- dom0/qmemman/qmemman.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dom0/qmemman/qmemman.py b/dom0/qmemman/qmemman.py index cf6325a7..86d5b939 100755 --- a/dom0/qmemman/qmemman.py +++ b/dom0/qmemman/qmemman.py @@ -47,7 +47,7 @@ class SystemState: self.domdict[id].memory_maximum = self.xs.read('', '/local/domain/%s/memory/static-max' % str(id)) if not self.domdict[id].memory_maximum: self.domdict[id].memory_maximum = self.ALL_PHYS_MEM -# the previous line used to be +# the previous line used to be # self.domdict[id].memory_maximum = domain['maxmem_kb']*1024 # but domain['maxmem_kb'] changes in self.mem_set as well, and this results in # the memory never increasing @@ -86,7 +86,7 @@ class SystemState: for i in self.domdict.keys(): dom = self.domdict[i] if dom.memory_actual is not None and dom.memory_actual + 200*1024 < dom.last_target: - print "Preventing balloon up to", dom.last_target + print "Preventing balloon up to", dom.last_target self.mem_set(i, dom.memory_actual) #perform memory ballooning, across all domains, to add "memsize" to Xen free memory @@ -121,7 +121,7 @@ class SystemState: prev_memory_actual[dom] = self.domdict[dom].memory_actual time.sleep(self.BALOON_DELAY) niter = niter + 1 - + def refresh_meminfo(self, domid, untrusted_meminfo_key): qmemman_algo.refresh_meminfo_for_domain(self.domdict[domid], untrusted_meminfo_key) self.do_balance() @@ -151,7 +151,7 @@ class SystemState: if self.domdict[i].meminfo is not None: print 'dom' , i, 'act/pref', self.domdict[i].memory_actual, qmemman_algo.prefmem(self.domdict[i]) print 'xenfree=', xenfree, 'balance req:', memset_reqs - + def do_balance(self): if os.path.isfile('/var/run/qubes/do-not-membalance'): return @@ -160,7 +160,7 @@ class SystemState: memset_reqs = qmemman_algo.balance(xenfree - self.XEN_FREE_MEM_LEFT, self.domdict) if not self.is_balance_req_significant(memset_reqs, xenfree): return - + self.print_stats(xenfree, memset_reqs) for rq in memset_reqs: From 30ff420b520630a25a0b9c8e015d496821e7231c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:17:45 +0200 Subject: [PATCH 274/386] dom0/qmemman: minor fix in mem_set() Set target/maxmem in more logical order (balloon driver can fail to balloon the first time, but will retry anyway). Force sizes to be integers. --- dom0/qmemman/qmemman.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dom0/qmemman/qmemman.py b/dom0/qmemman/qmemman.py index 86d5b939..c982ecf0 100755 --- a/dom0/qmemman/qmemman.py +++ b/dom0/qmemman/qmemman.py @@ -58,15 +58,15 @@ class SystemState: def mem_set(self, id, val): print 'mem-set domain', id, 'to', val self.domdict[id].last_target = val - self.xs.write('', '/local/domain/' + id + '/memory/target', str(val/1024)) #can happen in the middle of domain shutdown #apparently xc.lowlevel throws exceptions too try: - self.xc.domain_setmaxmem(int(id), val/1024 + 1024) # LIBXL_MAXMEM_CONSTANT=1024 - self.xc.domain_set_target_mem(int(id), val/1024) + self.xc.domain_setmaxmem(int(id), int(val/1024) + 1024) # LIBXL_MAXMEM_CONSTANT=1024 + self.xc.domain_set_target_mem(int(id), int(val/1024)) except: pass - + self.xs.write('', '/local/domain/' + id + '/memory/target', str(int(val/1024))) + def mem_set_obsolete(self, id, val): uuid = self.domdict[id].uuid if val >= 2**31: From eb3da24aa4c4c1af4f1c3602db569341d6af01d9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:20:03 +0200 Subject: [PATCH 275/386] dom0/guihelpers: interface to notifying qubes-manager (#615) --- dom0/qvm-core/guihelpers.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/dom0/qvm-core/guihelpers.py b/dom0/qvm-core/guihelpers.py index dbda6022..f4c8ff3d 100644 --- a/dom0/qvm-core/guihelpers.py +++ b/dom0/qvm-core/guihelpers.py @@ -24,8 +24,11 @@ import sys from optparse import OptionParser from PyQt4.QtCore import * from PyQt4.QtGui import * +import dbus +from dbus import DBusException app = None +system_bus = None def prepare_app(): global app @@ -53,3 +56,29 @@ def ask(text, title="Question", yestoall=False): else: #?! return 127 + +def notify_error_qubes_manager(name, message): + global system_bus + if system_bus is None: + system_bus = dbus.SystemBus() + + try: + qubes_manager = system_bus.get_object('org.qubesos.QubesManager', + '/org/qubesos/QubesManager') + qubes_manager.notify_error(name, message, dbus_interface='org.qubesos.QubesManager') + except DBusException: + # ignore the case when no qubes-manager is running + pass + +def clear_error_qubes_manager(name, message): + global system_bus + if system_bus is None: + system_bus = dbus.SystemBus() + + try: + qubes_manager = system_bus.get_object('org.qubesos.QubesManager', + '/org/qubesos/QubesManager') + qubes_manager.clear_error_exact(name, message, dbus_interface='org.qubesos.QubesManager') + except DBusException: + # ignore the case when no qubes-manager is running + pass From 3ce68def8cefa11f39cac8d9f20d38767f5a6fd6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:23:43 +0200 Subject: [PATCH 276/386] dom0/qmemman: check if donors have returned memory before distributing it to other VMs (#563) When some VM did't returned memory to Xen, mark this VM as suspicious and abort balance to always have some xen free_memory margin. VMs marked as suspicius will be evaluated before next balance and still didn't returned memory, will be skipped in balance process. --- dom0/qmemman/qmemman.py | 49 ++++++++++++++++++++++++++++++++++++ dom0/qmemman/qmemman_algo.py | 4 +++ 2 files changed, 53 insertions(+) diff --git a/dom0/qmemman/qmemman.py b/dom0/qmemman/qmemman.py index c982ecf0..53b3a6a3 100755 --- a/dom0/qmemman/qmemman.py +++ b/dom0/qmemman/qmemman.py @@ -5,6 +5,9 @@ import time import qmemman_algo import os +no_progress_msg="VM refused to give back requested memory" +slow_memset_react_msg="VM didn't give back all requested memory" + class DomainState: def __init__(self, id): self.meminfo = None #dictionary of memory info read from client @@ -13,6 +16,8 @@ class DomainState: self.mem_used = None #used memory, computed based on meminfo self.id = id #domain id self.last_target = 0 #the last memset target + self.no_progress = False #no react to memset + self.slow_memset_react = False #slow react to memset (after few tries still above target) class SystemState: def __init__(self): @@ -54,6 +59,17 @@ class SystemState: # in fact, the only possible case of nonexisting memory/static-max is dom0 # see #307 + def clear_outdated_error_markers(self): + # Clear outdated errors + for i in self.domdict.keys(): + if self.domdict[i].slow_memset_react and \ + self.domdict[i].memory_actual <= self.domdict[i].last_target + self.XEN_FREE_MEM_LEFT/4: + self.domdict[i].slow_memset_react = False + + if self.domdict[i].no_progress and \ + self.domdict[i].memory_actual <= self.domdict[i].last_target + self.XEN_FREE_MEM_LEFT/4: + self.domdict[i].no_progress = False + #the below works (and is fast), but then 'xm list' shows unchanged memory value def mem_set(self, id, val): print 'mem-set domain', id, 'to', val @@ -156,6 +172,7 @@ class SystemState: if os.path.isfile('/var/run/qubes/do-not-membalance'): return self.refresh_memactual() + self.clear_outdated_error_markers() xenfree = self.get_free_xen_memory() memset_reqs = qmemman_algo.balance(xenfree - self.XEN_FREE_MEM_LEFT, self.domdict) if not self.is_balance_req_significant(memset_reqs, xenfree): @@ -163,8 +180,40 @@ class SystemState: self.print_stats(xenfree, memset_reqs) + prev_memactual = {} + for i in self.domdict.keys(): + prev_memactual[i] = self.domdict[i].memory_actual for rq in memset_reqs: dom, mem = rq + # Force to always have at least 0.9*self.XEN_FREE_MEM_LEFT (some + # margin for rounding errors). Before giving memory to + # domain, ensure that others have gived it back. + # If not - wait a little. + ntries = 5 + while self.get_free_xen_memory() - (mem - self.domdict[dom].memory_actual) < 0.9*self.XEN_FREE_MEM_LEFT: + time.sleep(self.BALOON_DELAY) + ntries -= 1 + if ntries <= 0: + # Waiting haven't helped; Find which domain get stuck and + # abort balance (after distributing what we have) + self.refresh_memactual() + for rq2 in memset_reqs: + dom2, mem2 = rq2 + if dom2 == dom: + # All donors have been procesed + break + # allow some small margin + if self.domdict[dom2].memory_actual > self.domdict[dom2].last_target + self.XEN_FREE_MEM_LEFT/4: + # VM didn't react to memory request at all, remove from donors + if prev_memactual[dom2] == self.domdict[dom2].memory_actual: + print 'dom %s didnt react to memory request (holds %d, requested balloon down to %d)' % (dom2, self.domdict[dom2].memory_actual, mem2) + self.domdict[dom2].no_progress = True + else: + print 'dom %s still hold more memory than have assigned (%d > %d)' % (dom2, self.domdict[dom2].memory_actual, mem2) + self.domdict[dom2].slow_memset_react = True + self.mem_set(dom, self.get_free_xen_memory() + self.domdict[dom].memory_actual - self.XEN_FREE_MEM_LEFT) + return + self.mem_set(dom, mem) # for i in self.domdict.keys(): diff --git a/dom0/qmemman/qmemman_algo.py b/dom0/qmemman/qmemman_algo.py index b61d9d17..3f807c53 100755 --- a/dom0/qmemman/qmemman_algo.py +++ b/dom0/qmemman/qmemman_algo.py @@ -117,6 +117,8 @@ def balance_when_enough_memory(domain_dictionary, xen_free_memory, total_mem_pre for i in domain_dictionary.keys(): if domain_dictionary[i].meminfo is None: continue + if domain_dictionary[i].no_progress: + continue #distribute total_available_memory proportionally to mempref scale = 1.0*prefmem(domain_dictionary[i])/total_mem_pref target_nonint = prefmem(domain_dictionary[i]) + scale*total_available_memory @@ -212,6 +214,8 @@ def balance(xen_free_memory, domain_dictionary): for i in domain_dictionary.keys(): if domain_dictionary[i].meminfo is None: continue + if domain_dictionary[i].no_progress: + continue need = memory_needed(domain_dictionary[i]) # print 'domain' , i, 'act/pref', domain_dictionary[i].memory_actual, prefmem(domain_dictionary[i]), 'need=', need if need < 0 or domain_dictionary[i].memory_actual >= domain_dictionary[i].memory_maximum: From 27b6aa437864c407ee9a3639ceb75b750f9802db Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:27:36 +0200 Subject: [PATCH 277/386] dom0/qmemman: notify qubes-manager about misbehaving VMs (#615) --- dom0/qmemman/qmemman.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom0/qmemman/qmemman.py b/dom0/qmemman/qmemman.py index 53b3a6a3..23dde45d 100755 --- a/dom0/qmemman/qmemman.py +++ b/dom0/qmemman/qmemman.py @@ -4,6 +4,7 @@ import string import time import qmemman_algo import os +from guihelpers import notify_error_qubes_manager, clear_error_qubes_manager no_progress_msg="VM refused to give back requested memory" slow_memset_react_msg="VM didn't give back all requested memory" @@ -64,10 +65,14 @@ class SystemState: for i in self.domdict.keys(): if self.domdict[i].slow_memset_react and \ self.domdict[i].memory_actual <= self.domdict[i].last_target + self.XEN_FREE_MEM_LEFT/4: + dom_name = self.xs.read('', '/local/domain/%s/name' % str(i)) + clear_error_qubes_manager(dom_name, slow_memset_react_msg) self.domdict[i].slow_memset_react = False if self.domdict[i].no_progress and \ self.domdict[i].memory_actual <= self.domdict[i].last_target + self.XEN_FREE_MEM_LEFT/4: + dom_name = self.xs.read('', '/local/domain/%s/name' % str(i)) + clear_error_qubes_manager(dom_name, no_progress_msg) self.domdict[i].no_progress = False #the below works (and is fast), but then 'xm list' shows unchanged memory value @@ -208,9 +213,13 @@ class SystemState: if prev_memactual[dom2] == self.domdict[dom2].memory_actual: print 'dom %s didnt react to memory request (holds %d, requested balloon down to %d)' % (dom2, self.domdict[dom2].memory_actual, mem2) self.domdict[dom2].no_progress = True + dom_name = self.xs.read('', '/local/domain/%s/name' % str(dom2)) + notify_error_qubes_manager(dom_name, no_progress_msg) else: print 'dom %s still hold more memory than have assigned (%d > %d)' % (dom2, self.domdict[dom2].memory_actual, mem2) self.domdict[dom2].slow_memset_react = True + dom_name = self.xs.read('', '/local/domain/%s/name' % str(dom2)) + notify_error_qubes_manager(dom_name, slow_memset_react_msg) self.mem_set(dom, self.get_free_xen_memory() + self.domdict[dom].memory_actual - self.XEN_FREE_MEM_LEFT) return From 897f981c8c5c2659300de9b46910ef9830146662 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:30:00 +0200 Subject: [PATCH 278/386] dom0/qvm-run: Notify qubes-manager about failed VM start (#615) --- dom0/qvm-tools/qvm-run | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index d83236cd..8292e0cd 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -23,6 +23,7 @@ from qubes.qubes import QubesVmCollection from qubes.qubes import QubesException +from qubes.guihelpers import notify_error_qubes_manager from optparse import OptionParser import subprocess import socket @@ -89,6 +90,7 @@ def vm_run_cmd(vm, cmd, options): except QubesException as err: if options.tray: tray_notify_error(str(err)) + notify_error_qubes_manager(vm.name, str(err)) print >> sys.stderr, "ERROR: %s" % str(err) exit(1) From ee59cb33ce061c0dc6d88d7eadb1d682adc6a5d7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:30:47 +0200 Subject: [PATCH 279/386] vm/qubes-update-proxy: update URL whitelist --- network/filter-qubes-yum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/filter-qubes-yum b/network/filter-qubes-yum index b244f3cf..ee5c777f 100644 --- a/network/filter-qubes-yum +++ b/network/filter-qubes-yum @@ -1,4 +1,4 @@ -.*/repodata/[A-Za-z0-9-]*\(primary\|filelist\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ +.*/repodata/[A-Za-z0-9-]*\(primary\|filelist\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\|updateinfo\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ .*/repodata/repomd\.xml$ .*\.rpm$ .*\.drpm$ From f20099f05bbcb76b8070a8279d9b3bc01de4c9f6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:31:32 +0200 Subject: [PATCH 280/386] vm/spec: disable pam_systemd globally (#607) Actually all /etc/pam.d/ files containing pam_systemd.so are autogenerated by authconfig, so "removing" pam_systemd.so file as not elegant solution, seems to be much more realiable. --- rpm_spec/core-vm.spec | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 3cb6a6b2..71316f76 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -179,6 +179,9 @@ install -D u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so %triggerin -- initscripts cp /usr/lib/qubes/serial.conf /etc/init/serial.conf +%triggerin -- systemd +mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled + %post # disable some Upstart services @@ -246,6 +249,12 @@ if ! [ -e /lib/firmware/updates ]; then ln -s /lib/modules/firmware /lib/firmware/updates fi +# Disable pam_systemd - we (hopefully) don't need it, but it cause some minor +# problems (http://wiki.qubes-os.org/trac/ticket/607) +# /etc/pam.d/common-* are automatically (re)generated by authconfig, so its +# modification will not be persistent -> must be done this way +mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled + if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then echo >> /etc/yum.conf echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf @@ -320,6 +329,7 @@ if [ "$1" = 0 ] ; then mv /var/lib/qubes/fstab.orig /etc/fstab mv /var/lib/qubes/removed-udev-scripts/* /etc/udev/rules.d/ mv /var/lib/qubes/serial.orig /etc/init/serial.conf + mv /%{_lib}/security/pam_systemd.so.disabled /%{_lib}/security/pam_systemd.so fi %postun From 725e72404483af398d4036e127f47093bc84813f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:33:22 +0200 Subject: [PATCH 281/386] vm: disable D-Bus activation of NetworkManager (#610) --- rpm_spec/core-vm.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 71316f76..de058384 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -559,6 +559,10 @@ done /bin/systemctl enable qubes-update-check.timer 2> /dev/null +# Disable D-BUS activation of NetworkManager - in AppVm it causes problems (eg PackageKit timeouts) +/bin/systemctl disable NetworkManager.service 2> /dev/null +/bin/systemctl mask dbus-org.freedesktop.NetworkManager.service 2> /dev/null + # Install overriden services only when original exists for srv in cups NetworkManager ntpd; do if [ -f /lib/systemd/system/$srv.service ]; then From 3ccc43ede2349b802a6501785bfb4b14c57875a4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 5 Jul 2012 01:40:38 +0200 Subject: [PATCH 282/386] dom0/spec: remove some udev rules from system (#605) --- rpm_spec/core-dom0.spec | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 04e368b2..ae7daae8 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -269,6 +269,10 @@ if [ "x"$HAD_SYSCONFIG_NETWORK = "xno" ]; then rm -f /etc/sysconfig/network fi +# Remove unnecessary udev rules that causes problems in dom0 (#605) +mkdir -p /var/lib/qubes/removed-udev-scripts +mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ + %clean rm -rf $RPM_BUILD_ROOT @@ -291,6 +295,8 @@ fi %triggerin -- xen-runtime sed -i 's/\/block /\/block.qubes /' /etc/udev/rules.d/xen-backend.rules +%triggerin -- xorg-x11-drv-vmmouse +mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ %preun if [ "$1" = 0 ] ; then From da7a4800c942f1384e09c6413c502c5c07510cd9 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 6 Jul 2012 11:19:16 +0200 Subject: [PATCH 283/386] version 2.0.32 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index e2355582..79a82f0a 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.31 +2.0.32 From 9df909277fe3d7b52cd7e177ec7777cc2953843f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 7 Jul 2012 02:45:32 +0200 Subject: [PATCH 284/386] makefile: fix clean target --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4f3f7881..1a80e49c 100644 --- a/Makefile +++ b/Makefile @@ -56,4 +56,4 @@ clean: make -C misc clean make -C qrexec clean make -C u2mfn clean - make -C vchan clean + make -C vchan -f Makefile.linux clean From c1f5377b1d76b85c3248d862f0c69ed27f64901d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 9 Jul 2012 15:52:42 +0200 Subject: [PATCH 285/386] vm/spec: disable pam_systemd only in trigger The %post part is unnecessary. --- rpm_spec/core-vm.spec | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index de058384..9b65628b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -180,6 +180,10 @@ install -D u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so cp /usr/lib/qubes/serial.conf /etc/init/serial.conf %triggerin -- systemd +# Disable pam_systemd - we (hopefully) don't need it, but it cause some minor +# problems (http://wiki.qubes-os.org/trac/ticket/607) +# /etc/pam.d/common-* are automatically (re)generated by authconfig, so its +# modification will not be persistent -> must be done this way mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled %post @@ -249,12 +253,6 @@ if ! [ -e /lib/firmware/updates ]; then ln -s /lib/modules/firmware /lib/firmware/updates fi -# Disable pam_systemd - we (hopefully) don't need it, but it cause some minor -# problems (http://wiki.qubes-os.org/trac/ticket/607) -# /etc/pam.d/common-* are automatically (re)generated by authconfig, so its -# modification will not be persistent -> must be done this way -mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled - if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then echo >> /etc/yum.conf echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf From ba81866b2f4a7a4740bc5a5e99c078ce8be20ba4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 11 Jul 2012 23:53:23 +0200 Subject: [PATCH 286/386] dom0/qvm-tools: Warn the user when running qvm-tool as root is not recommended (#612) --- dom0/qvm-tools/qvm-add-appvm | 9 +++++++++ dom0/qvm-tools/qvm-add-template | 9 +++++++++ dom0/qvm-tools/qvm-backup | 9 +++++++++ dom0/qvm-tools/qvm-block | 9 +++++++++ dom0/qvm-tools/qvm-clone | 9 +++++++++ dom0/qvm-tools/qvm-firewall | 9 +++++++++ dom0/qvm-tools/qvm-prefs | 9 +++++++++ dom0/qvm-tools/qvm-sync-appmenus | 9 +++++++++ 8 files changed, 72 insertions(+) diff --git a/dom0/qvm-tools/qvm-add-appvm b/dom0/qvm-tools/qvm-add-appvm index b0c6ed74..f30c1afd 100755 --- a/dom0/qvm-tools/qvm-add-appvm +++ b/dom0/qvm-tools/qvm-add-appvm @@ -37,6 +37,8 @@ def main(): parser.add_option ("-c", "--conf", dest="conf_file", help="Specify the Xen VM .conf file to use\ (relative to the template dir path)") + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () if (len (args) != 2): @@ -44,6 +46,13 @@ def main(): vmname = args[0] templatename = args[1] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() qvm_collection.load() diff --git a/dom0/qvm-tools/qvm-add-template b/dom0/qvm-tools/qvm-add-template index 4aeb1730..c1fbe67d 100755 --- a/dom0/qvm-tools/qvm-add-template +++ b/dom0/qvm-tools/qvm-add-template @@ -38,6 +38,8 @@ def main(): parser.add_option ("--rpm", action="store_true", dest="installed_by_rpm", help="Template files have been installed by RPM", default=False) + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () @@ -45,6 +47,13 @@ def main(): parser.error ("You must specify at least the TemplateVM name!") vmname = args[0] + if os.geteuid() == 0: + if not options.force_root and not options.installed_by_rpm: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() qvm_collection.load() diff --git a/dom0/qvm-tools/qvm-backup b/dom0/qvm-tools/qvm-backup index 67e276c6..0604b9ce 100755 --- a/dom0/qvm-tools/qvm-backup +++ b/dom0/qvm-tools/qvm-backup @@ -36,6 +36,8 @@ def main(): parser.add_option ("-x", "--exclude", action="append", dest="exclude_list", help="Exclude the specified VM from backup (might be repeated)") + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () @@ -46,6 +48,13 @@ def main(): base_backup_dir = args[0] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + # Only for locking qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_reading() diff --git a/dom0/qvm-tools/qvm-block b/dom0/qvm-tools/qvm-block index f31f7848..f7417561 100755 --- a/dom0/qvm-tools/qvm-block +++ b/dom0/qvm-tools/qvm-block @@ -50,9 +50,18 @@ def main(): help="Fail when device already connected to other VM") parser.add_option ("--show-system-disks", dest="system_disks", action="store_true", default=False, help="List also system disks") + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + if options.do_file_attach: options.do_attach = True diff --git a/dom0/qvm-tools/qvm-clone b/dom0/qvm-tools/qvm-clone index d0d5826a..e50e90b9 100755 --- a/dom0/qvm-tools/qvm-clone +++ b/dom0/qvm-tools/qvm-clone @@ -34,6 +34,8 @@ def main(): parser.add_option ("-q", "--quiet", action="store_false", dest="verbose", default=True) parser.add_option ("-p", "--path", dest="dir_path", help="Specify path to the template directory") + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () if (len (args) != 2): @@ -41,6 +43,13 @@ def main(): srcname = args[0] dstname = args[1] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() qvm_collection.load() diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall index 581fd3ca..9d434cda 100755 --- a/dom0/qvm-tools/qvm-firewall +++ b/dom0/qvm-tools/qvm-firewall @@ -257,6 +257,8 @@ def main(): parser.add_option ("-n", "--numeric", dest="numeric", action="store_true", default=False, help="Display port numbers instead of services (makes sense only with --list)") + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () if (len (args) < 1): @@ -264,6 +266,13 @@ def main(): vmname = args[0] args = args[1:] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + if options.do_add or options.do_del or options.set_policy or options.set_icmp or options.set_dns or options.set_yum_proxy: options.do_list = False qvm_collection = QubesVmCollection() diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 683448f0..d192f73f 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -386,6 +386,8 @@ def main(): parser = OptionParser (usage) parser.add_option ("-l", "--list", action="store_true", dest="do_list", default=False) parser.add_option ("-s", "--set", action="store_true", dest="do_set", default=False) + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () if (len (args) < 1): @@ -393,6 +395,13 @@ def main(): vmname = args[0] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + if options.do_list and options.do_set: print >> sys.stderr, "You cannot provide -l and -s at the same time!" exit (1) diff --git a/dom0/qvm-tools/qvm-sync-appmenus b/dom0/qvm-tools/qvm-sync-appmenus index 612c3370..fa9db396 100755 --- a/dom0/qvm-tools/qvm-sync-appmenus +++ b/dom0/qvm-tools/qvm-sync-appmenus @@ -143,6 +143,8 @@ def main(): parser = OptionParser (usage) parser.add_option ("-v", "--verbose", action="store_true", dest="verbose", default=False) + parser.add_option ("--force-root", action="store_true", dest="force_root", default=False, + help="Force to run, even with root privileges") (options, args) = parser.parse_args () if (len (args) != 1) and env_vmname is None: @@ -153,6 +155,13 @@ def main(): else: vmname=args[0] + if os.geteuid() == 0: + if not options.force_root: + print >> sys.stderr, "*** Running this tool as root is strongly discouraged, this will lead you in permissions problems." + print >> sys.stderr, "Retry as unprivileged user." + print >> sys.stderr, "... or use --force-root to continue anyway." + exit(1) + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_reading() qvm_collection.load() From ac76b7203fa08ebab4796e18e4d50c684caf6398 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:43:57 +0200 Subject: [PATCH 287/386] dom0/qvm-sync-clock: string '\n' from date output --- dom0/qvm-tools/qvm-sync-clock | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index 84f54ba8..c162aa89 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -73,6 +73,7 @@ def main(): p = clock_vm.run('user:date -u', verbose=verbose, passio_popen=True) date_out = p.stdout.read(100) + date_out = date_out.strip() if not re.match(r'^[A-Za-z]* [A-Za-z]* [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [A-Z]* [0-9][0-9][0-9][0-9]$', date_out): print >> sys.stderr, 'Invalid date output, aborting!' sys.exit(1) From 64a942eee8065b3f74ed9513585b67c9c51302fc Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:44:41 +0200 Subject: [PATCH 288/386] dom0/dispvm: notify when starting new DispVM (#616) --- dom0/restore/qfile-daemon-dvm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom0/restore/qfile-daemon-dvm b/dom0/restore/qfile-daemon-dvm index a2fb8c72..59b492f9 100755 --- a/dom0/restore/qfile-daemon-dvm +++ b/dom0/restore/qfile-daemon-dvm @@ -49,6 +49,8 @@ class QfileDaemonDvm: subprocess.call(['/usr/bin/kdialog', '--sorry', errmsg]) return None + self.tray_notify("Starting new DispVM...") + qvm_collection = QubesVmCollection() qvm_collection.lock_db_for_writing() qvm_collection.load() From 2a9a6c761fd42f510ac71883dcb05982c597ef88 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:45:20 +0200 Subject: [PATCH 289/386] vm/file-editor: load session environment (#620) Especially set DBUS socket to allow interprocess communication instead of spawning new instances or timeouts. --- qubes_rpc/vm-file-editor.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/qubes_rpc/vm-file-editor.c b/qubes_rpc/vm-file-editor.c index 30172862..96c3bd4c 100644 --- a/qubes_rpc/vm-file-editor.c +++ b/qubes_rpc/vm-file-editor.c @@ -58,6 +58,8 @@ main() struct stat stat_pre, stat_post, session_stat; char *filename = get_filename(); int child, status, log_fd; + char var[1024], val[4096]; + FILE *env_file; FILE *waiter_pidfile; copy_file(filename); @@ -99,6 +101,13 @@ main() exit(1); case 0: close(0); + + env_file = fopen("/tmp/qubes-session-env", "r"); + while(fscanf(env_file, "%1024[^=]=%4096[^\n]\n", var, val) == 2) { + setenv(var, val, 1); + } + fclose(env_file); + log_fd = open("/tmp/mimeopen.log", O_CREAT | O_APPEND, 0666); if (log_fd == -1) { perror("open /tmp/mimeopen.log"); From f0d55138d3361a7ffeb4814a24199171a4e52199 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:47:18 +0200 Subject: [PATCH 290/386] dom0/spec: suppress unnecessary messages during package upgrade --- rpm_spec/core-dom0.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index ae7daae8..ef927c00 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -271,7 +271,7 @@ fi # Remove unnecessary udev rules that causes problems in dom0 (#605) mkdir -p /var/lib/qubes/removed-udev-scripts -mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ +mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ 2> /dev/null || : %clean rm -rf $RPM_BUILD_ROOT @@ -296,7 +296,7 @@ fi sed -i 's/\/block /\/block.qubes /' /etc/udev/rules.d/xen-backend.rules %triggerin -- xorg-x11-drv-vmmouse -mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ +mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ 2> /dev/null || : %preun if [ "$1" = 0 ] ; then From 212d4227c820b1c42d107bea13993627608d893e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:48:34 +0200 Subject: [PATCH 291/386] vm/spec: remove dupplicated commnds, suppress error message --- rpm_spec/core-vm.spec | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 9b65628b..f6c67bc8 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -184,7 +184,7 @@ cp /usr/lib/qubes/serial.conf /etc/init/serial.conf # problems (http://wiki.qubes-os.org/trac/ticket/607) # /etc/pam.d/common-* are automatically (re)generated by authconfig, so its # modification will not be persistent -> must be done this way -mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled +mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled 2> /dev/null || : %post @@ -557,10 +557,6 @@ done /bin/systemctl enable qubes-update-check.timer 2> /dev/null -# Disable D-BUS activation of NetworkManager - in AppVm it causes problems (eg PackageKit timeouts) -/bin/systemctl disable NetworkManager.service 2> /dev/null -/bin/systemctl mask dbus-org.freedesktop.NetworkManager.service 2> /dev/null - # Install overriden services only when original exists for srv in cups NetworkManager ntpd; do if [ -f /lib/systemd/system/$srv.service ]; then @@ -610,7 +606,10 @@ rm -f /etc/systemd/system/getty.target.wants/getty@tty*.service /bin/systemctl enable ntpd.service 2> /dev/null # Disable original service to enable overriden one /bin/systemctl disable NetworkManager.service 2> /dev/null +# Disable D-BUS activation of NetworkManager - in AppVm it causes problems (eg PackageKit timeouts) +/bin/systemctl mask dbus-org.freedesktop.NetworkManager.service 2> /dev/null /bin/systemctl enable NetworkManager.service 2> /dev/null + # Enable cups only when it is real SystemD service [ -e /lib/systemd/system/cups.service ] && /bin/systemctl enable cups.service 2> /dev/null From 6aeaa7b0362186ae066fd10c2144f20b184797da Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:50:03 +0200 Subject: [PATCH 292/386] vm/systemd: disable additional useless services (#620) Most of them relay on direct network acces, which isn't true on Qubes. --- rpm_spec/core-vm.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index f6c67bc8..8896b38d 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -583,10 +583,11 @@ do chkconfig $srv off 2> /dev/null done -DISABLE_SERVICES="alsa-store alsa-restore auditd backuppc cpuspeed crond dbus-org.freedesktop.Avahi" +DISABLE_SERVICES="alsa-store alsa-restore auditd avahi backuppc cpuspeed crond" DISABLE_SERVICES="$DISABLE_SERVICES fedora-autorelabel fedora-autorelabel-mark ipmi hwclock-load hwclock-save" DISABLE_SERVICES="$DISABLE_SERVICES mdmonitor multipathd openct rpcbind mcelog fedora-storage-init fedora-storage-init-late" DISABLE_SERVICES="$DISABLE_SERVICES plymouth-start plymouth-read-write plymouth-quit plymouth-quit-wait" +DISABLE_SERVICES="$DISABLE_SERVICES sshd tcsd sm-client sendmail mdmonitor-takeover" for srv in $DISABLE_SERVICES; do if [ -f /lib/systemd/system/$srv.service ]; then if fgrep -q '[Install]' /lib/systemd/system/$srv.service; then From 4f08a57db6e62243d6bf523d1c6f0d74c8b3bc9d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 03:51:09 +0200 Subject: [PATCH 293/386] vm/system: ensure that DispVM savefile have pagecache populated (#620) This is done by readahead, so just let it done its work before suspend. --- vm-systemd/qubes-dvm.service | 1 + 1 file changed, 1 insertion(+) diff --git a/vm-systemd/qubes-dvm.service b/vm-systemd/qubes-dvm.service index b26834e3..84a6bdd6 100644 --- a/vm-systemd/qubes-dvm.service +++ b/vm-systemd/qubes-dvm.service @@ -1,6 +1,7 @@ [Unit] Description=Prepare Qubes DispVM Template ConditionPathExists=/var/run/qubes-service/qubes-dvm +After=systemd-readahead-replay.service [Service] Type=oneshot From b92bb698becd3c32ad138f3d1afe6f4ed47794eb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 14:21:44 +0200 Subject: [PATCH 294/386] vm: provide dispvm-dotfiles and dispvm-prerun.sh in rpm package (#620) --- misc/dispvm-dotfiles.tbz | Bin 0 -> 1702710 bytes misc/dispvm-prerun.sh | 27 +++++++++++++++++++++++++++ rpm_spec/core-vm.spec | 9 +++++++++ 3 files changed, 36 insertions(+) create mode 100644 misc/dispvm-dotfiles.tbz create mode 100755 misc/dispvm-prerun.sh diff --git a/misc/dispvm-dotfiles.tbz b/misc/dispvm-dotfiles.tbz new file mode 100644 index 0000000000000000000000000000000000000000..42f0e270692e9d67c23c17b83a192bc59c2a7674 GIT binary patch literal 1702710 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 z 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
    RrIEWI&7I3kYT!;?ufNEAmw!gLi zm5Y0gC>$FsTu_I3j6;Xi%)Z%p)o;FmX&|8HK_b=Jk1rpmdk||HPu|3Wb2R_`-MCLFyf9-$=J-u z%6vqmtt3Cm0V2RAyRz;LI;*>tXZ?^L_X-Z~hIho5(2u&F8w&|L=nVFX=<`*s(GTuT} zT-F%5jZ;)X3aARRA}c>pQBum~sc7tlq85}C{kw;x3d=1L3S!^EL1qhTC~-uyf$Lmd z5eC8{=s*AfD^y7W@0~G8VJ1#aL1jux28E*%jD!&k(11~Nr2TtgmV#KM5ZD$Bhyei% zG5?!-&uxa^WePHLlIwI37MI18rDpbkrmX4}?wOKQP@pfsxiSbDXEA%##WrU)R6k~L9cmuh9hA~>62cecnFlyK8Ua+ClB=U65s zvNR4CB?{i_dD zTtN3V4=SAd>&Z)dS``xgz4l9@`%SQHz;w-ksGDLEYnKYTyr(P}m;?cMi~?{l34Di> zTb;BEbiSvLNyp=$b{g(XCBDY4qV(tFBm$mi3kEN;h`#OVO#VO&H5&PcQ4+}?x zQV>vgN4W>zwDCMZegGnc7qX8A6fhR3yA0$=qiTQ!NE*VA1}ea0U_(DOL1R^21&bI3 zj9}#oIQSRp5TbypGZ_>K36Q%?xkl(gv!KAZ>G+k{AG3xg%0&f0>p3Ma$(`T5dW7*Z0_^ksnqHDFLd41&&m0{qiI9MQ+O;# z9yKN&8=qd=cT0a+hji;I7jBuP?ivjW9g2_(5j!>$4-J1TIL_b%a^{+K$1{1Tz<@Ue zo*kQP#c({&+w8tas#N`!H%RUnK>I_R52@inyb=?%-pCm@bMODL>`nq6e{|~RFJ7;N z=DH4^J2Yq6pD@1@`u^?uy-w?!=*r5TIf$P*9MA1H3d)>r1ld(#Z3TT+%Qzqs&>Hx;@LaLs9O~ z9_=5$d-scNQqf4dAN>b}FW< z`T&BU5QvGHxS*pW67L>{vH8!mm%UhB!INsJO8u~ij{sxlv!*qyE&qqhUP z`JSgv8yz%6QG%#Wq%*9lqPot{{5iv1-Y?4V=;wz&DQ$I~yMDu`^LkrmHgU%mMA%6s z2_z6l!BGV`k_jXd7br%hADboiK5zc&WZjw5Turh&WI&-lEzS_k=+Jf>Cd4wXIcQ3% zLaKs7s)C}0eC~t2^7=3wiLyg@Fm%btc5gT0b@iRJn%Q!~Fp9=6M1%QBI1@r}&$jiO zd``IbUklYbzagW3Dx$O?)-p|W4c(MOPipsGJ41CakdpCCiLJ?8P1zO-u|je=$;J;Y zHrADv)r)G0B?8m*Zo}5mdO4GcWZT`F%W?P^rk7Lpt?hcgocw;fOM(xI0X8l*DOdfb7Mw!ffP&Y60Vkzm`p7(wbs18w|E#P2(+}j)q>%23={(4 zX&8zTaRs>=I3Km?G6w=3#K>g09%VGVTa0I50jF8A@3t!WmNpgws$qNd*&k&s0cs`LC}KV{<{ZFG`J2_#ie z5mkz@6;V`FI#BBjI%x#orD(gR?^UkItH#=u>UFs9t`AFxSi+(_t4i|Q3>8f#u4{%H za@$yG*qYxqRUsjEi3uc`hnP(l=gXGxEp`Jj7@2fXXTUPmrDe7Yl**0w7i=b_SZ`Az zZ3Tu$L?H$dk&yr{9HxtDZmBi2_406u>i5?Ui}mQOQ4q=(9{k!&&WWdwB&O~pL4uJW zL}Dz0$W3qTAbvFl^u18NND*`8(W>n1ahOdzPts5P$_PXR1o9dI9pi*fPm}pibnQBg z-fr=&^9|!Ivw66l;?Zb37ia@u0Hw3PTv^pFMF?z}q0~tLD@3LjIUw_qMYu3K4Ht?N zG-;}~*pI-$=azXwbds3Mt2Jihbp331nY zK1IY!o?R&=#Oz;l`8%H}lV2+DO>H~mWMLo#O{VY;Q8+m9Z{{|#3NAr8{#i3vk`FW` zb)8qYUi5eZoK5;xz!N&=OjII50z`l#1qsXG-+-tb-j%k5$0DI3he6-{Z^Qo&iQT); zKt38CbF1SWK_TLy?sq@qwt0JV88MQoQB+E!Y29EROs;{m$pOuM9>K`()mUWcr?C1x za1H>1!Bq!*WYRvI%GRi zW;NDqWG0{lJcn`O#tI^_RYX|;Vyc43imIwB6-4)(rkI+S-g7Ew6h4;?RolGS>2KU2 zAQ5!=tj|5#&UXaGioi)3Atb-BM^_s)V3wSW4{|rVjUXl`wGQNuYmk8?ViP7A_glT1 z4eoRn>5nTE2nNOpmI;IgYjzG#aUuT{f&DwG5L0k5M9ZX#bf)y2H+YI5w+6_B4oC|` zPn}9JW4JgSblyQRAY9uH)y@fde!6GcV5mDKaD})&$8Ork95(XItng{Ux zun2+wi894gqAhV-&;?Y&gaZg#d#*=MkUvG@h7cJ6nJ>zkjp=oPLwqs%7h>-|cH1y) zLBa`=42ijeu@d+uzXq2WT@pYyoGAiAD9JYfw6P=rNHJwOycbMRP}~E8NEl$l&Y?s7 z_J?{BeFjdaH#oM{5p9LGjY(c@FLGWX2?_v;3TU80>#meh2#|<>=4*vCl~(~MMR|<+ zl~uX5tXfczq^nf4&Y@({M)Y7`wlD`3&5{9xc3>AkBnLDakmhESv_nX2_VM* zSVP6c{aj7&Kp$)kdlx@Qb@HiG*nCmd$@HJ-3acq%R zR7oj8Nr^3W42g_Mb=JOG*BooX-m9ihmChY}VWLR-LMMk0zLf?*4~NzFm5-DYwh;z==yyHAVDSxnIP?C8b@qxIt>H}QQkH5`K}h;bSOAqO&V0MP^n~i&NlB-jZc-y9*gCt7;Y6VTGqKLzoaQ!K#C501z3*wYex7$OUKy zQs4|YSZgp`x0kuW)Ck%PHLw9iX-3VgHZsQL&zB3TNhFn%7B)nR-vwh}p@xeV1PI*R z*llWLL78-EU3HBs^sQM10dgdmRZ|O{7W*jkE31sEU4}*PTmS+tTB;zX2pJ2&wPnd# zT@~~ZF`6?YqZ3vV5)u;(w+2PRBvR@%b4etbol`~@ndYUE!kIX2ri5Wq>klTE zDWo~FXBmr}iIEuF5)LDwHM5!16-65=VnpmNme{P^}OyPA;ylb0WBo`eO=#Xlw>@3CiTOnQ5!F70RmQ18=5nB#Fu> znG67Sz~Z43GiyXH?~5Wys&Vq(83z}ju+nVlg_9%+HKGpdb0)^HVFbgoSj#nZ@>zFw zHrf+581kXVgQ#IQ6_X0wUY1lc#0|7mc91l!ZOku-1=Wx(cmxQHNE<@#6pE%yH6|+L zUCc&85<2%8jPL_Yks|`Q!Y5HS(aG_}(cN7u+C7uQK}UkyOF>0*2!k%SFWkfEfiato zybR?=kT&Bw2T)38s!f2oK}!4yGi=tW920>KLm zKut+7D=e*Kaj}rFU2>{K(h?Cc*U)6Vkkh@RIja^xkaXfZo8C->Vo4%NBFJebn26L; z)S#ffn*`Q`(VXN#$q59Au|OiGQHf&$m8i#5ph_Z0#)(QYB!M6@HAzH@NGuo(7!X(~ z2gZO&v_)XCMMPE%7=Y{+7UYUeq>8l!=wJ|p-L8u^imTHmcOYoc3?l=G0uZY65)Vd- zxK06^XgU@X?!DK!?7Ed+%L{{>gf!0cL&(<6^kU#N)AcKQ+Vs>*RIzlKqGF}XcBp~# z2yT_j1l6rRODGx$7%&F}g5s{`NhE}t5)~r`K%7gE$Bnje1l`_bjCY;}#=cFlkPz5O z2n1rtm(m((R^a9zSF7fF&$`F`d3@v1?ZG?u@O_ShQ_t_k#zTImU0tY=VA`ujMLNMD zfyCRr^ONN?W$8H$D>!jZvqN}ucE|d6q!@$j+yr%ZVS!xv;>Ui|1Z46AXfl=#fFPNf0kOJtR zNb!Gq`?JRSw}kBaK#KF)op3I49b8;jP~cNDmEHx0$~Kaa^ovClKN^A>pB zqox=ZS>7o@Z8@s$15V~U*KOk$GUtlcqLgEH5N5*akFGUW>5$Mi9!rv4lt+7gE9f^X zE-{0PLg3e-o1>90av7;3F|AzvsgzpJQ7Q9t=zRAmZ^XH`SH?lQzv(_XFC|@amY(J`WYqf}u;> zFge~k_TF%Cy;VXRdWPcS5Q;ir7eFV8^Zx?^;_+A2(Yo=Ot$Q#Y9v1rC905A?1Xt>; z?!EsC$4v(FIKVQSKn*sm*!3M{8frLe0I=k>X^G#fk;!~<@>llb8(aMlJrSEExX-t zKT9zYUm&q3nM9PH$+CIPv77vM3TO!#-Pb zo5xY`={r0R6XK7p&lvOg?j{<%uz(&j=z9L1j_cxA;R*{4|5tR#8s+!dHxGma9jT1C zAD^vafR4D7WMmYz9R7?PAOW}ToNZl=TpYc#J+6{0YPs*Htz|Vr@@mQPzF*Av_?nyA zQ9P{8Hi_cDtLS{a*q$4X0lr8Lg#T~d-X|P5y~-Z%g^9piw{jtoF)<>el%2D=Te;dP zir1Y04OtI6>we%#tBSX^&`#ko2k=h%WGBFIJ4`SxA+BWvLC#E{6+m30o- zxyy{be-%^zqPLG7gCR`y_Olb8r%Po#fqWRd^K?Co*L78{-hcFyPPgZ$QRqtbcjHlY z*Mc`#cOV3y19iveShD`d{9L7xB$7(zm_b52FbM#X1*~?{7Xqi>NHFs#xG@Q6QG%Yo zzl-P)H9PDOFLpHhqJf)QJ}1Oc;t2{3Gxv$re-><+T%qXak;&A{3Bii^i)6^xH^1Ee zEQz)=P-~Da43URl$NFyaQ44pp(b_Hz<&7HI&BU2ZT{*mZltWe`1Xe6g_6O?k*dU<} zCDWOAvzVd)N_Raj%clDbw9)&a6=@L8@jHFq_O6$!z17v4^@VqrF7oA~I`I=N7_ern zP?|IHQjGCOmR5G9Aj04%rsxnMaNRO0+A~sOl&`CVtw|(|*F4u*tFnpO082XS9d@P9 zCA!gf+$3Q5E!5k6Q7U}BOs6`A_S$sP9yRyj{86^I$pWXYv?)kdr#7Utu z4wW9GSk+KF4o4yExnsdxT_<$RA0{M(k&1+1#bT<)AS6ODf)HY%7%Lc~7{(z605FQi zC@^CXh{hr@g9RW0kbnsQgc1V+C=iMSAcP?VkpzT92!bFWU;=2cSTY%(W<_jRmeWcs zPR*d~N-i$s0KCAPjdKNVSJf49g56dnO#*}Hz~7gcDUMSi86T7Tzy5hYfa;tM0}-(1 z?9QKCF58O*o61p$^<*B76)V$>*v89rB2=S=X-C-l{|VlnmZ&b_Lr+(|f4|b;>q0~S zr8Afllq%8QZD%`P+SqTqHMwiBwHM}4d#?)Y7Y)g}BM8D%cz|&SbJ2cJyZilTpIv|C zHU(D7y^y(RWpOWDuH0Q0!D*1m&hLgwI!i;hi|qY68&Z+BqOB#Y>f)3skaskeM{+Tu zwf^|^?)akvIwhBf?=E3qhsJd%$%fT7>eiYw7Hoj%%guJ_3Wqdt-PT8r1=dxz0-N@# z+X)P=u!QgJ|6(&e7oQa#+~QLCA(k*+XVOgj?sT|#s}iaA_yeM*7x0xJdy^*8Uq(=B zn_^sBv+dmTfdQ)iDavD!Njz8{TAqyTd>?I3c(Q=cGS~L{Gh=Bf{nWEGW~zbRZt#8q zr^?C#ut@?`+^*;;-d?E>2_%sMkm~mljQ?NyHGyMUCGOhe`!cgqIU7;)*mTEXq)M0= zB!ju32Ee6BaP!%IZ8e8M2}+o$(}7!Q4Lhpf+v@H}oYizo)!7q#P?N}z{7~i!0S&_= zh^ie8imyP)A$vEXQvGlTiF^F(Wxk}Of0~vB#t*8eC1``?dhB0GI)4JVpAO8+L%-d) z8S79$AQ=t~-u87eOwBJeeDeHd77Kc8ey8MTN&J)fq-sb%9UpJ~P9r2i;y%|A{>Cl+ zp6$cL8v6VU@!EJDc5Zlb<*Jh-~0-NAaN8_rIzR zExL1gHTmN!m%{L_b5MRpH!M#d1mXvD6sklIS;HZ>?m|NRUW@BCrM$1Pv)dqO6F1GfAHIT3o^NmQJ_%>GfY(_!{|cQ}Et? zH?yb&(E#qM#be~li|$Mycb)BB`+wioyXW`)?&th@exJ(nzp>79xO-1ePUC+&H;ee4 zUs!2l5e^7TTz zCj_M(AW`>APWSnelij_|U+oXhO-PfdH`^zSwPKPX40SJ_zL_%hj9Xt6f&@jFne`+H ze-g`7`ziviK>uxNmvc6P1TA$Oea;4T@Dv#WqOb+1lR(|i@|Ofx>5FHRw)2>&w)19_ zlG3;ks^;BKpZde6@&6kCYtGkq{tD{4dR;g#qpI#_z9+2WrRk)-5D$l}iF%>#{dOl> z^qzz}!Wn-Dlk59?v?pxOrmP@=AVLkHUrMM~TZ=`B20&p3sia^LBxGbjv=mB+vH=nT zq2Hv0CvEhc-xTU@F*rlCJ5~bm8YaXTQA$Ennz3GUygHgo7ZoeVBo>AZXRB6lpj+aq zUJi_(7hA{r9!sIh8%VyNOw`N#-j4&_!;1wM(Dy#QK=I>tr`rFm>WGT&N01pXO@a17 z2F=Qi%m6|Tz%RG`d*8LY``!05krhoY`AYD87MN-I?=#pfu0+Y}6DadQZh2e*>1LtW z>n=;F788NZ&0Qc;Bk&RmtS~>j(f+>Pd_JpV?0as31xy^uQVO8~xOlxNM$N7^g>LjW z&6y{Htp^`*TDU=y3cp6w%1?|P5v?XR(-cf}x3>2Dr;w_$t{8QM0VfzV*%I|p>hqRC zEQti%D3_m;&-9oHsBOLvX!bwj{=bvQ`~08x{mL>afY4M~SE`nq)yx%Zl2!mpC6?w` z$!yEO*uK&&|3en%VA)maOVEtxg{xp)#M}M=14dCiM;Kw*{wHZBsH_C1%dCjnXPfmFxpqV&>fBOg-}A0<~XYJHb|mUD+y*tSCS{% z(tL6lxg3RhPD+)n`QPO3&w&*3$yGbAC;4t?IfvEn{~q&!?w?_|1NZHSbKT4%A(Dc> z)A3R~z&Ndb*6ZLahWEc;RN1#Uk`VmdqxjAIJ8u``4qjq?yGFveg9A#_xPi6Vev~8! zfJTPz6m9{g*9+NbivNC|^YAhKQf=#e=i<3_cCaoz-Sy(V^T_7xn;#b~g9#{uA~0kO z7%)ZwfN8=0w(&F;ACI>!=8F7Y7vuIZ0X%lS8to7W5kP=KGNn=Xw6|ZYebF~%s=u`Y z0ThcQF(4HM0BRzwHDpFg=jnPsMf`m~-1|L7*M9pvPmlL)&GGwG`uaadu<;**=6{>B z?S9Ap|MC7mra69N|9&20J^KBoY@9oUy4viSn^K+-=s|#J6$m~Fr`D_p|KI0*zr9K# ze?0u<{>irN*|nsB;QybztMU-Pg>phq0sekv`Xy>>Xg!&q8+HE8FVpFA+-cGy!*70y z)b**6%x5EV^rS_QaxiDFM&+RXahzor0037hPZu63%cJ$kRh$TRFKgJb&e=|Mub0^9 zMH^+{aMK`7>Ut_ni(=iXgIhVCok&f3Z9HhUxh-=1iJr1j4gg)VDUd6vkrH|)Lsv;~ zgj(;mhhjti|90)MoxGM8g|%z&?oBmJhdjV0^FHT2m4Uv}!Gy|lWJp@2n*s$7sE5VU zSyA{n>S5lJzIB0Tq9dEXnYn>wrP;)sC*A)Rz-~-35%VXgA9L7Tm{EfjNdiES2^k15 zk`h8GsGuIbijfX|DWc$RRf)qpKlzIViYyi=uvnskqXhvGi4+DRFjylZ#6)C9D6m+c z6==al7AX{n!C;9L1%iU8uvm($1Yn57dWPpW!rRarvH2fD{wGh_eeZYdziUlU`x$*t zX0LhX`1UbDpXyYFM1rnR9kH}V5rnSHmm899#E_AC^MQ!y)C}!VXYd4l)(KMsXawma z{KrQ@$fFsuQG-F3yqXdh)9Cy^C0!Bqe5fF;8e|yxWrE`jMPwjlsG~yL{!B-VFJ*zna+I z!t4LKul&!4^FM0e+0MRatiP>w^LekaGv+Ygn11ugRjSV@(we!1GQ1=GyF=%>vRI>Q zwnIItE;Et|Xw7@HxwL9&Ae8H6b(=*6OylYiUWi9y#d)lG3SjW~P137rTNl ziK6C&cGqRXI!4NbwaMuhM^s#(QI1U?SEN;3QJQ;3opfB2M@7yW-NaFy>fV+PSsk`6 z{l;l{P0!wl+{zhjkjD;&-*iCkkglZDLr#JjZ_vv&imZY!bO^@LX$exzT4FDBWK-!# zuTfCGi4HmRL2{7C=89hh5j}K2=TOJOiZ;y@zB(wI#3NvYY7rTzMVsn}9eNr0(HWs; zmjv8(=&pZIk7^ornkD@=51J^OL`rVZjyfD`=!~=@7jH!h+J$X3#H{9vS|ja9m9--e zZbc5-gj>+V*oJ6IC>Dr)P;JjQu-U0Z4p1DbNC3Z z^GzNzTeSd}4AI+0AEbw$!Xi3oi{v4v;oU8O+E2xH8y|LHRz#U zx*__Ai{l~d&WBH`6M;i7;uG;9Z>#EGLt*nn&s_+DWRt0~dO~z`J$q2^>Oz0yF!v%a z&We|ns$Ujp{+oxv4qo(1{?OJ94h@jaL@AF&4dDuW5bfne$Egj!2u-peR6<{*L<2uU z5$i*@r4OF8X^%{EO|dCy;!zdPM=1C*K6Je2J2v#PY<~!P_@V>gh)=>8#G(h{h!4sf zKPZa)qD%6JkMa?tyK0 zkD?#CNR*_av(tb{%NRbCL_x*ZP0uX!pT=@1`eBd&;VLOMqWH}^^Fu!Oy|BGqoZP(uSS1FWgNo!N%K=%2ius;@tOeN*RP_jS)69J=IXtxQDwk9lOY1#EPG$ zK`*J$yosgsHl9Rb+o2x>S-$i%zQ<*bL)p{iP`SAKkoSH=+lnH-2z2v3*eM??X5ARli7f{UO@4kB#{rGy9vvPnut&!MgDhbN-@3xQZtY4qfzr zO`9HiO7sx@@ekO#f&{RUGqKZIVpCh)?c^ zm`LQgM(N{1KL}~_LiZGXVo;rV80cgKr7G z;)lOt8}ZPubqMOAx1kTd_2~A?{U^lVsN8>zSKBSWu~v)WKdD>$S8poyfAG55Px-CC zopt^--StIY&(L+(FY-`bbT|8<)540brn5bL{6y>9TYoiP|w(n*SX%2_moGuvObPz_@N)B=>9B*&nW!3 zqv;TjL!{UBf}dsx{;)zG7*Od-O&j&aTEV=ihjaS7qo3eM4-$z7M0~H7#*gMOYO|=P z*S9FW8AqzZ8$+UI*uhE#BjAvXDj8XqUe1Qt1R~akwnieZoTXV06$McmiK}aMuF5vT zrrI?|S49@JqO@@@X!p1xHSq|3G&mokSs#1)8P?FPpwSS28H9c6$WI1^uINMBDD~t! zT@m%fqL+O`t^E_nH6Datki5ztuZVS+LVGk@jZ88W!J)m~4!6`NYD9)EK`aT+T2TKm zhw2&`+ffloL+&LE<wJ~%z24uIz7x(~ zA7_5;|6BEs;XiW!q5Fr{zODNA{BNp%&iy;;A2;$>!q*V(XGEEVv&e8bMvA23Y+TUz z>WKN|O*|nPbV6p3(cuxf6<;8+PjBY_o*`%r2EC@F^@pxKLAhzstUQ^)WRU}YM76OG zPYBT*CWQ{!bR#^6%<2(@Lvw*Q(}XxfbvC*5Q+CLJI6g`nKq2pPhz*h@I4EhlU&@z~ zL&}zgpDorlhrDOfjOMV~sl|Hox;XgJ9neG1xe54??a4!(K@MDmE9663DkQzgd*~q@ zWFn}9RZ#CXg#O5Mk3;7v262Z0$wP-7qEp8G(?b1(EAK`JnuqRUEj-jS^`f2ZL(fGB z?jdfv6YHXJ;ST3TK9R~FOxhX^{;r7MauMo8cfl8)(j7j?Ul@m3)OJkGYho1kqA%Wu zuM!vTqAJM{mvq_q4IlEzyc?f^2#Z8S{(l9qka&_`i!617K5Z5TcgvPuw;JpN<`Hs8B$KJbaUw( z7g-cjuAOx0=KIn_uT2i$#8f|MU*LrM2yga8M_Cc{WLb`?bB9SdM#zmh9?BgZk)QgZ z6Ue2VgxpRu^y-)B+WnB>PDOC*=T$Za>fnkK@*O_tXWm68?ubvyEMMd{{h@yvE{AnE zKjZRW!(aS}TcR$fZaf*g9Vh&{SHrZQ0RLvU?G7JQKr%z8-3t9t2kfgQ{WMsS1!O`$ z5=mMPGx&&q(jxz;SNMmY;vFm~NA(a<=!54YozLd;Iouw9Ka<4avUfNd)egl?y*kSu z`a`xvQA!+}Sq*ATV=~Hra<>dc6oJRh$xJ z9id$S@qfrJEvlbgbhll?izOH}vD;i*jP1k%EQOY7DFa8{xCTt$rUSC&v>lOC>g>2Vl6Jx5nl|Z!SK``QH={2tj{#G%&VoN99Q@@T)fxuo*sVVGoOtMD)ux9cUXBK4oItJED zDV64WD)*Cn{l#zOMYBq}LS-))Q;m}h?4D{vC8HN-(T`{q?J3n@xFYaycj<)9e=Ul( zp!J`ruQ!atu<_xAQ(Y~6o36F&ST2@k%`xp;QM1&`JOn|*#33U{G1vJx?>l8L@*u1$ z+RlC%-a^LvipZaQ)NIy39< zTi!gM*Dj`E-FCc7%t$vPmq^jDC#($Ca<-^oF12c0)g%?7M@>lbLG`h!S7|NU@VT5u zc1qS#VdOj3s&fWOefLjt&G8gf81aL_97+>r@O&-4~XBK?&T+ls9x z)iVcks~!!tUST;7|MkA0RZzMS_&W$_Bgg?V=#(kLL&Q(aqz8l3K(2HCs5EHUPT_h! z+1;#WzZ=ZT+MULByTrvkTL^Yadwvj!-L!w9ufmGV#=nn-$>0adNAXES=wSc}$uW|S zRy1V4_p!Y?wvHJ)PFGM_T!%&&Ww0NxmkmgOs7yb zuzk*X5M=WpIWr`qZ)i_9;wV?Q!}ubibR)^`0ZqtU514|HK#yX$xw7GK)pkRuNDg5!8-TrHsR$y4P7YvScWnE5QLD0z3-ubN4V>*rX4#B|%p_(I1Yx12 zpc~TkiR4SmQ)0#OLNPF{6WD%k*KpKzzl0X#_=$Cbc zD&Ah|6PxY|a-+W}Nwhpux`=K5MHOE_e3J5kuwjygttLQ_gbyx?eom8vz4)3fYg=3O zpV7B?o=5vl&N;JZ*~;J<${nb{K#rC;j_TZAK`($;2&a zZz_tbme90DS)I!@tr+9cWH3O@7D!yM)*3Yg(7>dRI6121;_8E`xZ&cWcs_rsq1W5!)u~HyFNRT2#Al!#HtFi|@dSDMnLOBCe6xAJq;pDJ~ zEnK^&W(e!1al{DGmt_nF2X6YD|1sADd7?0k7>qqBN2$?h28q=PLaI; z>);2M17;zq0jN4==70jwv>JdCAl#OqH&l%mBL%7%2_XWIy83jsQsGPn(JUZDYPt34$Q4hEw!mm6mnTI4*lKcIN)cz6OPz(JeYDQ z*2CT0QcmZv77T4=H1cohZcWlx+_2snPVc~-f6!DUk`)uy5XH+XdfcvKia1$n>plxL z*moy~>`0xAI}@=7^aIlw?Zm=ap>F6y`%{qUuUu;~#<;?=&9=yG#vg9c+HmG-Ygo`& zOIzCn1aI2Ja_EUTuR@aO;*v?YtHHf>!uTG&35sgSeIlRH0^p;}6@A_LqgN%O?g9TG zZJHtl#v*~-)^AIOXdll+qm(>7+4>QbD`-PEmzNdQi-l|KbAC6M9>uCTDJW&1U?149 zsz_0)&o53-G4W2~%0r$hQeo5(fifUK0|r8a%!(dc&6%EGNVy^JI;O?3@9-`#L}MU0 zNpumBL^f@8%hw=Swd(9RO}65zPpPnh{5O&Slmw@f)4=lqG*uq=w4XbpfF@K-o&6C< zqQYqu4z+2X#j#6^=`YVS%UHR%w8<(vg>XWNY%jU8Tr32<%a+CXsu#6sjHt+q6FFEU zR1DECzbM@j;`D%&CirQ*Zz(Ia7n%h+0582Xpj1H8m;#zi0@AhiUjfdojXNhFCOP!%c)0U}5Z2ss2&l?y2l1HwfE zB$g7IB85o;LJ~z50FXo=qyUisNeqHxiwxdl!~ZA9?0hrY{a#5nRW#9x8g&HhfD?9U zp+KpGIa>nYK7VJBk{$oyQuFUO$|Zm~fCCiNEqS>+{;)R&K`)&00fE9zZ|3Ou4%$vn zZK?sn(LcD5`` zC9;W(!?bmkDk35#l9IPASuJF;#DE2%0HmUbLLx&ztIO%Omu`jyi7?yU2@*i&42h9c z4GE)ehTe1Dx6Hs|G-2N~tE0prk5Yl`piC)OxOd@z)q2A3*K6 zm3Wj)EBGObyGy$Xqj`EjcmUEyH0nS?x?4B>^YyJu z`TB{F2s*u?Hkc`LrO3bE{{I*4Z2Vr-J^uCAm8km!Lkj{D1k5NOaCjFJQ}K9X_7X0$ zg#@F&@t5v%;Rnv6e6t~g`wXu|^{vzo(K%zRr&jZMCU#tyc238Tz?HlPD0MC zt|zqbY2#KfC*DL=IF!=*(i>?202NB7-KY2LNpdGXOZd`o!pfG*(uf1oeM?bq>}W(Q zD_piQP^mqWl?to`aOe`kmq{kx+N5%aU?fdL(bW@is=2U1ymWr0&S&%(l9G_TPiyuq zS}}as0ci_{)3ia5#h^EWj9cf1rLb#JI{jh`mOH%M02qBfM+=VOPy{5^)FvWLM#O5i zrm=4gc3c40!i*_PDPu}GcR8krv{uN}y?Pe&c? z{AB2x0W5#J1Lcb8b+O+<45_9Cuc(5HRSM4E&_N-!cFSf{_j;i=K|WK;L+#UE_F zlNq>m_mtcwRa=|TCA{U`INJc8iQjL6$Qo!jyEb5p!vq!qL>(;8mfVpTh2u)3z?9Vw z=^+hQ@H!aaH#zdpNeQx}bxSMhW&LXPkK8}8S!QZ(2&qU#l85_u{B!uKWM^uvcGRL!W@mI9X;Ie>)Xzp38-7b21_#>Q%^K2z)QJal#c04tJ0E{AV@d zbiZDg6Yu(e6@nr1z)@Hr9g~f6_rL1}h9ZqSXzV;?JU9NuDaWt!fQWFi`h;blmqzZo zPu)%#{DfGjiSP9+*4h_Ey$9)P^($S9fMga@7a_bLc%hLm>%RbLFfJxe{2I zzmiC&v^HwE=mL6r16lUmMU*^`1Gfsh4B0=LjeHdTCeF3u3K)VyAMoMr+jHEZM0vg3 zS_QDO=MPD1AO9pfo3)D)wQK|a2)&W#N9OmbG#{|VhilPcT$G{HQ-+ScCDpgN+#}zn z2;O(Egvlb0wa7&W{tuP`OPZVx=E2i>&C&VA!(0FSFoz;sp?CW0S6jGvdVq)^I>lVo zA(lFv{dAOvxB^_a_wIF+$PaITnn^iKs>r{nYoQ6*%QM<2keu3p3oJCA4xBB&g&StV zkBju9FdYqa1?v1Ec84!4yyNT+is!BD#~@v|G-s-JQ7eq2nFc%8hp4j26}hU=@@ZCm zhX?Xj0YHtU;Wg$P{20#nI zf`^q8s4~i;Aq@jNsEA6^;LOC%VXtC2eY+O-*Q+S`)ML@u?DVoX(Tesw0-8Dy9RxNY zZGjmQmM>nW_b*CWg5a41h!_lzfCyW8sw6s9ijuiBArme==h`PR-jT7+@U<$>=zg)D z=>Kl7(ecu1mEvkC8msSoLWx>m`&oLOjQPe95d+nMAB(XKRG1}*d)VujPq^X$r|fF7 zshKz$43Xo-Mm?yhlDV`5jFO7|!}s}jy9IkidFJicX(QXS-l&g?hcf{P&s)0JSR9ho zHP{4<5eifsc%kDTrY{z(l?j|F$2Pv&9h4#gG6zL+`F#^00J2>396B%{p%bQCQRM5k zd)Z#2Wgk1;CZoAD@B7`g3jcQ)w4+~kxSe|dLJEzuU4Q^Tf>dq)luBg3>X5=a@gvAg z0%v+eSw8QydT#=~W35dj(+NsR%WW$<C)(e#KA2e{Th0tpA=1jGTtzC)P%wqNG&-0u+*x1abB4#j$`JNIv04|THjEWFx1d-K#wGI{13vM*YY#-{{Q z?#I8fMsf~&vW0Zmhg2k(L&#jjJPl+1sOgqh2!B};45!Ie(s)NX{HTa5#IS1)yUj2A z_H8$Vk*0$2ZrL@pDUMM4?O-4#{K9hpLZ_kV|x@fVZ9P zJdK%F^R<#-yru_~ZztEl2fFv0&vKTrD z{wV#-b@}6hkBNHbB*Kesz?frQ8yzQt7IMIHlGyfj5O=rc8Gu8j%>h4Y@04R(MT>4o z4x87?Tz<0Nv?$Ti>f3fvch|K4kF4Ty*R9)nr!}a7{DEIT z5s;d*bR5XTreAJy?q~Gtk_;lMC_3CcivEwtK%!F&%6}<+9=l@ygZ9m2^2BHzXn?1q zuAHA6+3xb+@%T@0_`ibO)q^LtZYl>2HA4q^<2_#SKIkHXe`p8YG}E|cVJl0F1nkYz zIaL3iYV@qE3w|$jS?32>=29VybH(^sd(*T_e@n+5M8G&eW=xb1{!V3693JyMq}X){ z>YUfD0}|V>W-fL^{Gf)s20&+vplT{^B9%HF#Yt%;cH~3@_iJA(;b41~GV!g0`BJ^~ zX<1p)p^-=`RH;%FYjZC!C=?woQwFaL%(+W8K$G?TSL6Ps&K~YE6v%%!1?Vo&QrV_=gZJ6~vdS!P_uL(- z+fi=oyt^hg*Y~jKb+g;M`icYxLlpo>abS2isi19hS*=t>Q9`kdhIKvMP!wu|)(%BB-K@#T6#+5k(YHIv@7&^FKML za7YuvLyZ+Af;9<7XTMMDVS-lwo!NanTmQfL?1p=g41eR#HlI@;jpF;i@%QbO{ds5? zOS68?^W|N=4(PS~)5&YzCq0}1-66D4>U2H3;QRj#>;E1>155a5%8aIxl!H3 z^M2Rz?e0ytc-Qxye*KTy&EWj4I^Cg~po98IasHRdIS8$d=T@UAPz=DJcMJ%VAWwkE z00<@TPig-r(~`yTkub`5?c(JDctpiE!!wJQFGl!{%PB;!9(muO8l2|TC@HmIhJlP+-ws^I4FxJE4Y0$v;dTR?bZ9~u!ws_x zxh~0M!WO--jH#ei42l6t!Brt>bE!SP;rzeHH@A2@=?X zQ;JKXUPQeuVv?^hB|?c&RmD&^90EX)BqT{11AVOP2M;EmmFilJV5%r6gH6CCiZzCV zE_~!N3K=oeKS-BE5!Oi3s{wL~H{nWUgNy{!f|4wOs}LKZa;n4t%xUN}fh}?dSUDpi zk|3FY(9{@RrV+YmE-Ut>>2rnZ-DshPe47{CR48yX;x!PE0>Ic4S%@0Jn1dlB2uR4t zkYEvI?Tu3DoB!IWjjrD2&6i01zLR^dUzblN$+S*e#CbhL?8lYPoab-t{qwZyye<1i z^fm6f;7!PnH{~HVgP0%|3O}EGLd6snN^mbo7Ewb+RTvRT1>hp>t8`*Q5a1kKPB%iB zr$TX!8hnkJtOp6ynEyM6fKI zwPL$2=U$A7l*~pF*M~Nx`zCaekRc>NgpoA)aUre<-Tq%Q)pt%8_WBIxpMm|H6K6*U zjYgpp8f$SX7U6HMX_qr$fY~fk9Hl8pU^nyDxh}eZfY`?7`vun}<@X>|P>4ttQo&Z+ z{f|qH#o!sM%+E>B3CJcJfReA#8ty=f7M*|Wb(p9stct3tvMQ)5r~<19gkvJ2z*SXM zRS{KV6;%{bMHEp*6jf106jc>P1yo23RsbTTfGVnhq=_Q30ILWxD(-~ zca92BDaIs-rETn3ix7l&yw!^kh-D7MOZ1G!zI@fOqaBt&GNXzD3g|Qw>KyIMh=wni0P-H=xxa7f^MJpe&l2JS z_~KNHLK84pW=c|#&L!v+A-`vw>zlsE#JmaO{6HWgKw>D0qNsyp3Ke1ml$AiG2!SFr z9-Zy$u<9i>6LLi02*ZF`fdqgqXUW^Yn!06nd-ebZc4z7Rb|xL&%!rI;IT}ZXWOz6r zzIjkYdoK!IVpXpt>dah8!kt08t=(93`n&X{dx8Ivf`9~wBoFjK zfGrsd9l;D^UlA!Be;_nzF7bQ!dP*AA?5M?;-b!-XZ27eo)rE=>dbeq)>G`CXNP&t4 ziX}9w5?5@*WmSGC+ICQdK38ow;@8wsu_KfRv;Q!q6wQx%4U0%%n(=YG%IXjKC_zF1 ze6r90r(kKwsLX^Fjzap&qVV`6;ln_V_oGEUibx|QE7Nm`vS2zgnfdVkh zieW`mn=>(Pbq&=(7Qbvo9Hx3oy5B_h=H|C?vDL%#*s&e{2~8lzK#z<{Hh-fcNYq+J za_Pufh8&5RA5yrwoMxryRQ<;Kv_eb;PZKO-%?c}->rD$yXe$d9di`(cqdg>XfXd~b z1sS-aXFiV7r|8Syr5ddzPHi%3lCBKVTDB2~ujJ)WV-IpzEl zT5x1+2wY@aSiYTZd4XQCFuialZ6vFRaCp?`(`4ujP*p=2eK4L&mm7s?Mq^=db)Avn zA0GOLihU#lpaj%s$PZCFe%vHh5=065{Y_}u?((*`du_IA%a)$?b+BzD&6cN;`Og5) zVL*rVFaVzc`yZR;@^r3t-8+W6e-mcZceZ<6Bc->SNbq3b0Dgl26axSt(F9#iwQK;I zqyQqspmHU6vb1$!Le1BV^0f|W9YN9Nb7FawDrm~ z!Cw@)rbEWzdiX`CT$(dC|Axi(h`P&GIx-OAj0g|}rp`Ch%v{yig1wdq9&g2aZyca? z%)ZO&ZMeRF(dnRk9p=h{e_zF~t-C$`^VI8qr_<}gX^!wHNu4l8;BHHLOSj%<<@w$p zudBZfWO66X(e60^;d;0xl}RBa)W`XL&f65@?Ei1{Y<|l?M6$IU!bB5l3s+CGzgzuI zl?tN^&Te7B<+%g^s4F}|fH;t`S3lmj!RG9krn+efNxJ<%=h?Gm{jRl<%9npX*ZLgZ z0$xG;UR$fV6O8Otb(T$4VQW_hX!-g6NdL7p2$*(mXhIM~f&n5V5g8BzFThX$0P4%P z@kFrqJPBK#HVM^5Q8wbH zxB-Fw_j(>5#pOIIWYDB!Btm0G`$esENFbzb0^6k0YTYoBVvtfI8+w6IVHK1zA7%vv zSqPDV5OAdsX&|VoNC-F8B!dPk1%SysWd$NZh`7M5$yhsqP01vXktBToUD3Wn8p`F! zWFZnlM)v8xGw`cTJ8q#=+1T)dt@f}sUG0>#nXqmyq5Lc^G^w#DtSs8YYz$#y`igFZ zLk8Cp{3yX2sWigFX(gm~rq?T!)ElT<3=m)mL@297wU0zzWxcAUZ&6DSrM~V%S4OFO z3YjHHSa+$BGT(8ii><6kk}!l}G74rK;v8$$^_zT|04|cLq5$APAHTs=O&a=>IQKk* zNErMLujbt92qxomv`NRR(yAqVx_MiUC8&}K{ec+4UGV;0_P>PxKiKN`UfXB?-U5(( z1Wpg#;cS0gUVCSa!#KP#3;6kXoM=drGD$tYq>evlj=X>8-kXz9#-dVmMTcLGj>)PH zOzC|KuCZ6G_@9~VzHcV4DHRSry{*a0fdqnUKt&C|E+_?RU&_;Mi>|r4*!p$C}JvI!+?s7tTBK=ipHVGODBbe#m_296p3U*8&U~y;J1

    r|sF0xPuUBZ*GaC!gH;QVH8bHj5Mbp+y(H==1;+I$sfWZ3Y{Z#S1?-Fn|S^gXA| z`*=au?ob2+e|5kTs;a%2Zgp1iOr9nCw|47{ZO6Ww?!?Rf;Z4e{~k6bv)k4_{=^Mt_8nJ!HMRAVITP1VS^X zkLzT8k?h~ft$IzmzgUT142{GD9_ZzTKI?@53X(a@%QHR8-mkB>QPPHirOVbJo4>=) z1jk$Y$}ZieTCjj{gwbMie)hCc95BGT%E$q49TpDg=!`Y2yEcR5E99}p7-v@$`3Gfug} z#@{dT$k8fLwU_F?QEP9T$xWg&jrRXB`+6=Wg^B$7u@n3Jo!A!K$cX^R%zy^T{=}mp zl%?|}S*9PG(fOHi>)%D9a`c+`jr~3bj8ch50+&712kM4mGA@Wc>NOC*{rzv6#`m>6 z5ca9gc@D!S3BYAfV)VaH;4nJxkGw~QyHh{MtYDFm_f46O5wnr{Rt=WR4K-E55*CCF{RwhZ5;Y!EM~q;(=jk_IjYols*=hE! z3hU^63|3ZcXUXb+h2iC+ZB1q>LfKaGQZn$QP9hly5dj`PeZP3iAL!xWyppvU?A2bu zI^-Nl%)yw5Ndyj624w+jBFI}sdo8r4I&{k&C^ujzU}c*3szU1PF_6Vfl^@e_%|CyD zU+(`gxdclMgiv@=iiV8$vq(qe~4rIe*5tCsD8-`w^9(>cK4us#ASY4N<+1jTr^7KeR82>)+rn}f^#l-@mg+%ehZy2Gw(U#q& z`X7l9;KVfPRSL`vb-%@Na6l)kh?K8u?D9obRaI40Rd3^S`F+m02X3NUe@m%-r-$Hh zLDvMf{pW+*6J#5*TX#dpaNOMoTcx+G^e4c5WK;KLU5bM5MyM8RlDb~HO%=Y?Mk|E!`{d9gu`*u5R z{fBW^W}U~vTsBCjFaBIxC>$($_t*Hhst3#8B^#ghr2*2CNPBPb^w?ZqG;@?MC-3vW z`*3$1YRZgHb@6daZEXJSu8%Xht~f{%1onLds{hW(^||jQfE~-!e}_mrUq1l{SQI_4 z;7bUnS^Bl>zlYCy{~wre;z8-RNvMySxbq+7^M8~4d+r}@0kA+bL##lMj15A3`ng4b zf?=_dgEKQDJU?*+Liw7zFpR8N8pmMk?etPLey?7{)zBBg%P^dUdDf2a{YtFDBM~i+ z*yfm!YG91W5HGD#1IrO!Rt5PX<}e{a23~?J$aer6@!~8L6(ohFRRju2QW7mBQiUle zOfx1^`Mi~^TG{+Hue|OaDC#m}ju^`Vf)~XQ2^0_s6#;}*4_^jA0z?);T7^Xn2uq_$ z1Y$88w)%wJI!X3_y$KIv_5C~Mk@HvJwNArVS~bGVVF<+|5)dO84r60NkRDWs=1&@6 zevjtteXF=~I(i?s|9x~*Xmr0=mSkuZcSm}= zqrX+%9q8_k;#px-5=fPD!poUp>w79%12Qv1x;utsW(>&9qq;lM-5tX+Ghy8w^LIyj zyQ8?Zn^@6m-vu#a7BGPlF=G}mBNi}7#f(_Ni~=!Z7BOQOK#X9JBNza{j9A752*v~m z#t1-+U0O=53aX@F0)>GH#DGAI zNW_5%#DGFEAV7>rz#{~VLNSCR0E_|y0x^P;G65LCgp7iaj9ADZjA2RER1r~Pkx3$o z_E7983ki^c*%w;TnKJ`fsv)LM!z_X=T}4xU_tl!bvZAL(AjCp|3tfH0EN)@A9w^Zi z0|e1dU;qsO0BAuBKoE`MUXUnAK^2Vx6gGmp@eD>tNeL7Xkya!qwdyHr5R@R<2tg6P zcq@gdH=?15f?}E&FD7zu-;6~;6vhOivUTlN1d>c{vRV;92mXvzTM{%Nb->P1U)KsK9x;vctdA7;6xa(6|JT6gqTf*K}+j7xz ztu4Ivj+@PH_KO#LZM_zY)wjOtu!zWnfNa1KArw~tLL%OY1+2+M!%;=PHZBFK6oRNg zIBLpO;ZlvrEO1r05DF6&F1hP_qj%Ex?*)_tNQndwtDBiQqGikgU9-F2)4A0scL5l| zGGrB6G4DEZ;+9)7kHK|!RaGF0_0h7W4UDQ$4-9x&&s4T3?D(dc| ztm^KgS66zfq;tWL7(x;-2u3VoLJ=Y&F_95sBN!wEV+0Waiy&@*#NYw2fv2@I>42MR z<-}5g2Lz$L2Lv+#g1`@dWYhAPfS14o-fG`#y#^pzCk01?`g9#Po}n=fdQJZQL|WWw z?wWzOt)4glMZs#UybMU%`ygvCeR;}jC#@^XgR@79a31yJF=Z<3<$x1QXzO=CBJj8{uCS>4?o)k!AK$j_s?JJH=8<=q|d?vCoD(Ze8M;#!cY z5FxuLREQZegF?GgEt_iEcY4&;j%=dvw%UhO7|6ykgh;@Q7%(Fk$Vh~P5;24r#DfAc zh!O;W0x^LCF@pjzh(L^3#vvgg2m~OIV*)S;ZWm+heLYM^c$5SI2-HjqAkcI7ZaH3l z1iTCfy3kw}q;eVJmFzE||BRL|5%_*g{HSk$(@_xVQ93N9S$^>~4ETejBr*%kaAz$d z>%!|4Oy}a>d?eHZ=ko?`Yw&7Ybz4GndlC{!Hhpc}eZm|q&D20nkN-SpUeeUjDWqW( z5F^X(N2{}PCo4rm2%wK0RAdAO#Ky=1TqAH18lWgg+G!Ob0J)Hgh0fyJO^_DiDa(y2 zro=&1wd_^W#c~`_yZ8hX=-6zNiclCVIMR`42CGJv%!s&%lS~$hF%cN#q^vC{O(jbd zYP4x=$bnEHjD(QElM7`)%~)KkG?v&@se*!$1j|xNFmi;DD#dXrO1Re9k%9WO~ z0ZK$jiDind$f_3sN{-OWH{RM5Dk)_IDJ}fXG^++8Or`Ki6ciXC5*a;B!9hVc4G9Um zPDD`!iUuHNOLU_y3(1KS2-*R4sF1P(3jH=m8U?!+5D4D2P>>-cge3}7RFa7a8Z8kP z0I^(RAC~mUgJ)aY(_%#A`8rdOPE7-oggPAvMQP!48-gc5MgaiODnq~amB3gz>lG_a zd6c^FKi5Xtrv_H%pfF~U5FAdJ&kpR1pm281c6rXM>C1jn-HXMj2pfnGq_f{mOwzZt zP9Dgn2x>L8_iNndob&7)S#s>KHrRQ$tPmdRpu(?vdJut3l*^MIi@;F6LExJGe~Q`a zEDat*M0dE{1J70D^y>3ysN%Z3e6Qf(xdX?T=tOQVJ!>--&*uJTR9XU1&qaXF4x36p zvRwh9hyYmHUT&4BG|fIv(;j`ZgqrUXu2>O>H&CaxwTrHUbRctk*DKY;I_`eM7eEs5 zZsE+K%MIWv8m58(00%%JYP2n^K&4allO#Y{ZN^8%2B)oJxgGrJePspB&ZWJ+Al@7A zHASz=a~9J6UZs?dizdeCbhVzI7l|b5&#N;+oH#T~ZLt){$+S8UlvU=;A6N<9z$Ygo zvq2Ku!cxPzd(9!L^?t}5nZMuxl*bjejTqnDILV&=vw;C-6zP;1>P)B`e!Fr4wJH`6 z(s(=!Z0)&*iY33kpT+OKb^MStdzVP%Cpn1HrVRw1H5!DJG}K8X1r$r8V(xunBYk81 z2kB4b*7rZlPk{2XP(MV0mxO)y-MAn0J8bYMo0t6k^+WCzktdK$i*N4Y*q>jTo49T$ z0#UjCW2Ldj-qT+5@qeRzTohP?Sei>4e*=HOc#`qyuNdftkv~n;b4JZ(aj{|2EM;;x zrIYJwWBq?<00qWIhvwc^mwHFQ8)!j;gKa%9?-h@r-TL8YIpak%d;m!eivS7cr|h@O zMk;BW(Z-Cq()}AeuGYCBcx;7sSZsmT@Uf2H9%|zMAC|-1;n32JZ}vZN_BeU|jrj}G z>NuA=zG&E6O4Ooh-!l#KsQ&i2XV3;0%pGpOr{C@2F?QPRw%EHfXpq@el#pqmjWn$^ zgkw$Zie-VOAQ8PRl~$1lIS@w6LWA40=UtY|D;o39In z-g|+5d-@+I@!XFS2_&NnCm0TQSm`h1am3`M#gw$SuKawbh`8=NeODcovBtiXz6l$* zS=lzuJvF_!>Xmxb>vF6wW6bi8qFI7dO$krnjhMzTY{6oTT5f1*+%a352!+B0HblU0 zK&F)}(?U~8djO0Z778z0h}=O&!az%efRtP;7$hh`u#`dt2@V**vR)Kg7l8pFmkJO_ zlwKB$j4uc!gt(%Fz#EGeQsPk&sV@MbEJa8qiUJ`DAqaK0`N5T?p4VJ#TLTd?36*F_ z(L&gQkxCYTa|vM}uq+TPTv3H7qeKFlAc%qjA%rv%ni$wFC@uzsxTOd{Xad6GL1=_E z0&G%<7(oOq4Wx;o4HPMW*trJ914Be8qQI0EL4+XKywCzf6j0Hi(31cu3<6=G0t;a* zTv)KMF2{e?D?oT3_~uWE`aeJQY^IP0h4`M6#DA~tS8-XkWk2Uk9Gcs{6WjlHg#<$? zK}qUW7q{DJyK^vL!H^(^Pt#EtwE!Sdz`-x*GzQF7#d32Bx=yWkOo2&E$Fw1M@mL@} zI}Vz_LOUjx%;t5F96o>lzVE)dIjp&T?mh1W|86xVDD!$sq4mFmy?Yy~c^uS3sANKn zK_!S2Knf5M2|l$(r=eIC-Io5NLiD+ATaYise1%3o&HeZB_1;TEXeh3PU2>hBaoark zY5k1Lw!K-|r?j4oAQ}uHsN0A_D6%MtfR8WutETLN4?c~K2FKG!_I}Sh9E6F}r;6O{ z&)(V=7hZSY+f1SBGoj*o&sozEc2Xcbbdn5IQDVrVF;zi|q6n;3MG%Q3ghU|=alH1L zmOTyuP@@7L2Gnb7f@`5F!iFF)VGxSN&hMNZLXxLXq%FZ(VtzfC7*?ffRxYq%1+I@( zH%8Fyzb4FuUo2RXly|66Xj-VaSXHR2Tm{yOhQyL| zbRDoAcnnnqQ4|p24jctYs~CaYpEd7(gQ$EDZ~kH)m(iE8=nml$gi|0803Jj|2m!xbsn}BidIsPxB%s%Tm#qQy%a_S5OK3)4j}cIEP%ygks%H7!@sva3h=e0#$>0>=16cEMF59Vh?=j=Cvz4}G|79eFy~ zC6-^;*JCnCAtNF(1Nb3CWPu?P3p3%}`I!za;H!riri6+}AQD1INe3GEoPd=PgaO@E z3(`fXBp`%V5HTwui6?ydRXa`lehRK@PG31c0sE ziKVH(xoEgbB3mW(zPWQkL^Z{9gy*b0Xzk!CrohZjTtL!;+QYAgkwP&R0>z6JMk2)` z#EB4MMIt~VLPkJVNorD%18j?PWi1H?0!ao)1b{FY42Z%2MK>Bz2ICHq0R?(&L~$=c zWe}1CA|b7x%lfR|x2fiPe+V9R)aSWVRe{N-M3IiHM5uy5VaRK5qAVySz)iu#AoT8s zOQ%kUhTnfCppE#5hcO3DG~K`WQSUyM0s&+d1<0rrAQ`!Ga4tsFB9>JK-@ivGfGfz4 zDDAA9fa@H(X)ck^8d7a>x2fts0A zpr&yw={RJ|XPF98lG?JhH)kL!?mn=yb9L}3KeZvX(^pqq{Us8y46O0_2ceqxcTG#p^y z187JfbpsI%FWV8Si)d!pSilH|%ql=?C^3>WixNQ~v4AP|9?Nc%9}@1|oI$DOf3BWC zy5jk6U4F~N_Q4!!JD?&L%Ou>_ZL8?PCLov`00!B#`P=GN+5ET_j0E`LYL;J#n0t6sQAsHB# za>J*%Gn*=#k=PSa1`6mA@SaO5r(&B%%4Lnce{bHJ4oF&(H8*LDFbsj$#|KolmeSg5 zAt2gmfTWw9&D}Ud1Rcj}$~FTe9r0=cSQ`vja&?Rg)${wF0|^KOK8&H0`sGOxNTNmv zh*wOW$SlB!5F096?;_Z<-_}K27U+?I{EWj-9zl?qw0!pailrPH=>N|pjze+5^4>!LJP9K=qZ zqo>L+7pI%u)Y3r2XPgL;HVH8<7cF?I6}EC7Ad6#wKbrCT5mn-RzzEh5h!5-zXM~kj z2fL%C{b-$D*qVpvD2Az=bed9tWWH4~a)&fpE`c0VH=v&3d>maZzp6pSLu*JLc;MRC zC&ET-L0KD1Wpw^+HA*CvaY!fag;2e*?|jGhd2e+ed)lf119(ZAwHnbj@v?ID z*j_ob-Pir#=tR|=wQqnxfMjq$bmAOIKne=*k_ut~pti1}fGH7C;BNhIcK$zUB$8M3 za%TBLwEVS+04_1j`i}5fj}4QA+goDB?C+EEx<~9^Qrn)ha`E#(001Bf;yFeK9EG~w z-F`=R30MvSP%H;mx^^y0x!1$>xmRfm)wdpyAOLEqAc8Phn^jjpvcP}?T~T3SnuFRa zFQ#MJqT_Kt^lQSxP=p8$%Evj9Go~)iZAG(h)INW4yEBi;P zdR!;jkm=NEzo==*1_Tt-Qm83=O7Ev(W@1BHql#JkJL?&0e?OV6f!S8I7!TB(PkNg_ zr}z6Cc{}$-@P7ZF=oC)0JwyI}I7jRCx5!)1o)C;Cs%f3C&b1CO0hR2kmb}SE{hn_pkKTER4xk%oqdkXa{*U_I zsJ*x#0jm^H-fj&tSlp)RaWRkWmW+dW<`7aF>-Pres|%EGs9{1WB7!(Oy1_03Wi$qn zAu>Xl2tbS@0&L}Iu`&X>m?iF~VBn}4-w(ulFA;gD=1;) z5TL54QAFA5I`;RwZ8;I+BfZ`PXKy#2tB_1nCj-}RcKB;2n*I!_wsy9}G1fd$rl&E> znXlavc#+$}S^-2TpdzDfxG#ye_&G#%ghQ*>H1}ODYy>@r@@bvZ(`x`&f0I_f=g)7> zM~)(WzVY;Wt_i{?8*{m%ZN24qqsi}Y%b1WP44Zwj37tO`4&KEc(j{Aw-`pT)NHG!x zRqQpT#+WfKII*^wrpQ7QDqJ02nXBjiXU^~&KU37?4pBH8xyK6z)yQ0|P7^?Iey73v zy*GdAIi=2y`*xxm!W>9Z1z<~)hy&QVK0A=&KsZrODsK%TiGTs_h1i$WZZC*F#nCqWDeH~CYb>aoW=o| zp*n=PY7#O?1d7C%4865Y&&0?br$)1`5DaLadW!`Jh>AgvFc}4O`#eqKAKsOi+iKnc zHWbSmatyTi(q7K%&Wt9JMNY@F;Q@#zdo)BF zU8f}8FPHk<(lmG@stG5_p8|*U_6`xKmjC@xm*qlTxS<^2@UUVtk^|J7qr%|p6jei- z8vWGe=gT66LufVGEH2ZH8eQ8PrCHx5^fR96L^1E}@XK5YKT=sjO?YI`jDfW^tZlT} zVR@6$m#~tfiEwHTB{XX|qDP2BT=p7ZhUrgWUm1%(-U-gL+uNgJnKDYv(;G6*xG@}9*OokZ~Xe>y2yHaygY@X15Y1EG;@Mfr@a>@VTz-Z4uPj+ zjLSd~jNG@jxDf!peqAgWVA=aJ>v~v)Xx7iWym4HYrsS$~Xnh{lIvvDshC9(NA=aw0Kr~@r4`fLkkJ!^r(ZU%ka{6Bvs!mslnH`Mbn zqp!(7og4|-`$SHhmOztD%nntmp>*&TL>o{;HkKm54pewV74ad001a<1pY`PL&A%!v zhq^y54JNk8l6DIiq^}D>QB{C>`R zzTTJJ`;Xmt-JT|5Uhvx4@)|qLEE;sf7!UXc`~ipj_uI{YZy*pNJ}CBiMK{qx>hdgv zW?;+_n1><+G=3T`$_u*wL^HQ3&Bc3LsVryw-Il*?j-~Xs+BWa>fG;ODL#5wpQFyVc zMzM2V2)-ODH}wVMIm7WZR%&Xh@?|XJ>Af~qb^q7BR!&F7wMx&m^<|uu?G7>tESf`u zW%$_}(R)E6AgbVVv?>}sZ`WmRBpO=z4*KN$AiE<-8Cp3#y*Rh+Vi!5ek793>SQFZ1 zG0znVWEEPuzM!dVK(0lrjxO`ff3QIymnl63EYJmQ;|Vb1iy0!S>b?cseXoD15VZH< z%5Sy6AOzn#N5Xa$v*Ees{_4lka#5+CU7s?K9iU@;A&c0tv*eEBsrd_uz@>H|c@gKV zX4HJX=0%wB%6XytuzY^>Xkg*vl=~)%S?2N$AOR62K6N@!>j80CiBrRMlMu;G%LSl3`fteO}K!P7_b zKO_8^qVJFi4Uzsha~ryhCk*;s@yAUUDnViwVTg3x<3JA6k}hM@)ZO%s_A zejS{?|Et&N=?6836?zh(S)mXN7XiVJz7<5)Kr#l!B0^e4vvxYe%Yz)dEb5a?T@Ja zo->jGrYw~?sbVu4nM)Cv%)-QGCvb&ep)nQ;DP(|okILow8@MtuVOcFukq)bM^ZTvE z@l-nRs`$NP`@Y^E!*QewXJ7JqZ!hNc@?;F2tKx zv+ymt;!|>ZB-;>jGn!Pu$@;m+JUx}+obg)mo6fGpv zg%ObBRRoE{mqn7$77!wcLIME*AV4|UWS_VF^?&g9|CwMB1-L*N3}BV`XWRF+ca-%s ze5{Dpuj2iFQv1b_$F6r=iSN1X9uqE9VofxF5+o>TX&}$7#;`VrMcx1XU^oBKLBF0~ z2`lXdyShACS3l z1oxwc)Va7~r{tE0>m3AG)!p&dF_06 zjKMGWlmcz~Uftq<=e2Ra<;V9QwDi6w=zk;qJ_pBf@IEU150j^sPUKOG+NLH7F>w@& z1!2*s*U{U_IY>?a9rh$S5Jt%`i{4Wpz;S$ev9A;sUAa2j9sFBq1U~ zCRaw3glDVF3#SuWLJX0NgxLq~>XbSZ&Au|}I^wxaGL(giOKKWG83F`GDG`GNA`Aiy z83;)R0TUpmR8>Pu55NQ%sNlFEbOQJV9=}aLcED_bAQE4Mur^R~#ApT(Zi#`M)bC-k z8z6!xF@TpC#z;s=eZPOz=kn%#9aIg^pzr$B@OHob+;l1~2^9k>XIf}TBT8A_tE3MV zxNd-a7@##7Bnc8kcygdch(&`WnfLDigjpLS{Q(8N5llSNC(s@zrH2=PUMFDm;bu8& z#p6aZ9B8X5uwO!>v|;JxQeZP9H_tnxxMoIacSnBJ!=P~cYg1Y?CS|sP(uk}P7ImT4 zkWmiX^E~ga-x?WPty$2PXIEAKZIdvfAw#%Tbqp0mg((61x9djA0dssXma*dLQqf3_ zb0vnudehW!P0_wwqE`6s3(TjRhm43gmy>yQ@)9wSjAIzdI22JM$x^1caYr&a45>UH zTUnuCu@UZx1GR?$35JA35sNUk#T8YRO!}JBHTdIPN>q)i(y}G21kfTJO+>g(86i39 zVI)Z)Fn~bjw}AzWNI{X368O|c5`-v<6ax}QqC=t{B;^ln>-zDuF~(dK6~n&iQ(=i1 zMiGQzHo>|QD5kevxV(fJBqT`~LPU{-ByNKU7mfmK8||D-B->rNKwH(t647L_00u)y zoADGf841J^j7B5ccLPiw&U6XdD6C90F&mvvC#DGLJ1R0PMhFoTDwr7oWy(Ak;-85Ml)sgRYCU5p?B7O1&}}3Ai5rm@?+wtcatZvSVS_y6Dh@PEOsRZwYboLh_K zdkp1xBEExZJr7#v)0P;H@UzBp^B8pD-E~n}2%ExQaR-1>qS2`+rhy11o>)l*k}hsk zk&N2o$uLcRHd8S2hb91RSPdg3N)rKa8g!eL1)2vC|=2{A=ZzmE~mnc=4>B#4nB zttVo!LTMwRSCw;>cGQGWGol0-h(9_Y8mtjyeL)2dqrPe!0E8rvAf4yVWaFZ-Vxl6d zY6oX905c;BvWy^DsEZdtC1J)>0avpbN2a(RQ3p*}kpcpC7zvRJAc4)13P!~egDeV` zVUZZb*{W7W0s`qO0iXZ`NI?`#0v1t`C$7V4)1a&Nz-{1afK+pUE7yeyd%P4}a_3-T2c07a`KG6a$Y@KGf+RgQ%Sz#WrhAq0dU3+J@5 zWzS3`LKPtuOr!$DAK!{EWV(<-3GBeR+ZYr~1w@9>`jlnvxl)lZc?*1NUP zO59%?1))q(vQcTPnWqN|L1BIJlLuNk23e?E60vO(m9$DUZu@4mwL+sRp&%(`V`8kx zB!Y<`K($1)WJQ%%S+$8$uCT3;AR%iAQdm&SVCvxvhj9$rXtk!{k{JyCR;J|}Qj~6) zJ||RN7E<{5N_jt;^!}@Jlk&b#kA3pRgNn!FoB;D|Yy zTqXWYQmGa}S4bPlE_;V4v!VTr2BeGE&V9NXil7@>&RW$_6>;PvD($O{nMx*9D`9+5E>G5RdkAivX)tZ$5f#e7#Z5^z91$myHy%reACFdz zKOya9?XsIPE4Uoj~AnD#Heh;R=1svF*H`;A@=&9{QWrB8WsB9k@pdhuL0-1%dMW1#btM{pEEs9f7G zH}Kz+K{2Ib_&SIAkFCPzpzO5UeJVVXxASB2zu>=raa_?8JP@Z)qiEv+-~F|lc$rY% zGm7ktgu|MP*^E0pZ=y+t#p(OaxkFvS`dD&$Irwv?jw(m{esBRCBLWVhkB+w+9-Rd1 z^bL#)3~{}ALvB-BCxYG4S-1S=?#imB7}*O{_E8q_BrcJ}q1j8h|$VHp8l zr&;?|I_HL^8vVe3!s+t~cA+hcxrbnp2`~gC2?!BOQ~(wLkB^Pv)a}{&cDqM*^6qdO zZCA$uRIN-)yBWJ7o53WL*fc!>F!{s=Y(Pu_zlqqw7?ceF0Awh(8~)(~$lT-+&z7$p zEW;uQ!o%h(*`Ol%$~kt~M{%CIY2yEzW%gS#J02r$o2j?p)&Q%hC`u^-PST+a)TqaPutCV5CGap`aO7gbB*x8fZ`uL7-Jlj52tOC^k?egx#324Na^6((hyP;|j(u zb~0>UAY~wyRKMA*^(!<)L`6hEf-VyRLJu$7+f?IQUXv=M`ZC_wcdlW`23pNz0YRI zkH+hCf&8B5F8`+e%oWHP0#2!h%-x~^lugpL`4CTc6a#_*2qOpxZQ=oexUrvuK}g`x!@h9?NDBoDW^GgynDX8f_^7g2 zg*HsVL<`Z1r4a+Wgg~H3h+d2VC7DYkDmratlkVs*>|0*F4$RyQzZxZ} zW-dI3>&AmL07?o9RemG(soS8c2;t+uZNdbE5&oCMbA9Kw_D{A`*5Qf

    N?ugwzqaROD<@ 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 z

    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

    Gjb<5)!7hDtkkT)Mr4axqah8w5P?v0m# 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

    ``MCS_zSY9j`QRvvGSWN7 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ຶI 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

    !J6iSy|RH6F2);0{@w>vBm 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 d@NGMuDZyrYdH6=gDc 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⪙b-h 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 x>VY4QYh{z-7JZKYn%ot6-En;C6v;- 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%0AOZ?Xu9Z>59VQE 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

    XdeAqzTr1nq*{&Jl{f}+bM<+ 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⁡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

    }4sO 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%0AJldkF$du0&4Ed9}Ed4>~YsG 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 literal 0 HcmV?d00001 diff --git a/misc/dispvm-prerun.sh b/misc/dispvm-prerun.sh new file mode 100755 index 00000000..c0453f22 --- /dev/null +++ b/misc/dispvm-prerun.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +apps="evince /usr/libexec/evinced soffice firefox" + +cat /etc/dispvm-dotfiles.tbz | tar -xjf- --overwrite -C /home/user --owner user 2>&1 >/tmp/dispvm-dotfiles-errors.log + +for app in $apps ; do + echo "Launching: $app..." + $app >>/tmp/dispvm_prerun_errors.log 2>&1 & +done + +echo "Sleeping..." +PREV_IO=0 +while true; do + IO=`vmstat -D | awk '/read|write/ {IOs+=$1} END {print IOs}'` + if [ $IO -lt $[ $PREV_IO + 50 ] ]; then + break; + fi + PREV_IO=$IO + sleep 1 +done + +ps ax > /tmp/dispvm-prerun-proclist.log + +cat /etc/dispvm-dotfiles.tbz | tar -xjf- --overwrite -C /home/user --owner user 2>&1 >>/tmp/dispvm-dotfiles-errors.log + +echo done. diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 8896b38d..829a6ec3 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -119,6 +119,13 @@ install misc/qubes_trigger_sync_appmenus.sh $RPM_BUILD_ROOT/usr/lib/qubes/ install -D -m 0644 misc/qubes_trigger_sync_appmenus.action $RPM_BUILD_ROOT/etc/yum/post-actions/qubes_trigger_sync_appmenus.action mkdir -p $RPM_BUILD_ROOT/usr/lib/qubes +if [ -r misc/dispvm-dotfiles.%{dist}.tbz ]; then + install misc/dispvm-dotfiles.%{dist}.tbz $RPM_BUILD_ROOT/etc/dispvm-dotfiles.tbz +else + install misc/dispvm-dotfiles.tbz $RPM_BUILD_ROOT/etc/dispvm-dotfiles.tbz +fi +install misc/dispvm-prerun.sh $RPM_BUILD_ROOT/usr/lib/qubes/dispvm-prerun.sh + install -D misc/qubes_core.modules $RPM_BUILD_ROOT/etc/sysconfig/modules/qubes_core.modules install -m 0644 network/qubes_network.rules $RPM_BUILD_ROOT/etc/udev/rules.d/99-qubes_network.rules @@ -355,6 +362,7 @@ rm -rf $RPM_BUILD_ROOT /etc/NetworkManager/dispatcher.d/30-qubes_external_ip /etc/NetworkManager/dispatcher.d/qubes_nmhook /etc/X11/xorg-preload-apps.conf +/etc/dispvm-dotfiles.tbz /etc/dhclient.d/qubes_setup_dnat_to_ns.sh /etc/fstab /etc/pki/rpm-gpg/RPM-GPG-KEY-qubes* @@ -386,6 +394,7 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/block_add_change /usr/lib/qubes/block_cleanup /usr/lib/qubes/block_remove +/usr/lib/qubes/dispvm-prerun.sh /usr/lib/qubes/sync-ntp-clock /usr/lib/qubes/meminfo-writer /usr/lib/qubes/network-manager-prepare-conf-dir From 4aab477f384c67424bdef25d0ec25d46bacd0471 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 12 Jul 2012 14:21:59 +0200 Subject: [PATCH 295/386] dom0/dispvm: by default use prerun script from inside of VM (#620) --- dom0/qvm-core/qubes.py | 6 ------ dom0/restore/qubes_prepare_saved_domain.sh | 8 ++++++-- dom0/restore/qvm-create-default-dvm | 8 ++------ 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 7e0fffd1..ba7b9747 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1634,12 +1634,6 @@ class QubesTemplateVm(QubesVm): raise IOError ("Error while copying {0} to {1}".\ format(self.clean_img, self.volatile_img)) - if verbose: - print >> sys.stderr, "--> Copying the template's DispVM prerun script..." - retcode = subprocess.call (["cp", src_vm.dir_path + '/dispvm-prerun.sh', self.dir_path + '/dispvm-prerun.sh']) - if retcode != 0: - raise IOError ("Error while copying DispVM prerun script") - # Create root-cow.img self.commit_changes(verbose=verbose) diff --git a/dom0/restore/qubes_prepare_saved_domain.sh b/dom0/restore/qubes_prepare_saved_domain.sh index 0d89932d..f06bf998 100755 --- a/dom0/restore/qubes_prepare_saved_domain.sh +++ b/dom0/restore/qubes_prepare_saved_domain.sh @@ -1,11 +1,15 @@ #!/bin/bash get_encoded_script() { - if ! [ -f "$1" ] ; then + if [ "$1" == "vm-default" ]; then + SCRIPT_CMD="echo /usr/lib/qubes/dispvm-prerun.sh" + elif ! [ -f "$1" ] ; then echo $1 is not a file ? exit 1 + else + SCRIPT_CMD="cat $1" fi - ENCODED_SCRIPT=`cat "$1" | perl -e 'use MIME::Base64 qw(encode_base64); local($/) = undef;print encode_base64()'|tr -d "\n"` + ENCODED_SCRIPT=`$SCRIPT_CMD | perl -e 'use MIME::Base64 qw(encode_base64); local($/) = undef;print encode_base64()'|tr -d "\n"` } if [ $# != 2 -a $# != 3 ] ; then diff --git a/dom0/restore/qvm-create-default-dvm b/dom0/restore/qvm-create-default-dvm index 3240ebd1..d8c93821 100755 --- a/dom0/restore/qvm-create-default-dvm +++ b/dom0/restore/qvm-create-default-dvm @@ -21,13 +21,9 @@ if [ "$TEMPLATENAME" = --default-template ] ; then fi if [ "X""$2" = "X""--default-script" ] ; then - SCRIPTNAME="/var/lib/qubes/vm-templates/$TEMPLATENAME"/dispvm-prerun.sh - if ! [ -f $SCRIPTNAME ] ; then - echo $SCRIPTNAME does not exist - exit 1 - fi + SCRIPTNAME="vm-default" else - SCRIPTNAME=$2 + SCRIPTNAME=$2 fi if ! [ -d "/var/lib/qubes/vm-templates/$TEMPLATENAME" ] ; then From b7680e87230faa1e5ea914308183511a2b646400 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Thu, 12 Jul 2012 16:03:13 +0200 Subject: [PATCH 296/386] version 2.0.33-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 79a82f0a..520d2d24 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.32 +2.0.33 From 6d6f43fb4e8b4e4635f5d729a400aa658360d9db Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 13 Jul 2012 14:40:52 +0200 Subject: [PATCH 297/386] vm: export SuspendPre and SuspendPost qrexec services (#617) 1. Try to use NetworkManager sleep command instead of shutting it down 2. Move sleep action details (which is VM-specific) to VM 3. Export it as qrexec service(s) --- qubes_rpc/prepare-suspend | 16 ++++++++++++++++ qubes_rpc/qubes.SuspendPost | 1 + qubes_rpc/qubes.SuspendPre | 1 + rpm_spec/core-vm.spec | 5 +++++ 4 files changed, 23 insertions(+) create mode 100755 qubes_rpc/prepare-suspend create mode 100644 qubes_rpc/qubes.SuspendPost create mode 100644 qubes_rpc/qubes.SuspendPre diff --git a/qubes_rpc/prepare-suspend b/qubes_rpc/prepare-suspend new file mode 100755 index 00000000..4df1122e --- /dev/null +++ b/qubes_rpc/prepare-suspend @@ -0,0 +1,16 @@ +#!/bin/sh + +action=$1 +[ -z "$action" ] && action=suspend + +if [ x"$action" == x"suspend" ]; then + nmcli nm sleep true || service NetworkManager stop + # Force interfaces down, just in case when NM didn't done it + for if in `ls /sys/class/net|grep -v "lo\|vif"`; do + ip l s $if down + done + modprobe -r uhci_hcd ehci_hcd +else + modprobe ehci_hcd; modprobe uhci_hcd; + nmcli nm sleep false || { [ -x /bin/systemctl ] && systemctl start NetworkManager.service; } || service qubes_core_netvm start +fi diff --git a/qubes_rpc/qubes.SuspendPost b/qubes_rpc/qubes.SuspendPost new file mode 100644 index 00000000..73bf2ead --- /dev/null +++ b/qubes_rpc/qubes.SuspendPost @@ -0,0 +1 @@ +/usr/lib/qubes/prepare-suspend resume diff --git a/qubes_rpc/qubes.SuspendPre b/qubes_rpc/qubes.SuspendPre new file mode 100644 index 00000000..ad49fa65 --- /dev/null +++ b/qubes_rpc/qubes.SuspendPre @@ -0,0 +1 @@ +/usr/lib/qubes/prepare-suspend suspend diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 829a6ec3..f24c679b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -158,10 +158,12 @@ install qubes_rpc/qvm-copy-to-vm.gnome $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/{vm-file-editor,qfile-agent,qopen-in-vm,qfile-unpacker} $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/{vm-shell,qrun-in-vm} $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/sync-ntp-clock $RPM_BUILD_ROOT/usr/lib/qubes +install qubes_rpc/prepare-suspend $RPM_BUILD_ROOT/usr/lib/qubes install -d $RPM_BUILD_ROOT/%{kde_service_dir} install -m 0644 qubes_rpc/{qvm-copy.desktop,qvm-dvm.desktop} $RPM_BUILD_ROOT/%{kde_service_dir} install -d $RPM_BUILD_ROOT/etc/qubes_rpc install -m 0644 qubes_rpc/{qubes.Filecopy,qubes.OpenInVM,qubes.VMShell,qubes.SyncNtpClock} $RPM_BUILD_ROOT/etc/qubes_rpc +install -m 0644 qubes_rpc/{qubes.SuspendPre,qubes.SuspendPost} $RPM_BUILD_ROOT/etc/qubes_rpc install qrexec/qrexec_agent $RPM_BUILD_ROOT/usr/lib/qubes install qrexec/qrexec_client_vm $RPM_BUILD_ROOT/usr/lib/qubes @@ -371,6 +373,8 @@ rm -rf $RPM_BUILD_ROOT /etc/qubes_rpc/qubes.OpenInVM /etc/qubes_rpc/qubes.VMShell /etc/qubes_rpc/qubes.SyncNtpClock +/etc/qubes_rpc/qubes.SuspendPre +/etc/qubes_rpc/qubes.SuspendPost /etc/sudoers.d/qubes /etc/sysconfig/iptables /etc/sysconfig/modules/qubes_core.modules @@ -396,6 +400,7 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/block_remove /usr/lib/qubes/dispvm-prerun.sh /usr/lib/qubes/sync-ntp-clock +/usr/lib/qubes/prepare-suspend /usr/lib/qubes/meminfo-writer /usr/lib/qubes/network-manager-prepare-conf-dir /usr/lib/qubes/qfile-agent From 32fbd5aefd39700c3e0d3b836ed5da632c94eecb Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 13 Jul 2012 14:42:54 +0200 Subject: [PATCH 298/386] dom0: call qrexec service while preparing NetVM for sleep (#617) Instead of hardcoded commands. --- dom0/pm-utils/51qubes-suspend-netvm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/pm-utils/51qubes-suspend-netvm b/dom0/pm-utils/51qubes-suspend-netvm index 0d0f6fa7..21839ccd 100755 --- a/dom0/pm-utils/51qubes-suspend-netvm +++ b/dom0/pm-utils/51qubes-suspend-netvm @@ -16,7 +16,7 @@ get_running_netvms() { suspend_net() { for VM in `get_running_netvms`; do - qvm-run -u root --pass-io $VM 'service NetworkManager stop; for if in `ls /sys/class/net|grep -v "lo\|vif"`; do ip l s $if down; done; modprobe -r uhci_hcd ehci_hcd' + qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPre dom0' done # Ignore exit status from netvm... return 0 @@ -25,7 +25,7 @@ suspend_net() resume_net() { for VM in `get_running_netvms`; do - qvm-run -u root --pass-io $VM "modprobe ehci_hcd; modprobe uhci_hcd; [ -x /bin/systemctl ] && systemctl start NetworkManager.service || service qubes_core_netvm start" + qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPost dom0' done # Ignore exit status from netvm... return 0 From 7fbeacc81b85321e5ada833f90bdd1427650e4d0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 15:12:41 +0200 Subject: [PATCH 299/386] dom0/core: remove appmenus when removing NetVM (#627) --- dom0/qvm-core/qubes.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index ba7b9747..f6615157 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1892,6 +1892,15 @@ class QubesNetVm(QubesVm): if not self.internal: self.create_appmenus (verbose, source_template=source_template) + def remove_from_disk(self): + if dry_run: + return + + if not self.internal: + self.remove_appmenus() + super(QubesNetVm, self).remove_from_disk() + + class QubesProxyVm(QubesNetVm): """ A class that represents a ProxyVM, ex FirewallVM. A child of QubesNetVM. From d156a815d2cbedd59aec0ecab905d694af7d0606 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 15:55:46 +0200 Subject: [PATCH 300/386] dom0/dom0-updates: remove updates-pending flag after update installation --- dom0/qvm-tools/qubes-dom0-update | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dom0/qvm-tools/qubes-dom0-update b/dom0/qvm-tools/qubes-dom0-update index 6ff8603f..fc1cc62e 100755 --- a/dom0/qvm-tools/qubes-dom0-update +++ b/dom0/qvm-tools/qubes-dom0-update @@ -1,6 +1,8 @@ #!/bin/bash UPDATEVM=`qubes-prefs --get updatevm` +UPDATES_STAT_FILE=/var/lib/qubes/updates/dom0-updates-available + if [ -z "$UPDATEVM" ]; then echo "UpdateVM not set, exiting" exit 1 @@ -97,6 +99,7 @@ elif [ -f /var/lib/qubes/updates/repodata/repomd.xml ]; then yum $YUM_OPTS update fi fi + yum -q check-updates && rm $UPDATES_STAT_FILE else echo "No updates avaliable" >&2 fi From 08888fcf7a937872bbfe2372c50c215e65679a3d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 16:07:35 +0200 Subject: [PATCH 301/386] dom0/core: remove duplicated remove_from_disk definition --- dom0/qvm-core/qubes.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f6615157..c3927e11 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1532,13 +1532,6 @@ class QubesVm(object): xc.domain_unpause(self.get_xid()) - def remove_from_disk(self): - if dry_run: - return - - - shutil.rmtree (self.dir_path) - def get_xml_attrs(self): attrs = {} attrs_config = self._get_attrs_config() From 2b5ce31eeb42af24084d5da1b5949556c6e3cc03 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 22:54:23 +0200 Subject: [PATCH 302/386] dom0+vm/qrexec-services: pass remote domain via env variable not argument Most qrexec services doesn't use remote domain name, as policy is enforced earlier. So pass it in way that will allow use of generic command as qrexec service. --- qrexec/qubes_rpc_multiplexer | 3 ++- qubes_rpc/qfile-unpacker.c | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/qrexec/qubes_rpc_multiplexer b/qrexec/qubes_rpc_multiplexer index 8f03137a..89cdbed7 100755 --- a/qrexec/qubes_rpc_multiplexer +++ b/qrexec/qubes_rpc_multiplexer @@ -5,8 +5,9 @@ if ! [ $# = 2 ] ; then exit 1 fi CFG_FILE=$QUBES_RPC/"$1" +export QREXEC_REMOTE_DOMAIN="$2" if [ -s "$CFG_FILE" ] ; then - exec $(cat "$CFG_FILE") "$2" + exec $(cat "$CFG_FILE") echo "$0: failed to execute handler for" "$1" >&2 exit 1 fi diff --git a/qubes_rpc/qfile-unpacker.c b/qubes_rpc/qfile-unpacker.c index eaa5c067..dd0a510d 100644 --- a/qubes_rpc/qfile-unpacker.c +++ b/qubes_rpc/qfile-unpacker.c @@ -51,13 +51,19 @@ int main(int argc, char ** argv) char *incoming_dir; int pipefds[2]; int uid; + char *remote_domain; pipe(pipefds); uid = prepare_creds_return_uid("user"); + remote_domain = getenv("QREXEC_REMOTE_DOMAIN"); + if (!remote_domain) { + gui_fatal("Cannot get remote domain name"); + exit(1); + } mkdir(INCOMING_DIR_ROOT, 0700); - asprintf(&incoming_dir, "%s/from-%s", INCOMING_DIR_ROOT, argv[1]); + asprintf(&incoming_dir, "%s/from-%s", INCOMING_DIR_ROOT, remote_domain); mkdir(incoming_dir, 0700); if (chdir(incoming_dir)) gui_fatal("Error chdir to %s", incoming_dir); From 7e3ffabd78f88eb5b85c4ed717ed9ea23cbc1837 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 22:59:32 +0200 Subject: [PATCH 303/386] dom0+vm: execute qrexec service as shell script This will allow to pass quoted arguments and some variable expansion. Basically one-line shell command service can be embeded in the configuration. In previus version use of "command path with spaces" whould result in try to execute '"command' with arguments 'path', 'with' and 'spaces"'. --- qrexec/qubes_rpc_multiplexer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qrexec/qubes_rpc_multiplexer b/qrexec/qubes_rpc_multiplexer index 89cdbed7..191be91b 100755 --- a/qrexec/qubes_rpc_multiplexer +++ b/qrexec/qubes_rpc_multiplexer @@ -7,7 +7,7 @@ fi CFG_FILE=$QUBES_RPC/"$1" export QREXEC_REMOTE_DOMAIN="$2" if [ -s "$CFG_FILE" ] ; then - exec $(cat "$CFG_FILE") + exec /bin/sh "$CFG_FILE" echo "$0: failed to execute handler for" "$1" >&2 exit 1 fi From 15d5a1205dc6947c0f94b1ff8d2d479949a02aa9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 22:58:15 +0200 Subject: [PATCH 304/386] vm: simplify qubes.VMShell service Now additional wrapper not required to skip cmdline argument --- qubes_rpc/qubes.VMShell | 2 +- qubes_rpc/vm-shell | 3 --- rpm_spec/core-vm.spec | 3 +-- 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100755 qubes_rpc/vm-shell diff --git a/qubes_rpc/qubes.VMShell b/qubes_rpc/qubes.VMShell index 7ca3b5e5..01dca2d7 100644 --- a/qubes_rpc/qubes.VMShell +++ b/qubes_rpc/qubes.VMShell @@ -1 +1 @@ -/usr/lib/qubes/vm-shell \ No newline at end of file +/bin/bash diff --git a/qubes_rpc/vm-shell b/qubes_rpc/vm-shell deleted file mode 100755 index d06e3986..00000000 --- a/qubes_rpc/vm-shell +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -# just ignore the cmdline argument (the remote vm name) -exec /bin/bash diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index f24c679b..e73cdb8d 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -156,7 +156,7 @@ install qubes_rpc/wrap_in_html_if_url.sh $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/qvm-copy-to-vm.kde $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/qvm-copy-to-vm.gnome $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/{vm-file-editor,qfile-agent,qopen-in-vm,qfile-unpacker} $RPM_BUILD_ROOT/usr/lib/qubes -install qubes_rpc/{vm-shell,qrun-in-vm} $RPM_BUILD_ROOT/usr/lib/qubes +install qubes_rpc/qrun-in-vm $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/sync-ntp-clock $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/prepare-suspend $RPM_BUILD_ROOT/usr/lib/qubes install -d $RPM_BUILD_ROOT/%{kde_service_dir} @@ -419,7 +419,6 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/serial.conf /usr/lib/qubes/setup_ip /usr/lib/qubes/vm-file-editor -/usr/lib/qubes/vm-shell /usr/lib/qubes/wrap_in_html_if_url.sh /usr/lib/yum-plugins/yum-qubes-hooks.py* /usr/sbin/qubes_firewall From 1c096ec65cd8dbde6a8190626bb6e96fb0a34c46 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 23:07:01 +0200 Subject: [PATCH 305/386] vm: implement qubes.GetAppmenus to reduce code duplication As one-liner services are now real one-line, just do it. --- misc/qubes_trigger_sync_appmenus.sh | 2 +- qubes_rpc/qubes.GetAppmenus | 2 ++ rpm_spec/core-vm.spec | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 qubes_rpc/qubes.GetAppmenus diff --git a/misc/qubes_trigger_sync_appmenus.sh b/misc/qubes_trigger_sync_appmenus.sh index 5390c2d2..e848ea34 100755 --- a/misc/qubes_trigger_sync_appmenus.sh +++ b/misc/qubes_trigger_sync_appmenus.sh @@ -3,5 +3,5 @@ UPDATEABLE=`/usr/bin/xenstore-read qubes_vm_updateable` if [ "$UPDATEABLE" = "True" ]; then - /usr/lib/qubes/qrexec_client_vm dom0 qubes.SyncAppMenus /bin/grep -H = /usr/share/applications/*.desktop + /usr/lib/qubes/qrexec_client_vm dom0 qubes.SyncAppMenus /bin/sh /etc/qubes_rpc/qubes.GetAppmenus fi diff --git a/qubes_rpc/qubes.GetAppmenus b/qubes_rpc/qubes.GetAppmenus new file mode 100644 index 00000000..cada68ca --- /dev/null +++ b/qubes_rpc/qubes.GetAppmenus @@ -0,0 +1,2 @@ +shopt -s nullglob +/bin/grep -H = /usr/share/applications/*.desktop /usr/local/share/applications/*.desktop 2> /dev/null diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index e73cdb8d..9509403f 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -163,7 +163,7 @@ install -d $RPM_BUILD_ROOT/%{kde_service_dir} install -m 0644 qubes_rpc/{qvm-copy.desktop,qvm-dvm.desktop} $RPM_BUILD_ROOT/%{kde_service_dir} install -d $RPM_BUILD_ROOT/etc/qubes_rpc install -m 0644 qubes_rpc/{qubes.Filecopy,qubes.OpenInVM,qubes.VMShell,qubes.SyncNtpClock} $RPM_BUILD_ROOT/etc/qubes_rpc -install -m 0644 qubes_rpc/{qubes.SuspendPre,qubes.SuspendPost} $RPM_BUILD_ROOT/etc/qubes_rpc +install -m 0644 qubes_rpc/{qubes.SuspendPre,qubes.SuspendPost,qubes.GetAppmenus} $RPM_BUILD_ROOT/etc/qubes_rpc install qrexec/qrexec_agent $RPM_BUILD_ROOT/usr/lib/qubes install qrexec/qrexec_client_vm $RPM_BUILD_ROOT/usr/lib/qubes @@ -371,6 +371,7 @@ rm -rf $RPM_BUILD_ROOT %dir /etc/qubes_rpc /etc/qubes_rpc/qubes.Filecopy /etc/qubes_rpc/qubes.OpenInVM +/etc/qubes_rpc/qubes.GetAppmenus /etc/qubes_rpc/qubes.VMShell /etc/qubes_rpc/qubes.SyncNtpClock /etc/qubes_rpc/qubes.SuspendPre From 1009b1a46d999cca40d2acbbec614c24263a59db Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 14 Jul 2012 23:09:04 +0200 Subject: [PATCH 306/386] dom0/qvm-sync-appmenus: use qubes.GetAppmenus service --- dom0/qvm-tools/qvm-sync-appmenus | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-tools/qvm-sync-appmenus b/dom0/qvm-tools/qvm-sync-appmenus index fa9db396..fef07274 100755 --- a/dom0/qvm-tools/qvm-sync-appmenus +++ b/dom0/qvm-tools/qvm-sync-appmenus @@ -62,7 +62,7 @@ def get_appmenus(xid): raise QubesException("Line count limit exceeded") else: p = subprocess.Popen ([qrexec_client_path, '-d', str(xid), - 'user:grep -H = /usr/share/applications/*.desktop'], stdout=subprocess.PIPE) + 'user:QUBESRPC qubes.GetAppmenus dom0'], stdout=subprocess.PIPE) while appmenus_line_count > 0: line = p.stdout.readline(appmenus_line_size) if line == "": From b6b50b6fea212798ce6d6657a354c2ae2887ea9a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 15 Jul 2012 00:09:52 +0200 Subject: [PATCH 307/386] dom0/appmenus: Rename dir entry for ServiceVMs (#627) --- dom0/aux-tools/create_apps_for_appvm.sh | 7 +++++-- dom0/misc/qubes-servicevm.directory.template | 5 +++++ rpm_spec/core-dom0.spec | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 dom0/misc/qubes-servicevm.directory.template diff --git a/dom0/aux-tools/create_apps_for_appvm.sh b/dom0/aux-tools/create_apps_for_appvm.sh index 0b6e53dd..0624162f 100755 --- a/dom0/aux-tools/create_apps_for_appvm.sh +++ b/dom0/aux-tools/create_apps_for_appvm.sh @@ -45,10 +45,13 @@ if [ "$SRCDIR" != "none" ]; then /usr/lib/qubes/convert_apptemplate2vm.sh /usr/share/qubes/qubes-appmenu-select.desktop $APPSDIR $VMNAME $VMDIR if [ "$VMTYPE" = "vm-templates" ]; then - /usr/lib/qubes/convert_dirtemplate2vm.sh /usr/share/qubes/qubes-templatevm.directory.template $APPSDIR/$VMNAME-vm.directory $VMNAME $VMDIR + DIR_TEMPLATE=/usr/share/qubes/qubes-templatevm.directory.template + elif [ "$VMTYPE" = "servicevms" ]; then + DIR_TEMPLATE=/usr/share/qubes/qubes-servicevm.directory.template else - /usr/lib/qubes/convert_dirtemplate2vm.sh /usr/share/qubes/qubes-vm.directory.template $APPSDIR/$VMNAME-vm.directory $VMNAME $VMDIR + DIR_TEMPLATE=/usr/share/qubes/qubes-vm.directory.template fi + /usr/lib/qubes/convert_dirtemplate2vm.sh $DIR_TEMPLATE $APPSDIR/$VMNAME-vm.directory $VMNAME $VMDIR fi echo "--> Adding Apps to the Menu..." diff --git a/dom0/misc/qubes-servicevm.directory.template b/dom0/misc/qubes-servicevm.directory.template new file mode 100644 index 00000000..74ce62f3 --- /dev/null +++ b/dom0/misc/qubes-servicevm.directory.template @@ -0,0 +1,5 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Directory +Name=ServiceVM: %VMNAME% +Icon=%VMDIR%/icon.png diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index ef927c00..fa40e4c1 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -157,6 +157,7 @@ mkdir -p $RPM_BUILD_ROOT/usr/share/qubes/icons cp icons/*.png $RPM_BUILD_ROOT/usr/share/qubes/icons cp misc/qubes-vm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-templatevm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ +cp misc/qubes-servicevm.directory.template $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-dispvm.directory $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-dispvm-firefox.desktop $RPM_BUILD_ROOT/usr/share/qubes/ cp misc/qubes-appmenu-select.desktop $RPM_BUILD_ROOT/usr/share/qubes/ @@ -370,6 +371,7 @@ fi /usr/share/qubes/icons/*.png /usr/share/qubes/qubes-vm.directory.template /usr/share/qubes/qubes-templatevm.directory.template +/usr/share/qubes/qubes-servicevm.directory.template /usr/share/qubes/qubes-dispvm.directory /usr/share/qubes/qubes-dispvm-firefox.desktop /usr/share/qubes/qubes-appmenu-select.desktop From 712d1228943d664ad24792c36adee4eb66064514 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 15 Jul 2012 19:48:36 +0200 Subject: [PATCH 308/386] dom0: fix block-cleaner daemon --- dom0/aux-tools/block_cleaner_daemon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/aux-tools/block_cleaner_daemon.py b/dom0/aux-tools/block_cleaner_daemon.py index 76154759..75b549dc 100755 --- a/dom0/aux-tools/block_cleaner_daemon.py +++ b/dom0/aux-tools/block_cleaner_daemon.py @@ -35,7 +35,7 @@ def handle_vbd_state(path): vm_xid = path_components[6] vm_dev = path_components[7] if vm_xid in domain_list: - subprocess.call('xl', 'block-detach', vm_xid, vm_dev) + subprocess.call(['xl', 'block-detach', vm_xid, vm_dev]) def main(): From eeabd3b371cf6500a5f11d5e9b1b219f07626e73 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 16 Jul 2012 12:49:41 +0200 Subject: [PATCH 309/386] Revert "vm/spec: disable pam_systemd globally (#607)" (#626) This reverts commit 8ec4b6963b71b95bc0cda6dd80d99bf60aa9caec. This caused regression (#626). Conflicts: rpm_spec/core-vm.spec --- rpm_spec/core-vm.spec | 8 -------- 1 file changed, 8 deletions(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 9509403f..7e2b0348 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -188,13 +188,6 @@ install -D u2mfn/libu2mfn.so $RPM_BUILD_ROOT/%{_libdir}/libu2mfn.so %triggerin -- initscripts cp /usr/lib/qubes/serial.conf /etc/init/serial.conf -%triggerin -- systemd -# Disable pam_systemd - we (hopefully) don't need it, but it cause some minor -# problems (http://wiki.qubes-os.org/trac/ticket/607) -# /etc/pam.d/common-* are automatically (re)generated by authconfig, so its -# modification will not be persistent -> must be done this way -mv -f /%{_lib}/security/pam_systemd.so /%{_lib}/security/pam_systemd.so.disabled 2> /dev/null || : - %post # disable some Upstart services @@ -336,7 +329,6 @@ if [ "$1" = 0 ] ; then mv /var/lib/qubes/fstab.orig /etc/fstab mv /var/lib/qubes/removed-udev-scripts/* /etc/udev/rules.d/ mv /var/lib/qubes/serial.orig /etc/init/serial.conf - mv /%{_lib}/security/pam_systemd.so.disabled /%{_lib}/security/pam_systemd.so fi %postun From 5637793fae822ba02c5dc031bf4e36de81843a85 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 16 Jul 2012 13:31:43 +0200 Subject: [PATCH 310/386] dom0/qvm-core: ignore stderr from VM commands when not needed for sure (#626) pam_systemd.so has a bug, which cause spurious '...killed' output on stderr. --- dom0/qvm-core/qubes.py | 29 +++++++++++++++++++++++++---- dom0/qvm-tools/qubes-dom0-update | 2 +- dom0/qvm-tools/qvm-sync-clock | 6 +++--- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index c3927e11..d66867c3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1301,9 +1301,14 @@ class QubesVm(object): return conf - def run(self, command, verbose = True, autostart = False, notify_function = None, passio = False, passio_popen = False, localcmd = None, wait = False, gui = True): - """command should be in form 'user:cmdline'""" + def run(self, command, verbose = True, autostart = False, notify_function = None, passio = False, passio_popen = False, passio_stderr=False, ignore_stderr=False, localcmd = None, wait = False, gui = True): + """command should be in form 'user:cmdline' + When passio_popen=True, popen object with stdout connected to pipe. + When additionally passio_stderr=True, stderr also is connected to pipe. + When ignore_stderr=True, stderr is connected to /dev/null. + """ + null = None if not self.is_running(): if not autostart: raise QubesException("VM not running") @@ -1330,12 +1335,28 @@ class QubesVm(object): if passio: os.execv(qrexec_client_path, args) exit(1) + + call_kwargs = {} + if ignore_stderr: + null = open("/dev/null", "w") + call_kwargs['stderr'] = null + if passio_popen: - p = subprocess.Popen (args, stdout=subprocess.PIPE) + popen_kwargs={'stdout': subprocess.PIPE} + if passio_stderr: + popen_kwargs['stderr'] = subprocess.PIPE + else: + popen_kwargs['stderr'] = call_kwargs.get('stderr', None) + p = subprocess.Popen (args, **popen_kwargs) + if null: + null.close() return p if not wait: args += ["-e"] - return subprocess.call(args) + retcode = subprocess.call(args, **call_kwargs) + if null: + null.close() + return retcode def attach_network(self, verbose = False, wait = True, netvm = None): if dry_run: diff --git a/dom0/qvm-tools/qubes-dom0-update b/dom0/qvm-tools/qubes-dom0-update index fc1cc62e..6a31ad22 100755 --- a/dom0/qvm-tools/qubes-dom0-update +++ b/dom0/qvm-tools/qubes-dom0-update @@ -75,7 +75,7 @@ echo "Checking for dom0 updates" >&2 # Start VM if not running already qvm-run -a $UPDATEVM true || exit 1 -/usr/lib/qubes/qrexec_client -d "$UPDATEVM" -l 'tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf 2>/dev/null' 'user:tar x -C /var/lib/qubes/dom0-updates' +/usr/lib/qubes/qrexec_client -d "$UPDATEVM" -l 'tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf 2>/dev/null' 'user:tar x -C /var/lib/qubes/dom0-updates' 2> /dev/null qvm-run --pass-io $UPDATEVM "/usr/lib/qubes/qubes_download_dom0_updates.sh --doit --nogui $ALL_OPTS" RETCODE=$? diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index c162aa89..8066f09c 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -64,14 +64,14 @@ def main(): # Ignore retcode, try even if nm-online failed - user can setup network manually # on-online has timeout 30sec by default - net_vm.run('user:nm-online -x', verbose=verbose, wait=True) + net_vm.run('user:nm-online -x', verbose=verbose, wait=True, ignore_stderr=True) # Sync clock - if clock_vm.run('root:QUBESRPC qubes.SyncNtpClock dom0', verbose=verbose, wait=True) != 0: + if clock_vm.run('root:QUBESRPC qubes.SyncNtpClock dom0', verbose=verbose, wait=True, ignore_stderr=True) != 0: print >> sys.stderr, 'Time sync failed, aborting!' sys.exit(1) - p = clock_vm.run('user:date -u', verbose=verbose, passio_popen=True) + p = clock_vm.run('user:date -u', verbose=verbose, passio_popen=True, ignore_stderr=True) date_out = p.stdout.read(100) date_out = date_out.strip() if not re.match(r'^[A-Za-z]* [A-Za-z]* [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [A-Z]* [0-9][0-9][0-9][0-9]$', date_out): From f0195e15aff2a19219a3870cf0645ee5ee7ae17a Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 18 Jul 2012 10:58:35 +0200 Subject: [PATCH 311/386] version 2.0.34 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 520d2d24..b6c8da42 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.33 +2.0.34 From 69a50c86cada2e14d796a6e34a7bdd24f88b70b6 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Wed, 18 Jul 2012 11:02:30 +0200 Subject: [PATCH 312/386] version 2.0.35 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index b6c8da42..64c4a2b0 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.34 +2.0.35 From 406d233b6b4454e0419c86e2a77adde62d428cd0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 19 Jul 2012 14:43:24 +0200 Subject: [PATCH 313/386] dom0/core: disable dynamic memory when VM have PCI devices assigned --- dom0/qvm-core/qubes.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index d66867c3..62ec10d6 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -340,6 +340,10 @@ class QubesVm(object): if 'meminfo-writer' not in self.services: self.services['meminfo-writer'] = not (len(self.pcidevs) > 0) + # Additionally force meminfo-writer disabled when VM have PCI devices + if len(self.pcidevs) > 0: + self.services['meminfo-writer'] = False + # Some additional checks for template based VM if self.template is not None: if not self.template.is_template(): From 7071bf62bc9b3d00488f18cc3f3a0eb39fba3477 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 13:06:26 +0200 Subject: [PATCH 314/386] dom0/core: use generic run() to wait for qubes-session Especially use 'ignore_stderr' feature. --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 62ec10d6..4ed85159 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1415,7 +1415,7 @@ class QubesVm(object): if verbose: print >> sys.stderr, "--> Waiting for qubes-session..." - subprocess.call([qrexec_client_path, "-d", str(xid), "user:echo $$ >> /tmp/qubes-session-waiter; [ ! -f /tmp/qubes-session-env ] && exec sleep 365d"]) + self.run('echo $$ >> /tmp/qubes-session-waiter; [ ! -f /tmp/qubes-session-env ] && exec sleep 365d', ignore_stderr=True, gui=False, wait=True) retcode = subprocess.call([qubes_clipd_path]) if retcode != 0: From f98bf1d570af917cad8bbbad59f69144e4b5f449 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Jul 2012 12:46:36 +0200 Subject: [PATCH 315/386] dom0: fix dirs permissions after xen upgrade --- dom0/init.d/qubes_core | 20 +------------------- rpm_spec/core-dom0.spec | 3 +++ 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index 27399dd9..561ca038 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -21,25 +21,7 @@ start() { echo -n $"Executing Qubes Core scripts:" modprobe evtchn 2> /dev/null || modprobe xen-evtchn - chgrp qubes /etc/xen - chmod 710 /etc/xen - chgrp qubes /var/run/xenstored/* - chmod 660 /var/run/xenstored/* - chgrp qubes /var/lib/xen - chmod 770 /var/lib/xen - chgrp qubes /var/log/xen - chmod 770 /var/log/xen - chgrp qubes /proc/xen/privcmd - chmod 660 /proc/xen/privcmd - chgrp qubes /dev/xen/evtchn - chmod 660 /dev/xen/evtchn - touch /var/run/qubes/xl-lock - chgrp qubes /var/run/qubes/xl-lock - chmod 660 /var/run/qubes/xl-lock - chgrp -R qubes /var/log/xen - chmod -R g+rX /var/log/xen - chmod g+s /var/log/xen/console - mkdir -p /var/run/xen-hotplug + /usr/lib/qubes/fix_dir_perms.sh xenstore-write /local/domain/0/name dom0 DOM0_MAXMEM=`/usr/sbin/xl info | grep total_memory | awk '{ print $3 }'` diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index fa40e4c1..6161e21c 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -115,6 +115,7 @@ cp ../misc/block_add_change $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_remove $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/block_cleanup $RPM_BUILD_ROOT/usr/lib/qubes/ cp aux-tools/block_cleaner_daemon.py $RPM_BUILD_ROOT/usr/lib/qubes/ +cp aux-tools/fix_dir_perms.sh $RPM_BUILD_ROOT/usr/lib/qubes/ mkdir -p $RPM_BUILD_ROOT/etc/qubes_rpc/policy cp ../qubes_rpc/qubes.Filecopy.policy $RPM_BUILD_ROOT/etc/qubes_rpc/policy/qubes.Filecopy @@ -295,6 +296,7 @@ fi %triggerin -- xen-runtime sed -i 's/\/block /\/block.qubes /' /etc/udev/rules.d/xen-backend.rules +/usr/lib/qubes/fix_dir_perms.sh %triggerin -- xorg-x11-drv-vmmouse mv -f /lib/udev/rules.d/69-xorg-vmmouse.rules /var/lib/qubes/removed-udev-scripts/ 2> /dev/null || : @@ -359,6 +361,7 @@ fi /usr/lib/qubes/block_remove /usr/lib/qubes/block_cleanup /usr/lib/qubes/block_cleaner_daemon.py* +/usr/lib/qubes/fix_dir_perms.sh %attr(4750,root,qubes) /usr/lib/qubes/qfile-dom0-unpacker %attr(770,root,qubes) %dir /var/lib/qubes %attr(770,root,qubes) %dir /var/lib/qubes/vm-templates From d5dbbd41cbf95b8535a66de2ab631f22b53dcd40 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Jul 2012 18:10:08 +0200 Subject: [PATCH 316/386] dom0/qvm-tools: add missing imports --- dom0/qvm-tools/qvm-add-appvm | 1 + dom0/qvm-tools/qvm-add-template | 1 + dom0/qvm-tools/qvm-clone | 1 + dom0/qvm-tools/qvm-firewall | 1 + 4 files changed, 4 insertions(+) diff --git a/dom0/qvm-tools/qvm-add-appvm b/dom0/qvm-tools/qvm-add-appvm index f30c1afd..82f58249 100755 --- a/dom0/qvm-tools/qvm-add-appvm +++ b/dom0/qvm-tools/qvm-add-appvm @@ -24,6 +24,7 @@ from qubes.qubes import QubesVmCollection from qubes.qubes import QubesException from optparse import OptionParser; import sys +import os def main(): usage = "usage: %prog [options] \n\n"\ diff --git a/dom0/qvm-tools/qvm-add-template b/dom0/qvm-tools/qvm-add-template index c1fbe67d..5a407803 100755 --- a/dom0/qvm-tools/qvm-add-template +++ b/dom0/qvm-tools/qvm-add-template @@ -24,6 +24,7 @@ from qubes.qubes import QubesVmCollection from qubes.qubes import QubesException from optparse import OptionParser; import sys +import os def main(): usage = "usage: %prog [options] \n"\ diff --git a/dom0/qvm-tools/qvm-clone b/dom0/qvm-tools/qvm-clone index e50e90b9..02d24fe9 100755 --- a/dom0/qvm-tools/qvm-clone +++ b/dom0/qvm-tools/qvm-clone @@ -25,6 +25,7 @@ from qubes.qubes import QubesAppVm, QubesTemplateVm, QubesHVm from qubes.qubes import QubesException from optparse import OptionParser; import sys +import os def main(): usage = "usage: %prog [options] \n"\ diff --git a/dom0/qvm-tools/qvm-firewall b/dom0/qvm-tools/qvm-firewall index 9d434cda..d1439da5 100755 --- a/dom0/qvm-tools/qvm-firewall +++ b/dom0/qvm-tools/qvm-firewall @@ -25,6 +25,7 @@ from optparse import OptionParser; import subprocess import sys import re +import os services = list() From 273032bfae86685a6aeb97c6b4fc7489ba1d2dff Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 18 Jul 2012 22:22:52 +0200 Subject: [PATCH 317/386] dom0: add missing file --- dom0/aux-tools/fix_dir_perms.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100755 dom0/aux-tools/fix_dir_perms.sh diff --git a/dom0/aux-tools/fix_dir_perms.sh b/dom0/aux-tools/fix_dir_perms.sh new file mode 100755 index 00000000..82b3468f --- /dev/null +++ b/dom0/aux-tools/fix_dir_perms.sh @@ -0,0 +1,20 @@ +#!/bin/sh +chgrp qubes /etc/xen +chmod 710 /etc/xen +chgrp qubes /var/run/xenstored/* +chmod 660 /var/run/xenstored/* +chgrp qubes /var/lib/xen +chmod 770 /var/lib/xen +chgrp qubes /var/log/xen +chmod 770 /var/log/xen +chgrp qubes /proc/xen/privcmd +chmod 660 /proc/xen/privcmd +chgrp qubes /dev/xen/evtchn +chmod 660 /dev/xen/evtchn +touch /var/run/qubes/xl-lock +chgrp qubes /var/run/qubes/xl-lock +chmod 660 /var/run/qubes/xl-lock +chgrp -R qubes /var/log/xen +chmod -R g+rX /var/log/xen +chmod g+s /var/log/xen/console +mkdir -p /var/run/xen-hotplug From c2d20e59d04dbd5cb11bf7412368a733cb34a363 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 16:32:17 +0200 Subject: [PATCH 318/386] dom0/qmemman: fork into background after daemon initialization (#635) Parse config and setup socket before fork. --- dom0/init.d/qubes_core | 2 +- dom0/qmemman/qmemman_server.py | 37 ++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index 561ca038..c932b19b 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -30,7 +30,7 @@ start() xl sched-credit -d 0 -w 512 cp /var/lib/qubes/qubes.xml /var/lib/qubes/backup/qubes-$(date +%F-%T).xml - /usr/lib/qubes/qmemman_daemon.py >/var/log/qubes/qmemman.log 2>/var/log/qubes/qmemman.errs & + /usr/lib/qubes/qmemman_daemon.py MEM_CHANGE_THRESHOLD_KB=30000 MEMINFO_DELAY_USEC=100000 /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC & diff --git a/dom0/qmemman/qmemman_server.py b/dom0/qmemman/qmemman_server.py index 515b5fdd..a744340b 100755 --- a/dom0/qmemman/qmemman_server.py +++ b/dom0/qmemman/qmemman_server.py @@ -12,6 +12,8 @@ from optparse import OptionParser from qubesutils import parse_size config_path = '/etc/qubes/qmemman.conf' +SOCK_PATH='/var/run/qubes/qmemman.sock' +LOG_PATH='/var/log/qubes/qmemman.log' system_state = SystemState() global_lock = thread.allocate_lock() @@ -105,15 +107,7 @@ class QMemmanReqHandler(SocketServer.BaseRequestHandler): self.request.send(resp) -def start_server(): - SOCK_PATH='/var/run/qubes/qmemman.sock' - try: - os.unlink(SOCK_PATH) - except: - pass - os.umask(0) - server = SocketServer.UnixStreamServer(SOCK_PATH, QMemmanReqHandler) - os.umask(077) +def start_server(server): server.serve_forever() class QMemmanServer: @@ -124,6 +118,19 @@ class QMemmanServer: parser.add_option("-c", "--config", action="store", dest="config", default=config_path) (options, args) = parser.parse_args() + logfd = os.open(LOG_PATH, os.O_WRONLY|os.O_APPEND|os.O_CREAT, 0644) + if logfd < 0: + print sys.stderr, "ERROR: Failed to open log file (%s)" % LOG_PATH + exit(1) + # reinitialize python stdout/err + sys.stdout.flush() + sys.stderr.flush() + os.dup2(logfd, 1) + os.dup2(logfd, 2) + os.close(logfd) + devnull = os.open('/dev/null', os.O_RDONLY) + os.dup2(devnull, 0) + config = SafeConfigParser({ 'vm-min-mem': str(qmemman_algo.MIN_PREFMEM), 'dom0-mem-boost': str(qmemman_algo.DOM0_MEM_BOOST), @@ -137,5 +144,13 @@ class QMemmanServer: print "values: %s, %s, %s" % (str(qmemman_algo.MIN_PREFMEM), str(qmemman_algo.DOM0_MEM_BOOST), str(qmemman_algo.CACHE_FACTOR)) - thread.start_new_thread(start_server, tuple([])) - XS_Watcher().watch_loop() + try: + os.unlink(SOCK_PATH) + except: + pass + os.umask(0) + server = SocketServer.UnixStreamServer(SOCK_PATH, QMemmanReqHandler) + os.umask(077) + if os.fork() == 0: + thread.start_new_thread(start_server, tuple([server])) + XS_Watcher().watch_loop() From 59a1fb96dbef9a91638d13c4eb0f93270c35535f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 16:41:26 +0200 Subject: [PATCH 319/386] dom0/meminfo-writer: fork into background after first info sent to qmemman (#635) --- dom0/init.d/qubes_core | 2 +- misc/meminfo-writer.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index c932b19b..3a6b4ed9 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -33,7 +33,7 @@ start() /usr/lib/qubes/qmemman_daemon.py MEM_CHANGE_THRESHOLD_KB=30000 MEMINFO_DELAY_USEC=100000 - /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC & + /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC /usr/lib/qubes/block_cleaner_daemon.py > /var/log/qubes/block_cleaner.log 2>&1 & diff --git a/misc/meminfo-writer.c b/misc/meminfo-writer.c index c9e10594..f3563b14 100644 --- a/misc/meminfo-writer.c +++ b/misc/meminfo-writer.c @@ -154,6 +154,17 @@ int main(int argc, char **argv) perror("xs_domain_open"); exit(1); } + if (argc == 3) { + /* if not waiting for signal, fork after first info written to xenstore */ + n = pread(fd, buf, sizeof(buf), 0); + buf[n] = 0; + meminfo_data = parse(buf); + if (meminfo_data) + send_to_qmemman(xs, meminfo_data); + if (fork() > 0) + exit(0); + } + for (;;) { n = pread(fd, buf, sizeof(buf), 0); buf[n] = 0; From abefe78197269bcf84829e27fae8d8762e46a5ff Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 16:49:19 +0200 Subject: [PATCH 320/386] dom0/core: improve diagnostics of qmemman errors --- dom0/qvm-core/qubes.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 4ed85159..5a3246d5 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1458,7 +1458,11 @@ class QubesVm(object): mem_required = int(self.memory) * 1024 * 1024 qmemman_client = QMemmanClient() - if not qmemman_client.request_memory(mem_required): + try: + got_memory = qmemman_client.request_memory(mem_required) + except IOError as e: + raise IOError("ERROR: Failed to connect to qmemman: %s" % str(e)) + if not got_memory: qmemman_client.close() raise MemoryError ("ERROR: insufficient memory to start VM '%s'" % self.name) From ea02bee444090b8b3aff577f591c4bd603616930 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 22:53:14 +0200 Subject: [PATCH 321/386] dom0/core: minor comments improvements --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 5a3246d5..34048911 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -232,14 +232,14 @@ class QubesVm(object): "name": { "order": 1 }, "dir_path": { "default": None, "order": 2 }, "conf_file": { "eval": 'self.absolute_path(value, self.name + ".conf")', 'order': 3 }, - # order >= 10: have base attrs set + ### order >= 10: have base attrs set "root_img": { "eval": 'self.absolute_path(value, default_root_img)', 'order': 10 }, "private_img": { "eval": 'self.absolute_path(value, default_private_img)', 'order': 10 }, "volatile_img": { "eval": 'self.absolute_path(value, default_volatile_img)', 'order': 10 }, "firewall_conf": { "eval": 'self.absolute_path(value, default_firewall_conf_file)', 'order': 10 }, "installed_by_rpm": { "default": False, 'order': 10 }, "template": { "default": None, 'order': 10 }, - # order >= 20: have template set + ### order >= 20: have template set "uses_default_netvm": { "default": True, 'order': 20 }, "netvm": { "default": None, "attr": "_netvm", 'order': 20 }, "label": { "attr": "_label", "default": QubesVmLabels["red"], 'order': 20 }, From 7f9d77b27e1deca11d1ce6d1266e8fc682451e3d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 22:54:12 +0200 Subject: [PATCH 322/386] dom0/backup-restore: fix verification of VMs in backup --- dom0/qvm-core/qubesutils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 81d5a222..b5dfe22e 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -826,7 +826,9 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): if not ((template_vm_on_host is not None) and template_vm_on_host.is_template()): # Maybe the (custom) template is in the backup? template_vm_on_backup = backup_collection.get_vm_by_name (templatevm_name) - if template_vm_on_backup is None or not template_vm_on_backup.is_template(): + if template_vm_on_backup is None or not \ + (is_vm_included_in_backup(backup_dir, template_vm_on_backup) and \ + template_vm_on_backup.is_template()): if options['use-default-template']: vms_to_restore[vm.name]['orig-template'] = templatevm_name vms_to_restore[vm.name]['template'] = host_collection.get_default_template().name @@ -852,7 +854,7 @@ def backup_restore_prepare(backup_dir, options = {}, host_collection = None): # Maybe the (custom) netvm is in the backup? netvm_on_backup = backup_collection.get_vm_by_name (netvm_name) - if not ((netvm_on_backup is not None) and netvm_on_backup.is_netvm): + if not ((netvm_on_backup is not None) and netvm_on_backup.is_netvm() and is_vm_included_in_backup(backup_dir, netvm_on_backup)): if options['use-default-netvm']: vms_to_restore[vm.name]['netvm'] = host_collection.get_default_netvm().name vm.uses_default_netvm = True From 130873071f3e1258258d493a5258d4a977be5386 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 20 Jul 2012 22:54:53 +0200 Subject: [PATCH 323/386] dom0/core: do not reset firewall on clone_attrs --- dom0/qvm-core/qubes.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 34048911..07e4fb28 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -266,6 +266,8 @@ class QubesVm(object): 'self.template.appmenus_templates_dir if self.template is not None else None' }, "config_file_template": { "eval": "config_template_pv" }, "icon_path": { "eval": 'self.dir_path + "/icon.png" if self.dir_path is not None else None' }, + # used to suppress side effects of clone_attrs + "_do_not_reset_firewall": { "eval": 'False' }, "kernels_dir": { 'eval': 'qubes_kernels_base_dir + "/" + self.kernel if self.kernel is not None else ' + \ # for backward compatibility (or another rare case): kernel=None -> kernel in VM dir 'self.dir_path + "/" + default_kernels_subdir' }, @@ -405,12 +407,13 @@ class QubesVm(object): self.netvm.post_vm_net_detach(self) if new_netvm is None: - # Set also firewall to block all traffic as discussed in #370 - if os.path.exists(self.firewall_conf): - shutil.copy(self.firewall_conf, "%s/backup/%s-firewall-%s.xml" - % (qubes_base_dir, self.name, time.strftime('%Y-%m-%d-%H:%M:%S'))) - self.write_firewall_conf({'allow': False, 'allowDns': False, - 'allowIcmp': False, 'allowYumProxy': False, 'rules': []}) + if not self._do_not_reset_firewall: + # Set also firewall to block all traffic as discussed in #370 + if os.path.exists(self.firewall_conf): + shutil.copy(self.firewall_conf, "%s/backup/%s-firewall-%s.xml" + % (qubes_base_dir, self.name, time.strftime('%Y-%m-%d-%H:%M:%S'))) + self.write_firewall_conf({'allow': False, 'allowDns': False, + 'allowIcmp': False, 'allowYumProxy': False, 'rules': []}) else: new_netvm.connected_vms[self.qid]=self @@ -1049,8 +1052,10 @@ class QubesVm(object): '_mac', 'pcidevs', 'include_in_backups'] def clone_attrs(self, src_vm): + self._do_not_reset_firewall = True for prop in self.get_clone_attrs(): setattr(self, prop, getattr(src_vm, prop)) + self._do_not_reset_firewall = False def clone_disk_files(self, src_vm, verbose): if dry_run: From 4b9cc1e405e4fb8d5e84a185c5cd67ad161db12b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 28 Jul 2012 00:51:19 +0200 Subject: [PATCH 324/386] dom0/core: fix qubes-session wait code --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 1aee63bf..bffcc5a6 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1420,7 +1420,7 @@ class QubesVm(object): if verbose: print >> sys.stderr, "--> Waiting for qubes-session..." - self.run('echo $$ >> /tmp/qubes-session-waiter; [ ! -f /tmp/qubes-session-env ] && exec sleep 365d', ignore_stderr=True, gui=False, wait=True) + self.run('%s:echo $$ >> /tmp/qubes-session-waiter; [ ! -f /tmp/qubes-session-env ] && exec sleep 365d' % self.default_user, ignore_stderr=True, gui=False, wait=True) retcode = subprocess.call([qubes_clipd_path]) if retcode != 0: From 500baf3a60e8c0977c9786aa85becf5e501d53b2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 28 Jul 2012 01:39:59 +0200 Subject: [PATCH 325/386] dom0/core: allow custom kernel for non-updateable VMs --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index bffcc5a6..e3bf52a3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -920,7 +920,7 @@ class QubesVm(object): args['volatiledev'] = "'script:file:{dir}/volatile.img,xvdc,w',".format(dir=self.dir_path) if hasattr(self, 'kernel'): modulesmode='r' - if self.updateable and self.kernel is None: + if self.kernel is None: modulesmode='w' args['otherdevs'] = "'script:file:{dir}/modules.img,xvdd,{mode}',".format(dir=self.kernels_dir, mode=modulesmode) if hasattr(self, 'kernelopts'): From 847fe81dcdb8bc1014b160430a42e48384883ea9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 1 Aug 2012 01:01:37 +0200 Subject: [PATCH 326/386] dom0/qvm-run: do not break --all when run in one VM failed --- dom0/qvm-tools/qvm-run | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-run b/dom0/qvm-tools/qvm-run index 8292e0cd..6ed9f747 100755 --- a/dom0/qvm-tools/qvm-run +++ b/dom0/qvm-tools/qvm-run @@ -91,8 +91,8 @@ def vm_run_cmd(vm, cmd, options): if options.tray: tray_notify_error(str(err)) notify_error_qubes_manager(vm.name, str(err)) - print >> sys.stderr, "ERROR: %s" % str(err) - exit(1) + print >> sys.stderr, "ERROR(%s): %s" % (str(vm.name), str(err)) + return 1 def main(): usage = "usage: %prog [options] [] []" From ec47c5eb81104ad926140c000321efa06c83e564 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 3 Aug 2012 02:02:26 +0200 Subject: [PATCH 327/386] win: unmask evtchn before checking if libvchan_wait is needed This should prevent the race, when evtchn is signalled between condition check and libvchan_wait call. --- vchan/io.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/vchan/io.c b/vchan/io.c index e735c86a..17a3abe3 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -125,6 +125,12 @@ int libvchan_write(struct libvchan *ctrl, char *data, int size) { int avail, avail_contig; int real_idx; +#ifdef WINNT + // because of mask-on-fire and do_notify called previously, evtchn must be + // unmasked before libvchan_wait. Do it before checking if data is + // available to prevent race + libvchan_prepare_to_select(ctrl); +#endif while ((avail = libvchan_buffer_space(ctrl)) == 0) if (libvchan_wait(ctrl) < 0) return -1; @@ -150,6 +156,12 @@ int libvchan_read(struct libvchan *ctrl, char *data, int size) { int avail, avail_contig; int real_idx; +#ifdef WINNT + // because of mask-on-fire and do_notify called previously, evtchn must be + // unmasked before libvchan_wait. Do it before checking if data is + // available to prevent race + libvchan_prepare_to_select(ctrl); +#endif while ((avail = libvchan_data_ready(ctrl)) == 0) if (libvchan_wait(ctrl) < 0) return -1; From cb39325e6f06a659ab27468ffee4ba2fc4ccd730 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 10 Aug 2012 11:06:58 +0200 Subject: [PATCH 328/386] vm: ignore additional actions in *.desktop files (#631) --- qubes_rpc/qubes.GetAppmenus | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qubes_rpc/qubes.GetAppmenus b/qubes_rpc/qubes.GetAppmenus index cada68ca..59027828 100644 --- a/qubes_rpc/qubes.GetAppmenus +++ b/qubes_rpc/qubes.GetAppmenus @@ -1,2 +1,2 @@ shopt -s nullglob -/bin/grep -H = /usr/share/applications/*.desktop /usr/local/share/applications/*.desktop 2> /dev/null +awk '/^\[/ { if (tolower($0) != "\[desktop entry\]") nextfile } /=/ {print FILENAME ":" $0 }' /usr/share/applications/*.desktop /usr/local/share/applications/*.desktop 2> /dev/null From a98020eca7f738fa18dff2f3c506e7dea3cc198c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 18 Aug 2012 21:17:07 +0200 Subject: [PATCH 329/386] dom0+vm/qfile-copy: use setuid instead of policy setting to allow chroot This will allow to not hardcode "root" username in policy, which can be useful for non-Linux systems. --- qubes_rpc/qubes.Filecopy.policy | 2 +- rpm_spec/core-vm.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qubes_rpc/qubes.Filecopy.policy b/qubes_rpc/qubes.Filecopy.policy index 0a0d7352..e0bef3ef 100644 --- a/qubes_rpc/qubes.Filecopy.policy +++ b/qubes_rpc/qubes.Filecopy.policy @@ -3,4 +3,4 @@ ## Please use a single # to start your custom comments -$anyvm $anyvm ask,user=root +$anyvm $anyvm ask diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index f9ba7743..6c84ae0b 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -398,7 +398,7 @@ rm -rf $RPM_BUILD_ROOT /usr/lib/qubes/meminfo-writer /usr/lib/qubes/network-manager-prepare-conf-dir /usr/lib/qubes/qfile-agent -/usr/lib/qubes/qfile-unpacker +%attr(4755,root,root) /usr/lib/qubes/qfile-unpacker /usr/lib/qubes/qopen-in-vm /usr/lib/qubes/qrexec_agent /usr/lib/qubes/qrexec_client_vm From 7745e23137f85eadd214df67af3ba1ae18ea8efc Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 18 Aug 2012 21:21:20 +0200 Subject: [PATCH 330/386] dom0/qrexec: use QUBESRPC instead of direct multiplexer path --- qrexec/qrexec_policy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qrexec/qrexec_policy b/qrexec/qrexec_policy index 7d418c8d..69fed14b 100755 --- a/qrexec/qrexec_policy +++ b/qrexec/qrexec_policy @@ -96,7 +96,7 @@ def do_execute(domain, target, user, exec_index, process_ident): # also, dangling "xl" would keep stderr open and may prevent closing connection spawn_target_if_necessary(target) cmd= QREXEC_CLIENT + " -d " + target + " '" + user - cmd+=":/usr/lib/qubes/qubes_rpc_multiplexer "+ exec_index + " " + domain + "'" + cmd+=":QUBESRPC "+ exec_index + " " + domain + "'" os.execl(QREXEC_CLIENT, "qrexec_client", "-d", domain, "-l", cmd, "-c", process_ident) def confirm_execution(domain, target, exec_index): From 11e142adb36d4d190a867ad6dd680973e61d6d6e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 18 Aug 2012 21:42:54 +0200 Subject: [PATCH 331/386] dom0/qrexec: use default user from VM settings --- qrexec/qrexec_policy | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/qrexec/qrexec_policy b/qrexec/qrexec_policy index 69fed14b..75dd136a 100755 --- a/qrexec/qrexec_policy +++ b/qrexec/qrexec_policy @@ -5,6 +5,7 @@ import os.path import subprocess import xen.lowlevel.xl import qubes.guihelpers +from qubes.qubes import QubesVmCollection import fcntl POLICY_FILE_DIR="/etc/qubes_rpc/policy" @@ -156,7 +157,16 @@ def main(): if policy_dict.has_key("action.user"): user=policy_dict["action.user"] else: - user="user" + qvm_collection = QubesVmCollection() + qvm_collection.lock_db_for_reading() + qvm_collection.load() + qvm_collection.unlock_db() + vm = qvm_collection.get_vm_by_name(target) + if vm is None: + print >> sys.stderr, "Cannot find settings of VM '%s', assuming default user 'user'" % target + user = "user" + else: + user = vm.default_user do_execute(domain, target, user, exec_index, process_ident) print >> sys.stderr, "Rpc denied:", domain, target, exec_index From 7c1dfe9266b65e76bd87d60c056e3440dee68e48 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 18 Aug 2012 22:08:26 +0200 Subject: [PATCH 332/386] dom0/qrexec: implement standalone policy evaluation (#12 pro) This change will allow to use the same policy mechanism to control clipboard copy between domains. --- qrexec/qrexec_policy | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/qrexec/qrexec_policy b/qrexec/qrexec_policy index 75dd136a..d25e9d08 100755 --- a/qrexec/qrexec_policy +++ b/qrexec/qrexec_policy @@ -5,6 +5,7 @@ import os.path import subprocess import xen.lowlevel.xl import qubes.guihelpers +from optparse import OptionParser from qubes.qubes import QubesVmCollection import fcntl @@ -127,10 +128,18 @@ def policy_editor(domain, target, exec_index): subprocess.call(["/usr/bin/zenity", "--info", "--text", text]) def main(): - domain=sys.argv[1] - target=sys.argv[2] - exec_index=sys.argv[3] - process_ident=sys.argv[4] + usage = "usage: %prog [options] " + parser = OptionParser (usage) + parser.add_option ("--assume-yes-for-ask", action="store_true", dest="assume_yes_for_ask", default=False, + help="Allow run of service without confirmation if policy say 'ask'") + parser.add_option ("--just-evaluate", action="store_true", dest="just_evaluate", default=False, + help="Do not run the service, only evaluate policy; retcode=0 means 'allow'") + + (options, args) = parser.parse_args () + domain=args[0] + target=args[1] + exec_index=args[2] + process_ident=args[3] policy_list=read_policy_file(exec_index) if policy_list==None: @@ -140,6 +149,9 @@ def main(): policy_list=list() policy_dict=find_policy(policy_list, domain, target) + + if policy_dict["action"] == "ask" and options.assume_yes_for_ask: + policy_dict["action"] = "allow" if policy_dict["action"] == "ask": user_choice = confirm_execution(domain, target, exec_index) @@ -150,7 +162,13 @@ def main(): policy_dict["action"] = "allow" else: policy_dict["action"] = "deny" - + + if options.just_evaluate: + if policy_dict["action"] == "allow": + exit(0) + else: + exit(1) + if policy_dict["action"] == "allow": if policy_dict.has_key("action.target"): target=policy_dict["action.target"] From 4fcaf3e7b718b44d00ee4e2a3f6852a71e472abe Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 22 Aug 2012 21:55:03 +0200 Subject: [PATCH 333/386] Revert "win: unmask evtchn before checking if libvchan_wait is needed" This reverts commit f7ce10db8f76f752cf9d65b420de352e70bdb048. This should be fixed by doing 0-length reads in qrexec main loop (instead of real read of fired port number). --- vchan/io.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/vchan/io.c b/vchan/io.c index 17a3abe3..e735c86a 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -125,12 +125,6 @@ int libvchan_write(struct libvchan *ctrl, char *data, int size) { int avail, avail_contig; int real_idx; -#ifdef WINNT - // because of mask-on-fire and do_notify called previously, evtchn must be - // unmasked before libvchan_wait. Do it before checking if data is - // available to prevent race - libvchan_prepare_to_select(ctrl); -#endif while ((avail = libvchan_buffer_space(ctrl)) == 0) if (libvchan_wait(ctrl) < 0) return -1; @@ -156,12 +150,6 @@ int libvchan_read(struct libvchan *ctrl, char *data, int size) { int avail, avail_contig; int real_idx; -#ifdef WINNT - // because of mask-on-fire and do_notify called previously, evtchn must be - // unmasked before libvchan_wait. Do it before checking if data is - // available to prevent race - libvchan_prepare_to_select(ctrl); -#endif while ((avail = libvchan_data_ready(ctrl)) == 0) if (libvchan_wait(ctrl) < 0) return -1; From 85565af560fd94b358352c643dfec78a021a5b26 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 23 Aug 2012 02:50:18 +0200 Subject: [PATCH 334/386] dom0/core: verify VM name for not-allowed characters (#656) --- dom0/qvm-core/qubes.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 8aa96634..687d1d36 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -324,6 +324,9 @@ class QubesVm(object): assert self.__qid < qubes_max_qid, "VM id out of bounds!" assert self.name is not None + if not self.verify_name(self.name): + raise QubesException("Invalid characters in VM name") + if self.netvm is not None: self.netvm.connected_vms[self.qid] = self @@ -491,6 +494,9 @@ class QubesVm(object): else: return False + def verify_name(self, name): + return re.match(r"^[a-zA-Z0-9-]*$", name) is not None + def pre_rename(self, new_name): pass @@ -498,6 +504,9 @@ class QubesVm(object): if self.is_running(): raise QubesException("Cannot change name of running VM!") + if not self.verify_name(name): + raise QubesException("Invalid characters in VM name") + self.pre_rename(name) new_conf = "%s/%s.conf" % (self.dir_path, name) From b7f5c6ac0bf143dd6c7986effa43ec974842538c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 23 Aug 2012 03:48:03 +0200 Subject: [PATCH 335/386] dom0/qvm-tools: catch exceptions while settting VM name (#656) --- dom0/qvm-tools/qvm-create | 21 +++++++++++++-------- dom0/qvm-tools/qvm-prefs | 6 +++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/dom0/qvm-tools/qvm-create b/dom0/qvm-tools/qvm-create index 1f8c47b1..d1c4b5ee 100755 --- a/dom0/qvm-tools/qvm-create +++ b/dom0/qvm-tools/qvm-create @@ -22,6 +22,7 @@ from qubes.qubes import QubesVmCollection from qubes.qubes import QubesVmLabels +from qubes.qubes import QubesException from optparse import OptionParser; import subprocess import re @@ -133,14 +134,18 @@ def main(): new_vm_template = template vm = None - if options.netvm: - vm = qvm_collection.add_new_netvm(vmname, new_vm_template, label = label) - elif options.proxyvm: - vm = qvm_collection.add_new_proxyvm(vmname, new_vm_template, label = label) - elif options.hvm: - vm = qvm_collection.add_new_hvm(vmname, label = label) - else: - vm = qvm_collection.add_new_appvm(vmname, new_vm_template, label = label) + try: + if options.netvm: + vm = qvm_collection.add_new_netvm(vmname, new_vm_template, label = label) + elif options.proxyvm: + vm = qvm_collection.add_new_proxyvm(vmname, new_vm_template, label = label) + elif options.hvm: + vm = qvm_collection.add_new_hvm(vmname, label = label) + else: + vm = qvm_collection.add_new_appvm(vmname, new_vm_template, label = label) + except QubesException as err: + print >> sys.stderr, "ERROR: {0}".format(err) + exit (1) if options.internal: vm.internal = True diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index d192f73f..2d690d30 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -375,7 +375,11 @@ def do_set(vms, vm, property, args): print >> sys.stderr, "ERROR: Property '{0}' not available for this VM".format(property) return False - return properties[property](vms, vm, args) + try: + return properties[property](vms, vm, args) + except Exception as err: + print >> sys.stderr, "ERROR: %s" % str(err) + return False def main(): From ab52153ab292772f3501a28b26a50515108a54a7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 23 Aug 2012 21:39:41 +0200 Subject: [PATCH 336/386] win/vchan: remove outstanding evtchn events on libvchan_wait Windows evtchn driver can double fire on one event (details in xenpci/evtchn_device_interface.c:EvtChn_EvtIoWrite). Less intrusive way of fixing it is just remove all events from queue on libvchan_wait (to prevent queue fill). This won't hurt because we are interested in events only sent after xc_evtchn_unmask call which is one line below. --- vchan/io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vchan/io.c b/vchan/io.c index e735c86a..9709109e 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -77,7 +77,7 @@ int libvchan_wait(struct libvchan *ctrl) { int ret; - ret = xc_evtchn_pending(ctrl->evfd); + ret = xc_evtchn_pending_with_flush(ctrl->evfd); if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport)) return -1; if (ret!=-1 && libvchan_is_eof(ctrl)) From 5c826c78cca6ebd2de958afe04b7445b75777e58 Mon Sep 17 00:00:00 2001 From: Joanna Rutkowska Date: Fri, 24 Aug 2012 15:36:31 +0200 Subject: [PATCH 337/386] version 2.0.36-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index 64c4a2b0..1bb41e63 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -2.0.35 +2.0.36 From e03eab71371e9e9bb08c9599135cbde2a22b28be Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:06:25 +0200 Subject: [PATCH 338/386] vm/filecopy: remove duplicated error reporting Each write_all is check for errors (when it makes sense) with own perror call, so don't dupplicate messages. --- qubes_rpc/ioall.c | 1 - 1 file changed, 1 deletion(-) diff --git a/qubes_rpc/ioall.c b/qubes_rpc/ioall.c index 239f3333..fff063cc 100644 --- a/qubes_rpc/ioall.c +++ b/qubes_rpc/ioall.c @@ -42,7 +42,6 @@ int write_all(int fd, void *buf, int size) if (ret == -1 && errno == EINTR) continue; if (ret <= 0) { - perror_wrapper("write"); return 0; } written += ret; From 77b2758c93fedc0238d0529caa4d8e31076c4074 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:11:22 +0200 Subject: [PATCH 339/386] vm/qubes-rpc: move set_(non)?block to ioall.c as can be used not only in qrexec --- qrexec/write_stdin.c | 12 ------------ qubes_rpc/ioall.c | 11 +++++++++++ qubes_rpc/ioall.h | 2 ++ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/qrexec/write_stdin.c b/qrexec/write_stdin.c index 7ace53b6..939b72ea 100644 --- a/qrexec/write_stdin.c +++ b/qrexec/write_stdin.c @@ -109,18 +109,6 @@ int write_stdin(int fd, int client_id, char *data, int len, } -void set_nonblock(int fd) -{ - int fl = fcntl(fd, F_GETFL, 0); - fcntl(fd, F_SETFL, fl | O_NONBLOCK); -} - -void set_block(int fd) -{ - int fl = fcntl(fd, F_GETFL, 0); - fcntl(fd, F_SETFL, fl & ~O_NONBLOCK); -} - /* Data feed process has exited, so we need to clear all control structures for the client. However, if we have buffered data for the client (which is rare btw), diff --git a/qubes_rpc/ioall.c b/qubes_rpc/ioall.c index fff063cc..355b88fa 100644 --- a/qubes_rpc/ioall.c +++ b/qubes_rpc/ioall.c @@ -32,6 +32,17 @@ void perror_wrapper(char * msg) errno=prev; } +void set_nonblock(int fd) +{ + int fl = fcntl(fd, F_GETFL, 0); + fcntl(fd, F_SETFL, fl | O_NONBLOCK); +} + +void set_block(int fd) +{ + int fl = fcntl(fd, F_GETFL, 0); + fcntl(fd, F_SETFL, fl & ~O_NONBLOCK); +} int write_all(int fd, void *buf, int size) { diff --git a/qubes_rpc/ioall.h b/qubes_rpc/ioall.h index 1a700c6c..c9913e8f 100644 --- a/qubes_rpc/ioall.h +++ b/qubes_rpc/ioall.h @@ -1,3 +1,5 @@ int write_all(int fd, void *buf, int size); int read_all(int fd, void *buf, int size); int copy_fd_all(int fdout, int fdin); +void set_nonblock(int fd); +void set_block(int fd); From c9a43f66edfc8dea94db4c2d0f05e13f75434282 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:14:16 +0200 Subject: [PATCH 340/386] dom0/qrexec: do not exit client before all data in both direction transfered When qrexec_client cannot write to its stdout, this doesn't necessary mean that there is no data in opposite direction. Simple example is RPC service: when process in destination VM closes its stdin, it can still send some data to triggering VM. --- qrexec/qrexec_client.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/qrexec/qrexec_client.c b/qrexec/qrexec_client.c index 4065e6b0..cb47042f 100644 --- a/qrexec/qrexec_client.c +++ b/qrexec/qrexec_client.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "qrexec.h" #include "buffer.h" #include "glue.h" @@ -108,6 +109,10 @@ void handle_input(int s) if (ret == 0) { local_stdout_fd = -1; shutdown(s, SHUT_WR); + if (local_stdin_fd == -1) { + // if pipe in opposite direction already closed, no need to stay alive + do_exit(0); + } } if (!write_all(s, buf, ret)) { perror("write daemon"); @@ -136,11 +141,20 @@ void handle_daemon_data(int s) switch (hdr.type) { case MSG_SERVER_TO_CLIENT_STDOUT: - if (hdr.len == 0) + if (local_stdin_fd == -1) + break; + if (hdr.len == 0) { close(local_stdin_fd); - else if (!write_all(local_stdin_fd, buf, hdr.len)) { - perror("write local stdout"); - do_exit(1); + local_stdin_fd = -1; + } else if (!write_all(local_stdin_fd, buf, hdr.len)) { + if (errno == EPIPE) { + // remote side have closed its stdin, handle data in oposite + // direction (if any) before exit + local_stdin_fd = -1; + } else { + perror("write local stdout"); + do_exit(1); + } } break; case MSG_SERVER_TO_CLIENT_STDERR: From 62f626e68f77f742ffad5f61d7b574c16a207ea9 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:19:47 +0200 Subject: [PATCH 341/386] vm/filecopy: close unused fds in parent process --- qubes_rpc/qfile-unpacker.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qubes_rpc/qfile-unpacker.c b/qubes_rpc/qfile-unpacker.c index dd0a510d..05887192 100644 --- a/qubes_rpc/qfile-unpacker.c +++ b/qubes_rpc/qfile-unpacker.c @@ -81,6 +81,8 @@ int main(int argc, char ** argv) default:; } + close(0); + close(1); setuid(uid); close(pipefds[1]); wait_for_child(pipefds[0]); From 87511f3112718c9556a39a209447c5cb6f5a12ec Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:22:00 +0200 Subject: [PATCH 342/386] vm/filecopy: support nonblocking fd in read_all This will be needed to (non blocking) check if data is available on pipe - especially to receive possible error from the other end (which will be introduced sometime later). --- qubes_rpc/ioall.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/qubes_rpc/ioall.c b/qubes_rpc/ioall.c index 355b88fa..2a81df4d 100644 --- a/qubes_rpc/ioall.c +++ b/qubes_rpc/ioall.c @@ -75,9 +75,14 @@ int read_all(int fd, void *buf, int size) return 0; } if (ret < 0) { - perror_wrapper("read"); + if (errno != EAGAIN) + perror_wrapper("read"); return 0; } + if (got_read == 0) { + // force blocking operation on further reads + set_block(fd); + } got_read += ret; } // fprintf(stderr, "read %d bytes\n", size); From cec58c048a8c1d1bf52a60779a9a88c7377027c7 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 01:26:19 +0200 Subject: [PATCH 343/386] vm/filecopy-agent: check for unpacker errors during transfer (#239) If unpacker encounter error it sends result header immediately - detect it as soon as possible and do not send rest of file(s). --- qubes_rpc/qfile-agent.c | 71 +++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/qubes_rpc/qfile-agent.c b/qubes_rpc/qfile-agent.c index 4b37738f..0a1256fd 100644 --- a/qubes_rpc/qfile-agent.c +++ b/qubes_rpc/qfile-agent.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include "filecopy.h" #include "crc32.h" @@ -49,6 +50,37 @@ void do_notify_progress(long long total, int flag) } } +void wait_for_result() +{ + struct result_header hdr; + + if (!read_all(0, &hdr, sizeof(hdr))) { + if (errno == EAGAIN) { + // no result sent and stdin still open + return; + } else { + // other read error or EOF + exit(1); // hopefully remote has produced error message + } + } + if (hdr.error_code != 0) { + switch (hdr.error_code) { + case EEXIST: + gui_fatal("File copy: not overwriting existing file. Clean incoming dir, and retry copy"); + break; + case EINVAL: + gui_fatal("File copy: Corrupted data from packer"); + break; + default: + gui_fatal("File copy: %s", + strerror(hdr.error_code)); + } + } + if (hdr.crc32 != crc32_sum) { + gui_fatal("File transfer failed: checksum mismatch"); + } +} + void notify_progress(int size, int flag) { static long long total = 0; @@ -56,6 +88,11 @@ void notify_progress(int size, int flag) total += size; if (total > prev_total + PROGRESS_NOTIFY_DELTA || (flag != PROGRESS_FLAG_NORMAL)) { + // check for possible error from qfile-unpacker; if error occured, + // exit() will be called, so don't bother with current state + // (notify_progress can be called as callback from copy_file()) + if (flag == PROGRESS_FLAG_NORMAL) + wait_for_result(); do_notify_progress(total, flag); prev_total = total; } @@ -64,8 +101,11 @@ void notify_progress(int size, int flag) void write_headers(struct file_header *hdr, char *filename) { if (!write_all_with_crc(1, hdr, sizeof(*hdr)) - || !write_all_with_crc(1, filename, hdr->namelen)) + || !write_all_with_crc(1, filename, hdr->namelen)) { + set_block(0); + wait_for_result(); exit(1); + } } int single_file_processor(char *filename, struct stat *st) @@ -89,13 +129,15 @@ int single_file_processor(char *filename, struct stat *st) hdr.filelen = st->st_size; write_headers(&hdr, filename); ret = copy_file(1, fd, hdr.filelen, &crc32_sum); - // if COPY_FILE_WRITE_ERROR, hopefully remote will produce a message if (ret != COPY_FILE_OK) { if (ret != COPY_FILE_WRITE_ERROR) gui_fatal("Copying file %s: %s", filename, copy_file_status_to_str(ret)); - else + else { + set_block(0); + wait_for_result(); exit(1); + } } close(fd); } @@ -109,9 +151,14 @@ int single_file_processor(char *filename, struct stat *st) gui_fatal("readlink %s", filename); hdr.filelen = st->st_size + 1; write_headers(&hdr, filename); - if (!write_all_with_crc(1, name, st->st_size + 1)) + if (!write_all_with_crc(1, name, st->st_size + 1)) { + set_block(0); + wait_for_result(); exit(1); + } } + // check for possible error from qfile-unpacker + wait_for_result(); return 0; } @@ -147,7 +194,6 @@ int do_fs_walk(char *file) void notify_end_and_wait_for_result() { - struct result_header hdr; struct file_header end_hdr; /* nofity end of transfer */ @@ -156,17 +202,8 @@ void notify_end_and_wait_for_result() end_hdr.filelen = 0; write_all_with_crc(1, &end_hdr, sizeof(end_hdr)); - /* wait for result */ - if (!read_all(0, &hdr, sizeof(hdr))) { - exit(1); // hopefully remote has produced error message - } - if (hdr.error_code != 0) { - gui_fatal("Error writing files: %s", - strerror(hdr.error_code)); - } - if (hdr.crc32 != crc32_sum) { - gui_fatal("File transfer failed: checksum mismatch"); - } + set_block(0); + wait_for_result(); } char *get_abs_path(char *cwd, char *pathname) @@ -186,6 +223,8 @@ int main(int argc, char **argv) char *sep; signal(SIGPIPE, SIG_IGN); + // this will allow checking for possible feedback packet in the middle of transfer + set_nonblock(0); notify_progress(0, PROGRESS_FLAG_INIT); crc32_sum = 0; cwd = getcwd(NULL, 0); From fefb6d9cff47100e4620f232c35328ddf857b50d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Aug 2012 02:09:45 +0200 Subject: [PATCH 344/386] vm+dom0/filecopy-unpacker: send errors to qfile-agent istead of local message (#239) Because unpacker no longer require GUI access, there is no need for separate process for error reporting. Which greatly simplify the code. --- dom0/qubes_rpc/qfile-dom0-unpacker.c | 28 ++++-------------- qubes_rpc/qfile-unpacker.c | 43 +++------------------------- qubes_rpc/unpack.c | 41 +++++++++++--------------- 3 files changed, 26 insertions(+), 86 deletions(-) diff --git a/dom0/qubes_rpc/qfile-dom0-unpacker.c b/dom0/qubes_rpc/qfile-dom0-unpacker.c index 757a2c43..4eee29c7 100644 --- a/dom0/qubes_rpc/qfile-dom0-unpacker.c +++ b/dom0/qubes_rpc/qfile-dom0-unpacker.c @@ -52,12 +52,11 @@ void wait_for_child(int statusfd) } } -extern void do_unpack(int); +extern int do_unpack(void); int main(int argc, char ** argv) { char *incoming_dir; - int pipefds[2]; int uid; char *var; long long files_limit = DEFAULT_MAX_UPDATES_FILES; @@ -73,32 +72,15 @@ int main(int argc, char ** argv) if ((var=getenv("UPDATES_MAX_FILES"))) files_limit = atoll(var); - pipe(pipefds); - uid = prepare_creds_return_uid(argv[1]); incoming_dir = argv[2]; mkdir(incoming_dir, 0700); if (chdir(incoming_dir)) gui_fatal("Error chdir to %s", incoming_dir); - switch (fork()) { - case -1: - perror("fork"); - exit(1); - case 0: - if (chroot(incoming_dir)) //impossible - gui_fatal("Error chroot to %s", incoming_dir); - setuid(uid); - close(pipefds[0]); - set_size_limit(bytes_limit, files_limit); - do_unpack(pipefds[1]); - exit(0); - default:; - } - + if (chroot(incoming_dir)) //impossible + gui_fatal("Error chroot to %s", incoming_dir); setuid(uid); - close(pipefds[1]); - wait_for_child(pipefds[0]); - - return 0; + set_size_limit(bytes_limit, files_limit); + return do_unpack(); } diff --git a/qubes_rpc/qfile-unpacker.c b/qubes_rpc/qfile-unpacker.c index 05887192..402a0092 100644 --- a/qubes_rpc/qfile-unpacker.c +++ b/qubes_rpc/qfile-unpacker.c @@ -29,32 +29,14 @@ int prepare_creds_return_uid(char *username) return pwd->pw_uid; } -void wait_for_child(int statusfd) -{ - int status; - if (read(statusfd, &status, sizeof status)!=sizeof status) - gui_fatal("File copy error: Internal error reading status from unpacker"); - errno = status; - switch (status) { - case LEGAL_EOF: break; - case 0: gui_fatal("File copy: Connection terminated unexpectedly"); break; - case EINVAL: gui_fatal("File copy: Corrupted data from packer"); break; - case EEXIST: gui_fatal("File copy: not overwriting existing file. Clean ~/incoming, and retry copy"); break; - default: gui_fatal("File copy"); - } -} - -extern void do_unpack(int); +extern int do_unpack(void); int main(int argc, char ** argv) { char *incoming_dir; - int pipefds[2]; int uid; char *remote_domain; - pipe(pipefds); - uid = prepare_creds_return_uid("user"); remote_domain = getenv("QREXEC_REMOTE_DOMAIN"); @@ -67,25 +49,8 @@ int main(int argc, char ** argv) mkdir(incoming_dir, 0700); if (chdir(incoming_dir)) gui_fatal("Error chdir to %s", incoming_dir); - switch (fork()) { - case -1: - perror("fork"); - exit(1); - case 0: - if (chroot(incoming_dir)) //impossible - gui_fatal("Error chroot to %s", incoming_dir); - setuid(uid); - close(pipefds[0]); - do_unpack(pipefds[1]); - exit(0); - default:; - } - - close(0); - close(1); + if (chroot(incoming_dir)) //impossible + gui_fatal("Error chroot to %s", incoming_dir); setuid(uid); - close(pipefds[1]); - wait_for_child(pipefds[0]); - - return 0; + return do_unpack(); } diff --git a/qubes_rpc/unpack.c b/qubes_rpc/unpack.c index 580095d0..2ce10fc1 100644 --- a/qubes_rpc/unpack.c +++ b/qubes_rpc/unpack.c @@ -35,14 +35,22 @@ int read_all_with_crc(int fd, void *buf, int size) { return ret; } -int global_status_fd; -void do_exit(int code) -{ - int codebuf = code; - write(global_status_fd, &codebuf, sizeof codebuf); - exit(0); +void send_status_and_crc(int code) { + struct result_header hdr; + int saved_errno; + + saved_errno = errno; + hdr.error_code = code; + hdr.crc32 = crc32_sum; + write_all(1, &hdr, sizeof(hdr)); + errno = saved_errno; } +void do_exit(int code) +{ + send_status_and_crc(code); + exit(code); +} void fix_times_and_perms(struct file_header *untrusted_hdr, char *untrusted_name) @@ -130,20 +138,8 @@ void process_one_file(struct file_header *untrusted_hdr) do_exit(EINVAL); } -void send_status_and_crc() { - struct result_header hdr; - int saved_errno; - - saved_errno = errno; - hdr.error_code = errno; - hdr.crc32 = crc32_sum; - write_all(1, &hdr, sizeof(hdr)); - errno = saved_errno; -} - -void do_unpack(int fd) +int do_unpack() { - global_status_fd = fd; struct file_header untrusted_hdr; /* initialize checksum */ crc32_sum = 0; @@ -158,9 +154,6 @@ void do_unpack(int fd) if (files_limit && total_files > files_limit) do_exit(EDQUOT); } - send_status_and_crc(); - if (errno) - do_exit(errno); - else - do_exit(LEGAL_EOF); + send_status_and_crc(errno); + return errno; } From 6305e6cbe1cce3fefea47346f407d958fbd42670 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 26 Aug 2012 14:41:35 +0200 Subject: [PATCH 345/386] dom0/qvm-block: rework device name parsing to better support c0p1 name style --- dom0/qvm-core/qubesutils.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index 60c5404b..69fc6b24 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -122,21 +122,14 @@ def block_name_to_majorminor(name): major = 0 minor = 0 dXpY_style = False - - name_match = re.match(r"([a-z]+)([a-z])([0-9]*)", name) - if not name_match: - name_match = re.match(r"([a-z]+)([0-9]*)(?:p([0-9]+)?", name) - if not name_match: - raise QubesException("Invalid device name: %s" % name) - else: - dXpY_style = True - disk = True - if name_match.group(1) == "xvd": + + if name.startswith("xvd"): major = 202 - elif name_match.group(1) == "sd": + elif name.startswith("sd"): major = 8 - elif name_match.group(1) == "mmcblk": + elif name.startswith("mmcblk"): + dXpY_style = True major = 179 elif name.startswith("scd"): disk = False @@ -154,6 +147,13 @@ def block_name_to_majorminor(name): # Unknown device return (0, 0) + if not dXpY_style: + name_match = re.match(r"^([a-z]+)([a-z])([0-9]*)$", name) + else: + name_match = re.match(r"^([a-z]+)([0-9]*)(?:p([0-9]+))?$", name) + if not name_match: + raise QubesException("Invalid device name: %s" % name) + if disk: if dXpY_style: minor = int(name_match.group(2))*8 @@ -191,7 +191,7 @@ def block_find_unused_frontend(vm = None): return None def block_list(vm = None, system_disks = False): - device_re = re.compile(r"^[a-z0-9]{1,8}$") + device_re = re.compile(r"^[a-z0-9]{1,12}$") # FIXME: any better idea of desc_re? desc_re = re.compile(r"^.{1,255}$") mode_re = re.compile(r"^[rw]$") From 1c049208336d8e29dbd168e3184e444e9e1bf84e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:18:35 +0200 Subject: [PATCH 346/386] vm/qrexec: log exit code in "sending exit code" message --- qrexec/qrexec_agent.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index f8d7e20e..f5e80256 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -228,8 +228,8 @@ void send_exit_code(int client_id, int status) s_hdr.len = sizeof status; write_all_vchan_ext(&s_hdr, sizeof s_hdr); write_all_vchan_ext(&status, sizeof(status)); - fprintf(stderr, "send exit code for client_id %d pid %d\n", - client_id, client_info[client_id].pid); + fprintf(stderr, "send exit code %d for client_id %d pid %d\n", + status, client_id, client_info[client_id].pid); } From 798d239c15c2b00859c4762671539de5845aee2f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:20:25 +0200 Subject: [PATCH 347/386] vm/qrexec: fix race between child cleanup and select call reap_children() can close FD, which was already added to FD_SET for select. This can lead to EBADF and agent termination. --- qrexec/qrexec_agent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index f5e80256..eda5199e 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -554,14 +554,14 @@ int main() for (;;) { + sigprocmask(SIG_BLOCK, &chld_set, NULL); + if (child_exited) + reap_children(); max = fill_fds_for_select(&rdset, &wrset); if (buffer_space_vchan_ext() <= sizeof(struct server_header)) FD_ZERO(&rdset); - sigprocmask(SIG_BLOCK, &chld_set, NULL); - if (child_exited) - reap_children(); wait_for_vchan_or_argfd(max, &rdset, &wrset); sigprocmask(SIG_UNBLOCK, &chld_set, NULL); From 6984c4d795d84c87afa404e150f19fe8da50620b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:24:02 +0200 Subject: [PATCH 348/386] vm/qrexec: better handle the case when child process closes its stdin Instead of assuming process termination (because of write returned EPIPE), just do not write to the process pipe, but still process the data in opposite direction until EOF received. --- qrexec/qrexec_agent.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index eda5199e..66d14045 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -239,8 +239,9 @@ void remove_process(int client_id, int status) int i; if (!client_info[client_id].pid) return; - fork_and_flush_stdin(client_info[client_id].stdin_fd, - &client_info[client_id].buffer); + if (client_info[client_id].stdin_fd >= 0) + fork_and_flush_stdin(client_info[client_id].stdin_fd, + &client_info[client_id].buffer); #if 0 // let's let it die by itself, possibly after it has received buffered stdin kill(client_info[client_id].pid, SIGKILL); @@ -283,7 +284,7 @@ void handle_input(int client_id, int len) char buf[len]; read_all_vchan_ext(buf, len); - if (!client_info[client_id].pid) + if (!client_info[client_id].pid || client_info[client_id].stdin_fd == -1) return; if (len == 0) { @@ -306,7 +307,10 @@ void handle_input(int client_id, int len) client_info[client_id].is_blocked = 1; break; case WRITE_STDIN_ERROR: - remove_process(client_id, 128); + // do not remove process, as it still can write data to stdout + close(client_info[client_id].stdin_fd); + client_info[client_id].stdin_fd = -1; + client_info[client_id].is_blocked = 0; break; default: fprintf(stderr, "unknown write_stdin?\n"); @@ -494,7 +498,11 @@ void flush_client_data_agent(int client_id) } break; case WRITE_STDIN_ERROR: - remove_process(client_id, 128); + // do not remove process, as it still can write data to stdout + info->is_blocked = 0; + close(info->stdin_fd); + info->stdin_fd = -1; + info->is_close_after_flush_needed = 0; break; case WRITE_STDIN_BUFFERED: break; From 4ae822846d9250a115d0597302a2141128cf73a6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:27:27 +0200 Subject: [PATCH 349/386] vm/filecopy: add one missing write() error checking --- qubes_rpc/unpack.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qubes_rpc/unpack.c b/qubes_rpc/unpack.c index 2ce10fc1..e87a067b 100644 --- a/qubes_rpc/unpack.c +++ b/qubes_rpc/unpack.c @@ -42,7 +42,8 @@ void send_status_and_crc(int code) { saved_errno = errno; hdr.error_code = code; hdr.crc32 = crc32_sum; - write_all(1, &hdr, sizeof(hdr)); + if (!write_all(1, &hdr, sizeof(hdr))) + perror("write status"); errno = saved_errno; } From d1882bb9fcf5bbc2e2e4f6b1c65310f87fc5fbf2 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:28:23 +0200 Subject: [PATCH 350/386] vm/filecopy: close stdin when no more data will be read This will allow qrexec_agent drop the data instead of buffering it. --- qubes_rpc/unpack.c | 1 + 1 file changed, 1 insertion(+) diff --git a/qubes_rpc/unpack.c b/qubes_rpc/unpack.c index e87a067b..9c018fa2 100644 --- a/qubes_rpc/unpack.c +++ b/qubes_rpc/unpack.c @@ -49,6 +49,7 @@ void send_status_and_crc(int code) { void do_exit(int code) { + close(0); send_status_and_crc(code); exit(code); } From 89ab002db13730f0f99364d6ee3b589fc9e7bc26 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:32:26 +0200 Subject: [PATCH 351/386] dom0/qrexec: minor FD leak fix qrexec_client will be shortly terminated after that, but still fix it. --- qrexec/qrexec_client.c | 1 + 1 file changed, 1 insertion(+) diff --git a/qrexec/qrexec_client.c b/qrexec/qrexec_client.c index cb47042f..81550c2c 100644 --- a/qrexec/qrexec_client.c +++ b/qrexec/qrexec_client.c @@ -107,6 +107,7 @@ void handle_input(int s) do_exit(1); } if (ret == 0) { + close(local_stdout_fd); local_stdout_fd = -1; shutdown(s, SHUT_WR); if (local_stdin_fd == -1) { From f79101d114a768715bf62b92e8d798d098068b79 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:36:06 +0200 Subject: [PATCH 352/386] dom0/qrexec: fix the case when client disconnected while sending cmdline Previously there was not cleaned up entry in clients table. Not critical, as will be reset to known state at new client connect, but still fix it. --- qrexec/qrexec_daemon.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/qrexec/qrexec_daemon.c b/qrexec/qrexec_daemon.c index 9298b836..ef69289b 100644 --- a/qrexec/qrexec_daemon.c +++ b/qrexec/qrexec_daemon.c @@ -186,17 +186,18 @@ void terminate_client_and_flush_data(int fd) write_all_vchan_ext(&s_hdr, sizeof(s_hdr)); } -void get_cmdline_body_from_client_and_pass_to_agent(int fd, struct server_header +int get_cmdline_body_from_client_and_pass_to_agent(int fd, struct server_header *s_hdr) { int len = s_hdr->len; char buf[len]; if (!read_all(fd, buf, len)) { terminate_client_and_flush_data(fd); - return; + return 0; } write_all_vchan_ext(s_hdr, sizeof(*s_hdr)); write_all_vchan_ext(buf, len); + return 1; } void handle_cmdline_message_from_client(int fd) @@ -224,7 +225,10 @@ void handle_cmdline_message_from_client(int fd) s_hdr.client_id = fd; s_hdr.len = hdr.len; - get_cmdline_body_from_client_and_pass_to_agent(fd, &s_hdr); + if (!get_cmdline_body_from_client_and_pass_to_agent(fd, &s_hdr)) + // client disconnected while sending cmdline, above call already + // cleaned up client info + return; clients[fd].state = CLIENT_DATA; set_nonblock(fd); // so that we can detect full queue without blocking if (hdr.type == MSG_CLIENT_TO_SERVER_JUST_EXEC) From 3bce6047b50a6497efdfbe8e4378c311bcbb8980 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:49:45 +0200 Subject: [PATCH 353/386] dom0/qrexec: properly process data after client terminated one way of transfer Instead of removing client from list at EPIPE error from write, assume that client does not wish read future data, but still can write something. --- qrexec/qrexec_client.c | 20 ++++++++++++++++++-- qrexec/qrexec_daemon.c | 31 +++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/qrexec/qrexec_client.c b/qrexec/qrexec_client.c index 81550c2c..b4d1835b 100644 --- a/qrexec/qrexec_client.c +++ b/qrexec/qrexec_client.c @@ -116,8 +116,24 @@ void handle_input(int s) } } if (!write_all(s, buf, ret)) { - perror("write daemon"); - do_exit(1); + if (errno == EPIPE) { + // daemon disconnected its end of socket, so no future data will be + // send there; there is no sense to read from child stdout + // + // since AF_UNIX socket is buffered it doesn't mean all data was + // received from the agent + close(local_stdout_fd); + local_stdout_fd = -1; + if (local_stdin_fd == -1) { + // since child does no longer accept data on its stdin, doesn't + // make sense to process the data from the daemon + // + // we don't know real exit VM process code (exiting here, before + // MSG_SERVER_TO_CLIENT_EXIT_CODE message) + do_exit(1); + } + } else + perror("write daemon"); } } diff --git a/qrexec/qrexec_daemon.c b/qrexec/qrexec_daemon.c index ef69289b..14e5cbcc 100644 --- a/qrexec/qrexec_daemon.c +++ b/qrexec/qrexec_daemon.c @@ -38,8 +38,10 @@ enum client_flags { CLIENT_INVALID = 0, // table slot not used CLIENT_CMDLINE = 1, // waiting for cmdline from client CLIENT_DATA = 2, // waiting for data from client - CLIENT_DONT_READ = 4, // don't read from the client, the other side pipe is full, or EOF - CLIENT_OUTQ_FULL = 8 // don't write to client, its stdin pipe is full + CLIENT_DONT_READ = 4, // don't read from the client, the other side pipe is full, or EOF (additionally marked with CLIENT_EOF) + CLIENT_OUTQ_FULL = 8, // don't write to client, its stdin pipe is full + CLIENT_EOF = 16, // got EOF + CLIENT_EXITED = 32 // only send remaining data from client and remove from list }; struct _client { @@ -170,7 +172,7 @@ void terminate_client_and_flush_data(int fd) int i; struct server_header s_hdr; - if (fork_and_flush_stdin(fd, &clients[fd].buffer)) + if (!(clients[fd].state & CLIENT_EXITED) && fork_and_flush_stdin(fd, &clients[fd].buffer)) children_count++; close(fd); clients[fd].state = CLIENT_INVALID; @@ -266,7 +268,10 @@ void handle_message_from_client(int fd) write_all_vchan_ext(&s_hdr, sizeof(s_hdr)); write_all_vchan_ext(buf, ret); if (ret == 0) // EOF - so don't select() on this client - clients[fd].state |= CLIENT_DONT_READ; + clients[fd].state |= CLIENT_DONT_READ | CLIENT_EOF; + if (clients[fd].state & CLIENT_EXITED) + //client already exited and all data sent - cleanup now + terminate_client_and_flush_data(fd); } /* @@ -282,7 +287,14 @@ void write_buffered_data_to_client(int client_id) clients[client_id].state &= ~CLIENT_OUTQ_FULL; break; case WRITE_STDIN_ERROR: - terminate_client_and_flush_data(client_id); + // do not write to this fd anymore + clients[client_id].state |= CLIENT_EXITED; + if (clients[client_id].state & CLIENT_EOF) + terminate_client_and_flush_data(client_id); + else + // client will be removed when read returns 0 (EOF) + // clear CLIENT_OUTQ_FULL flag to no select on this fd anymore + clients[client_id].state &= ~CLIENT_OUTQ_FULL; break; case WRITE_STDIN_BUFFERED: // no room for all data, don't clear CLIENT_OUTQ_FULL flag break; @@ -305,6 +317,9 @@ void get_packet_data_from_agent_and_pass_to_client(int client_id, struct client_ /* make both the header and data be consecutive in the buffer */ *(struct client_header *) buf = *hdr; read_all_vchan_ext(buf + sizeof(*hdr), len); + if (clients[client_id].state & CLIENT_EXITED) + // ignore data for no longer running client + return; switch (write_stdin (client_id, client_id, buf, len + sizeof(*hdr), @@ -315,7 +330,11 @@ void get_packet_data_from_agent_and_pass_to_client(int client_id, struct client_ clients[client_id].state |= CLIENT_OUTQ_FULL; break; case WRITE_STDIN_ERROR: - terminate_client_and_flush_data(client_id); + // do not write to this fd anymore + clients[client_id].state |= CLIENT_EXITED; + // if already got EOF, remove client + if (clients[client_id].state & CLIENT_EOF) + terminate_client_and_flush_data(client_id); break; default: fprintf(stderr, "unknown write_stdin?\n"); From 4e2f47d95c60a3e5b79244df459ecd45c46ca05a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:53:58 +0200 Subject: [PATCH 354/386] dom0/spec: mark qrexec policy as config files Prevent override on upgrade, when user makes some own changes (especially "always allow" feature). --- rpm_spec/core-dom0.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 1e34a492..9601733f 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -407,12 +407,12 @@ fi /usr/lib/qubes/qubes_rpc_multiplexer /usr/lib/qubes/qrexec_policy %dir /etc/qubes_rpc/policy -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.Filecopy -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.OpenInVM -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.SyncAppMenus -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.NotifyUpdates -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.ReceiveUpdates -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.VMShell +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.Filecopy +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.OpenInVM +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.SyncAppMenus +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.NotifyUpdates +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.ReceiveUpdates +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.VMShell /etc/qubes_rpc/qubes.SyncAppMenus /etc/qubes_rpc/qubes.NotifyUpdates /etc/qubes_rpc/qubes.ReceiveUpdates From 46fd664ba334ec97da80b48d8948d99bff1cab06 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 30 Aug 2012 17:44:52 +0200 Subject: [PATCH 355/386] dom0/qrexec: implement default user handling in qrexec_daemon This will simplify using qrexec from utilities which doen't load qubes.xml normally (like qrexec_policy, gui daemon). --- dom0/qvm-core/qubes.py | 2 +- qrexec/qrexec_daemon.c | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 687d1d36..52519384 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1441,7 +1441,7 @@ class QubesVm(object): if verbose: print >> sys.stderr, "--> Starting the qrexec daemon..." xid = self.get_xid() - retcode = subprocess.call ([qrexec_daemon_path, str(xid)]) + retcode = subprocess.call ([qrexec_daemon_path, str(xid), self.default_user]) if (retcode != 0) : self.force_shutdown() raise OSError ("ERROR: Cannot execute qrexec_daemon!") diff --git a/qrexec/qrexec_daemon.c b/qrexec/qrexec_daemon.c index 14e5cbcc..2c1af591 100644 --- a/qrexec/qrexec_daemon.c +++ b/qrexec/qrexec_daemon.c @@ -59,6 +59,9 @@ struct _client clients[MAX_CLIENTS]; // data on all qrexec_client connections int max_client_fd = -1; // current max fd of all clients; so that we need not to scan all the "clients" table int qrexec_daemon_unix_socket_fd; // /var/run/qubes/qrexec.xid descriptor +char *default_user = "user"; +char default_user_keyword[] = "DEFAULT:"; +#define default_user_keyword_len_without_colon (sizeof(default_user_keyword)-2) void sigusr1_handler(int x) { @@ -193,12 +196,22 @@ int get_cmdline_body_from_client_and_pass_to_agent(int fd, struct server_header { int len = s_hdr->len; char buf[len]; + int use_default_user = 0; if (!read_all(fd, buf, len)) { terminate_client_and_flush_data(fd); return 0; } + if (!strncmp(buf, default_user_keyword, default_user_keyword_len_without_colon+1)) { + use_default_user = 1; + s_hdr->len -= default_user_keyword_len_without_colon; // -1 because of colon + s_hdr->len += strlen(default_user); + } write_all_vchan_ext(s_hdr, sizeof(*s_hdr)); - write_all_vchan_ext(buf, len); + if (use_default_user) { + write_all_vchan_ext(default_user, strlen(default_user)); + write_all_vchan_ext(buf+default_user_keyword_len_without_colon, len-default_user_keyword_len_without_colon); + } else + write_all_vchan_ext(buf, len); return 1; } @@ -580,10 +593,12 @@ int main(int argc, char **argv) int max; sigset_t chld_set; - if (argc != 2) { - fprintf(stderr, "usage: %s domainid\n", argv[0]); + if (argc != 2 && argc != 3) { + fprintf(stderr, "usage: %s domainid [default user]\n", argv[0]); exit(1); } + if (argc == 3) + default_user = argv[2]; init(atoi(argv[1])); sigemptyset(&chld_set); sigaddset(&chld_set, SIGCHLD); From 3f5a34f635f997b987285423fa613d8bddd3264c Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 30 Aug 2012 17:47:32 +0200 Subject: [PATCH 356/386] Revert "dom0/qrexec: use default user from VM settings" This reverts commit b1ccc9a510e465b8b59f12bafb7735664c4101d0. This can be handled by qrexec_daemon itself. Conflicts: qrexec/qrexec_policy --- qrexec/qrexec_policy | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/qrexec/qrexec_policy b/qrexec/qrexec_policy index d25e9d08..c6f55aaa 100755 --- a/qrexec/qrexec_policy +++ b/qrexec/qrexec_policy @@ -6,7 +6,6 @@ import subprocess import xen.lowlevel.xl import qubes.guihelpers from optparse import OptionParser -from qubes.qubes import QubesVmCollection import fcntl POLICY_FILE_DIR="/etc/qubes_rpc/policy" @@ -175,16 +174,7 @@ def main(): if policy_dict.has_key("action.user"): user=policy_dict["action.user"] else: - qvm_collection = QubesVmCollection() - qvm_collection.lock_db_for_reading() - qvm_collection.load() - qvm_collection.unlock_db() - vm = qvm_collection.get_vm_by_name(target) - if vm is None: - print >> sys.stderr, "Cannot find settings of VM '%s', assuming default user 'user'" % target - user = "user" - else: - user = vm.default_user + user="user" do_execute(domain, target, user, exec_index, process_ident) print >> sys.stderr, "Rpc denied:", domain, target, exec_index From e6da68dae22697e113049d6817c32c687e340698 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 30 Aug 2012 17:48:19 +0200 Subject: [PATCH 357/386] dom0/qrexec: use DEFAULT user feature of qrexec_daemon in policy parser --- qrexec/qrexec_policy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qrexec/qrexec_policy b/qrexec/qrexec_policy index c6f55aaa..69b9cafb 100755 --- a/qrexec/qrexec_policy +++ b/qrexec/qrexec_policy @@ -174,7 +174,7 @@ def main(): if policy_dict.has_key("action.user"): user=policy_dict["action.user"] else: - user="user" + user="DEFAULT" do_execute(domain, target, user, exec_index, process_ident) print >> sys.stderr, "Rpc denied:", domain, target, exec_index From b7eaf9a30d878d6967200993c2c4426a3b112c46 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 31 Aug 2012 00:53:50 +0200 Subject: [PATCH 358/386] dom0/core: do not use hardcoded "user" in qvm-sync-clock --- dom0/qvm-tools/qvm-sync-clock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index 8066f09c..562cb8c3 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -64,14 +64,14 @@ def main(): # Ignore retcode, try even if nm-online failed - user can setup network manually # on-online has timeout 30sec by default - net_vm.run('user:nm-online -x', verbose=verbose, wait=True, ignore_stderr=True) + net_vm.run('DEFAULT:nm-online -x', verbose=verbose, wait=True, ignore_stderr=True) # Sync clock if clock_vm.run('root:QUBESRPC qubes.SyncNtpClock dom0', verbose=verbose, wait=True, ignore_stderr=True) != 0: print >> sys.stderr, 'Time sync failed, aborting!' sys.exit(1) - p = clock_vm.run('user:date -u', verbose=verbose, passio_popen=True, ignore_stderr=True) + p = clock_vm.run('DEFAULT:date -u', verbose=verbose, passio_popen=True, ignore_stderr=True) date_out = p.stdout.read(100) date_out = date_out.strip() if not re.match(r'^[A-Za-z]* [A-Za-z]* [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [A-Z]* [0-9][0-9][0-9][0-9]$', date_out): From 900a21db724f942591d378278a45fa934e440c2e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 4 Sep 2012 19:24:01 +0200 Subject: [PATCH 359/386] dom0/init.d: hide some missleading error --- dom0/init.d/qubes_core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core index 81e035ed..1da7e867 100755 --- a/dom0/init.d/qubes_core +++ b/dom0/init.d/qubes_core @@ -40,7 +40,7 @@ start() /usr/lib/qubes/block_cleaner_daemon.py > /var/log/qubes/block_cleaner.log 2>&1 & # Hide mounted devices from qubes-block list (at first udev run, only / is mounted) - for dev in `xenstore-list /local/domain/0/qubes-block-devices`; do + for dev in `xenstore-list /local/domain/0/qubes-block-devices 2> /dev/null`; do ( eval `udevadm info -q property -n $dev|sed -e 's/\([^=]*\)=\(.*\)/export \1="\2"/'`; /usr/lib/qubes/block_add_change > /dev/null ) From 2444603ef56707760838542de24d5a2950073251 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 14 Sep 2012 12:57:25 +0200 Subject: [PATCH 360/386] dom0/core: allow '_' in VM name --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 52519384..65d8e7c3 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -495,7 +495,7 @@ class QubesVm(object): return False def verify_name(self, name): - return re.match(r"^[a-zA-Z0-9-]*$", name) is not None + return re.match(r"^[a-zA-Z0-9_-]*$", name) is not None def pre_rename(self, new_name): pass From cb5479666cd293d2e77019483f19d813ea7324f1 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 16 Sep 2012 23:32:56 +0200 Subject: [PATCH 361/386] win/vchan: reset the evtchn buffer in case of overflow In case of evtchn buffer overflow (received more than 1024 events between libvchan_wait calls) further reads returns ERROR_IO_DEVICE. The only way to recover from that is to reset the buffer. Because vchan code doesn't take care of number of fired events - only the fact that some event was fired - lost events here shouldn't break anything. Events reported _after_ libvchan_wait call will be collected and reported correctly. Some more comments in the code (here and in qrexec-agent in the next commit). --- vchan/io.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vchan/io.c b/vchan/io.c index 9709109e..5d32b4e9 100644 --- a/vchan/io.c +++ b/vchan/io.c @@ -78,6 +78,14 @@ int libvchan_wait(struct libvchan *ctrl) int ret; ret = xc_evtchn_pending_with_flush(ctrl->evfd); + // I don't know how to avoid evtchn ring buffer overflow without + // introducing any race condition (in qrexec-agent code). Because of that, + // handle overflow with ring reset - because we just received some events + // (overflow means ring full, so some events was recorded...) the reset + // isn't critical here - always after libvchan_wait we check if there is + // something to read from the vchan + if (ret == -1 && GetLastError() == ERROR_IO_DEVICE) + ret = xc_evtchn_reset(ctrl->evfd); if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport)) return -1; if (ret!=-1 && libvchan_is_eof(ctrl)) From 9db9d8b6c2d3b4c426e627383106e02238d2372b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 00:22:31 +0200 Subject: [PATCH 362/386] dom0/core: allow passing stdin to QubesVM.run() --- dom0/qvm-core/qubes.py | 1 + 1 file changed, 1 insertion(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 65d8e7c3..85df468a 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1361,6 +1361,7 @@ class QubesVm(object): if passio_popen: popen_kwargs={'stdout': subprocess.PIPE} + popen_kwargs['stdin'] = subprocess.PIPE if passio_stderr: popen_kwargs['stderr'] = subprocess.PIPE else: From f271ad8463e49fcfdc82683cd31186e0d5a7e717 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 00:23:20 +0200 Subject: [PATCH 363/386] dom0/core: fix return value of QubesHVM.run() --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 85df468a..b407d2bd 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2446,7 +2446,7 @@ class QubesHVm(QubesVm): if self.qrexec_installed: if 'gui' in kwargs and kwargs['gui']==False: command = "nogui:" + command - super(QubesHVm, self).run(command, **kwargs) + return super(QubesHVm, self).run(command, **kwargs) else: raise QubesException("Needs qrexec agent installed in VM to use this function. See also qvm-prefs.") From 96199058d16ca34180718f9116c40a49277bdeb0 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 00:23:35 +0200 Subject: [PATCH 364/386] dom0/core: wait for user session on HVM start (#31 pro) --- dom0/qvm-core/qubes.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index b407d2bd..e61b8541 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -2473,6 +2473,16 @@ class QubesHVm(QubesVm): if self.qrexec_installed: super(QubesHVm, self).start_qrexec_daemon(**kwargs) + if kwargs.get('verbose'): + print >> sys.stderr, "--> Waiting for user '%s' login..." % self.default_user + + p = self.run('SYSTEM:QUBESRPC qubes.WaitForSession', passio_popen=True, gui=False, wait=True) + p.communicate(input=self.default_user) + + retcode = subprocess.call([qubes_clipd_path]) + if retcode != 0: + print >> sys.stderr, "ERROR: Cannot start qclipd!" + def pause(self): if dry_run: return From d1620d9a32e995d7d4b0065615a9b227aaeddcaa Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 03:23:54 +0200 Subject: [PATCH 365/386] dom0/qrexec: kill child process on connect timeout Sometimes vchan can not detect dead target domain so kill it explicit to not leave a mess. --- qrexec/qrexec_daemon.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qrexec/qrexec_daemon.c b/qrexec/qrexec_daemon.c index 2c1af591..7fefd4b9 100644 --- a/qrexec/qrexec_daemon.c +++ b/qrexec/qrexec_daemon.c @@ -95,13 +95,14 @@ void init(int xid) char qrexec_error_log_name[256]; int logfd; int i; + pid_t pid; if (xid <= 0) { fprintf(stderr, "domain id=0?\n"); exit(1); } signal(SIGUSR1, sigusr1_handler); - switch (fork()) { + switch (pid=fork()) { case -1: perror("fork"); exit(1); @@ -114,6 +115,7 @@ void init(int xid) fprintf(stderr, "."); } fprintf(stderr, "Cannot connect to qrexec agent for %d seconds, giving up\n", MAX_STARTUP_TIME); + kill(pid, SIGTERM); exit(1); } close(0); From c26e21d883e1f648426539ab28469219f3c2704e Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 03:25:38 +0200 Subject: [PATCH 366/386] dom0/qrexec: tunable connect timeout, prompt the user on timeout (#27 pro) --- qrexec/qrexec_daemon.c | 43 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/qrexec/qrexec_daemon.c b/qrexec/qrexec_daemon.c index 7fefd4b9..7b24e502 100644 --- a/qrexec/qrexec_daemon.c +++ b/qrexec/qrexec_daemon.c @@ -87,7 +87,31 @@ int create_qrexec_socket(int domid, char *domname) return get_server_socket(socket_address); } -#define MAX_STARTUP_TIME 60 +#define MAX_STARTUP_TIME_DEFAULT 60 + +/* ask on qrexec connect timeout */ +int ask_on_connect_timeout(int xid, int timeout) +{ + char text[1024]; + int ret; + snprintf(text, sizeof(text), + "kdialog --title 'Qrexec daemon' --warningyesno " + "'Timeout while trying connecting to qrexec agent (Xen domain ID: %d). Do you want to wait next %d seconds?'", + xid, timeout); + ret = system(text); + ret = WEXITSTATUS(ret); + // fprintf(stderr, "ret=%d\n", ret); + switch (ret) { + case 1: /* NO */ + return 0; + case 0: /*YES */ + return 1; + default: + // this can be the case at system startup (netvm), when Xorg isn't running yet + // so just don't give possibility to extend the timeout + return 0; + } +} /* do the preparatory tasks, needed before entering the main event loop */ void init(int xid) @@ -96,11 +120,20 @@ void init(int xid) int logfd; int i; pid_t pid; + int startup_timeout = MAX_STARTUP_TIME_DEFAULT; + char *startup_timeout_str = NULL; if (xid <= 0) { fprintf(stderr, "domain id=0?\n"); exit(1); } + startup_timeout_str = getenv("QREXEC_STARTUP_TIMEOUT"); + if (startup_timeout_str) { + startup_timeout = atoi(startup_timeout_str); + if (startup_timeout == 0) + // invalid number + startup_timeout = MAX_STARTUP_TIME_DEFAULT; + } signal(SIGUSR1, sigusr1_handler); switch (pid=fork()) { case -1: @@ -110,11 +143,15 @@ void init(int xid) break; default: fprintf(stderr, "Waiting for VM's qrexec agent."); - for (i=0;i Date: Tue, 25 Sep 2012 03:26:44 +0200 Subject: [PATCH 367/386] dom0/core: VM property for qrexec startup timeout (#27 pro) --- dom0/qvm-core/qubes.py | 10 +++++++--- dom0/qvm-tools/qvm-prefs | 12 ++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index e61b8541..759a9294 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -260,6 +260,7 @@ class QubesVm(object): "services": { "default": {}, "eval": "eval(str(value))" }, "debug": { "default": False }, "default_user": { "default": "user" }, + "qrexec_timeout": { "default": 60, "eval": "int(value)" }, ##### Internal attributes - will be overriden in __init__ regardless of args "appmenus_templates_dir": { "eval": \ 'self.dir_path + "/" + default_appmenus_templates_subdir if self.updateable else ' + \ @@ -280,7 +281,7 @@ class QubesVm(object): 'uses_default_kernel', 'kernel', 'uses_default_kernelopts',\ 'kernelopts', 'services', 'installed_by_rpm',\ 'uses_default_netvm', 'include_in_backups', 'debug',\ - 'default_user' ]: + 'default_user', 'qrexec_timeout' ]: attrs[prop]['save'] = 'str(self.%s)' % prop # Simple paths for prop in ['conf_file', 'root_img', 'volatile_img', 'private_img']: @@ -1442,7 +1443,9 @@ class QubesVm(object): if verbose: print >> sys.stderr, "--> Starting the qrexec daemon..." xid = self.get_xid() - retcode = subprocess.call ([qrexec_daemon_path, str(xid), self.default_user]) + qrexec_env = os.environ + qrexec_env['QREXEC_STARTUP_TIMEOUT'] = str(self.qrexec_timeout) + retcode = subprocess.call ([qrexec_daemon_path, str(xid), self.default_user], env=qrexec_env) if (retcode != 0) : self.force_shutdown() raise OSError ("ERROR: Cannot execute qrexec_daemon!") @@ -2867,7 +2870,8 @@ class QubesVmCollection(dict): "installed_by_rpm", "internal", "uses_default_netvm", "label", "memory", "vcpus", "pcidevs", "maxmem", "kernel", "uses_default_kernel", "kernelopts", "uses_default_kernelopts", - "mac", "services", "include_in_backups", "debug", "default_user", "qrexec_installed", "drive" ) + "mac", "services", "include_in_backups", "debug", + "default_user", "qrexec_timeout", "qrexec_installed", "drive" ) for attribute in common_attr_list: kwargs[attribute] = element.get(attribute) diff --git a/dom0/qvm-tools/qvm-prefs b/dom0/qvm-tools/qvm-prefs index 2d690d30..760e41ce 100755 --- a/dom0/qvm-tools/qvm-prefs +++ b/dom0/qvm-tools/qvm-prefs @@ -84,6 +84,9 @@ def do_list(vm): if hasattr(vm, 'qrexec_installed'): print fmt.format("qrexec_installed", str(vm.qrexec_installed)) + if hasattr(vm, 'qrexec_timeout'): + print fmt.format("qrexec timeout", str(vm.qrexec_timeout)) + if hasattr(vm, 'drive'): print fmt.format("drive", str(vm.drive)) @@ -333,6 +336,14 @@ def set_qrexec_installed(vms, vm, args): vm.qrexec_installed = bool(eval(args[0].capitalize())) return True +def set_qrexec_timeout(vms, vm, args): + if len (args) != 1: + print >> sys.stderr, "Missing timeout value (seconds)!" + return False + + vm.qrexec_timeout = int(args[0]) + return True + def set_timezone(vms, vm, args): if len (args) != 1: print >> sys.stderr, "Missing value ('localtime' or timeoffset in seconds)!" @@ -362,6 +373,7 @@ properties = { "debug": set_debug, "default_user": set_default_user, "qrexec_installed": set_qrexec_installed, + "qrexec_timeout": set_qrexec_timeout, "timezone": set_timezone, } From 6419fea4ce6e84ffefd119e7e95ae288224059c6 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 4 Oct 2012 05:29:10 +0200 Subject: [PATCH 368/386] vm/spec: fix adding yum-proxy configuration Do not add entry if already present. --- rpm_spec/core-vm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 6c84ae0b..c8ef1c02 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -256,7 +256,7 @@ if ! [ -e /lib/firmware/updates ]; then ln -s /lib/modules/firmware /lib/firmware/updates fi -if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then +if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf' /etc/yum.conf; then echo >> /etc/yum.conf echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf echo 'include=file:///etc/yum.conf.d/qubes-proxy.conf' >> /etc/yum.conf From 92747285c7e43f652c1744eb89d254451b77e678 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 26 Aug 2012 14:41:35 +0200 Subject: [PATCH 369/386] dom0/qvm-block: rework device name parsing to better support c0p1 name style --- dom0/qvm-core/qubesutils.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index c054f182..6a3a0313 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -122,21 +122,14 @@ def block_name_to_majorminor(name): major = 0 minor = 0 dXpY_style = False - - name_match = re.match(r"([a-z]+)([a-z])([0-9]*)", name) - if not name_match: - name_match = re.match(r"([a-z]+)([0-9]*)(?:p([0-9]+)?", name) - if not name_match: - raise QubesException("Invalid device name: %s" % name) - else: - dXpY_style = True - disk = True - if name_match.group(1) == "xvd": + + if name.startswith("xvd"): major = 202 - elif name_match.group(1) == "sd": + elif name.startswith("sd"): major = 8 - elif name_match.group(1) == "mmcblk": + elif name.startswith("mmcblk"): + dXpY_style = True major = 179 elif name.startswith("scd"): disk = False @@ -154,6 +147,13 @@ def block_name_to_majorminor(name): # Unknown device return (0, 0) + if not dXpY_style: + name_match = re.match(r"^([a-z]+)([a-z])([0-9]*)$", name) + else: + name_match = re.match(r"^([a-z]+)([0-9]*)(?:p([0-9]+))?$", name) + if not name_match: + raise QubesException("Invalid device name: %s" % name) + if disk: if dXpY_style: minor = int(name_match.group(2))*8 @@ -191,7 +191,7 @@ def block_find_unused_frontend(vm = None): return None def block_list(vm = None, system_disks = False): - device_re = re.compile(r"^[a-z0-9]{1,8}$") + device_re = re.compile(r"^[a-z0-9]{1,12}$") # FIXME: any better idea of desc_re? desc_re = re.compile(r"^.{1,255}$") mode_re = re.compile(r"^[rw]$") From 9519d843d8a8cfc26094e5e230b108377b00f230 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:53:58 +0200 Subject: [PATCH 370/386] dom0/spec: mark qrexec policy as config files Prevent override on upgrade, when user makes some own changes (especially "always allow" feature). --- rpm_spec/core-dom0.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 26c0c0d1..842779f7 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -400,12 +400,12 @@ fi /usr/lib/qubes/qubes_rpc_multiplexer /usr/lib/qubes/qrexec_policy %dir /etc/qubes_rpc/policy -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.Filecopy -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.OpenInVM -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.SyncAppMenus -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.NotifyUpdates -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.ReceiveUpdates -%attr(0664,root,qubes) /etc/qubes_rpc/policy/qubes.VMShell +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.Filecopy +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.OpenInVM +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.SyncAppMenus +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.NotifyUpdates +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.ReceiveUpdates +%attr(0664,root,qubes) %config(noreplace) /etc/qubes_rpc/policy/qubes.VMShell /etc/qubes_rpc/qubes.SyncAppMenus /etc/qubes_rpc/qubes.NotifyUpdates /etc/qubes_rpc/qubes.ReceiveUpdates From d172fa72f1312f44bf7e445815ae4c21497b3f8b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Mon, 27 Aug 2012 00:20:25 +0200 Subject: [PATCH 371/386] vm/qrexec: fix race between child cleanup and select call reap_children() can close FD, which was already added to FD_SET for select. This can lead to EBADF and agent termination. --- qrexec/qrexec_agent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qrexec/qrexec_agent.c b/qrexec/qrexec_agent.c index f8d7e20e..aa81cb78 100644 --- a/qrexec/qrexec_agent.c +++ b/qrexec/qrexec_agent.c @@ -554,14 +554,14 @@ int main() for (;;) { + sigprocmask(SIG_BLOCK, &chld_set, NULL); + if (child_exited) + reap_children(); max = fill_fds_for_select(&rdset, &wrset); if (buffer_space_vchan_ext() <= sizeof(struct server_header)) FD_ZERO(&rdset); - sigprocmask(SIG_BLOCK, &chld_set, NULL); - if (child_exited) - reap_children(); wait_for_vchan_or_argfd(max, &rdset, &wrset); sigprocmask(SIG_UNBLOCK, &chld_set, NULL); From 397f2912f087c28bf89cb5b133c0578b4269c089 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Fri, 14 Sep 2012 12:57:25 +0200 Subject: [PATCH 372/386] dom0/core: allow '_' in VM name --- dom0/qvm-core/qubes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index f52b5fca..6af48236 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -486,7 +486,7 @@ class QubesVm(object): return False def verify_name(self, name): - return re.match(r"^[a-zA-Z0-9-]*$", name) is not None + return re.match(r"^[a-zA-Z0-9_-]*$", name) is not None def pre_rename(self, new_name): pass From 04e57db419db7ec66b03bda28484f38dad702e9f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 19 Sep 2012 12:55:45 +0200 Subject: [PATCH 373/386] vm/yum-proxy: allow pkgtags repodata --- network/filter-qubes-yum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/filter-qubes-yum b/network/filter-qubes-yum index 2e712ddf..eea5faa8 100644 --- a/network/filter-qubes-yum +++ b/network/filter-qubes-yum @@ -1,4 +1,4 @@ -.*/repodata/[A-Za-z0-9-]*\(primary\|filelists\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\|updateinfo\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ +.*/repodata/[A-Za-z0-9-]*\(primary\|filelists\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\|updateinfo\|pkgtags\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ .*/repodata/repomd\.xml$ .*\.rpm$ .*\.drpm$ From 0cf7c03ea5b3af213131bf4a55a2280f42e2d094 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sun, 23 Sep 2012 23:25:39 +0200 Subject: [PATCH 374/386] vm/systemd: early user-configurable init script --- vm-systemd/misc-post.sh | 1 + vm-systemd/qubes-sysinit.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/vm-systemd/misc-post.sh b/vm-systemd/misc-post.sh index b86e6a7f..7db58d2c 100755 --- a/vm-systemd/misc-post.sh +++ b/vm-systemd/misc-post.sh @@ -21,6 +21,7 @@ if [ -e /dev/xvdb ] ; then mkdir -p /rw/config touch /rw/config/rc.local + touch /rw/config/rc.local-early mkdir -p /rw/home cp -a /home.orig/user /home diff --git a/vm-systemd/qubes-sysinit.sh b/vm-systemd/qubes-sysinit.sh index 77dac3f4..b785a25c 100755 --- a/vm-systemd/qubes-sysinit.sh +++ b/vm-systemd/qubes-sysinit.sh @@ -69,3 +69,6 @@ debug_mode=`$XS_READ qubes-debug-mode 2> /dev/null` if [ -n "$debug_mode" -a "$debug_mode" -gt 0 ]; then echo "GUI_OPTS=-vv" >> /var/run/qubes-service-environment fi + +[ -x /rw/config/rc.local-early ] && /rw/config/rc.local-early + From 551cc8b1865d9290739d94e82fcfd8313d9bf795 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 13:34:59 +0200 Subject: [PATCH 375/386] vm/yum-proxy: filter regexp: add missing ^$ marks, remove unneded .* at the beginning Reported-by: Igor Bukanov --- network/filter-qubes-yum | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/network/filter-qubes-yum b/network/filter-qubes-yum index eea5faa8..0bea36a9 100644 --- a/network/filter-qubes-yum +++ b/network/filter-qubes-yum @@ -1,6 +1,6 @@ -.*/repodata/[A-Za-z0-9-]*\(primary\|filelists\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\|updateinfo\|pkgtags\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ -.*/repodata/repomd\.xml$ -.*\.rpm$ -.*\.drpm$ -mirrors.fedoraproject.org:443 +/repodata/[A-Za-z0-9-]*\(primary\|filelists\|comps\(-[a-z0-9]*\)\?\|other\|prestodelta\|updateinfo\|pkgtags\)\.\(sqlite\|xml\)\(\.bz2\|\.gz\)\?$ +/repodata/repomd\.xml$ +\.rpm$ +\.drpm$ +^mirrors.fedoraproject.org:443$ ^http://mirrors\..*/mirrorlist From 56e0359cfbb2ba8010e8c741f9b6c410b9114996 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 15:08:06 +0200 Subject: [PATCH 376/386] vm/yum-proxy: one more regexp fix --- network/filter-qubes-yum | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/network/filter-qubes-yum b/network/filter-qubes-yum index 0bea36a9..828010ea 100644 --- a/network/filter-qubes-yum +++ b/network/filter-qubes-yum @@ -2,5 +2,5 @@ /repodata/repomd\.xml$ \.rpm$ \.drpm$ -^mirrors.fedoraproject.org:443$ -^http://mirrors\..*/mirrorlist +^mirrors\.fedoraproject\.org:443$ +^http://mirrors\..*/mirrorlist\? From 9c3f8417d457af581844c56ac70b8a7ae184f078 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 16:04:47 +0200 Subject: [PATCH 377/386] vm/iptables: block IPv6 traffic This isn't properly handled by Qubes VMs yet, so block it in all the VMs. Also restrict access to firewall config. --- network/ip6tables | 8 ++++++++ rpm_spec/core-vm.spec | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 network/ip6tables diff --git a/network/ip6tables b/network/ip6tables new file mode 100644 index 00000000..8a906f5f --- /dev/null +++ b/network/ip6tables @@ -0,0 +1,8 @@ +# Generated by ip6tables-save v1.4.14 on Tue Sep 25 16:00:20 2012 +*filter +:INPUT DROP [1:72] +:FORWARD DROP [0:0] +:OUTPUT ACCEPT [0:0] +-A INPUT -i lo -j ACCEPT +COMMIT +# Completed on Tue Sep 25 16:00:20 2012 diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index f9ba7743..0c576bf2 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -139,7 +139,8 @@ ln -s /usr/lib/qubes/qubes_setup_dnat_to_ns $RPM_BUILD_ROOT/etc/dhclient.d/qubes install -d $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install network/{qubes_nmhook,30-qubes_external_ip} $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ install -D network/vif-route-qubes $RPM_BUILD_ROOT/etc/xen/scripts/vif-route-qubes -install -m 0644 -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables +install -m 0400 -D network/iptables $RPM_BUILD_ROOT/etc/sysconfig/iptables +install -m 0400 -D network/ip6tables $RPM_BUILD_ROOT/etc/sysconfig/ip6tables install -m 0644 -D network/tinyproxy-qubes-yum.conf $RPM_BUILD_ROOT/etc/tinyproxy/tinyproxy-qubes-yum.conf install -m 0644 -D network/filter-qubes-yum $RPM_BUILD_ROOT/etc/tinyproxy/filter-qubes-yum @@ -371,6 +372,7 @@ rm -rf $RPM_BUILD_ROOT /etc/qubes_rpc/qubes.SuspendPost /etc/sudoers.d/qubes /etc/sysconfig/iptables +/etc/sysconfig/ip6tables /etc/sysconfig/modules/qubes_core.modules /etc/tinyproxy/filter-qubes-yum /etc/tinyproxy/tinyproxy-qubes-yum.conf @@ -489,6 +491,7 @@ chkconfig rsyslog on chkconfig haldaemon on chkconfig messagebus on chkconfig iptables on +chkconfig ip6tables on chkconfig --add qubes_core || echo "WARNING: Cannot add service qubes_core!" chkconfig qubes_core on || echo "WARNING: Cannot enable service qubes_core!" chkconfig --add qubes_core_netvm || echo "WARNING: Cannot add service qubes_core_netvm!" @@ -610,6 +613,7 @@ rm -f /etc/systemd/system/getty.target.wants/getty@tty*.service # Enable some services /bin/systemctl enable iptables.service 2> /dev/null +/bin/systemctl enable ip6tables.service 2> /dev/null /bin/systemctl enable rsyslog.service 2> /dev/null /bin/systemctl enable ntpd.service 2> /dev/null # Disable original service to enable overriden one From 303d4ab042cf723805fbd0ec533d2bae3483654f Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Tue, 25 Sep 2012 16:14:31 +0200 Subject: [PATCH 378/386] dom0/iptables: block IPv6 traffic Dom0 is network isolated anyway, but apply also firewall in case of use qubes-dom0-network-via-netvm. --- rpm_spec/core-dom0.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rpm_spec/core-dom0.spec b/rpm_spec/core-dom0.spec index 842779f7..ac2c460f 100644 --- a/rpm_spec/core-dom0.spec +++ b/rpm_spec/core-dom0.spec @@ -173,6 +173,7 @@ mkdir -p $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ cp ../network/qubes_nmhook $RPM_BUILD_ROOT/etc/NetworkManager/dispatcher.d/ mkdir -p $RPM_BUILD_ROOT/etc/sysconfig cp ../network/iptables $RPM_BUILD_ROOT/etc/sysconfig +cp ../network/ip6tables $RPM_BUILD_ROOT/etc/sysconfig mkdir -p $RPM_BUILD_ROOT/etc/security/limits.d cp misc/limits-qubes.conf $RPM_BUILD_ROOT/etc/security/limits.d/99-qubes.conf @@ -383,6 +384,7 @@ fi /etc/dhclient.d/qubes_setup_dnat_to_ns.sh /etc/NetworkManager/dispatcher.d/qubes_nmhook /etc/sysconfig/iptables +/etc/sysconfig/ip6tables /etc/sysconfig/modules/qubes-dom0.modules /etc/sysconfig/modules/cpufreq-xen.modules /usr/lib64/pm-utils/sleep.d/01qubes-sync-vms-clock From 7a485ab7f9be59d0de2ae8e0abf68376c645b7e4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 27 Sep 2012 02:06:26 +0200 Subject: [PATCH 379/386] vm/file-editor: connect /dev/null as stdin (#657) If stdin is closed (not connected to /dev/null) first opened file will get fd=0 and will be treated as stdin. --- qubes_rpc/vm-file-editor.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qubes_rpc/vm-file-editor.c b/qubes_rpc/vm-file-editor.c index 96c3bd4c..4a83785a 100644 --- a/qubes_rpc/vm-file-editor.c +++ b/qubes_rpc/vm-file-editor.c @@ -57,7 +57,7 @@ main() { struct stat stat_pre, stat_post, session_stat; char *filename = get_filename(); - int child, status, log_fd; + int child, status, log_fd, null_fd; char var[1024], val[4096]; FILE *env_file; FILE *waiter_pidfile; @@ -100,7 +100,9 @@ main() perror("fork"); exit(1); case 0: - close(0); + null_fd = open("/dev/null", O_RDONLY); + dup2(null_fd, 0); + close(null_fd); env_file = fopen("/tmp/qubes-session-env", "r"); while(fscanf(env_file, "%1024[^=]=%4096[^\n]\n", var, val) == 2) { From dba7d94fba7b720d11e4f4711c8567f0a7f09f37 Mon Sep 17 00:00:00 2001 From: Bruce A Downs Date: Thu, 27 Sep 2012 10:25:18 -0600 Subject: [PATCH 380/386] vm/spec: mod to core-vm.spec to add test for files core rpm was failing during uninstall attempting to move non-existent files * /var/lib/qubes/fstab.orig * /var/lib/qubes/serial.orig --- rpm_spec/core-vm.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 0c576bf2..f1a5e5dc 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -328,9 +328,13 @@ mkdir -p /rw %preun if [ "$1" = 0 ] ; then # no more packages left + if [ -e /var/lib/qubes/fstab.orig ] ; then mv /var/lib/qubes/fstab.orig /etc/fstab + fi mv /var/lib/qubes/removed-udev-scripts/* /etc/udev/rules.d/ + if [ -e /var/lib/qubes/serial.orig ] ; then mv /var/lib/qubes/serial.orig /etc/init/serial.conf + fi fi %postun From d19a3cce99e7af9b2009aab0462d4e18a569422f Mon Sep 17 00:00:00 2001 From: Bruce A Downs Date: Thu, 27 Sep 2012 10:35:48 -0600 Subject: [PATCH 381/386] vm: Added 'most recently used' feature to 'copy to vm' dialog * replaced zenity to qvm-mru-entry in qubes_rpc/qvm-copy-to-vm.gnome * added python script qubes_rpc/qvm-mru-entry * added /usr/bin/qvm-mru-entry to rpm_spec/core-vm.spec --- qubes_rpc/qvm-copy-to-vm.gnome | 2 +- qubes_rpc/qvm-mru-entry | 165 +++++++++++++++++++++++++++++++++ rpm_spec/core-vm.spec | 3 +- 3 files changed, 168 insertions(+), 2 deletions(-) create mode 100755 qubes_rpc/qvm-mru-entry diff --git a/qubes_rpc/qvm-copy-to-vm.gnome b/qubes_rpc/qvm-copy-to-vm.gnome index cb2b86e5..e6c6c70d 100755 --- a/qubes_rpc/qvm-copy-to-vm.gnome +++ b/qubes_rpc/qvm-copy-to-vm.gnome @@ -20,7 +20,7 @@ # # -VM=$(zenity --entry --title="File Copy" --text="Enter the destination domain name:") +VM=$(qvm-mru-entry --title="File Copy" --text="Enter the destination domain name:" --mrufile "qvm-mru-filecopy") if [ X$VM = X ] ; then exit 0 ; fi SIZE=$(du --apparent-size -c "$@" | tail -1 | cut -f 1) diff --git a/qubes_rpc/qvm-mru-entry b/qubes_rpc/qvm-mru-entry new file mode 100755 index 00000000..b516753c --- /dev/null +++ b/qubes_rpc/qvm-mru-entry @@ -0,0 +1,165 @@ +#!/usr/bin/python +# +# The Qubes OS Project, http://www.qubes-os.org +# +# Copyright (C) 2012 Bruce Downs +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# +import os +from optparse import OptionParser +import gtk + +class QubesMruDialog(gtk.Dialog): + entry = None + mrufile = None + + def __init__(self, title, text, mrufile): + self.mrufile = mrufile + + gtk.Dialog.__init__( + self, + title, + None, + 0, + (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, + gtk.STOCK_OK, gtk.RESPONSE_OK)) + + # setting the default response to 'ok' + # does not work as advertised + # using key-press-event instead + #self.set_default_response(gtk.RESPONSE_OK) + + self.connect("destroy", lambda *w: gtk.main_quit()) + self.connect("response", self.response_callback) + self.connect("key-press-event", self.key_press_callback) + + self.set_position(gtk.WIN_POS_CENTER) + self.set_resizable(True) + + vbox = gtk.VBox(True, 5) + self.vbox.pack_start(vbox, True, True, 0) + vbox.set_border_width(5) + + label = gtk.Label() + label.set_markup(text) + vbox.pack_start(label, False, False, 0) + + # Create our entry + self.entry = gtk.Entry() + vbox.pack_start(self.entry, False, False, 0) + + # Create the completion object + completion = gtk.EntryCompletion() + + # Assign the completion to the entry + self.entry.set_completion(completion) + + # Create a tree model and use it as the completion model + completion_model, firstline = self.create_completion_model() + completion.set_model(completion_model) + + # Use model column 0 as the text column + completion.set_text_column(0) + + if firstline: + self.entry.set_text(firstline) + + self.show_all() + + def create_completion_model(self): + store = gtk.ListStore(str) + firstline = None + + if self.mrufile and os.access(self.mrufile, os.R_OK): + # read lines from mru file + lines = [line.strip() for line in open(self.mrufile)] + for line in lines: + if not firstline: + firstline = line + + iter = store.append() + store.set(iter, 0, line) + + return store, firstline + + def handle_ok(self): + my_entry = self.entry.get_text() + + if len(my_entry) > 0: + linesorg = [] + linesorg.insert(0, my_entry) + + # calc mru lines + if os.access(self.mrufile, os.R_OK): + # read lines from existing mru file + fMru = open(self.mrufile, "r") + linesorg += [line.strip() for line in fMru] + fMru.close() + + #uniqify + linesuniq = [] + for lineuniq in linesorg: + if (len(lineuniq) > 0 and lineuniq not in linesuniq): + linesuniq.append(lineuniq) + + # write to mru + # up to 50 unique + fMru = file(self.mrufile, "w") + fMru.writelines( "%s\n" % line for line in linesuniq[:50] ) + fMru.close() + + # print entry to stdout + print my_entry + + def response_callback(self, button, response_id): + if response_id == gtk.RESPONSE_OK: + self.handle_ok() + self.destroy() + + def key_press_callback(self, button, event): + if event.keyval == gtk.keysyms.Return: + self.handle_ok() + self.destroy() + +def main(): + usage = "usage: %prog [--title 'Qubes Title'] [--text 'Qubes Text'] [--mrufile 'mru file name']" + parser = OptionParser (usage) + parser.add_option ("-l", "--title", + action="store", + dest="title", + default="Qubes MRU Dialog Entry", + help="Set the dialog title [%default]") + parser.add_option ("-x", "--text", + action="store", + dest="text", + default="Enter Qubes text:", + help="Set the dialog text [%default]") + parser.add_option ("-f", "--mrufile", + action="store", + dest="mrufile", + default='qvm-mru', + help="MRU file name [%default]") + (options, args) = parser.parse_args () + + mrudir = os.path.expanduser('~') + os.sep + '.config' + if not os.path.exists(mrudir): + os.makedirs(mrudir) + QubesMruDialog(options.title, options.text, mrudir + os.sep + options.mrufile) + gtk.main() + +main() + diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index f1a5e5dc..72bf87a8 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -153,7 +153,7 @@ install network/qubes_netwatcher $RPM_BUILD_ROOT/usr/sbin/ install -d $RPM_BUILD_ROOT/usr/bin -install qubes_rpc/{qvm-open-in-dvm,qvm-open-in-vm,qvm-copy-to-vm,qvm-run} $RPM_BUILD_ROOT/usr/bin +install qubes_rpc/{qvm-open-in-dvm,qvm-open-in-vm,qvm-copy-to-vm,qvm-run,qvm-mru-entry} $RPM_BUILD_ROOT/usr/bin install qubes_rpc/wrap_in_html_if_url.sh $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/qvm-copy-to-vm.kde $RPM_BUILD_ROOT/usr/lib/qubes install qubes_rpc/qvm-copy-to-vm.gnome $RPM_BUILD_ROOT/usr/lib/qubes @@ -393,6 +393,7 @@ rm -rf $RPM_BUILD_ROOT /usr/bin/qvm-open-in-dvm /usr/bin/qvm-open-in-vm /usr/bin/qvm-run +/usr/bin/qvm-mru-entry /usr/bin/xenstore-watch-qubes %dir /usr/lib/qubes /usr/lib/qubes/block_add_change From 69354475bf5aa4ecafe7d526c905ca070219dffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20M=C3=A9doc?= Date: Wed, 3 Oct 2012 14:55:05 +0200 Subject: [PATCH 382/386] dom0/qvm-sync-clock: use timestamp in RFC2822 format to avoid locale issues --- dom0/qvm-tools/qvm-sync-clock | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-tools/qvm-sync-clock b/dom0/qvm-tools/qvm-sync-clock index 8066f09c..fad4a7d0 100755 --- a/dom0/qvm-tools/qvm-sync-clock +++ b/dom0/qvm-tools/qvm-sync-clock @@ -70,19 +70,20 @@ def main(): if clock_vm.run('root:QUBESRPC qubes.SyncNtpClock dom0', verbose=verbose, wait=True, ignore_stderr=True) != 0: print >> sys.stderr, 'Time sync failed, aborting!' sys.exit(1) - - p = clock_vm.run('user:date -u', verbose=verbose, passio_popen=True, ignore_stderr=True) + + # Use the date format based on RFC2822 to avoid localisation issues + p = clock_vm.run('user:date -u -R', verbose=verbose, passio_popen=True, ignore_stderr=True) date_out = p.stdout.read(100) date_out = date_out.strip() - if not re.match(r'^[A-Za-z]* [A-Za-z]* [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [A-Z]* [0-9][0-9][0-9][0-9]$', date_out): - print >> sys.stderr, 'Invalid date output, aborting!' + if not re.match(r'^[A-Za-z]+[,] [0-9][0-9] [A-Za-z]+ [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+]0000$', date_out): + print >> sys.stderr, date_out, 'Invalid date output, aborting!' sys.exit(1) # Sync dom0 time if verbose: print >> sys.stderr, '--> Syncing dom0 clock.' - subprocess.check_call(['sudo', 'date', '-u', '-s', date_out]) + subprocess.check_call(['sudo', 'date', '-u', '-R', '-s', date_out]) subprocess.check_call(['sudo', 'hwclock', '--systohc']) # Sync other VMs clock @@ -91,7 +92,7 @@ def main(): if verbose: print >> sys.stderr, '--> Syncing \'%s\' clock.' % vm.name try: - vm.run('root:date -u -s "%s"' % date_out, verbose=verbose) + vm.run('root:date -u -R -s "%s"' % date_out, verbose=verbose) except Exception as e: print >> sys.stderr, "ERROR syncing time in VM '%s': %s" % (vm.name, str(e)) pass From 9a2f1dfebef9b2f4757c6bbd4e82e8646451543d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 3 Oct 2012 21:12:18 +0200 Subject: [PATCH 383/386] dom0/core: include net/proxy VM default appmenus list in cloned template --- dom0/qvm-core/qubes.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 6af48236..d6d7d2a2 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1624,12 +1624,13 @@ class QubesTemplateVm(QubesVm): super(QubesTemplateVm, self).clone_disk_files(src_vm=src_vm, verbose=verbose) - if os.path.exists(src_vm.dir_path + '/vm-' + qubes_whitelisted_appmenus): - if verbose: - print >> sys.stderr, "--> Copying default whitelisted apps list: {0}".\ - format(self.dir_path + '/vm-' + qubes_whitelisted_appmenus) - shutil.copy(src_vm.dir_path + '/vm-' + qubes_whitelisted_appmenus, - self.dir_path + '/vm-' + qubes_whitelisted_appmenus) + for whitelist in ['/vm-' + qubes_whitelisted_appmenus, '/netvm-' + qubes_whitelisted_appmenus]: + if os.path.exists(src_vm.dir_path + whitelist): + if verbose: + print >> sys.stderr, "--> Copying default whitelisted apps list: {0}".\ + format(self.dir_path + whitelist) + shutil.copy(src_vm.dir_path + whitelist, + self.dir_path + whitelist) if verbose: print >> sys.stderr, "--> Copying the template's clean volatile image:\n{0} ==>\n{1}".\ From d5c74f69eee075634639cffc74bf24e8ce825a8a Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 3 Oct 2012 21:36:52 +0200 Subject: [PATCH 384/386] dom0/core: recreate appmenus after rename for any VM, not only AppVM (#659) --- dom0/qvm-core/qubes.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index d6d7d2a2..16fc0cd4 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -489,7 +489,7 @@ class QubesVm(object): return re.match(r"^[a-zA-Z0-9_-]*$", name) is not None def pre_rename(self, new_name): - pass + self.remove_appmenus() def set_name(self, name): if self.is_running(): @@ -527,7 +527,7 @@ class QubesVm(object): self.post_rename(old_name) def post_rename(self, old_name): - pass + self.create_appmenus(verbose=False) def is_template(self): return isinstance(self, QubesTemplateVm) @@ -2223,12 +2223,6 @@ class QubesAppVm(QubesVm): self.remove_appmenus() super(QubesAppVm, self).remove_from_disk() - def pre_rename(self, new_name): - self.remove_appmenus() - - def post_rename(self, old_name): - self.create_appmenus(verbose=False) - class QubesVmCollection(dict): """ From 5e696298cf3c585a87830aa9dedaec08d494ba49 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Wed, 3 Oct 2012 22:28:49 +0200 Subject: [PATCH 385/386] dom0/core: fix icon handling on VM clone --- dom0/qvm-core/qubes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 16fc0cd4..69f9e6f7 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -1097,8 +1097,8 @@ class QubesVm(object): if src_vm.icon_path is not None and self.icon_path is not None: if os.path.exists (src_vm.dir_path): - if os.path.islink(src_vm.dir_path): - icon_path = os.readlink(src_vm.dir_path) + if os.path.islink(src_vm.icon_path): + icon_path = os.readlink(src_vm.icon_path) if verbose: print >> sys.stderr, "--> Creating icon symlink: {0} -> {1}".format(self.icon_path, icon_path) os.symlink (icon_path, self.icon_path) From 490a5e9e1a221f710ea53f9c57b78412f08578d8 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Thu, 4 Oct 2012 05:29:10 +0200 Subject: [PATCH 386/386] vm/spec: fix adding yum-proxy configuration Do not add entry if already present. --- rpm_spec/core-vm.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 72bf87a8..dd5e26a9 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -257,7 +257,7 @@ if ! [ -e /lib/firmware/updates ]; then ln -s /lib/modules/firmware /lib/firmware/updates fi -if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf'; then +if ! grep -q '/etc/yum\.conf\.d/qubes-proxy\.conf' /etc/yum.conf; then echo >> /etc/yum.conf echo '# Yum does not support inclusion of config dir...' >> /etc/yum.conf echo 'include=file:///etc/yum.conf.d/qubes-proxy.conf' >> /etc/yum.conf

    (Y*X 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Μ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ĹMeRew4zGcFpHW{QM_X4{O66c1|;h^joj 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