VirtualBox

Ignore:
Timestamp:
Mar 15, 2023 3:53:43 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156342
Message:

ValidationKit: Add Linux test VMs which have Secure Boot enabled, bugref:10287.

Location:
trunk/src/VBox/ValidationKit/testdriver
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testdriver/vbox.py

    r98962 r98992  
    25092509                     sIommuType = 'none',
    25102510                     sDvdControllerType = 'IDE Controller',
    2511                      sCom1RawFile = None):
     2511                     sCom1RawFile = None,
     2512                     fSecureBoot = False,
     2513                     sUefiMokPathPrefix = None):
    25122514        """
    25132515        Creates a test VM with a immutable HD from the test resources.
     
    25672569            elif fRc and sFirmwareType == 'efi':
    25682570                fRc = oSession.setFirmwareType(vboxcon.FirmwareType_EFI);
     2571                if fRc and self.fpApiVer >= 7.0 and fSecureBoot:
     2572                    fRc = oSession.enableSecureBoot(fSecureBoot, sUefiMokPathPrefix);
    25692573            if fRc and self.fEnableDebugger:
    25702574                fRc = oSession.setExtraData('VBoxInternal/DBGC/Enabled', '1');
  • trunk/src/VBox/ValidationKit/testdriver/vboxtestvms.py

    r98655 r98992  
    973973                 sIommuType = 'none',                       # type: str
    974974                 sHddControllerType = 'IDE Controller',     # type: str
    975                  sDvdControllerType = 'IDE Controller'      # type: str
     975                 sDvdControllerType = 'IDE Controller',     # type: str
     976                 fSecureBoot = False,                       # type: bool
     977                 sUefiMokPathPrefix = None                  # type: str
    976978                 ):
    977979        self.oSet                    = oSet;
     
    10011003        self.fCom1RawFile            = False;
    10021004
     1005        self.fSecureBoot             = fSecureBoot;
     1006        self.sUefiMokPathPrefix      = sUefiMokPathPrefix;
     1007
    10031008        self.fSnapshotRestoreCurrent = False;        # Whether to restore execution on the current snapshot.
    10041009        self.fSkip                   = False;        # All VMs are included in the configured set by default.
     
    11981203                                     sChipsetType       = self.sChipsetType,
    11991204                                     sIommuType         = self.sIommuType,
    1200                                      sCom1RawFile       = self.sCom1RawFile if self.fCom1RawFile else None
     1205                                     sCom1RawFile       = self.sCom1RawFile if self.fCom1RawFile else None,
     1206                                     fSecureBoot        = self.fSecureBoot,
     1207                                     sUefiMokPathPrefix = self.sUefiMokPathPrefix
    12011208                                     );
    12021209
     
    19501957               sKind = 'Oracle_64', acCpusSup = range(1, 33), fIoApic = True, sFirmwareType = 'efi',
    19511958               asParavirtModesSup = [g_ksParavirtProviderKVM,]),
     1959        TestVm('tst-ol-8_1-64-efi-sb',      kfGrpStdSmoke,        sHd = '6.1/efi/ol-8_1-efi-amd64-2.vdi',
     1960               sKind = 'Oracle_64', acCpusSup = range(1, 33), fIoApic = True, sFirmwareType = 'efi',
     1961               asParavirtModesSup = [g_ksParavirtProviderKVM,], fSecureBoot = True, sUefiMokPathPrefix = '7.0/mok/vbox-test-MOK'),
    19521962        TestVm('tst-ol-6u2-32',             kfGrpStdSmoke,        sHd = '6.1/ol-6u2-x86.vdi',
    19531963               sKind = 'Oracle',    acCpusSup = range(1, 33), fIoApic = True,
     
    19561966               sKind = 'Ubuntu_64', acCpusSup = range(1, 33), fIoApic = True, sFirmwareType = 'efi',
    19571967               asParavirtModesSup = [g_ksParavirtProviderKVM,]),
     1968        TestVm('tst-ubuntu-15_10-64-efi-sb', kfGrpStdSmoke,       sHd = '6.1/efi/ubuntu-15_10-efi-amd64-3.vdi',
     1969               sKind = 'Ubuntu_64', acCpusSup = range(1, 33), fIoApic = True, sFirmwareType = 'efi',
     1970               asParavirtModesSup = [g_ksParavirtProviderKVM,], fSecureBoot = True, sUefiMokPathPrefix = '7.0/mok/vbox-test-MOK'),
    19581971        # Note: Deprecated / buggy; use the one in the 6.1 folder.
    19591972        #TestVm('tst-ubuntu-15_10-64-efi',   kfGrpStdSmoke,        sHd = '4.2/efi/ubuntu-15_10-efi-amd64.vdi',
  • trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py

    r98655 r98992  
    4545import socket;
    4646import sys;
     47import uuid;
    4748
    4849# Validation Kit imports.
     
    12291230            reporter.log('set firmwareType=%s for "%s"' % (eType, self.sName));
    12301231        self.oTstDrv.processPendingEvents();
     1232        return fRc;
     1233
     1234    def enableSecureBoot(self, fEnable, sUefiMokPathPrefix = None):
     1235        """
     1236        Enables or disables Secure Boot. Error information is logged.
     1237        """
     1238
     1239        if self.fpApiVer >= 7.0:
     1240
     1241            fRc = True;
     1242            try:
     1243                self.o.machine.nonVolatileStore.initUefiVariableStore(0);
     1244
     1245                # Enroll necessary keys and signatures in case if Secure Boot needs to be turned ON.
     1246                if fEnable:
     1247                    self.o.machine.nonVolatileStore.uefiVariableStore.enrollDefaultMsSignatures();
     1248                    self.o.machine.nonVolatileStore.uefiVariableStore.enrollOraclePlatformKey();
     1249                    if sUefiMokPathPrefix is not None:
     1250                        sFullName = self.oTstDrv.getFullResourceName(sUefiMokPathPrefix) + '.der';
     1251                        with open(sFullName, "rb") as f:
     1252                            self.o.machine.nonVolatileStore.uefiVariableStore.addSignatureToMok(bytearray(f.read()), uuid.uuid4().hex, vboxcon.SignatureType_X509);
     1253
     1254                self.o.machine.nonVolatileStore.uefiVariableStore.secureBootEnabled = fEnable;
     1255            except:
     1256                reporter.errorXcpt('failed to change Secure Boot to %s for "%s"' % (fEnable, self.sName));
     1257                fRc = False;
     1258            else:
     1259                reporter.log('changed Secure Boot to %s for "%s"' % (fEnable, self.sName));
     1260            self.oTstDrv.processPendingEvents();
     1261
     1262        else:
     1263            reporter.log('Secure Boot is only supported for API 7.0 or newer');
     1264            fRc = False;
     1265
    12311266        return fRc;
    12321267
Note: See TracChangeset for help on using the changeset viewer.

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