VirtualBox

Changeset 101697 in vbox for trunk/src/VBox/Main/src-server


Ignore:
Timestamp:
Nov 1, 2023 11:56:34 AM (16 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
159791
Message:

Main/Unattended: Support OracleLinux for unattended installation, bugref:10516

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp

    r101695 r101697  
    13891389                                                          RTVFS hVfsOrgIso, bool fOverwrite)
    13901390{
    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;
    13921412    try
    13931413    {
     
    14031423        rVecArgs.append() = "--dir-mode=0555";
    14041424
    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        }
    14111442#else
    14121443        /** @todo Maybe we should just remaster the ISO for redhat derivatives too?
     
    14231454        rVecArgs.append() = "/isolinux/isolinux.cfg=:must-remove:";
    14241455
    1425         strIsoLinuxCfg = mpParent->i_getAuxiliaryBasePath();
    1426         strIsoLinuxCfg.append("isolinux-isolinux.cfg");
    1427         rVecArgs.append().append("/isolinux/isolinux.cfg=").append(strIsoLinuxCfg);
     1456        strBootCfg = mpParent->i_getAuxiliaryBasePath();
     1457        strBootCfg.append("isolinux-isolinux.cfg");
     1458        rVecArgs.append().append("/isolinux/isolinux.cfg=").append(strBootCfg);
    14281459
    14291460        /* Configure booting /isolinux/isolinux.bin. */
     
    14441475    }
    14451476
    1446     /*
    1447      * Edit isolinux.cfg and save it.
    1448      */
    14491477    {
    14501478        GeneralTextScript Editor(mpParent);
    1451         HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, "/isolinux/isolinux.cfg", &Editor);
     1479        HRESULT hrc = loadAndParseFileFromIso(hVfsOrgIso, pszMenuConfigFilename, &Editor);
    14521480        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);
    14571486            if (SUCCEEDED(hrc))
    14581487            {
    1459                 try
     1488                hrc = Editor.save(strBootCfg, fOverwrite);
     1489                if (SUCCEEDED(hrc))
    14601490                {
    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                    }
    14671500                }
    14681501            }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette