Index: branches/ErmaC/Enoch/i386/libsaio/disk.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/disk.c (revision 2459) +++ branches/ErmaC/Enoch/i386/libsaio/disk.c (revision 2460) @@ -1576,21 +1576,43 @@ config_file_t systemVersion; char dirSpec[512]; - sprintf(dirSpec, "hd(%d,%d)/System/Library/CoreServices/SystemVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no); + sprintf(dirSpec, "hd(%d,%d)/com.apple.recovery.boot/SystemVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no); if (!loadConfigFile(dirSpec, &systemVersion)) { + bvr->OSisInstaller = true; valid = true; } - else + + if (!valid) { - sprintf(dirSpec, "hd(%d,%d)/System/Library/CoreServices/ServerVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no); + sprintf(dirSpec, "hd(%d,%d)/System/Library/CoreServices/SystemVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no); if (!loadConfigFile(dirSpec, &systemVersion)) { - bvr->OSisServer = true; + bvr->OSisInstaller = true; valid = true; } + else + { + sprintf(dirSpec, "hd(%d,%d)/System/Library/CoreServices/ServerVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no); + + if (!loadConfigFile(dirSpec, &systemVersion)) + { + bvr->OSisServer = true; + valid = true; + } +/* else + { + sprintf(dirSpec, "hd(%d,%d)/.IAProductInfo", BIOS_DEV_UNIT(bvr), bvr->part_no); + + if (!loadConfigFile(dirSpec, &systemVersion)) + { + + } + } +*/ + } } if (valid) @@ -1634,7 +1656,19 @@ } else { - close(fh); + sprintf(dirSpec, "hd(%d,%d)/.IAPhysicalMedia", BIOS_DEV_UNIT(bvr), bvr->part_no); + fh = open(dirSpec, 0); + + if (fh >= 0) + { + valid = true; + bvr->OSisInstaller = true; + strcpy(bvr->OSVersion, "10.9"); // 10.9 + + } + else + { + close(fh); + } } } return valid; Index: branches/ErmaC/Enoch/i386/libsaio/stringTable.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/stringTable.c (revision 2459) +++ branches/ErmaC/Enoch/i386/libsaio/stringTable.c (revision 2460) @@ -614,8 +614,11 @@ int loadSystemConfig(config_file_t *config) { char *dirspec[] = { + "/Mac OS X Install Data/com.apple.Boot.plist", "/OS X Install Data/com.apple.Boot.plist", + "/.IABootFiles/com.apple.Boot.plist", // OS X Installer "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist", + "/com.apple.recovery.boot/com.apple.Boot.plist" // OS X Recovery }; int i, fd, count, ret=-1; Index: branches/ErmaC/Enoch/i386/boot2/boot.c =================================================================== --- branches/ErmaC/Enoch/i386/boot2/boot.c (revision 2459) +++ branches/ErmaC/Enoch/i386/boot2/boot.c (revision 2460) @@ -310,22 +310,28 @@ // If boot from a boot helper partition check the kernel cache file on it if (gBootVolume->flags & kBVFlagBooter) { - snprintf(kernelCachePath, sizeof(kernelCachePath), "com.apple.boot.P%s", kernelCacheFile); + snprintf(kernelCachePath, sizeof(kernelCachePath), "/com.apple.boot.P/%s", kernelCacheFile); ret = GetFileInfo(NULL, kernelCachePath, &flags, &cachetime); if ((ret == -1) || ((flags & kFileTypeMask) != kFileTypeFlat)) { - snprintf(kernelCachePath, sizeof(kernelCachePath), "com.apple.boot.R%s", kernelCacheFile); + snprintf(kernelCachePath, sizeof(kernelCachePath), "/com.apple.boot.R/%s", kernelCacheFile); ret = GetFileInfo(NULL, kernelCachePath, &flags, &cachetime); if ((ret == -1) || ((flags & kFileTypeMask) != kFileTypeFlat)) { - snprintf(kernelCachePath, sizeof(kernelCachePath), "com.apple.boot.S%s", kernelCacheFile); + snprintf(kernelCachePath, sizeof(kernelCachePath), "/com.apple.boot.S/%s", kernelCacheFile); ret = GetFileInfo(NULL, kernelCachePath, &flags, &cachetime); - if ((flags & kFileTypeMask) != kFileTypeFlat) + if ((ret == -1) || ((flags & kFileTypeMask) != kFileTypeFlat)) { - ret = -1; + snprintf(kernelCachePath, sizeof(kernelCachePath), "/com.apple.recovery.boot/kernelcache", kernelCacheFile); + ret = GetFileInfo(NULL, kernelCachePath, &flags, &cachetime); + + if ((flags & kFileTypeMask) != kFileTypeFlat) + { + ret = -1; + } } } } Index: branches/ErmaC/Enoch/CHANGES =================================================================== --- branches/ErmaC/Enoch/CHANGES (revision 2459) +++ branches/ErmaC/Enoch/CHANGES (revision 2460) @@ -1,3 +1,4 @@ +- ErmaC : Merged proposed patch by N3 (Boot from vanilla Recovery HD, Installation DMG) - bitshoveler : Make 'buffer' arg to aml_add_buffer 'const char *', was just 'char *' (aml_generator) - bitshoveler : Fix "sed: RE error: illegal byte sequence", which turns out to be from feeding sed a TIFF file (buildpkg.sh) - bitshoveler : Remove "-x" option from "ld" command which breaks build under newer Xcode versions (MakeInc.dir)