ভার্চুয়ালবক্স rcvboxdrv সেটআপ ত্রুটি "খারাপ যুক্তি সেটআপ"


29

আমি কার্নেলটি আপগ্রেড করার পরে, ভার্চুয়ালবক্স যথারীতি অভিযোগ করেছিল যে ভার্চুয়ালবক্স লিনাক্স কার্নেল ড্রাইভার (vboxdrv) লোড করা হয়নি, এবং আমাকে নিম্নলিখিত কমান্ডটি প্রয়োগ করতে হয়েছিল:

sudo /sbin/rcvboxdrv setup

দুর্ভাগ্যক্রমে, rcvboxdrv setupবার্তাটি দিয়ে এই ব্যর্থতার ফাঁসি কার্যকর হয়েছে Bad argument setup। আমি অনুমান করি এটি ওরাকল এর পৃষ্ঠায় সাম্প্রতিক ভার্চুয়ালবক্স প্যাকেজে চালু হওয়া একটি রিগ্রেশন বাগ।

কীভাবে সমস্যাটি সমাধান করবেন এবং ভার্চুয়ালবক্স চালাতে সক্ষম হবেন?


3
আমার জন্য দৌড়ে sudo apt-get install --reinstall virtualbox-5.0সমস্যা সমাধান হয়েছে।
তাক্কাত

উত্তর:


42

টিকিটের বিষয়ে একটি মন্তব্য থেকে নিম্নলিখিত কমান্ডটি চালান:

sudo /usr/lib/virtualbox/vboxdrv.sh setup

ভার্চুয়ালবক্স দ্বারা প্রদত্ত কমান্ডের পরিবর্তে।


2
কাজ করে তবে প্রতিটি রিবুটের পরে চালানো দরকার।
winchendonsprings

আমি না /usr/lib/virtualbox/এ সব। টাটকা ভার্চুয়ালবক্স ইনস্টল। আমার সাথে আছে /usr/lib64/virtualbox/তবে নেই vboxdrv.sh। ফেডোরা 24 টি পোস্ট থেকে ইনস্টল করা হয়েছে।
জোজকিয়াক্ক


3

এটি স্থির না হওয়া পর্যন্ত আপনি /sbin/rcvboxdrvফাইলটি সম্পাদনা করতে পারেন (উদাহরণস্বরূপ ন্যানো সম্পাদক ব্যবহার করে টার্মিনালে sudo nano /sbin/rcvboxdrv) এবং কিছু লাইন যুক্ত করতে পারেন:

[…]
while test -n "${1}"; do
    case "${1}" in
        --nostart)
            START=
            ;;
        # START Workaround for https://www.virtualbox.org/ticket/15055
        setup)
            /usr/lib/virtualbox/vboxdrv.sh setup
            ;;
        # END
        *)
            echo "Bad argument ${1}" >&2
            exit 1
            ;;
    esac
    shift
done
[…]

পরিবর্তনগুলি সংরক্ষণ করতে CTRL + O ব্যবহার করুন। এর পরে, আপনার sudo /sbin/rcvboxdrv setupআবার চালানো উচিত ।


3

ভার্চুয়ালবক্স 5.0.14 সহ আমার কুবুন্টু 14.04.3 এ একই সমস্যা ছিল। পূর্বের উত্তরগুলির মধ্যে কোনওটিই তক্কাতের মন্তব্য প্রস্তাবের পরিবর্তে কাজ করেছিল

sudo apt-get install --reinstall virtualbox-5.0

সমস্যা সমাধানের জন্য কাজ করেছে।


1

রেডহাট 7 এ আমার একই সমস্যা ছিল। চালানোর জন্য অন্য ফোরামে একটি পরামর্শ পেয়েছে: /usr/lib/virtualbox/vboxdrv.sh সেটআপ এটি সমস্যার সমাধান করেছে। আমার ভার্চুয়ালবক্স এখন কাজ করছে।


0

ওয়ালকারাউন্ড রয়েছে:

প্রত্যাবর্তন করা হচ্ছে /sbin/rcvboxdrvপুরোনো সংস্করণে সমস্যা সমাধান করা হয়েছে। যদি ফাইলটির পুরানো সংস্করণটি আপনার কাছে আর উপলভ্য না হয় তবে অনুলিপিটি এখানে:

#! /bin/sh
# Oracle VM VirtualBox
# Linux kernel module init script

#
# Copyright (C) 2006-2015 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#

# chkconfig: 345 20 80
# description: VirtualBox Linux kernel module
#
### BEGIN INIT INFO
# Provides:       vboxdrv
# Required-Start: $syslog
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: VirtualBox Linux kernel module
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH
DEVICE=/dev/vboxdrv
LOG="/var/log/vbox-install.log"
VERSION=5.0.12
MODPROBE=/sbin/modprobe

if $MODPROBE -c | grep -q '^allow_unsupported_modules  *0'; then
  MODPROBE="$MODPROBE --allow-unsupported-modules"
fi

[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
export BUILD_TYPE
export USERNAME
export USER=$USERNAME

if [ -n "$INSTALL_DIR" ]; then
    VBOXMANAGE="$INSTALL_DIR/VBoxManage"
    MODULE_SRC="$INSTALL_DIR/src/vboxhost"
else
    VBOXMANAGE="/usr/lib/virtualbox/VBoxManage"
    MODULE_SRC="/usr/share/virtualbox/src/vboxhost"
fi
BUILDINTMP="$MODULE_SRC/build_in_tmp"
DODKMS="$MODULE_SRC/do_dkms"

# silently exit if the package was uninstalled but not purged,
# applies to Debian packages only (but shouldn't hurt elsewhere)
[ ! -f /etc/debian_release -o -x $VBOXMANAGE -a -x $BUILDINTMP ] || exit 0

if [ -n "$NOLSB" ]; then
    if [ -f /etc/redhat-release ]; then
        system=redhat
    elif [ -f /etc/SuSE-release ]; then
        system=suse
    elif [ -f /etc/gentoo-release ]; then
        system=gentoo
    fi
fi

[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox

if [ -z "$NOLSB" ]; then
    . /lib/lsb/init-functions
    fail_msg() {
        echo ""
        log_failure_msg "$1"
    }
    succ_msg() {
        log_end_msg 0
    }
    begin_msg() {
        log_daemon_msg "$@"
    }
else
    if [ "$system" = "redhat" ]; then
        . /etc/init.d/functions
        fail_msg() {
            echo -n " "
            echo_failure
            echo
            echo "  ($1)"
        }
        succ_msg() {
            echo -n " "
            echo_success
            echo
        }
    elif [ "$system" = "suse" ]; then
        . /etc/rc.status
        fail_msg() {
            rc_failed 1
            rc_status -v
            echo "  ($1)"
        }
        succ_msg() {
            rc_reset
            rc_status -v
        }
    elif [ "$system" = "gentoo" ]; then
        if [ -f /sbin/functions.sh ]; then
            . /sbin/functions.sh
        elif [ -f /etc/init.d/functions.sh ]; then
            . /etc/init.d/functions.sh
        fi
        fail_msg() {
            eerror "$1"
        }
        succ_msg() {
            eend "$?"
        }
        begin_msg() {
            ebegin "$1"
        }
        if [ "`which $0`" = "/sbin/rc" ]; then
            shift
        fi
    else
        fail_msg() {
            echo " ...failed!"
            echo "  ($1)"
        }
        succ_msg() {
            echo " ...done."
        }
    fi
    if [ "$system" != "gentoo" ]; then
        begin_msg() {
            [ -z "${1:-}" ] && return 1
            if [ -z "${2:-}" ]; then
                echo -n "$1"
            else
                echo -n "$1: $2"
            fi
        }
    fi
fi

failure()
{
    fail_msg "$1"
    exit 0
}

running()
{
    lsmod | grep -q "$1[^_-]"
}

start()
{
    begin_msg "Starting VirtualBox kernel modules"
    if [ -d /proc/xen ]; then
        failure "Running VirtualBox in a Xen environment is not supported"
    fi
    if ! running vboxdrv; then
        if ! rm -f $DEVICE; then
            failure "Cannot remove $DEVICE"
        fi
        if ! $MODPROBE vboxdrv > /dev/null 2>&1; then
            failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why"
        fi
        sleep .2
    fi
    # ensure the character special exists
    if [ ! -c $DEVICE ]; then
        MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/devices`
        if [ ! -z "$MAJOR" ]; then
            MINOR=0
        else
            MINOR=`sed -n 's;\([0-9]\+\) vboxdrv$;\1;p' /proc/misc`
            if [ ! -z "$MINOR" ]; then
                MAJOR=10
            fi
        fi
        if [ -z "$MAJOR" ]; then
            rmmod vboxdrv 2>/dev/null
            failure "Cannot locate the VirtualBox device"
        fi
        if ! mknod -m 0660 $DEVICE c $MAJOR $MINOR 2>/dev/null; then
            rmmod vboxdrv 2>/dev/null
            failure "Cannot create device $DEVICE with major $MAJOR and minor $MINOR"
        fi
    fi
    # ensure permissions
    if ! chown :root $DEVICE 2>/dev/null; then
        rmmod vboxpci 2>/dev/null
        rmmod vboxnetadp 2>/dev/null
        rmmod vboxnetflt 2>/dev/null
        rmmod vboxdrv 2>/dev/null
        failure "Cannot change group root for device $DEVICE"
    fi
    if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
        failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out why"
    fi
    if ! $MODPROBE vboxnetadp > /dev/null 2>&1; then
        failure "modprobe vboxnetadp failed. Please use 'dmesg' to find out why"
    fi
    if ! $MODPROBE vboxpci > /dev/null 2>&1; then
        failure "modprobe vboxpci failed. Please use 'dmesg' to find out why"
    fi
    # Create the /dev/vboxusb directory if the host supports that method
    # of USB access.  The USB code checks for the existance of that path.
    if grep -q usb_device /proc/devices; then
        mkdir -p -m 0750 /dev/vboxusb 2>/dev/null
        chown root:vboxusers /dev/vboxusb 2>/dev/null
    fi
    succ_msg
}

stop()
{
    begin_msg "Stopping VirtualBox kernel modules"
    if running vboxpci; then
        if ! rmmod vboxpci 2>/dev/null; then
            failure "Cannot unload module vboxpci"
        fi
    fi
    if running vboxnetadp; then
        if ! rmmod vboxnetadp 2>/dev/null; then
            failure "Cannot unload module vboxnetadp"
        fi
    fi
    if running vboxdrv; then
        if running vboxnetflt; then
            if ! rmmod vboxnetflt 2>/dev/null; then
                failure "Cannot unload module vboxnetflt"
            fi
        fi
        if ! rmmod vboxdrv 2>/dev/null; then
            failure "Cannot unload module vboxdrv"
        fi
        if ! rm -f $DEVICE; then
            failure "Cannot unlink $DEVICE"
        fi
    fi
    succ_msg
}

# enter the following variables in /etc/default/virtualbox:
#   SHUTDOWN_USERS="foo bar"  
#     check for running VMs of user foo and user bar
#   SHUTDOWN=poweroff
#   SHUTDOWN=acpibutton
#   SHUTDOWN=savestate
#     select one of these shutdown methods for running VMs
stop_vms()
{
    wait=0
    for i in $SHUTDOWN_USERS; do
        # don't create the ipcd directory with wrong permissions!
        if [ -d /tmp/.vbox-$i-ipc ]; then
            export VBOX_IPC_SOCKETID="$i"
            VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
            if [ -n "$VMS" ]; then
                if [ "$SHUTDOWN" = "poweroff" ]; then
                    begin_msg "Powering off remaining VMs"
                    for v in $VMS; do
                        $VBOXMANAGE --nologo controlvm $v poweroff
                    done
                    succ_msg
                elif [ "$SHUTDOWN" = "acpibutton" ]; then
                    begin_msg "Sending ACPI power button event to remaining VMs"
                    for v in $VMS; do
                        $VBOXMANAGE --nologo controlvm $v acpipowerbutton
                        wait=30
                    done
                    succ_msg
                elif [ "$SHUTDOWN" = "savestate" ]; then
                    begin_msg "Saving state of remaining VMs"
                    for v in $VMS; do
                        $VBOXMANAGE --nologo controlvm $v savestate
                    done
                    succ_msg
                fi
            fi
        fi
    done
    # wait for some seconds when doing ACPI shutdown
    if [ "$wait" -ne 0 ]; then
        begin_msg "Waiting for $wait seconds for VM shutdown"
        sleep $wait
        succ_msg
    fi
}

# setup_script
setup()
{
    stop
    DKMS=`which dkms 2>/dev/null`
    if [ -n "$DKMS" ]; then
      begin_msg "Uninstalling old VirtualBox DKMS kernel modules"
      $DODKMS uninstall vboxhost vboxdrv vboxnetflt vboxnetadp > $LOG
      succ_msg
    fi
    if find /lib/modules/`uname -r` -name "vboxpci\.*" 2>/dev/null|grep -q vboxpci; then
        begin_msg "Removing old VirtualBox pci kernel module"
        find /lib/modules/`uname -r` -name "vboxpci\.*" 2>/dev/null|xargs rm -f 2>/dev/null
        succ_msg
    fi  
    if find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|grep -q vboxnetadp; then
        begin_msg "Removing old VirtualBox netadp kernel module"
        find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null
        succ_msg
    fi  
    if find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|grep -q vboxnetflt; then
        begin_msg "Removing old VirtualBox netflt kernel module"
        find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null
        succ_msg
    fi  
    if find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
        begin_msg "Removing old VirtualBox kernel module"
        find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null
        succ_msg
    fi
    if [ -n "$DKMS" ]; then
      begin_msg "Trying to register the VirtualBox kernel modules using DKMS"
      if ! $DODKMS install vboxhost $VERSION >> $LOG; then
        fail_msg "Failed, trying without DKMS"
        DKMS=""
      fi
    fi
    if [ -z "$DKMS" ]; then
      begin_msg "Recompiling VirtualBox kernel modules"
      if ! $BUILDINTMP \
          --save-module-symvers /tmp/vboxdrv-Module.symvers \
          --module-source "$MODULE_SRC/vboxdrv" \
          --no-print-directory install >> $LOG 2>&1; then
          failure "Look at $LOG to find out what went wrong"
      fi
      if ! $BUILDINTMP \
          --use-module-symvers /tmp/vboxdrv-Module.symvers \
          --module-source "$MODULE_SRC/vboxnetflt" \
          --no-print-directory install >> $LOG 2>&1; then
          failure "Look at $LOG to find out what went wrong"
      fi
      if ! $BUILDINTMP \
          --use-module-symvers /tmp/vboxdrv-Module.symvers \
          --module-source "$MODULE_SRC/vboxnetadp" \
          --no-print-directory install >> $LOG 2>&1; then
          failure "Look at $LOG to find out what went wrong"
      fi
      if ! $BUILDINTMP \
          --use-module-symvers /tmp/vboxdrv-Module.symvers \
          --module-source "$MODULE_SRC/vboxpci" \
          --no-print-directory install >> $LOG 2>&1; then
          failure "Look at $LOG to find out what went wrong"
      fi
    fi
    rm -f /etc/vbox/module_not_compiled
    succ_msg
    start
}

dmnstatus()
{
    if running vboxdrv; then
        str="vboxdrv"
        if running vboxnetflt; then
            str="$str, vboxnetflt"
            if running vboxnetadp; then
                str="$str, vboxnetadp"
            fi
        fi
        if running vboxpci; then
            str="$str, vboxpci"
        fi
        echo "VirtualBox kernel modules ($str) are loaded."
        for i in $SHUTDOWN_USERS; do
            # don't create the ipcd directory with wrong permissions!
            if [ -d /tmp/.vbox-$i-ipc ]; then
                export VBOX_IPC_SOCKETID="$i"
                VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
                if [ -n "$VMS" ]; then
                    echo "The following VMs are currently running:"
                    for v in $VMS; do
                       echo "  $v"
                    done
                fi
            fi
        done
    else
        echo "VirtualBox kernel module is not loaded."
    fi
}

case "$1" in
start)
    start
    ;;
stop)
    stop_vms
    stop
    ;;
stop_vms)
    stop_vms
    ;;
restart)
    stop && start
    ;;
force-reload)
    stop
    start
    ;;
setup)
    setup
    ;;
status)
    dmnstatus
    ;;
*)
    echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status|setup}"
    exit 1
esac

exit 0

আশাকরি এটা সাহায্য করবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.