From 85f4e494e86a1a724fd13744240f51777818cf15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 30 Jan 2014 02:41:58 +0100 Subject: [PATCH 1/6] Hide nm-applet when NetworkManager is disabled It isn't done automatically by nm-applet itself since nm-applet 0.9.9.0 (fc19+), this one commit: https://git.gnome.org/browse/network-manager-applet/commit?id=276a702000ee9e509321891f5ffa9789acfb053c At the same time they've introduced option to manually hide the icon: https://git.gnome.org/browse/network-manager-applet/commit?id=e7331a3f33ab422ea6c1bbc015ad44d8d9c83bc3 --- 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 e0c2909..35b0505 100755 --- a/vm-systemd/misc-post.sh +++ b/vm-systemd/misc-post.sh @@ -48,6 +48,11 @@ fi # Start services which haven't own proper systemd unit: +# Hide nm-applet when network-manager is disabled +nm_enabled=false +[ -f /var/run/qubes-service/network-manager ] && nm_enabled=true +su -c "gsettings set org.gnome.nm-applet show-applet $nm_enabled" user 2> /dev/null + # Start AppVM specific services if [ ! -f /etc/systemd/system/cups.service ]; then if [ -f /var/run/qubes-service/cups ]; then From fc04408c7a3c7a28c7f0d4ed4dc24e8bc3b4dc03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 30 Jan 2014 02:53:08 +0100 Subject: [PATCH 2/6] systemd: disable ModemManager in non-NetVM Previously ModemManager was started by NetworkManager, but in fc20+ it is a separate service, so disable it when not needed. --- Makefile | 1 + rpm_spec/core-vm.spec | 6 +++++- vm-systemd/ModemManager.service | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 vm-systemd/ModemManager.service diff --git a/Makefile b/Makefile index 3173e21..bf1a824 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,7 @@ install-vm: install -m 0755 vm-systemd/*.sh $(DESTDIR)/usr/lib/qubes/init/ install -m 0644 vm-systemd/qubes-*.service $(DESTDIR)/lib/systemd/system/ install -m 0644 vm-systemd/qubes-*.timer $(DESTDIR)/lib/systemd/system/ + install -m 0644 vm-systemd/ModemManager.service $(DESTDIR)/usr/lib/qubes/init/ install -m 0644 vm-systemd/NetworkManager.service $(DESTDIR)/usr/lib/qubes/init/ install -m 0644 vm-systemd/NetworkManager-wait-online.service $(DESTDIR)/usr/lib/qubes/init/ install -m 0644 vm-systemd/cups.* $(DESTDIR)/usr/lib/qubes/init/ diff --git a/rpm_spec/core-vm.spec b/rpm_spec/core-vm.spec index 835f656..fe79628 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -448,6 +448,7 @@ The Qubes core startup configuration for SystemD init. /usr/lib/qubes/init/misc-post.sh /usr/lib/qubes/init/misc-post-stop.sh /usr/lib/qubes/init/qubes-sysinit.sh +/usr/lib/qubes/init/ModemManager.service /usr/lib/qubes/init/NetworkManager.service /usr/lib/qubes/init/NetworkManager-wait-online.service /usr/lib/qubes/init/cups.service @@ -455,6 +456,7 @@ The Qubes core startup configuration for SystemD init. /usr/lib/qubes/init/cups.path /usr/lib/qubes/init/ntpd.service /usr/lib/qubes/init/chronyd.service +%ghost %attr(0644,root,root) /etc/systemd/system/ModemManager.service %ghost %attr(0644,root,root) /etc/systemd/system/NetworkManager.service %ghost %attr(0644,root,root) /etc/systemd/system/NetworkManager-wait-online.service %ghost %attr(0644,root,root) /etc/systemd/system/cups.service @@ -473,7 +475,7 @@ UNITDIR=/lib/systemd/system OVERRIDEDIR=/usr/lib/qubes/init # Install overriden services only when original exists -for srv in cups NetworkManager NetworkManager-wait-online ntpd chronyd; do +for srv in cups ModemManager NetworkManager NetworkManager-wait-online ntpd chronyd; do if [ -f $UNITDIR/$srv.service ]; then cp $OVERRIDEDIR/$srv.service /etc/systemd/system/ fi @@ -514,9 +516,11 @@ rm -f /etc/systemd/system/getty.target.wants/getty@tty*.service /bin/systemctl enable rsyslog.service 2> /dev/null /bin/systemctl enable ntpd.service 2> /dev/null # Disable original service to enable overriden one +/bin/systemctl disable ModemManager.service 2> /dev/null /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 ModemManager.service 2> /dev/null /bin/systemctl enable NetworkManager.service 2> /dev/null # Fix for https://bugzilla.redhat.com/show_bug.cgi?id=974811 /bin/systemctl enable NetworkManager-dispatcher.service 2> /dev/null diff --git a/vm-systemd/ModemManager.service b/vm-systemd/ModemManager.service new file mode 100644 index 0000000..f530073 --- /dev/null +++ b/vm-systemd/ModemManager.service @@ -0,0 +1,4 @@ +.include /lib/systemd/system/ModemManager.service +[Unit] +ConditionPathExists=|/var/run/qubes-service/network-manager +ConditionPathExists=|/var/run/qubes-service/modem-manager From 0123719646bb23e18ce0741333662f2f6323692a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Thu, 30 Jan 2014 02:54:16 +0100 Subject: [PATCH 3/6] systemd: fix handling of .path units overrides --- 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 fe79628..4442af9 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -483,7 +483,7 @@ for srv in cups ModemManager NetworkManager NetworkManager-wait-online ntpd chro cp $OVERRIDEDIR/$srv.socket /etc/systemd/system/ fi if [ -f $UNITDIR/$srv.path -a -f $OVERRIDEDIR/$srv.path ]; then - cp $OVERRIDEDIR/$srv.service /etc/systemd/system/ + cp $OVERRIDEDIR/$srv.path /etc/systemd/system/ fi done From 66b5d686f54e219d710d62ab30c86e2d8712529d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 2 Feb 2014 13:30:08 +0100 Subject: [PATCH 4/6] rpm: require gnome-packagekit-updater on Fedora 20+ gpk-update-viewer is no longer a part of gnome-packagekit package. --- 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 4442af9..c627a83 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -48,6 +48,10 @@ Requires: net-tools Requires: nautilus-actions Requires: qubes-core-vm-kernel-placeholder Requires: qubes-utils +%if %{fedora} >= 20 +# gpk-update-viewer required by qubes-manager +Requires: gnome-packagekit-updater +%endif Provides: qubes-core-vm Obsoletes: qubes-core-commonvm Obsoletes: qubes-core-appvm From c647862fc069d2a7e927bc6d90c95d5cc0695ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 2 Feb 2014 13:30:43 +0100 Subject: [PATCH 5/6] rpm: do not fail on non-existing /etc/init/serial.conf This file is obsolete for a long time, so use it only if found in the system (perhaps still useful in other distros). --- 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 c627a83..bd136f6 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -100,7 +100,9 @@ adduser --create-home user make install-vm DESTDIR=$RPM_BUILD_ROOT %triggerin -- initscripts -cp /usr/lib/qubes/serial.conf /etc/init/serial.conf +if [ -e /etc/init/serial.conf ]; then + cp /usr/lib/qubes/serial.conf /etc/init/serial.conf +fi %post From 4d2094b16c2469dcc3fe3603399b6777bd74f81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 2 Feb 2014 13:34:27 +0100 Subject: [PATCH 6/6] Do not unconditionally hide nm-appet in Fedora >= 20 (#774) This is first step of #774 - when NetworkManager enabled, show nm-applet icon. Still NetworkManager need some configuration to not break ProxyVM eth0. --- 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 bd136f6..ba373fb 100644 --- a/rpm_spec/core-vm.spec +++ b/rpm_spec/core-vm.spec @@ -149,7 +149,11 @@ for F in gpk-update-icon nm-applet ; do done echo 'OnlyShowIn=GNOME;UpdateableVM;' >> /etc/xdg/autostart/gpk-update-icon.desktop || : +if %{fedora} >= 20 +echo 'OnlyShowIn=GNOME;QUBES;' >> /etc/xdg/autostart/nm-applet.desktop || : +%else echo 'OnlyShowIn=GNOME;NetVM;' >> /etc/xdg/autostart/nm-applet.desktop || : +%endif usermod -p '' root usermod -L user