Compare commits

..

No commits in common. "master" and "v1.3.2-29" have entirely different histories.

4 changed files with 24 additions and 65 deletions

View File

@ -82,10 +82,8 @@ class OgLiveOperations:
code = int(pa.parttype, base=16)
if mount_mkdir(pa.padev, target):
part_setup['os'] = ''
if part_setup['disk'] == '1':
probe_result = os_probe(target)
part_setup['os'] = probe_result
probe_result = os_probe(target)
part_setup['os'] = probe_result
total, used, free = shutil.disk_usage(target)
part_setup['used_size'] = used
@ -528,12 +526,7 @@ class OgLiveOperations:
raise OgError(f'Invalid disk number {disk}, {len(get_disks())} disks available.')
diskname = get_disks()[disk-1]
try:
self._partition(diskname, table_type, partlist)
except Exception as e:
ret = subprocess.run(['wipefs', '-af', f'/dev/{diskname}'])
logging.warning(f'wipefs on /dev/{diskname} after failure for consistency, reports {ret.returncode}')
raise
self._partition(diskname, table_type, partlist)
ret = subprocess.run(['partprobe', f'/dev/{diskname}'])
logging.info(f'first partprobe /dev/{diskname} reports {ret.returncode}')
@ -601,14 +594,19 @@ class OgLiveOperations:
extend_filesystem(disk, partition)
if disk == 1:
configure_os(disk, partition)
configure_os(disk, partition)
result = self.refresh(ogRest)
self.refresh(ogRest)
logging.info('Image restore command OK')
return result
json_dict = {
'disk': request.getDisk(),
'partition': request.getPartition(),
'image_id': request.getId(),
'cache': self._get_cache_contents(),
}
return json_dict
def image_create(self, request, ogRest):
disk = int(request.getDisk())
@ -746,6 +744,7 @@ class OgLiveOperations:
def cache_delete(self, request, ogRest):
images = request.getImages()
deleted_images = []
logging.info(f'Request to remove files from cache')

View File

@ -153,19 +153,13 @@ def mkfs(fs, disk, partition, label=None):
if fs not in fsdict:
raise OgError(f'mkfs failed, unsupported target filesystem {fs}')
partdev = get_partition_device(disk, partition)
try:
partdev = get_partition_device(disk, partition)
except ValueError as e:
raise OgError(f'mkfs aborted: {e}') from e
ret = subprocess.run(['wipefs', '-af', f'{partdev}'])
if ret.returncode != 0:
logging.warning(f'wipefs on {partdev}, fails with {ret.returncode}')
return fsdict[fs](partdev, label)
err = fsdict[fs](partdev, label)
if err != 0:
ret = subprocess.run(['wipefs', '-af', f'{partdev}'])
if ret.returncode != 0:
logging.warning(f'wipefs on {partdev} for consistency, fails with {ret.returncode}')
return err
def mkfs_ext4(partdev, label=None):
err = -1

View File

@ -334,7 +334,6 @@ def get_disk_part_type(disk_num):
def _update_nvram(esp_disk, esp_part_number):
loader_path = '/EFI/grub/Boot/shimx64.efi'
bootlabel = 'grub'
egibootmgr_reorder_disabled_entries()
efibootmgr_delete_bootentry(bootlabel)
efibootmgr_create_bootentry(esp_disk, esp_part_number, loader_path, bootlabel, add_to_bootorder=False)
efibootmgr_set_entry_order(bootlabel, 1)

View File

@ -25,7 +25,7 @@ def _find_bootentry(entries, label):
if entry['description'] == label:
return entry
else:
raise OgError(f'Boot entry {label} not found')
raise OgError('Boot entry {label} not found')
def _strip_boot_prefix(entry):
@ -95,13 +95,8 @@ def efibootmgr_bootnext(description):
entry = _find_bootentry(boot_entries, description)
num = _strip_boot_prefix(entry) # efibootmgr output uses BootXXXX for each entry, remove the "Boot" prefix.
bootnext_cmd = bootnext_cmd.format(bootnum=num, efibootmgr=EFIBOOTMGR_BIN)
try:
subprocess.run(shlex.split(bootnext_cmd), check=True,
stdout=subprocess.DEVNULL)
except subprocess.CalledProcessError:
logging.warning("Failed to update BootNext. UEFI firmware might be buggy")
except OSError as e:
raise OgError(f"Unexpected error updating BootNext: {e}") from e
subprocess.run(shlex.split(bootnext_cmd), check=True,
stdout=subprocess.DEVNULL)
def efibootmgr_delete_bootentry(label):
@ -112,12 +107,7 @@ def efibootmgr_delete_bootentry(label):
if entry['description'] == label:
num = entry['name'][4:] # Remove "Boot" prefix to extract num
efibootmgr_cmd = efibootmgr_cmd.format(bootnum=num, efibootmgr=EFIBOOTMGR_BIN)
try:
subprocess.run(shlex.split(efibootmgr_cmd), check=True)
except subprocess.CalledProcessError:
logging.warning(f"Failed to delete boot entry {label}. UEFI firmware might be buggy")
except OSError as e:
raise OgError(f"Unexpected error deleting boot entry {label}: {e}") from e
subprocess.run(shlex.split(efibootmgr_cmd), check=True)
break
else:
logging.info(f'Cannot delete boot entry {label} because it was not found.')
@ -131,10 +121,8 @@ def efibootmgr_create_bootentry(disk, part, loader, label, add_to_bootorder=True
logging.info(f'{EFIBOOTMGR_BIN} command creating boot entry: {efibootmgr_cmd}')
try:
proc = subprocess.run(shlex.split(efibootmgr_cmd), check=True, text=True)
except subprocess.CalledProcessError:
logging.warning(f"Failed to add boot entry {label} to NVRAM. UEFI firmware might be buggy")
except OSError as e:
raise OgError(f"Unexpected error adding boot entry {label}: {e}") from e
raise OgError(f'Unexpected error adding boot entry to nvram. UEFI firmware might be buggy') from e
def efibootmgr_set_entry_order(label, position):
logging.info(f'Setting {label} entry to position {position} of boot order')
@ -152,29 +140,8 @@ def efibootmgr_set_entry_order(label, position):
try:
proc = subprocess.run([EFIBOOTMGR_BIN, "-o", ",".join(boot_order)], check=True, text=True)
except subprocess.CalledProcessError:
logging.warning("Failed to set boot order to NVRAM. UEFI firmware might be buggy")
except OSError as e:
raise OgError(f"Unexpected error updating boot order: {e}") from e
def egibootmgr_reorder_disabled_entries():
logging.info(f'Setting disabled entries at the end of boot order')
boot_info = run_efibootmgr_json(validate=False)
boot_entries = boot_info.get('vars', [])
boot_order = boot_info.get('BootOrder', [])
for entry in boot_entries:
entry_number = _strip_boot_prefix(entry)
if not entry['active'] and entry_number in boot_order:
boot_order.remove(entry_number)
boot_order.append(entry_number)
try:
proc = subprocess.run([EFIBOOTMGR_BIN, "-o", ",".join(boot_order)], check=True, text=True)
except subprocess.CalledProcessError:
logging.warning("Failed to update boot order. UEFI firmware might be buggy")
except OSError as e:
raise OgError(f"Unexpected error updating boot order: {e}") from e
raise OgError(f'Unexpected error setting boot order to NVRAM. UEFI firmware might be buggy') from e
def _find_efi_loader(loader_paths):
for efi_app in loader_paths: