Hello community, here is the log from the commit of package virtualbox-ose for openSUSE:Factory checked in at Tue Apr 13 21:54:55 CEST 2010. -------- --- virtualbox-ose/virtualbox-ose.changes 2010-04-05 18:05:44.000000000 +0200 +++ /mounts/work_src_done/STABLE/virtualbox-ose/virtualbox-ose.changes 2010-04-09 15:13:25.000000000 +0200 @@ -1,0 +2,12 @@ +Fri Apr 9 10:10:55 UTC 2010 - mseben@novell.com + +- added fix_PF_storm.diff to fix crashing during liveCD boot at early + "Loading basic drivers" state (bnc#576681) + +------------------------------------------------------------------- +Mon Apr 5 17:19:36 UTC 2010 - rbos@opensuse.org + +- add script to start virtual boxes during boot, to be configured + via /etc/sysconfig/vbox + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- sysconfig.vbox vbox-fix_PF_storm.diff vboxes ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virtualbox-ose.spec ++++++ --- /var/tmp/diff_new_pack.QpLKNk/_old 2010-04-13 21:54:23.000000000 +0200 +++ /var/tmp/diff_new_pack.QpLKNk/_new 2010-04-13 21:54:23.000000000 +0200 @@ -40,7 +40,7 @@ # ExclusiveArch: %ix86 x86_64 Version: 3.1.6 -Release: 3 +Release: 4 Summary: VirtualBox OSE is an Emulator License: GPLv2+ Group: System/Emulators/PC @@ -62,6 +62,8 @@ Source9: %{name}-wrapper.sh # since 11.3 we need this conf instead of HAL's fdi to define vbox mouse Source10: %{name}-60-vboxmouse.conf +Source12: vboxes +Source13: sysconfig.vbox Source98: %{name}-%{version}-rpmlintrc Source99: %{name}-patch-source.sh #rework init script @@ -71,6 +73,10 @@ Patch3: vbox-disable-updates.diff #fix return values which trigger post build checks and coused build error - should goes to upstream Patch4: vbox-ret-in-nonvoid-fnc.diff +#Check for write conflicts with our hypervisor mapping early on. If the guest happens to access a non-present page, +#where vbox's hypervsor is currently mapped, then we'll create a #PF storm in the guest. +#patch grabbed from svn : http://www.virtualbox.org/changeset/28090 +Patch5: vbox-fix_PF_storm.diff #PATCH-FIX-OPENSUSE implement messagebox (VBoxPermissionMessage app), which is displayed, when user #try to start VirtualBox and is not memeber of vboxusers group Patch99: vbox-permissions_warning.diff @@ -149,6 +155,7 @@ %patch2 %patch3 -p1 %patch4 -p1 +%patch5 %patch99 -p1 #copy user manual cp %{S:1} ./UserManual.pdf @@ -206,7 +213,7 @@ %if %suse_version >= 1130 %__install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/ %else -#since 11.3 we doesn't use hal to detect vbox mouse +#since 11.3 we don't use hal to detect vbox mouse %__install -d -m 755 %{buildroot}%{_datadir}/hal/fdi/policy/20thirdparty %endif %__install -d -m 755 %{buildroot}%{_vbox_instdir} @@ -339,6 +346,12 @@ #install wrapper script %__install -m 644 %{S:9} %{buildroot}%{_bindir}/VirtualBox +# Init script to start virtual boxes during boot +%__install -m 755 %{S:12} %{buildroot}%{_sysconfdir}/init.d/vboxes +%__ln_s %{_sysconfdir}/init.d/vboxes %{buildroot}%{_sbindir}/rcvboxes +%__install -d -m 755 %buildroot%_var/adm/fillup-templates +install -m 700 %{S:13} %buildroot%_var/adm/fillup-templates + %suse_update_desktop_file -i %{name} System Emulator #run fdupes because we lost link for virtualbox/components directory @@ -362,6 +375,7 @@ %post /sbin/ldconfig %fillup_and_insserv -f -y vboxdrv +%fillup_only -an vboxes %run_permissions %post guest-tools @@ -425,6 +439,9 @@ %config %{_sysconfdir}/default/virtualbox %config %{_sysconfdir}/udev/rules.d/60-vboxdrv.rules %config %{_sysconfdir}/init.d/vboxdrv +%{_sysconfdir}/init.d/vboxes +%{_var}/adm/fillup-templates/sysconfig.vbox +%{_sbindir}/rcvboxes #check setuid bit %verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl %verify(not mode) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxBFE ++++++ sysconfig.vbox ++++++ ## Path: System/Virtual Machines/VBox ## Description: Virtual box machines to autostart during boot ## Type: string ## Default: "" # # Configuration file for the script /etc/init.d/vboxes # # The variable VBOX_AUTOSTART holds the virtual machines to be started during # boot time. One entry must contain the virtual machine name and the # VBOX_USER_HOME directory. They are separated with a ";". Multiple entries # (virtual machines) are separated with a space. The VBOX_USER_HOME is often # the directory $HOME/.VirtualBox. It must be specified as the virtual machine # can be maintained by a regular user, but root is starting the virtual machine. # # Examples: # MachineName1;VBOX_USER_HOME # # One virtual machine: # openSUSE_Factory;/home/openSUSE/.VirtualBox # # Multiple virtual machines: # openSUSE_Factory;/home/openSUSE/.VirtualBox openSUSE_stable;/home/openSUSE/.VirtualBox # VBOX_AUTOSTART="" ++++++ vbox-fix_PF_storm.diff ++++++ Index: src/VBox/VMM/VMMAll/PGMAllBth.h =================================================================== --- src/VBox/VMM/VMMAll/PGMAllBth.h.orig +++ src/VBox/VMM/VMMAll/PGMAllBth.h @@ -145,6 +145,47 @@ PGM_BTH_DECL(int, Trap0eHandler)(PVMCPU const unsigned iPDSrc = 0; # endif /* !PGM_WITH_PAGING */ +# if !defined(PGM_WITHOUT_MAPPINGS) && ((PGM_GST_TYPE == PGM_TYPE_32BIT) || (PGM_GST_TYPE == PGM_TYPE_PAE)) + /* + * Check for write conflicts with our hypervisor mapping early on. If the guest happens to access a non-present page, + * where our hypervisor is currently mapped, then we'll create a #PF storm in the guest. + */ + if ((uErr & (X86_TRAP_PF_P | X86_TRAP_PF_RW)) == (X86_TRAP_PF_P | X86_TRAP_PF_RW)) + { + pgmLock(pVM); +# if PGM_SHW_TYPE == PGM_TYPE_32BIT + const unsigned iPDDst = pvFault >> SHW_PD_SHIFT; + PX86PD pPDDst = pgmShwGet32BitPDPtr(&pVCpu->pgm.s); +# else /* PGM_SHW_TYPE == PGM_TYPE_PAE */ + const unsigned iPDDst = (pvFault >> SHW_PD_SHIFT) & SHW_PD_MASK; /* pPDDst index, not used with the pool. */ + + PX86PDPAE pPDDst; +# if PGM_GST_TYPE != PGM_TYPE_PAE + X86PDPE PdpeSrc; + + /* Fake PDPT entry; access control handled on the page table level, so allow everything. */ + PdpeSrc.u = X86_PDPE_P; /* rw/us are reserved for PAE pdpte's; accessed bit causes invalid VT-x guest state errors */ +# endif + int rc = pgmShwSyncPaePDPtr(pVCpu, pvFault, &PdpeSrc, &pPDDst); + if (rc != VINF_SUCCESS) + { + pgmUnlock(pVM); + AssertRC(rc); + return rc; + } + Assert(pPDDst); +# endif + if (pPDDst->a[iPDDst].u & PGM_PDFLAGS_MAPPING) + { + pgmUnlock(pVM); + /* Force a CR3 sync to check for conflicts and emulate the instruction. */ + VMCPU_FF_SET(pVCpu, VMCPU_FF_PGM_SYNC_CR3); + return VINF_EM_RAW_EMULATE_INSTR; + } + pgmUnlock(pVM); + } +# endif + /* Fetch the guest PDE */ # if PGM_WITH_PAGING(PGM_GST_TYPE, PGM_SHW_TYPE) GSTPDE PdeSrc = pPDSrc->a[iPDSrc]; ++++++ vboxes ++++++ #!/bin/sh # # chkconfig: - 91 35 # description: Starts and stops vbox autostart VMs. # Based on # http://www.amiryan.org/2009/11/04/virtualbox-init-d-service-autostart-script... # # openSUSEfied by Richard Bos <rbos at opensuse dot org> - 2010 # http://www.linuxjournal.com/content/start-and-control-konsole-dbus ### BEGIN INIT INFO # Provides: vboxes # Required-Start: $network vboxdrv $ALL # Required-Stop: $network $named # Default-Start: 3 5 # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: Autostart Virtual Box VMs # Description: Autostart Virtual Box VMs that are mentioned in /etc/sysconfig/vbox file ### END INIT INFO # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v be verbose in local rc status and clear it afterwards # rc_status -v -r ditto and clear both the local and overall rc status # rc_status -s display "skipped" and exit with status 3 # rc_status -u display "unused" and exit with status 3 # rc_failed set local and overall rc status to failed # rc_failed <num> set local and overall rc status to <num> # rc_reset clear both the local and overall rc status # rc_exit exit appropriate to overall rc status # rc_active checks whether a service is activated by symlinks . /etc/rc.status # Reset status of this service rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - user had insufficient privileges # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # 8--199 - reserved (8--99 LSB, 100--149 distrib, 150--199 appl) # # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signaling is not supported) are # considered a success. VBOXMGR_BIN=/usr/bin/VBoxManage if [[ ! -x $VBOXMGR_BIN ]]; then echo "$VBOXMGR_BIN does not exist" if [ "$1" = "stop" ]; then exit 0; else exit 6 fi; fi PRG=$(basename $0) SERVICE="Virtualbox machines" [ -r /etc/sysconfig/vbox ] && . /etc/sysconfig/vbox start() { N=1 for VBOX in $VBOX_AUTOSTART; do if grep -q \; <<< "$VBOX"; then VBOX_NAME[$N]=$(cut -d\; -f1 <<< "$VBOX") VBOX_HOME[$N]=$(cut -d\; -f2 <<< "$VBOX") else VBOX_NAME[$N]="$VBOX" VBOX_HOME[$N]="" fi N=$(($N+1)) done VBOXES=${#VBOX_NAME[*]} if [ $VBOXES -eq 0 ]; then # The virtual machines have to be configured in /etc/sysconfig/vbox echo -n "Starting $SERVICE: no virtual machines configured" rc_status -u else N=1 echo -n "Starting $SERVICE: " while [[ $N -le $VBOXES ]]; do if [[ $N -lt $VBOXES ]]; then echo -n "${VBOX_NAME[$N]}, " else echo ${VBOX_NAME[$N]} fi N=$(($N+1)) done N=1 while [[ $N -le $VBOXES ]]; do VBOX_RUNNING=$(VBoxManage list --long runningvms | sed -n 's/^Name: *//p' | grep "${VBOX_NAME[$N]}") if [[ -z "$VBOX_RUNNING" ]]; then if [[ -n "${VBOX_HOME[$N]}" ]]; then if [[ -d "${VBOX_HOME[$N]}/Machines" ]]; then VBOX_PRESENT=$($VBOXMGR_BIN list --long vms | sed -n 's/Name: *//p' | grep -w "${VBOX_NAME[$N]}") if [[ -n "$VBOX_PRESENT" ]]; then $VBOXMGR_BIN -q startvm "${VBOX_NAME[$N]}" -type headless > /tmp/$PRG.$$ 2>&1 RETVAL=$? if [[ $RETVAL == 0 ]]; then echo -n " Starting virtual machine ${VBOX_NAME[$N]}" rc_status -v -r else echo -n " ${VBOX_NAME[$N]}: failed with the following output: " rc_failed; rc_status -v -r cat /tmp/$PRG.$$ fi rm /tmp/$PRG.$$ else echo -n " ${VBOX_NAME[$N]}: virtual machine not found" rc_status -s -r fi else echo -n " ${VBOX_NAME[$N]}: VBOX_USER_HOME (${VBOX_HOME[$N]}) not found" rc_status -s -r fi else echo -n " ${VBOX_NAME[$N]}: no VBOX_USER_HOME configured" rc_status -s -r fi else echo -n " ${VBOX_NAME[$N]}: already running" rc_status -v -r fi N=$(($N+1)) done fi } stop() { N=1 VBOX_RUNNING=$($VBOXMGR_BIN list --long runningvms | sed -n 's/^Name: *//p') for VBOX in $VBOX_RUNNING; do VBOX_NAME[$N]="$VBOX" N=$(($N+1)) done VBOXES=${#VBOX_NAME[*]} if [[ $VBOXES -eq 0 ]]; then echo -n "Shutting down $SERVICE: no virtual machines running." rc_status -s -r else echo -n "Shutting down $SERVICE: " N=1 while [[ $N -le $VBOXES ]]; do if [[ $N -lt $VBOXES ]]; then echo -n "${VBOX_NAME[$N]}, " else echo "${VBOX_NAME[$N]}" fi N=$(($N+1)) done N=1 while [[ $N -le $VBOXES ]]; do echo -n " ${VBOX_NAME[$N]}: " $VBOXMGR_BIN -q controlvm "${VBOX_NAME[$N]}" savestate RETVAL=$? echo -n " Shutting down virtual machine ${VBOX_NAME[$N]}" if [[ $RETVAL == $? ]]; then rc_status -v -r else rc_failed; rc_status -v -r fi N=$(($N+1)) done fi } status() { N=1 VBOX_RUNNING=$($VBOXMGR_BIN list --long runningvms | sed -n 's/^Name: *//p') for VBOX in $VBOX_RUNNING; do VBOX_NAME[$N]="$VBOX" N=$(($N+1)) done VBOXES=${#VBOX_NAME[*]} if [[ $VBOXES -eq 0 ]]; then echo -n "Shutting down $SERVICE: no virtual machines running." rc_status -s -r else N=1 while [[ $N -le $VBOXES ]]; do STATE=$($VBOXMGR_BIN showvminfo "${VBOX_NAME[$N]}" | sed -n 's/State: *//p') printf "%-40s %s" "${VBOX_NAME[$N]}" "$STATE" rc_status -v N=$(($N+1)) done fi } case "$1" in start) start ;; stop) stop ;; restart|force-reload) stop start ;; status) status ;; *) echo "Usage: $PRG {start|stop|restart|force-reload|status}" >&2 exit 3 ;; esac ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org