VirtualBox

Changeset 58241 in vbox


Ignore:
Timestamp:
Oct 14, 2015 1:46:43 PM (9 years ago)
Author:
vboxsync
Message:

Installer/linux (host): move kernel module building and clean-up to shared installer script.

Location:
trunk/src/VBox/Installer/linux
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/linux/debian/postinst

    r58186 r58241  
    1717#  abort-remove:      (our version): removing this package failed
    1818#  abort-deconfigure: (our version): error during resolving conflicts
     19
     20## @todo Do we really gain anything from not just executing everything
     21##       unconditionally?
    1922
    2023LOG="/var/log/vbox-install.log"
     
    7881if test "${INSTALL_NO_VBOXDRV}" = 1; then
    7982  POSTINST_START=--nostart
    80   # if INSTALL_NO_VBOXDRV is set to 1, remove all shipped modules
    81   if [ "$1" = "configure" ]; then
    82     rm -f /lib/modules/*/misc/vboxdrv.ko
    83     rm -f /lib/modules/*/misc/vboxnetflt.ko
    84     rm -f /lib/modules/*/misc/vboxnetadp.ko
    85     rm -f /lib/modules/*/misc/vboxpci.ko
    86   fi
    8783else
    8884  POSTINST_START=
    89   # Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
    90   if [ ! -f /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
    91     if [ "$1" = "configure" ]; then
    92       db_get virtualbox/module-compilation-allowed
    93       if [ "$RET" = "false" ]; then
    94         cat << EOF
    95 Unable to find a precompiled module for the current kernel
    96 though module compilation denied by debconf setting.
    97 EOF
    98         POSTINST_START=--nostart
    99       else
    100         db_input low virtualbox/module-compilation-allowed || true
    101         db_go || true
    102         db_get virtualbox/module-compilation-allowed
    103         if [ "$RET" = "false" ]; then
    104           POSTINST_START=--nostart
    105         fi
    106       fi
    107     fi # $1 = "configure"
    108   fi
    10985fi
    11086
  • trunk/src/VBox/Installer/linux/debian/preinst.in

    r58194 r58241  
    6161  fi
    6262
    63   # check for old vboxdrv modules
    64   if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
    65     if find /lib/modules -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
    66       # old modules found
    67       db_get virtualbox/delete-old-modules || true
    68       if [ "$RET" = "false" ]; then
    69         cat << EOF
    70 Old vboxdrv kernel modules found in
    71 EOF
    72         find /lib/modules -name "vboxdrv\.*" 2>/dev/null|sed "s+\(.*\)+  \1+g"
    73         cat << EOF
    74 Removing of these modules denied by debconf setting
    75 EOF
    76       else
    77         db_input low virtualbox/delete-old-modules || true
    78         db_go || true
    79         db_get virtualbox/delete-old-modules || true
    80         if [ "$RET" = "true" ]; then
    81           for i in /lib/modules/*; do
    82             if test -e "${i}/misc/vboxdrv.ko"; then
    83               rm -f "${i}/misc/vboxdrv.ko" "${i}/misc/vboxnetadp.ko" \
    84                     "${i}/misc/vboxnetflt.ko" "${i}/misc/vboxpci.ko"
    85               # Remove the kernel version folder if it was empty except for us.
    86               test "`echo ${i}/misc/* ${i}/misc/.?* ${i}/* ${i}/.?*`" = \
    87                    "${i}/misc/* ${i}/misc/.. ${i}/misc ${i}/.." &&
    88                   rmdir "${i}/misc" "${i}"  # We used to leave empty folders.
    89             fi
    90           done
    91         fi
    92       fi
    93     fi
    94   fi
    95 
    9663fi # "$1" = "install" -o "$1" = "upgrade"
    9764
  • trunk/src/VBox/Installer/linux/debian/templates

    r58090 r58241  
    3232 mit Root-Rechten aus.
    3333
    34 Template: virtualbox/module-compilation-allowed
    35 Type: boolean
    36 Default: true
    37 Description: Should the vboxdrv kernel module be compiled now?
    38  Unable to find a precompiled module for the current kernel!
    39  .
    40  Without a suitable kernel module you will not be able to start any VMs. It is
    41  strongly recommended that you compile a kernel module now. This requires
    42  kernel headers and the tools to build kernel modules (gcc, make, binutils, ...).
    43  However if you know that a suitable kernel module already exists at another
    44  location, you might want to override the default by setting
    45  KDIR=<full_path_to_vboxdrv_module> in /etc/default/virtualbox. You can also
    46  build the module later by executing
    47    
    48    /sbin/vboxconfig
    49    
    50  as root.
    51 Description-de.UTF-8: Soll das Kernmodul jetzt compiliert werden?
    52  Es konnte kein Kernmodul für den aktuellen Linux-Kern gefunden werden!
    53  .
    54  Ohne ein passendes Kernmodul können Sie keine VM starten. Daher sollten Sie
    55  jetzt ein Kernmodul compilieren. Dazu werden die Kern-Header und die Programme
    56  zum Bauen eines Kernmoduls (gcc, make, binutils, ...) benötigt. Falls Sie
    57  bereits ein passendes Kernmodul in ein anderes Verzeichnis installiert haben,
    58  können Sie den Verzeichnisnamen durch Hinzufügen von KDIR=<voller_Pfad_zu_vboxdrv>
    59  in der Datei /etc/default/virtualbox angeben. Sie können das Kernmodul auch
    60  später compilieren, indem Sie
    61    
    62    /sbin/vboxconfig
    63    
    64  mit Root-Rechten ausführen.
    65 
    66 Template: virtualbox/delete-old-modules
    67 Type: boolean
    68 Default: true
    69 Description: Delete old vboxdrv kernel modules?
    70  Old vboxdrv kernel modules found. You should remove these modules as they
    71  might interfere with this version of VirtualBox. You can force re-compilation
    72  of the module later by executing
    73    
    74    /sbin/vboxconfig
    75    
    76  as root.
    77 Description-de.UTF-8: Alte Kernmodule löschen?
    78  Es wurden alte vboxdrv-Kernmodule gefunden. Diese sollten gelöscht werden, da sie
    79  eventuell nicht mit dieser Version von VirtualBox zusammen arbeiten. Das Compilieren
    80  des Kernmoduls können Sie später durch
    81    
    82    /sbin/vboxconfig
    83    
    84  erzwingen.
    85 
    8634Template: virtualbox/old-installation-found
    8735Type: note
  • trunk/src/VBox/Installer/linux/install.sh

    r58193 r58241  
    364364    # script set-up.
    365365    if test "${BUILD_MODULE}" = "true"; then
    366       for i in /lib/modules/*; do
    367         if test -e "${i}/misc/vboxdrv.ko"; then
    368           rm -f "${i}/misc/vboxdrv.ko" "${i}/misc/vboxnetadp.ko" \
    369                 "${i}/misc/vboxnetflt.ko" "${i}/misc/vboxpci.ko"
    370           # Remove the kernel version folder if it was empty except for us.
    371           test "`echo ${i}/misc/* ${i}/misc/.?* ${i}/* ${i}/.?*`" = \
    372                "${i}/misc/* ${i}/misc/.. ${i}/misc ${i}/.." &&
    373               rmdir "${i}/misc" "${i}"  # We used to leave empty folders.
    374         fi
    375       done
    376366      START_SERVICES=
    377367    else
    378368      START_SERVICES="--nostart"
    379369    fi
     370    "${INSTALLATION_DIR}/prerm-common.sh" >> "${LOG}"
    380371    "${INSTALLATION_DIR}/postinst-common.sh" ${START_SERVICES} >> "${LOG}"
    381372
  • trunk/src/VBox/Installer/linux/prerm-common.sh

    r58214 r58241  
    5555delrunlevel vboxdrv
    5656remove_init_script vboxdrv
     57# And do final clean-up
     58"${MY_PATH}/vboxdrv.sh" cleanup
    5759# Stop host networking and uninstall runlevel script (obsolete)
    5860stop_init_script vboxnet 2>/dev/null
  • trunk/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec

    r58186 r58241  
    236236fi
    237237
    238 # XXX remove old modules from previous versions (disable with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox)
    239 if [ "$INSTALL_NO_VBOXDRV" != "1" ]; then
    240   find /lib/modules -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
    241   find /lib/modules -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
    242   find /lib/modules -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
    243   find /lib/modules -name "vboxpci\.*" 2>/dev/null|xargs rm -f 2> /dev/null || true
    244 fi
    245 
    246238
    247239%post
     
    287279if test "${INSTALL_NO_VBOXDRV}" = 1; then
    288280  POSTINST_START=--nostart
    289   if lsmod | grep -q "vboxdrv[^_-]"; then
    290     /usr/lib/virtualbox/vboxdrv.sh stop || true
    291   fi
    292   # if INSTALL_NO_VBOXDRV is set to 1, remove all shipped modules
    293   rm -f /lib/modules/*/misc/vboxdrv.ko
    294   rm -f /lib/modules/*/misc/vboxnetflt.ko
    295   rm -f /lib/modules/*/misc/vboxnetadp.ko
    296   rm -f /lib/modules/*/misc/vboxpci.ko
    297281else
    298282  POSTINST_START=
    299   if [ ! -f /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
    300     # compile problem
    301     cat << EOF
    302 No precompiled module for this kernel found -- trying to build one.  If this
    303 fails, check the messages logged to $LOG during module compilation.
    304 
    305 EOF
    306   fi
    307283fi
    308284# Install and start the new service scripts.
  • trunk/src/VBox/Installer/linux/vboxdrv.sh

    r58186 r58241  
    376376}
    377377
     378cleanup()
     379{
     380    for i in /lib/modules/*; do
     381        if test -e "${i}/misc/vboxdrv.ko"; then
     382            rm -f "${i}/misc/vboxdrv.ko" "${i}/misc/vboxnetadp.ko" \
     383                  "${i}/misc/vboxnetflt.ko" "${i}/misc/vboxpci.ko"
     384            # Remove the kernel version folder if it was empty except for us.
     385            test   "`echo ${i}/misc/* ${i}/misc/.?* ${i}/* ${i}/.?*`" \
     386                 = "${i}/misc/* ${i}/misc/.. ${i}/misc ${i}/.." &&
     387                rmdir "${i}/misc" "${i}"  # We used to leave empty folders.
     388        fi
     389    done
     390}
     391
    378392# setup_script
    379393setup()
    380394{
    381395    begin_msg "Building VirtualBox kernel modules" console
    382     if find /lib/modules/`uname -r` -name "vboxpci\.*" 2>/dev/null|grep -q vboxpci; then
    383         begin_msg "Removing old VirtualBox pci kernel module"
    384         find /lib/modules/`uname -r` -name "vboxpci\.*" 2>/dev/null|xargs rm -f 2>/dev/null
    385         succ_msg
    386     fi 
    387     if find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|grep -q vboxnetadp; then
    388         begin_msg "Removing old VirtualBox netadp kernel module"
    389         find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null
    390         succ_msg
    391     fi 
    392     if find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|grep -q vboxnetflt; then
    393         begin_msg "Removing old VirtualBox netflt kernel module"
    394         find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null
    395         succ_msg
    396     fi 
    397     if find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
    398         begin_msg "Removing old VirtualBox kernel module"
    399         find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null
    400         succ_msg
    401     fi
    402     begin_msg "Recompiling VirtualBox kernel modules"
     396    cleanup
    403397    if ! $BUILDINTMP \
    404398        --save-module-symvers /tmp/vboxdrv-Module.symvers \
     
    475469    stop && start
    476470    ;;
     471setup)
     472    stop && setup
     473    ;;
     474cleanup)
     475    stop && cleanup
     476    ;;
    477477force-reload)
    478478    stop
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