We need to execute blockdev after installing the MBR, otherwise
the devices might not exist yet as expected and executing syslinux
can fail therefore.
While at it remove duplicate mbrtemplate python docstring in install_mbr
Closes: grml/grml2usb#33
Thanks: Darshaka Pathirana for debugging
"mbrtemplate" file, set the "partition" (0..3) active, and install the
result back to "device".
"mbrtemplate" file, set the "partition" (0..3) active, and install the
result back to "device".
- @mbrtemplate: default MBR file
+ @mbrtemplate: default MBR file (must be a valid MBR file of at least 440
+ (or 439 if ismirbsdmbr) bytes)
@device: name of a file assumed to be a hard disc (or USB stick) image, or
something like "/dev/sdb"
@partition: must be a number between 0 and 3, inclusive
@device: name of a file assumed to be a hard disc (or USB stick) image, or
something like "/dev/sdb"
@partition: must be a number between 0 and 3, inclusive
- @mbrtemplate: must be a valid MBR file of at least 440 (or 439 if
- ismirbsdmbr) bytes.
-
@ismirbsdmbr: if true then ignore the active flag, set the mirbsdmbr
specific flag to 0/1/2/3 and set the MBR's default value accordingly. If
false then leave the mirbsdmbr specific flag set to FFh, set all
@ismirbsdmbr: if true then ignore the active flag, set the mirbsdmbr
specific flag to 0/1/2/3 and set the MBR's default value accordingly. If
false then leave the mirbsdmbr specific flag set to FFh, set all
proc = subprocess.Popen(["sync"])
proc.wait()
proc = subprocess.Popen(["sync"])
proc.wait()
+ logging.debug("Probing device via 'blockdev --rereadpt %s'", device)
+ proc = subprocess.Popen(["blockdev", "--rereadpt", device])
+ proc.wait()
+ if proc.returncode != 0:
+ raise Exception(
+ "Couldn't execute blockdev on '%s' (install util-linux?)", device
+ )
+