Changeset 101697 in vbox for trunk/src/VBox/Main/src-server
- Timestamp:
- Nov 1, 2023 11:56:34 AM (16 months ago)
- svn:sync-xref-src-repo-rev:
- 159791
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp
r101695 r101697 1389 1389 RTVFS hVfsOrgIso, bool fOverwrite) 1390 1390 { 1391 Utf8Str strIsoLinuxCfg; 1391 /* 1392 * Figure out the name of the menu config file that we have to edit. 1393 */ 1394 bool fMenuConfigIsGrub = false; 1395 const char *pszMenuConfigFilename = "/isolinux/isolinux.cfg"; 1396 if (!hlpVfsFileExists(hVfsOrgIso, pszMenuConfigFilename)) 1397 { 1398 /* arm64 variants of Oracle Linux 9 have grub. */ 1399 if (hlpVfsFileExists(hVfsOrgIso, "/EFI/BOOT/grub.cfg")) 1400 { 1401 pszMenuConfigFilename = "/EFI/BOOT/grub.cfg"; 1402 fMenuConfigIsGrub = true; 1403 } 1404 else 1405 AssertFailed(); 1406 } 1407 1408 /* 1409 * VISO bits and filenames. 1410 */ 1411 RTCString strBootCfg; 1392 1412 try 1393 1413 { … … 1403 1423 rVecArgs.append() = "--dir-mode=0555"; 1404 1424 1405 /* We replace isolinux.cfg with our edited version (see further down). */ 1406 rVecArgs.append() = "isolinux/isolinux.cfg=:must-remove:"; 1407 strIsoLinuxCfg = mpParent->i_getAuxiliaryBasePath(); 1408 strIsoLinuxCfg.append("isolinux-isolinux.cfg"); 1409 rVecArgs.append().append("isolinux/isolinux.cfg=").append(strIsoLinuxCfg); 1410 1425 /* Replace the grub.cfg/isolinux.cfg configuration file. */ 1426 if (fMenuConfigIsGrub) 1427 { 1428 /* Replace menu configuration file as well. */ 1429 rVecArgs.append().assign(pszMenuConfigFilename).append("=:must-remove:"); 1430 strBootCfg = mpParent->i_getAuxiliaryBasePath(); 1431 strBootCfg.append("grub.cfg"); 1432 rVecArgs.append().assign(pszMenuConfigFilename).append("=").append(strBootCfg); 1433 } 1434 else 1435 { 1436 /* First remove. */ 1437 rVecArgs.append() = "isolinux/isolinux.cfg=:must-remove:"; 1438 strBootCfg = mpParent->i_getAuxiliaryBasePath(); 1439 strBootCfg.append("isolinux-isolinux.cfg"); 1440 rVecArgs.append().append("isolinux/isolinux.cfg=").append(strBootCfg); 1441 } 1411 1442 #else 1412 1443 /** @todo Maybe we should just remaster the ISO for redhat derivatives too? … … 1423 1454 rVecArgs.append() = "/isolinux/isolinux.cfg=:must-remove:"; 1424 1455 1425 str IsoLinuxCfg = mpParent->i_getAuxiliaryBasePath();1426 str IsoLinuxCfg.append("isolinux-isolinux.cfg");1427 rVecArgs.append().append("/isolinux/isolinux.cfg=").append(str IsoLinuxCfg);1456 strBootCfg = mpParent->i_getAuxiliaryBasePath(); 1457 strBootCfg.append("isolinux-isolinux.cfg"); 1458 rVecArgs.append().append("/isolinux/isolinux.cfg=").append(strBootCfg); 1428 1459 1429 1460 /* Configure booting /isolinux/isolinux.bin. */ … … 1444 1475 } 1445 1476 1446 /*1447 * Edit isolinux.cfg and save it.1448 */1449 1477 { 1450 1478 GeneralTextScript Editor(mpParent); 1451 HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, "/isolinux/isolinux.cfg", &Editor);1479 HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, pszMenuConfigFilename, &Editor); 1452 1480 if (SUCCEEDED(hrc)) 1453 hrc = editIsoLinuxCfg(&Editor); 1454 if (SUCCEEDED(hrc)) 1455 { 1456 hrc = Editor.save(strIsoLinuxCfg, fOverwrite); 1481 { 1482 if (fMenuConfigIsGrub) 1483 hrc = editGrubCfg(&Editor); 1484 else 1485 hrc = editIsoLinuxCfg(&Editor); 1457 1486 if (SUCCEEDED(hrc)) 1458 1487 { 1459 try 1488 hrc = Editor.save(strBootCfg, fOverwrite); 1489 if (SUCCEEDED(hrc)) 1460 1490 { 1461 rVecFiles.append(strIsoLinuxCfg); 1462 } 1463 catch (std::bad_alloc &) 1464 { 1465 RTFileDelete(strIsoLinuxCfg.c_str()); 1466 hrc = E_OUTOFMEMORY; 1491 try 1492 { 1493 rVecFiles.append(strBootCfg); 1494 } 1495 catch (std::bad_alloc &) 1496 { 1497 RTFileDelete(strBootCfg.c_str()); 1498 hrc = E_OUTOFMEMORY; 1499 } 1467 1500 } 1468 1501 }
Note:
See TracChangeset
for help on using the changeset viewer.