| 1329 | #undef Scissor |
| 1330 | |
| 1331 | VOID ScanLoader(VOID) |
| 1332 | { |
| 1333 | //DBG("Scanning loaders...\n"); |
| 1334 | DbgHeader("ScanLoader"); |
| 1335 | |
| 1336 | for (UINTN VolumeIndex = 0; VolumeIndex < Volumes.size(); VolumeIndex++) { |
| 1337 | REFIT_VOLUME* Volume = &Volumes[VolumeIndex]; |
| 1338 | if (Volume->RootDir == NULL) { // || Volume->VolName == NULL) |
| 1339 | //DBG(", no file system\n", VolumeIndex); |
| 1340 | continue; |
| 1341 | } |
| 1342 | DBG("- [%02llu]: '%ls'", VolumeIndex, Volume->VolName.wc_str()); |
| 1343 | if (Volume->VolName.isEmpty()) { |
| 1344 | Volume->VolName = L"Unknown"_XSW; |
| 1345 | } |
| 1346 | |
| 1347 | // skip volume if its kind is configured as disabled |
| 1348 | if (((1ull<<Volume->DiskKind) & GlobalConfig.DisableFlags) != 0) |
| 1349 | { |
| 1350 | DBG(", flagged disable\n"); |
| 1351 | continue; |
| 1352 | } |
| 1353 | |
| 1354 | // if (Volume->Hidden) { |
| 1355 | // DBG(", hidden\n"); |
| 1356 | // continue; |
| 1357 | // } |
| 1358 | DBG("\n"); |
| 1359 | |
| 1360 | // check for Mac OS X Install Data |
| 1361 | // 1st stage - createinstallmedia |
| 1362 | if (FileExists(Volume->RootDir, L"\\.IABootFiles\\boot.efi")) { |
| 1363 | if (FileExists(Volume->RootDir, L"\\Install OS X Mavericks.app") || |
| 1364 | FileExists(Volume->RootDir, L"\\Install OS X Yosemite.app") || |
| 1365 | FileExists(Volume->RootDir, L"\\Install OS X El Capitan.app")) { |
| 1366 | AddLoaderEntry(L"\\.IABootFiles\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.9 - 10.11 |
| 1367 | } else { |
| 1368 | AddLoaderEntry(L"\\.IABootFiles\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12 - 10.13.3 |
| 1369 | } |
| 1370 | } else if (FileExists(Volume->RootDir, L"\\.IAPhysicalMedia") && FileExists(Volume->RootDir, MACOSX_LOADER_PATH)) { |
| 1371 | AddLoaderEntry(MACOSX_LOADER_PATH, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.13.4+ |
| 1372 | } |
| 1373 | // 2nd stage - InstallESD/AppStore/startosinstall/Fusion Drive |
| 1374 | AddLoaderEntry(L"\\Mac OS X Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"Mac OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.7 |
| 1375 | AddLoaderEntry(L"\\OS X Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.8 - 10.11 |
| 1376 | AddLoaderEntry(L"\\macOS Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12 - 10.12.3 |
| 1377 | AddLoaderEntry(L"\\macOS Install Data\\Locked Files\\Boot Files\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12.4+ |
| 1378 | AddLoaderEntry(L"\\macOS Install Data\\Locked Files\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.16+ |
| 1379 | AddPRSEntry(Volume); // 10.12+ |
| 1380 | |
| 1381 | // Netinstall |
| 1382 | AddLoaderEntry(L"\\NetInstall macOS High Sierra.nbi\\i386\\booter"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); |
| 1383 | // Use standard location for boot.efi, according to the install files is present |
| 1384 | // That file indentifies a DVD/ESD/BaseSystem/Fusion Drive Install Media, so when present, check standard path to avoid entry duplication |
| 1385 | if (FileExists(Volume->RootDir, MACOSX_LOADER_PATH)) { |
| 1386 | if (FileExists(Volume->RootDir, L"\\System\\Installation\\CDIS\\Mac OS X Installer.app")) { |
| 1387 | // InstallDVD/BaseSystem |
| 1388 | AddLoaderEntry(MACOSX_LOADER_PATH, NullXString8Array, L""_XSW, L"Mac OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.6/10.7 |
no test coverage detected