centos7命令行安装virtualBox
安装VirtualBox
升级内核
# yum install -y kernel kernel-headers kernel-devel gcc make
# ls /usr/src/kernels #查看下载的内核版本
10.0-957.10.1.el7.x86_64
# uname -r #查看当前内核版本
3.10.0-514.el7.x86_64
# 如果以上两个内核版本不同 重启机器
# reboot
在线安装
访问官网

官网download页面,拉到最下边。
打开文件地址,下载下来,复制粘贴到centos
[virtualbox] name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://www.virtualbox.org/download/oracle_vbox_2016.asc ~
添加virtualbox
源
vi /etc/yum.repos.d/virtualbox.repo
添加上面的内容导入安装包
# 更新yum源 sudo yum update 或 # 查询包,会自动导入 sudo yum search virtual
安装
sudo yum search virtualBox # 搜索后安装最新版本即可 sudo yum install -y VirtualBox-7.0.x86_64


重新编译VirtualBox内核
当您在Linux系统上安装VirtualBox时,它将会安装内核模块以便让VirtualBox虚拟机能够与主机操作系统进行通信。然而,如果您的Linux内核或VirtualBox发生了升级或更改,可能会导致这些内核模块不兼容或无法加载,这会导致VirtualBox无法正常工作。
在这种情况下,您可以运行sudo /sbin/vboxconfig命令,它会重新编译VirtualBox内核模块并将其与当前正在运行的内核匹配。这将确保VirtualBox能够与当前的Linux内核兼容并正常工作。
sudo /sbin/vboxconfig
不报错就直接跳到下一个标题。
有可能报错的问题:
kernel-devel软件包未安装,无法编译内核模块。
"kernel-devel"和"kernel-header"都是Linux操作系统中用于开发和编译内核模块所需的软件包。它们都包含用于编译内核模块所需的头文件和工具链。但是,它们之间存在一些区别。
通常,"kernel-devel"软件包包含完整的内核源代码和与内核版本匹配的开发工具链,因此它比"kernel-header"软件包更大。另一方面,"kernel-header"软件包只包含必要的内核头文件,以便在编译内核模块时使用。如果您只需要编译内核模块,则使用"kernel-header"软件包可能会更加节省空间。但是,如果您需要完整的内核源代码和开发工具链,则应该使用"kernel-devel"软件包。
注意:
通常是新装机,
(1)没有安装kernel-devel软件包。
(2)或者是安装镜像中的 kernel 版本比线上 repo 库中的 kernel-devel 低,因此安装 kernel-devel 时,安装了比当前运行内核版本高的 kernel-devel,为了一致,可以直接升级当前内核。
# 查看关于kernel已安装的软件
rpm -qa | grep kernel
# 查看内核版本
uname -r
# 查看kernel-headers版本
rpm -qa kernel-headers
# 查看kernel-devel版本
rpm -qa kernel-devel

发现kernel版本低,kernel-devel没有安装。
# 安装kernel-devel sudo yum install -y kernel-devel # 更新kernel sudo yum update kernel
注意
更新后重启系统
查看版本
启动服务
# 重启 sudo systemctl restart vboxdrv.service # 查看状态 sudo systemctl status vboxdrv.service

离线rpm安装
下载依赖以及安装包
首先检查一下无法联网机器上的kernel与kernel-devel是否都安装了并且版本一致。一致可直接跳转到第2步
sudo rpm -qa | grep kernel
img 我的机器上,就是kernel-devel未安装。 所以得先从有网络的机器上下载kernel-devel的安装包及依赖。新建文件夹并在文件夹下执行一下命令
# 搜索软件包 yum search kernel-devel # 如果没有repotrack命令,先安装yum-utils,有就不用执行 sudo yum install -y yum-utils sudo repotrack kernel-devel.x86_64
img 下载好后,检查目录中下载的kernel-devel的rpm安装包是否与未联网的机器上的kernel版本一致
# 在未联网的机器上运行 uname -r # 在已下载的kernel-devel目录下运行 ls | grep kernel
img - 我这里一致。如果不一致,可以以同样的方式下载一下kernel,一并安装。可以放到一个文件夹下,重复的依赖会自动覆盖。不影响安装。
查看未联网机器上是否安装有gcc,make,perl,没有就下载安装
gcc是GNU编译器套件(GNU Compiler Collection)的缩写,是一款编译器工具,用于将C、C++等编程语言的源代码转换为可执行文件或库文件。它是一个非常常用的编译器,常用于开发系统级软件、操作系统、设备驱动程序等。
make是一个构建工具,它的主要功能是管理软件编译过程中的依赖关系,自动化编译过程,可以根据一系列规则和指令将源代码转换为可执行文件。它可以自动判断哪些文件需要重新编译,从而提高编译效率。
perl是一种脚本语言,可用于文本处理、网络编程、系统管理等多种任务,它的特点是易于学习、强大的正则表达式支持以及大量的模块库。它常用于开发网站、CGI脚本、系统管理工具等。
可以按照上述方式下载,并将他们放到一个包里。
并执行rpm安装命令,保证三个命令都能使用

在有互联网的机器上下载安装包及依赖
根据上述在线版的教程中2456步骤,导入yum源,并使用sudo yum update更新源。
img
下载需要的安装包版本及全量依赖,我这里下载最新版
新建一个空文件夹,在文件夹下运行一下命令。等运行完后,所有rpm依赖包及软件安装包会全部下载到此目录下。
# repotrack会下载软件包及全量依赖 sudo repotrack VirtualBox-7.0.x86_64
img img
拷贝并安装
- 将上述下载的所有文件或文件夹拷贝到无法联网的机器上
kernel-devel(如果需要),kernel(如果需要),都拷贝到一个文件夹中,如果有一样的可以覆盖。并将此目录及目录下所有文件都拷贝到无法联网的机器上。
我这里就把kernel,kernel-devel都传到一个文件夹里了,然后拷贝到无法无法联网的机器上,执行安装命令。进入此目录,在此目录运行安装命令
sudo rpm -Uvh --force --nodeps *.rpm
img 安装完kernel内核后需要重启 , 重启后查看下,可以看到已安装并版本一致。
img
安装gcc+make+perl(如果需要)
- 方法与上述相同
安装virtualbox
同样,在含有virtualbox的rpm软件包和依赖目录下运行安装命令
sudo rpm -Uvh --force --nodeps *.rpm
img
启动验证
# 重启
sudo systemctl restart vboxdrv.service
# 查看状态
sudo systemctl status vboxdrv.service
VBoxMange管理vbox
创建普通用户
- 我们使用普通用户来管理及创建虚拟机,而不是 root 用户。如果你没有普通用户,通过下面命令来创建,这里我们创建一个 vmuser 的普通用户,组也为 vmuser
groupadd vmuser
useradd -d /home/vmuser -m -g vmuser -s /bin/bash vmuser
为新用户创建登录密码
passwd vmuser
切换到vmuser用户