diff --git a/multibootusb b/multibootusb index 9bd5bafd..a6dea3a3 100644 --- a/multibootusb +++ b/multibootusb @@ -128,11 +128,6 @@ Example for installing syslinux to target USB disk: def start_gui(): from scripts import mbusb_gui gen.log('Starting multibootusb GUI...') - if platform.system() == 'Linux': - if os.getuid() != 0: - gen.log('\n\nAdmin privilege is required to run multibootusb.\n If you are running from source try ' - '\'sudo python3 ./multibootusb\'\n or you can try \'multibootusb-pkexec\' (post install)\n\n', - info=False, debug=True) mbusb_gui.main_gui() diff --git a/scripts/mbusb_gui.py b/scripts/mbusb_gui.py index c03778b8..d665616f 100644 --- a/scripts/mbusb_gui.py +++ b/scripts/mbusb_gui.py @@ -1048,13 +1048,8 @@ def main_gui(): # ui_about = Ui_About() # ui = Ui_MainWindow() - if platform.system() == 'Linux' and os.getuid() != 0: - show_admin_info() - sys.exit(2) - - else: - window = AppGui() - window.show() - window.setWindowTitle("MultiBootUSB - " + mbusb_version()) - window.setWindowIcon(QtGui.QIcon(resource_path(os.path.join("data", "tools", "multibootusb.png")))) + window = AppGui() + window.show() + window.setWindowTitle("MultiBootUSB - " + mbusb_version()) + window.setWindowIcon(QtGui.QIcon(resource_path(os.path.join("data", "tools", "multibootusb.png")))) sys.exit(app.exec_()) diff --git a/scripts/osdriver.py b/scripts/osdriver.py index 737e5386..3a8b70a5 100644 --- a/scripts/osdriver.py +++ b/scripts/osdriver.py @@ -410,7 +410,7 @@ def gpt_device(self, dev_name): lang = os.getenv('LANG') encoding = lang.rsplit('.')[-1] if lang else 'utf-8' raise RuntimeError(str(_err_out, encoding)) - subprocess.check_call(['partprobe', disk_dev]) + udisks.rescan(disk_dev) if b'msdos' in _cmd_out: return False if b'gpt' in _cmd_out: diff --git a/scripts/udisks.py b/scripts/udisks.py index 8460d887..ffb5ccf6 100644 --- a/scripts/udisks.py +++ b/scripts/udisks.py @@ -136,6 +136,16 @@ def device(self, device_node_path): raise ValueError('%r not known to UDisks2'%device_node_path) + def rescan(self, node_path): + # Rescan partition table + import dbus + mgr = self.bus.get_object('org.freedesktop.UDisks2', + '/org/freedesktop/UDisks2/Manager') + dev_paths = mgr.ResolveDevice({'path': node_path}, {}, dbus_interface='org.freedesktop.UDisks2.Manager') + for dev in dev_paths: + bd = self.bus.get_object('org.freedesktop.UDisks2', dev) + bd.Rescan('', dbus_interface='org.freedesktop.UDisks2.Block') + def mount(self, device_node_path, remounted=None): mp = node_mountpoint(str(device_node_path)) if mp: @@ -207,6 +217,10 @@ def umount(node_path): u.unmount(node_path) +def rescan(node_path): + u = get_udisks() + u.rescan(node_path) + def test_udisks(ver=None): import sys dev = sys.argv[1]