VirtualBox

Changeset 102337 in vbox for trunk/src/VBox/Main/include


Ignore:
Timestamp:
Nov 27, 2023 5:31:10 PM (15 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160473
Message:

Main/Unattended: Implemented support for subiquity-/cloud-init-based installers. This enables installing guest newer Linux-based OSes like Ubuntu >= 22.10 in Unattended mode. More detection code for other variants will follow. Extended testcases. bugref:10551

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/UnattendedInstaller.h

    r102116 r102337  
    642642
    643643/**
    644  * Ubuntu installer (same as debian, except for the template).
    645  */
    646 class UnattendedUbuntuInstaller : public UnattendedDebianInstaller
    647 {
    648 public:
    649     DECLARE_TRANSLATE_METHODS(UnattendedUbuntuInstaller)
    650 
    651     UnattendedUbuntuInstaller(Unattended *pParent)
     644 * Ubuntu preseed installer (same as Debian, except for the template).
     645 *
     646 * Only for older Ubuntu desktop versions (<= 22.04).
     647 */
     648class UnattendedUbuntuPreseedInstaller : public UnattendedDebianInstaller
     649{
     650public:
     651    DECLARE_TRANSLATE_METHODS(UnattendedUbuntuPreseedInstaller)
     652
     653    UnattendedUbuntuPreseedInstaller(Unattended *pParent)
    652654        : UnattendedDebianInstaller(pParent, "ubuntu_preseed.cfg")
    653655    { Assert(!isOriginalIsoNeeded()); Assert(isAuxiliaryIsoNeeded()); Assert(!isAuxiliaryFloppyNeeded()); Assert(isAuxiliaryIsoIsVISO()); }
    654     ~UnattendedUbuntuInstaller() {}
     656    ~UnattendedUbuntuPreseedInstaller() {}
     657};
     658
     659/**
     660 * Ubuntu autoinstall installer.
     661 *
     662 * Newer Ubuntu desktop versions (>= 22.10) as well as newer Ubuntu server versions(>= 20.04) use a different installer ("subiquity")
     663 * which in turn uses the autoinstall / cloud-init installer. This is substantially different from the old preseed files,
     664 * as this is now YAML-based along with a different scheme.
     665 */
     666class UnattendedUbuntuAutoInstallInstaller : public UnattendedDebianInstaller
     667{
     668public:
     669    DECLARE_TRANSLATE_METHODS(UnattendedUbuntuAutoInstall)
     670
     671    UnattendedUbuntuAutoInstallInstaller(Unattended *pParent)
     672        : UnattendedDebianInstaller(pParent,
     673                                    /* pszMainScriptTemplateName = */ "ubuntu_autoinstall_user-data",
     674                                    /* pszPostScriptTemplateName = */ "debian_postinstall.sh",
     675                                    /* pszMainScriptFilename     = */ "user-data")
     676    {
     677        Assert(!isOriginalIsoNeeded()); Assert(isAuxiliaryIsoNeeded());
     678        Assert(!isAuxiliaryFloppyNeeded()); Assert(isAuxiliaryIsoIsVISO());
     679        mStrDefaultExtraInstallKernelParameters.setNull();
     680        mStrDefaultExtraInstallKernelParameters += " autoinstall";
     681        mStrDefaultExtraInstallKernelParameters += " ds=nocloud\\;s=/cdrom/";
     682        mStrDefaultExtraInstallKernelParameters += " ---";
     683        mStrDefaultExtraInstallKernelParameters += " quiet";
     684        mStrDefaultExtraInstallKernelParameters += " splash";
     685        mStrDefaultExtraInstallKernelParameters += " noprompt";  /* no questions about things like CD/DVD ejections */
     686        mStrDefaultExtraInstallKernelParameters += " noshell";   /* No shells on VT1-3 (debian, not ubuntu). */
     687        mStrDefaultExtraInstallKernelParameters += " automatic-ubiquity";   // ubiquity
     688        // the following can probably go into the preseed.cfg:
     689        mStrDefaultExtraInstallKernelParameters.append(" debian-installer/locale=").append(pParent->i_getLocale());
     690        mStrDefaultExtraInstallKernelParameters += " keyboard-configuration/layoutcode=us";
     691        mStrDefaultExtraInstallKernelParameters += " languagechooser/language-name=English"; /** @todo fixme */
     692        mStrDefaultExtraInstallKernelParameters.append(" localechooser/supported-locales=").append(pParent->i_getLocale()).append(".UTF-8");
     693        mStrDefaultExtraInstallKernelParameters.append(" countrychooser/shortlist=").append(pParent->i_getCountry()); // ubiquity?
     694        mStrDefaultExtraInstallKernelParameters += " --";
     695    }
     696    ~UnattendedUbuntuAutoInstallInstaller() {}
     697
     698protected:
     699    HRESULT addFilesToAuxVisoVectors(RTCList<RTCString> &rVecArgs, RTCList<RTCString> &rVecFiles,
     700                                     RTVFS hVfsOrgIso, bool fOverwrite);
    655701};
    656702
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