From 09248a797449ae1af8bfff54dff48117958f839b Mon Sep 17 00:00:00 2001 From: ulinja <56582668+ulinja@users.noreply.github.com> Date: Fri, 22 Apr 2022 15:27:02 +0200 Subject: [PATCH] replace MBR extraction with python-native implementation --- udib/modiso.py | 14 +++----------- udib/udib.py | 12 +++++++----- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/udib/modiso.py b/udib/modiso.py index a9e549b..4cbcb76 100644 --- a/udib/modiso.py +++ b/udib/modiso.py @@ -246,17 +246,9 @@ def extract_mbr_from_iso(path_to_output_file, path_to_source_iso): f"Input file is not an image file: '{path_to_source_iso}'.") # extract the MBR (first 432 Bytes) of the source ISO file - # FIXME do this in python, dd is too dangerous - try: - subprocess.run( - ["dd", f"if={path_to_source_iso.resolve()}", "bs=1", "count=432", - f"of={path_to_output_file.resolve()}"], - shell=True, - check=True) - - except subprocess.CalledProcessError: - raise RuntimeError(f"Failed while extracting MBR from source file: " - f"'{path_to_source_iso}'.") + with open(path_to_source_iso, mode="r+b") as iso_file: + with open(path_to_output_file, mode="w+b") as mbr_file: + mbr_file.write(iso_file.read(432)) def repack_iso(path_to_output_iso, diff --git a/udib/udib.py b/udib/udib.py index 2bdc21c..0f22520 100755 --- a/udib/udib.py +++ b/udib/udib.py @@ -200,6 +200,9 @@ def main(): else: # modify image file using specified preseed file path_to_preseed_file = Path(args.existing_preseed_file) + if not path_to_preseed_file.is_file(): + p.error(f"No such file: '{path_to_preseed_file}'.") + sys.exit(1) if args.path_to_existing_image: # user has specified an existing image file @@ -227,15 +230,14 @@ def main(): # extract image MBR to a temporary directory p.info("Extracting master boot record...") path_to_mbr = Path(tempfile.mkdtemp())/"mbr.bin" - # FIXME fix MBR extraction - #modiso.extract_mbr_from_iso( - # path_to_mbr, - # path_to_image_file) + modiso.extract_mbr_from_iso( + path_to_mbr, + path_to_image_file) # append preseed file to extracted initrd p.info("Appending preseed file...") modiso.append_file_contents_to_initrd_archive( - path_to_extracted_iso_dir, + path_to_extracted_iso_dir/"install.amd"/"initrd.gz", path_to_preseed_file) # regenerate md5sum.txt