VirtualBox

Changeset 96706 in vbox for trunk


Ignore:
Timestamp:
Sep 12, 2022 4:42:01 PM (2 years ago)
Author:
vboxsync
Message:

Unattended: bugref:9781. Some modifications on OS detection and menu config file editing to enable unattended install for Linux Mint.

Location:
trunk/src/VBox/Main/src-server
Files:
2 edited

Legend:

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

    r96619 r96706  
    14081408        pszOsAndVersion = RTStrStripL(pszOsAndVersion + 6);
    14091409    }
     1410    else if (   RTStrNICmp(pszOsAndVersion, RT_STR_TUPLE("Linux Mint")) == 0
     1411             && !RT_C_IS_ALNUM(pszOsAndVersion[10]))
     1412    {
     1413        *penmOsType = (VBOXOSTYPE)((*penmOsType & VBOXOSTYPE_x64) | VBOXOSTYPE_Ubuntu);
     1414        pszOsAndVersion = RTStrStripL(pszOsAndVersion + 10);
     1415    }
    14101416    else if (    (   RTStrNICmp(pszOsAndVersion, RT_STR_TUPLE("Xubuntu")) == 0
    14111417                  || RTStrNICmp(pszOsAndVersion, RT_STR_TUPLE("Kubuntu")) == 0
     
    14551461        *penmOsType = (VBOXOSTYPE)((*penmOsType & VBOXOSTYPE_x64) | VBOXOSTYPE_FedoraCore);
    14561462    else if (RTStrIStr(pszOsAndVersion, "Ubuntu") != NULL)
     1463        *penmOsType = (VBOXOSTYPE)((*penmOsType & VBOXOSTYPE_x64) | VBOXOSTYPE_Ubuntu);
     1464    else if (RTStrIStr(pszOsAndVersion, "Mint") != NULL)
    14571465        *penmOsType = (VBOXOSTYPE)((*penmOsType & VBOXOSTYPE_x64) | VBOXOSTYPE_Ubuntu);
    14581466    else if (RTStrIStr(pszOsAndVersion, "Debian"))
  • trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp

    r96657 r96706  
    898898    try
    899899    {
    900         /* Set timeouts to 10 seconds. */
     900        /* Set timeouts to 4 seconds. */
    901901        std::vector<size_t> vecLineNumbers = pEditor->findTemplate("timeout", RTCString::CaseInsensitive);
    902902        for (size_t i = 0; i < vecLineNumbers.size(); ++i)
    903903            if (pEditor->getContentOfLine(vecLineNumbers[i]).startsWithWord("timeout", RTCString::CaseInsensitive))
    904904            {
    905                 HRESULT hrc = pEditor->setContentOfLine(vecLineNumbers.at(i), "timeout 10");
     905                HRESULT hrc = pEditor->setContentOfLine(vecLineNumbers.at(i), "timeout 4");
    906906                if (FAILED(hrc))
    907907                    return hrc;
     
    10171017        if (hlpVfsFileExists(hVfsOrgIso, "/isolinux/menu.cfg"))
    10181018            pszMenuConfigFilename     =  "/isolinux/menu.cfg";
    1019 
     1019        /* On Linux Mint 20.3, 21, and 19 (at least) there is only isolinux.cfg. */
     1020        else if (hlpVfsFileExists(hVfsOrgIso, "/isolinux/isolinux.cfg"))
     1021            pszMenuConfigFilename     =  "/isolinux/isolinux.cfg";
    10201022        /* Ubuntus 21.10+ are UEFI only. No isolinux directory. We modify grub.cfg. */
    10211023        else if (hlpVfsFileExists(hVfsOrgIso, "/boot/grub/grub.cfg"))
     
    10581060        }
    10591061
    1060         /* Replace menu configuration file as well. */
    1061         rVecArgs.append().assign(pszMenuConfigFilename).append("=:must-remove:");
    1062         strTxtCfg = mpParent->i_getAuxiliaryBasePath();
    1063         if (fMenuConfigIsGrub)
    1064             strTxtCfg.append("grub.cfg");
    1065         else
    1066             strTxtCfg.append("isolinux-txt.cfg");
    1067         rVecArgs.append().assign(pszMenuConfigFilename).append("=").append(strTxtCfg);
     1062        /*
     1063         * Replace menu configuration file as well.
     1064         * Some distros (Linux Mint) has only isolinux.cfg. No menu.cfg or txt.cfg.
     1065         */
     1066        if (RTStrICmp(pszMenuConfigFilename, "/isolinux/isolinux.cfg") != 0)
     1067        {
     1068
     1069            /* Replace menu configuration file as well. */
     1070            rVecArgs.append().assign(pszMenuConfigFilename).append("=:must-remove:");
     1071            strTxtCfg = mpParent->i_getAuxiliaryBasePath();
     1072            if (fMenuConfigIsGrub)
     1073                strTxtCfg.append("grub.cfg");
     1074            else
     1075                strTxtCfg.append("isolinux-txt.cfg");
     1076            rVecArgs.append().assign(pszMenuConfigFilename).append("=").append(strTxtCfg);
     1077        }
    10681078    }
    10691079    catch (std::bad_alloc &)
     
    11031113    /*
    11041114     * Edit the menu config file.
    1105      */
     1115     * Some distros (Linux Mint) has only isolinux.cfg. No menu.cfg or txt.cfg.
     1116    */
     1117    if (RTStrICmp(pszMenuConfigFilename, "/isolinux/isolinux.cfg") != 0)
    11061118    {
    11071119        GeneralTextScript Editor(mpParent);
     
    11121124                hrc = editDebianGrubCfg(&Editor);
    11131125            else
    1114                 hrc = editDebianMenuCfg(&Editor);
     1126                    hrc = editDebianMenuCfg(&Editor);
    11151127            if (SUCCEEDED(hrc))
    11161128            {
     
    11641176        std::vector<size_t> vecLineNumbers =  pEditor->findTemplate("default", RTCString::CaseInsensitive);
    11651177        for (size_t i = 0; i < vecLineNumbers.size(); ++i)
    1166             if (pEditor->getContentOfLine(vecLineNumbers[i]).startsWithWord("default", RTCString::CaseInsensitive))
     1178            if (pEditor->getContentOfLine(vecLineNumbers[i]).startsWithWord("default", RTCString::CaseInsensitive)
     1179                && !pEditor->getContentOfLine(vecLineNumbers[i]).contains("default vesa", RTCString::CaseInsensitive))
    11671180            {
    11681181                HRESULT hrc = pEditor->prependToLine(vecLineNumbers.at(i), "#");
     
    12701283    try
    12711284    {
    1272         /* Set timeouts to 10 seconds. */
     1285        /* Set timeouts to 4 seconds. */
    12731286        std::vector<size_t> vecLineNumbers = pEditor->findTemplate("set timeout", RTCString::CaseInsensitive);
    12741287        for (size_t i = 0; i < vecLineNumbers.size(); ++i)
    12751288            if (pEditor->getContentOfLine(vecLineNumbers[i]).startsWithWord("set timeout", RTCString::CaseInsensitive))
    12761289            {
    1277                 HRESULT hrc = pEditor->setContentOfLine(vecLineNumbers.at(i), "set timeout=10");
     1290                HRESULT hrc = pEditor->setContentOfLine(vecLineNumbers.at(i), "set timeout=4");
    12781291                if (FAILED(hrc))
    12791292                    return hrc;
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