diff --git a/scripts/wk/kit/ufd.py b/scripts/wk/kit/ufd.py index fcf6fa23..114cd6f2 100644 --- a/scripts/wk/kit/ufd.py +++ b/scripts/wk/kit/ufd.py @@ -5,6 +5,7 @@ import logging import math import os import pathlib +import re import shutil from subprocess import CalledProcessError @@ -125,7 +126,7 @@ def build_ufd() -> None: if not args['--update']: ui.print_info('Prep UFD') try_print.run( - message='Zeroing first 64MiB...', + message='Zeroing first 1MiB...', function=zero_device, dev_path=ufd_dev, ) @@ -289,7 +290,7 @@ def confirm_selections(update=False) -> None: def copy_source(source, items, from_live=False, overwrite=False) -> None: """Copy source items to /mnt/UFD.""" - is_image = not from_live and source.is_file() + is_image = not from_live and (source.is_file() or source.is_block_device()) items_not_found = False # Mount source if necessary @@ -474,6 +475,7 @@ def is_valid_path(path_obj, path_type) -> bool: valid_path = path_obj.is_file() and path_obj.suffix.lower() == '.img' elif path_type == 'ISO': valid_path = path_obj.is_file() and path_obj.suffix.lower() == '.iso' + valid_path = valid_path or re.match(r'^/dev/sr\d+$', str(path_obj)) elif path_type == 'UFD': valid_path = path_obj.is_block_device() @@ -676,12 +678,12 @@ def verify_ufd(dev_path) -> pathlib.Path: def zero_device(dev_path) -> None: - """Zero-out first 64MB of device.""" + """Zero-out first 1MB of device.""" cmd = [ 'sudo', 'dd', - 'bs=4M', - 'count=16', + 'bs=1M', + 'count=1', 'if=/dev/zero', f'of={dev_path}', ]