VirtualBox

Changeset 68164 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jul 28, 2017 8:59:17 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
117256
Message:

Unattended: Changed boot order to work around DVD eject issues with fedora 26, HD is now first DVD/flpppy next (assuming HD isn't bootable till after first installation reboot). Expose IMachine::RTCUseUTC setting to the script templates. Post install fixes.

Location:
trunk/src/VBox/Main
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/UnattendedTemplates/debian_postinstall.sh

    r68160 r68164  
    2626MY_TARGET="/target"
    2727MY_LOGFILE="${MY_TARGET}/var/log/vboxpostinstall.log"
     28MY_CHROOT_CDROM="/cdrom"
     29MY_CDROM_NOCHROOT="/cdrom"
    2830MY_EXITCODE=0
    2931MY_DEBUG="" # "yes"
     
    134136# We want the ISO available inside the target jail.
    135137#
    136 if [ -d "${MY_TARGET}/cdrom" ]; then
     138if [ -d "${MY_TARGET}${MY_CHROOT_CDROM}" ]; then
    137139    MY_RMDIR_TARGET_CDROM=
    138140else
    139141    MY_RMDIR_TARGET_CDROM="yes"
    140     log_command mkdir -p ${MY_TARGET}/cdrom
    141 fi
    142 
    143 if [ -f "${MY_TARGET}/cdrom/vboxpostinstall.sh" ]; then
     142    log_command mkdir -p ${MY_TARGET}${MY_CHROOT_CDROM}
     143fi
     144
     145if [ -f "${MY_TARGET}${MY_CHROOT_CDROM}/vboxpostinstall.sh" ]; then
    144146    MY_UNMOUNT_TARGET_CDROM=
    145147    echo "** binding cdrom into jail: already done" | tee -a "${MY_LOGFILE}"
    146148else
    147149    MY_UNMOUNT_TARGET_CDROM="yes"
    148     log_command mount -o bind /cdrom "${MY_TARGET}/cdrom"
    149     if [ -f "${MY_TARGET}/cdrom/vboxpostinstall.sh" ]; then
     150    log_command mount -o bind "${MY_CDROM_NOCHROOT}" "${MY_TARGET}${MY_CHROOT_CDROM}"
     151    if [ -f "${MY_TARGET}${MY_CHROOT_CDROM}/vboxpostinstall.sh" ]; then
    150152        echo "** binding cdrom into jail: success"  | tee -a "${MY_LOGFILE}"
    151153    else
     
    153155    fi
    154156    if [ "${MY_DEBUG}" = "yes" ]; then
    155         log_command find "${MY_TARGET}/cdrom"
     157        log_command find "${MY_TARGET}${MY_CHROOT_CDROM}"
    156158    fi
    157159fi
     
    191193echo '** Installing VirtualBox Guest Additions...' | tee -a "${MY_LOGFILE}"
    192194MY_IGNORE_EXITCODE=2  # returned if modules already loaded and reboot required.
    193 log_command_in_target /bin/bash /cdrom/vboxadditions/VBoxLinuxAdditions.run --nox11
     195log_command_in_target /bin/bash "${MY_CHROOT_CDROM}/vboxadditions/VBoxLinuxAdditions.run" --nox11
    194196MY_IGNORE_EXITCODE=
    195197log_command_in_target usermod -a -G vboxsf "@@VBOX_INSERT_USER_LOGIN@@"
     
    203205echo "--------------------------------------------------" >> "${MY_LOGFILE}"
    204206echo '** Installing Test Execution Service...' | tee -a "${MY_LOGFILE}"
    205 log_command_in_target test "/cdrom/vboxvalidationkit/linux/@@VBOX_INSERT_OS_ARCH@@/TestExecService"
    206 log_command mkdir -p "${MY_TARGET}/root/validationkit" "${MY_TARGET}/target/cdrom"
    207 log_command cp -R /cdrom/vboxvalidationkit/* "${MY_TARGET}/root/validationkit/"
     207log_command_in_target test "${MY_CHROOT_CDROM}/vboxvalidationkit/linux/@@VBOX_INSERT_OS_ARCH@@/TestExecService"
     208log_command mkdir -p "${MY_TARGET}/root/validationkit" "${MY_TARGET}/media/cdrom"
     209log_command cp -R ${MY_CDROM_NOCHROOT}/vboxvalidationkit/* "${MY_TARGET}/root/validationkit/"
    208210log_command chmod -R u+rw,a+xr "${MY_TARGET}/root/validationkit/"
    209211
     
    212214test -d "${MY_TARGET}/usr/lib/systemd/system" && MY_UNIT_PATH="${MY_TARGET}/usr/lib/systemd/system"
    213215if [ -d "${MY_UNIT_PATH}" ]; then
    214     log_command cp "${MY_TARGET}/linux/vboxtxs.service" "${MY_UNIT_PATH}/vboxtxs.service"
     216    log_command cp "${MY_CDROM_NOCHROOT}/vboxvalidationkit/linux/vboxtxs.service" "${MY_UNIT_PATH}/vboxtxs.service"
    215217    log_command chmod 644 "${MY_UNIT_PATH}/vboxtxs.service"
    216218    log_command_in_target systemctl -q enable vboxtxs
     
    238240if [ -n "${MY_UNMOUNT_TARGET_CDROM}" ]; then
    239241    echo "** unbinding cdrom from jail..." | tee -a "${MY_LOGFILE}"
    240     log_command umount "${MY_TARGET}/cdrom"
     242    log_command umount "${MY_TARGET}${MY_CHROOT_CDROM}"
    241243fi
    242244
    243245if [ -n "${MY_RMDIR_TARGET_CDROM}" ]; then
    244     log_command rmdir "${MY_TARGET}/cdrom"
     246    log_command rmdir "${MY_TARGET}${MY_CHROOT_CDROM}"
    245247fi
    246248
  • trunk/src/VBox/Main/UnattendedTemplates/debian_preseed.cfg

    r68126 r68164  
    2424
    2525# Clock
     26@@VBOX_COND_IS_RTC_USING_UTC@@
    2627d-i clock-setup/utc-auto boolean true
    2728d-i clock-setup/utc boolean true
     29@@VBOX_COND_END@@
     30@@VBOX_COND_IS_NOT_RTC_USING_UTC@@
     31d-i clock-setup/utc-auto boolean false
     32d-i clock-setup/utc boolean false
     33@@VBOX_COND_END@@
    2834d-i time/zone string @@VBOX_INSERT_TIME_ZONE_UX@@
    2935@@VBOX_COND_IS_INSTALLING_ADDITIONS@@d-i clock-setup/ntp boolean false@@VBOX_COND_END@@
  • trunk/src/VBox/Main/UnattendedTemplates/fedora_ks.cfg

    r68160 r68164  
    3333
    3434# System timezone
    35 timezone --utc @@VBOX_INSERT_TIME_ZONE_UX@@
     35timezone@@VBOX_COND_IS_RTC_USING_UTC@@ --utc@@VBOX_COND_END@@ @@VBOX_INSERT_TIME_ZONE_UX@@
    3636
    3737# Network information
  • trunk/src/VBox/Main/UnattendedTemplates/redhat_postinstall.sh

    r68160 r68164  
    2424MY_TARGET="/mnt/sysimage"
    2525MY_LOGFILE="${MY_TARGET}/var/log/vboxpostinstall.log"
     26MY_CHROOT_CDROM="/cdrom"
    2627MY_CDROM_NOCHROOT="/run/install/repo"
    2728MY_EXITCODE=0
     
    108109# We want the ISO available inside the target jail.
    109110#
    110 if [ -d "${MY_TARGET}/cdrom" ]; then
     111if [ -d "${MY_TARGET}${MY_CHROOT_CDROM}" ]; then
    111112    MY_RMDIR_TARGET_CDROM=
    112113else
    113114    MY_RMDIR_TARGET_CDROM="yes"
    114     log_command mkdir -p ${MY_TARGET}/cdrom
    115 fi
    116 
    117 if [ -f "${MY_TARGET}/cdrom/vboxpostinstall.sh" ]; then
     115    log_command mkdir -p ${MY_TARGET}${MY_CHROOT_CDROM}
     116fi
     117
     118if [ -f "${MY_TARGET}${MY_CHROOT_CDROM}/vboxpostinstall.sh" ]; then
    118119    MY_UNMOUNT_TARGET_CDROM=
    119120    echo "** binding cdrom into jail: already done" | tee -a "${MY_LOGFILE}"
    120121else
    121122    MY_UNMOUNT_TARGET_CDROM="yes"
    122     log_command mount -o bind "${MY_CDROM_NOCHROOT}" "${MY_TARGET}/cdrom"
    123     if [ -f "${MY_TARGET}/cdrom/vboxpostinstall.sh" ]; then
     123    log_command mount -o bind "${MY_CDROM_NOCHROOT}" "${MY_TARGET}${MY_CHROOT_CDROM}"
     124    if [ -f "${MY_TARGET}${MY_CHROOT_CDROM}/vboxpostinstall.sh" ]; then
    124125        echo "** binding cdrom into jail: success"  | tee -a "${MY_LOGFILE}"
    125126    else
     
    127128    fi
    128129    if [ "${MY_DEBUG}" = "yes" ]; then
    129         log_command find "${MY_TARGET}/cdrom"
     130        log_command find "${MY_TARGET}${MY_CHROOT_CDROM}"
    130131    fi
    131132fi
     
    161162log_command_in_target yum -y install dkms
    162163log_command_in_target yum -y install make
    163 log_command_in_target yum -y install gzip2
     164log_command_in_target yum -y install bzip2
    164165log_command_in_target yum -y install perl
    165166
     
    172173echo '** Installing VirtualBox Guest Additions...' | tee -a "${MY_LOGFILE}"
    173174MY_IGNORE_EXITCODE=2  # returned if modules already loaded and reboot required.
    174 log_command_in_target /bin/bash /cdrom/vboxadditions/VBoxLinuxAdditions.run --nox11
     175log_command_in_target /bin/bash "${MY_CHROOT_CDROM}/vboxadditions/VBoxLinuxAdditions.run" --nox11
    175176MY_IGNORE_EXITCODE=
    176177log_command_in_target usermod -a -G vboxsf "@@VBOX_INSERT_USER_LOGIN@@"
     
    184185echo "--------------------------------------------------" >> "${MY_LOGFILE}"
    185186echo '** Installing Test Execution Service...' | tee -a "${MY_LOGFILE}"
    186 log_command_in_target test "${MY_CDROM_NOCHROOT}/vboxvalidationkit/linux/@@VBOX_INSERT_OS_ARCH@@/TestExecService"
    187 log_command mkdir -p "${MY_TARGET}/root/validationkit" "${MY_TARGET}/target/cdrom"
     187log_command_in_target test "${MY_CHROOT_CDROM}/vboxvalidationkit/linux/@@VBOX_INSERT_OS_ARCH@@/TestExecService"
     188log_command mkdir -p "${MY_TARGET}/root/validationkit" "${MY_TARGET}/media/cdrom"
    188189log_command cp -R ${MY_CDROM_NOCHROOT}/vboxvalidationkit/* "${MY_TARGET}/root/validationkit/"
    189190log_command chmod -R u+rw,a+xr "${MY_TARGET}/root/validationkit/"
     
    193194test -d "${MY_TARGET}/usr/lib/systemd/system" && MY_UNIT_PATH="${MY_TARGET}/usr/lib/systemd/system"
    194195if [ -d "${MY_UNIT_PATH}" ]; then
    195     log_command cp "${MY_TARGET}/linux/vboxtxs.service" "${MY_UNIT_PATH}/vboxtxs.service"
     196    log_command cp "${MY_CDROM_NOCHROOT}/vboxvalidationkit/linux/vboxtxs.service" "${MY_UNIT_PATH}/vboxtxs.service"
    196197    log_command chmod 644 "${MY_UNIT_PATH}/vboxtxs.service"
    197198    log_command_in_target systemctl -q enable vboxtxs
     
    219220if [ -n "${MY_UNMOUNT_TARGET_CDROM}" ]; then
    220221    echo "** unbinding cdrom from jail..." | tee -a "${MY_LOGFILE}"
    221     log_command umount "${MY_TARGET}/cdrom"
     222    log_command umount "${MY_TARGET}${MY_CHROOT_CDROM}"
    222223fi
    223224
    224225if [ -n "${MY_RMDIR_TARGET_CDROM}" ]; then
    225     log_command rmdir "${MY_TARGET}/cdrom"
     226    log_command rmdir "${MY_TARGET}${MY_CHROOT_CDROM}"
    226227fi
    227228
  • trunk/src/VBox/Main/UnattendedTemplates/ubuntu_preseed.cfg

    r68130 r68164  
    2424
    2525# Clock
     26@@VBOX_COND_IS_RTC_USING_UTC@@
    2627d-i clock-setup/utc-auto boolean true
    2728d-i clock-setup/utc boolean true
     29@@VBOX_COND_END@@
     30@@VBOX_COND_IS_NOT_RTC_USING_UTC@@
     31d-i clock-setup/utc-auto boolean false
     32d-i clock-setup/utc boolean false
     33@@VBOX_COND_END@@
    2834d-i time/zone string @@VBOX_INSERT_TIME_ZONE_UX@@
    2935@@VBOX_COND_IS_INSTALLING_ADDITIONS@@d-i clock-setup/ntp boolean false@@VBOX_COND_END@@
  • trunk/src/VBox/Main/include/UnattendedImpl.h

    r68162 r68164  
    7070    Utf8Str const &i_getExtraInstallKernelParameters() const;
    7171
     72    bool           i_isRtcUsingUtc() const;
    7273    bool           i_isGuestOs64Bit() const;
    7374    VBOXOSTYPE     i_getGuestOsType() const;
     
    8081    RTNATIVETHREAD  mhThreadReconfigureVM;  /**< Set when reconfigureVM is running. */
    8182    Utf8Str         mStrGuestOsTypeId;      /**< Guest OS type ID (set by prepare). */
     83    bool            mfRtcUseUtc;            /**< Copy of IMachine::RTCUseUTC (locking reasons). */
    8284    bool            mfGuestOs64Bit;         /**< 64-bit (true) or 32-bit guest OS (set by prepare). */
    8385    VBOXOSTYPE      meGuestOsType;          /**< The guest OS type (set by prepare). */
  • trunk/src/VBox/Main/src-server/UnattendedImpl.cpp

    r68162 r68164  
    150150
    151151Unattended::Unattended()
    152     : mhThreadReconfigureVM(NIL_RTNATIVETHREAD), mfGuestOs64Bit(false), mpInstaller(NULL), mpTimeZoneInfo(NULL)
    153     , mfIsDefaultAuxiliaryBasePath(true)
     152    : mhThreadReconfigureVM(NIL_RTNATIVETHREAD), mfGuestOs64Bit(false), mfRtcUseUtc(false)
     153    , mpInstaller(NULL), mpTimeZoneInfo(NULL), mfIsDefaultAuxiliaryBasePath(true)
    154154{ }
    155155
     
    266266        {
    267267            strGuestOsTypeId = bstrTmp;
    268             hrc = mMachine->COMGETTER(Name)(bstrTmp.asOutParam());
     268            hrc = ptrMachine->COMGETTER(Name)(bstrTmp.asOutParam());
    269269            if (SUCCEEDED(hrc))
    270270                strMachineName = bstrTmp;
     
    280280    bool const fIs64Bit = i_isGuestOSArchX64(strGuestOsTypeId);
    281281
    282 
    283     /*
    284      * Write lock this object.
    285      */
    286     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     282    BOOL fRtcUseUtc = FALSE;
     283    hrc = ptrMachine->COMGETTER(RTCUseUTC)(&fRtcUseUtc);
     284    if (FAILED(hrc))
     285        return hrc;
     286
     287    /*
     288     * Write lock this object and set attributes we got from IMachine.
     289     */
     290    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
     291
     292    mStrGuestOsTypeId = strGuestOsTypeId;
     293    mfGuestOs64Bit    = fIs64Bit;
     294    mfRtcUseUtc       = RT_BOOL(fRtcUseUtc);
    287295
    288296    /*
     
    389397     * Get the guest OS type info and instantiate the appropriate installer.
    390398     */
    391     mStrGuestOsTypeId = strGuestOsTypeId;
    392     mfGuestOs64Bit    = fIs64Bit;
    393399    uint32_t   const idxOSType = Global::getOSTypeIndexFromId(mStrGuestOsTypeId.c_str());
    394400    meGuestOsType     = idxOSType < Global::cOSTypes ? Global::sOSTypes[idxOSType].osType : VBOXOSTYPE_Unknown;
     
    575581    /*
    576582     * Set the boot order.
    577      */
     583     *
     584     * ASSUME that the HD isn't bootable when we start out, but it will be what
     585     * we boot from after the first stage of the installation is done.  Setting
     586     * it first prevents endless reboot cylces.
     587     */
     588    /** @todo consider making 100% sure the disk isn't bootable (edit partition
     589     *        table active bits and EFI stuff). */
    578590    Assert(   mpInstaller->getBootableDeviceType() == DeviceType_DVD
    579591           || mpInstaller->getBootableDeviceType() == DeviceType_Floppy);
    580     hrc = rPtrSessionMachine->SetBootOrder(1, mpInstaller->getBootableDeviceType());
     592    hrc = rPtrSessionMachine->SetBootOrder(1, DeviceType_HardDisk);
    581593    if (SUCCEEDED(hrc))
    582         hrc = rPtrSessionMachine->SetBootOrder(2, DeviceType_HardDisk);
     594        hrc = rPtrSessionMachine->SetBootOrder(2, mpInstaller->getBootableDeviceType());
    583595    if (SUCCEEDED(hrc))
    584596        hrc = rPtrSessionMachine->SetBootOrder(3, mpInstaller->getBootableDeviceType() == DeviceType_DVD
     
    16461658}
    16471659
     1660bool Unattended::i_isRtcUsingUtc() const
     1661{
     1662    Assert(isReadLockedOnCurrentThread());
     1663    return mfRtcUseUtc;
     1664}
     1665
    16481666bool Unattended::i_isGuestOs64Bit() const
    16491667{
  • trunk/src/VBox/Main/src-server/UnattendedScript.cpp

    r68162 r68164  
    608608    else if (IS_PLACEHOLDER_MATCH("IS_NOT_MINIMAL_INSTALLATION"))
    609609        *pfOutputting = !mpUnattended->i_isMinimalInstallation();
     610    /* Is RTC using UTC (i.e. set to UTC time on startup): */
     611    else if (IS_PLACEHOLDER_MATCH("IS_RTC_USING_UTC"))
     612        *pfOutputting = mpUnattended->i_isRtcUsingUtc();
     613    else if (IS_PLACEHOLDER_MATCH("IS_NOT_RTC_USING_UTC"))
     614        *pfOutputting = !mpUnattended->i_isRtcUsingUtc();
    610615    else
    611616        return mpSetError->setErrorBoth(E_FAIL, VERR_NOT_FOUND, mpSetError->tr("Unknown conditional placeholder '%.*s'"),
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