Index: trunk/doc/BootHelp.txt =================================================================== --- trunk/doc/BootHelp.txt (revision 181) +++ trunk/doc/BootHelp.txt (revision 182) @@ -47,7 +47,8 @@ "Instant Menu"=Yes Force displaying the partition selection menu. "Default Partition" Sets the default boot partition, - =hd(x,y) where 'x' & 'y' are the disk and partition numbers. + =hd(x,y)| where 'x' & 'y' are the disk and partition numbers + = or specify the selected volume UUID string. "Hide Partition" Remove unwanted partition(s) from the boot menu. =hd(x,y) [hd(m,n)] only non mac osx boot partitions can be hidden. Index: trunk/CHANGES =================================================================== --- trunk/CHANGES (revision 181) +++ trunk/CHANGES (revision 182) @@ -1,3 +1,5 @@ +- Added alternate format for setting the default partition. The user can specify the selected + volume UUID for the "Default Partition" key. - Implemented SPD memory automatic detection and injection,seems to work really great ... - Factorized code to prepare a dynamic memory detection algorithm ... - Optimized smbios table address search Index: trunk/i386/libsaio/sys.c =================================================================== --- trunk/i386/libsaio/sys.c (revision 181) +++ trunk/i386/libsaio/sys.c (revision 182) @@ -774,7 +774,7 @@ return bvr; /* - * Checking "Default Partition" key in system configuration - use format: hd(x,y) - + * Checking "Default Partition" key in system configuration - use format: hd(x,y) or the volume UUID - * to override the default selection. * We accept only kBVFlagSystemVolume or kBVFlagForeignBoot volumes. */ @@ -786,13 +786,17 @@ { for ( bvr = chain; bvr; bvr = bvr->next ) { - *testStr = '\0'; if ( bvr->biosdev >= 0x80 && bvr->biosdev < 0x100 && ( bvr->flags & ( kBVFlagSystemVolume|kBVFlagForeignBoot ) ) ) { + // Trying to match hd(x,y) format. sprintf(testStr, "hd(%d,%d)", bvr->biosdev - 0x80, bvr->part_no); if (strcmp(testStr, val) == 0) return bvr; + + // Trying to match volume UUID. + if (bvr->fs_getuuid && bvr->fs_getuuid(bvr, testStr) == 0 && strcmp(testStr, val) == 0) + return bvr; } } }