From: Pascal Terjan Date: Fri, 24 Apr 2009 17:00:05 +0000 (+0200) Subject: isohybrid: preserve MBR id in isohybrid X-Git-Tag: syslinux-3.80-pre6~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a7045801f4dcc4d54f5eeab35018b361cbd45c2;p=platform%2Fupstream%2Fsyslinux.git isohybrid: preserve MBR id in isohybrid When running isohybrid again it's nice to preserve the MBR id There was some partial code to support setting the id using non existing to_int, but no way to use it. Signed-off-by: Pascal Terjan Signed-off-by: H. Peter Anvin --- diff --git a/utils/isohybrid.in b/utils/isohybrid.in index e98c59f..83f9dc0 100644 --- a/utils/isohybrid.in +++ b/utils/isohybrid.in @@ -100,6 +100,13 @@ if ($c > 1024) { $cc = $c; } +# Preserve id when run again +seek(FILE, 440, SEEK_SET) or die "$0: $file: $!\n"; +read(FILE, $id, 4); +if ($id eq "\x00\x00\x00\x00") { + $id = pack("V", get_random()); +} + # Print the MBR and partition table seek(FILE, 0, SEEK_SET) or die "$0: $file: $!\n"; @@ -117,12 +124,7 @@ if ( length($mbr) > 432 ) { $mbr .= "\0" x (432 - length($mbr)); $mbr .= pack("VV", $de_lba*4, 0); # Offset 432: LBA of isolinux.bin -if (defined($id)) { - $id = to_int($id); -} else { - $id = get_random(); -} -$mbr .= pack("V", $id); # Offset 440: MBR ID +$mbr .= $id; # Offset 440: MBR ID $mbr .= "\0\0"; # Offset 446: actual partition table # Print partition table