centos7:安装配置 virtualbox 增强功能 VBoxGuestAdditions,并实现物理机脚本控制虚拟机
需求来源
本地virtualbox 上有四台互联虚拟机,由于物理机是台笔记本,网络可能会发生变化
而且,由于某些原因,虚拟机需要设置成静态ip
所以,当网络发生变化时,我需要适应性的修改虚拟机的网卡中的ip(IPADDR)和路由(GATEWAY)的配置
鉴于手动修改太过于繁琐,所以想实现本地物理机脚本控制虚拟机,主要面临情况以及需要实现的功能如下:
(1)虚拟机可能已经无法联网,无法被ssh 登陆
(2)需要修改的配置可能不止一两个,很多配置 需要执行 shell 脚本 或者修改 配置 文件
(3)实现从物理机控制虚拟机,不管是通过VBoxManage 还是 python 或者是 golang 控制等
(4)主要实现,包括关机状态下自动开启虚拟机,执行shell 脚本或者bash 命令(脚本或者命令是在虚拟机中执行),最关键的是一定要能执行 bash 命令
物理环境
物理机:MAC OS X
virtualbox:版本 5.2.16
虚拟机:centos 7(四台全是)
安装准备
VBoxGuestAdditions镜像:下载地址 http://download.virtualbox.org/virtualbox/5.2.16/
后边的版本号可以修改,最好是跟virtualbox版本对应上。不过我用的小版本号不太一样,也没出啥问题
国内下载会很慢,国内镜像版本也不太齐全
好多人都是去外网下载之后放到csdn下载之后,让别人用积分才能下载,也是醉了,明明就是开源工具
最好科学上网一下
安装步骤
Step1 在存储里添加 VBoxGuestAdditions 的iso,如下图
Step2 安装并配置 VBoxGuestAdditions
# 开机之后进行操作
# mount 刚刚加入的 iso 到 /mnt 下,执行以下命令
mkdir /mnt/vbox
mount /dev/sr0 /mnt/vbox# 安装 依赖
yum update -y
yum install -y kernel-devel kernel-headers
yum install -y gcc make perl# 执行安装脚本
cd /mnt/vbox
ls -l# 其中有很多脚本,有windows 上用的,也有Linux 上用的
# 执行Linux 上的安装脚本, 下图是成功的标志
./VBoxLinuxAdditions.run
# 有可能成功,也有可能会因为缺少其他依赖失败,如我遇到的是缺少 bzip2
# 如果是缺少依赖,继续把依赖装上,重新执行上述安装脚本即可
# 如果是成功,原来的虚拟机窗口,会变大一号# 重启
reboot
网上有很多人说,安装成功之后,还会有两个标志:
(1)执行 df 命令时,会出现一个带有 vbox 字样的共享目录,但是很奇怪我的虚拟机里没有,但是我的目的不是为了使用共享目录,所以没有深究。我猜测是不是因为我使用的虚拟机共用一块虚拟盘,当然没有确实的根据
(2)执行 cat /etc/group | grep box,打印结果中有 vboxsf 的用户组。但我认为即使打印了这个用户组并不代表 VBoxLinuxAdditions.run 执行安装就成功了。原因是,当我在其中某一台虚拟机,在缺少gcc 依赖的时候,执行脚本安装的时候,依然有用户组vboxsf,但是实际上,通过VBoxManage 操作的时候并没有成功,返回错误依旧是VBoxManage: error: The guest execution service is not ready (yet),我认为此时安装根本没有成功
综上,确认安装成功的特征是,虚拟机窗口变大
确认安装成功的检验标准是,在物理机上执行一个VBoxManage 命令,操纵下虚拟机,看是否返回结果
VBoxManage 命令行 API 介绍地址:https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm
# 提供一个命令,在mac 上执行的,用于检验上述安装是否成功。在windows 上执行也有,可以去 上面的 链接里找,这里不赘述
# 解释一下这个命令的所做的事情以及需要的条件
# 需要的条件:虚拟机开机状态下才能执行(可以不用登入),VBoxManage 有一个开启虚拟机的命令,可以在上面 的链接里找一下
# 所做的事情:连接名称为 bg03 的虚拟机,其用户名 --username 为 root ,其密码 --password 为root,ls 目录 /user
VBoxManage --nologo guestcontrol "bg03" run --exe "/bin/ls" --username root --password root --wait-stdout -- -l /usr# 如果上述成功,则打印 /usr 目录下的文件以及目录。如同真的在虚拟机里执行 ls /usr 命令执行的结果一摸一样
# 如果不成功,返回的错误是 VBoxManage: error: The guest execution service is not ready (yet) ,说明上述安装 没有成功
附录,关于 virtualbox-python
解释一下,为什么要附录这一部分
一开始,当我意识到我需要一个自动化脚本,从物理机直接控制虚拟机脚本的时候,我首先想到的不是 VBoxManage ,因为在此之前操作虚拟机我都是鼠标键盘操作,从未通过命令行控制virtualBox,更不用说是虚拟机。
所以,最早我想到的是用 python 脚本打开虚拟机、并加入连接,最后进行操纵。
当时,我最早使用的就是 virtualbox-python 这个python 的第三方的模块,在 github 上可以搜到,安装(在mac上有点复杂)以及使用就不赘述。之后加上我用python写的代码链接。
当我使用 virtualbox-python 实现了虚拟机开机、以及关机之后,怎么都无法实现在虚拟机中执行一个脚本,其中执行虚拟机脚本的大致代码如下:
guestSession = session.console.guest.create_session('root', 'root')
try:# print guestSession.state# Do somethingproc, stdout, stderr = guestSession.execute('/bin/ls', arguments=['/usr'])print stdout
except Exception, err:print err
finally:# Close the machinesession.console.power_down()
这段代码是在 python 2.7(mac os 自带的python 版本)上运行的,代码的意思是通过 create_session 创建一个session 连接 , 然后使用连接 执行一个命令 ls /usr ,打印结果 stdout。最后关闭虚拟机。
当时,这段操作的返回结果一直都如下所示。当时找了很多资料,包括stackoverflow、github 、google 等,都没有很好的解决方法,很多帖子都石沉大海。
0x80bb0005 (The guest execution service is not ready (yet))
这个输出和没有安装 VBoxGuestAdditions 之前,直接执行 VBoxManage 命令操作虚拟机命令的返回结果其实非常相似。
其实,原因就是因为需要安装 VBoxGuestAdditions 。但是很奇怪的是 virtualbox-python 的作者,没有提及 必须要安装 VBoxGuestAdditions ,是不是大佬思维都太跳了。
由此,说明 virtualbox-python 是基于 VBoxGuestAdditions 实现的,除此之外,它还依赖于vboxapi(这个没有找到太多资料,确实有这么一说),在 Mac 自带python 的库里有。
centos7:安装配置 virtualbox 增强功能 VBoxGuestAdditions,并实现物理机脚本控制虚拟机相关推荐
- 安装VBox共享文件增强功能VBoxGuestAdditions
以前常用的安装VBox共享文件增强功能,博客记录下,以备查用. 预备: VBox版本:5.0.6, r103037 debian版本:debian-8.3.0-i386-CD-1.iso 增强版本:V ...
- linux的增强文件夹,在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么...
在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么 1. 点击菜单栏 设备 –> 分配光驱 –> 选择一个虚拟光盘,找到VirtualBox安装目录下的`VBox ...
- 深度linux安装virtualbox,【玩转deepin】如何安装VirtualBox增强功能使得deepin系统全屏显示?...
原标题:[玩转deepin]如何安装VirtualBox增强功能使得deepin系统全屏显示? 在Windows上通过Virtualbox安装deepin深度操作系统,安装完成后,为了让deepin可 ...
- virtualbox mac (免费) 安装 centOS8 (含支持屏幕分辨率设置的VirtualBox增强功能安装)
一. 官网下载virtualbox及其增强功能安装包 本教程版本:6.1.4 mac版,官方下载地址:http://download.virtualbox.org/virtualbox/6.1.4/ ...
- 在CentOS6虚拟机上安装VirtualBox增强功能
1. 安装编译需要的库和头文件 yum install gcc -y yum install kernel sources -y yum install kernel-devel -y 2. 安装Vi ...
- Kali安装VirtualBox增强功能
文章目录 前言 一.安装前 二.安装步骤 1.获取增强功能包 2.复制`VBoxLinuxAdditions.run`到`/home` 三.安装后 前言 目的:安装VirtualBox增强功能后,可以 ...
- vmware linux 3d加速,Ubuntu虚拟机安装Virtualbox增强功能启用3D加速
本文介绍如何为ubuntu虚拟机安装Virtualbox增强功能(英文名叫Guest Additions),很多同学都感觉ubuntu虚拟机非常卡,这是因为Unity桌面需要3D支持,而要在virtu ...
- 解决VirtualBox增强功能异常
VirtualBox增强功能异常的排查 每次安装完vbox的增强功能总是会有各种异常问题,比如: 共享文件不能使用. 复制粘贴不能使用. 显示器分辨率不能自动调整. OpenGL 3D加速不能使用. ...
- VirtualBox增强功能包
最近一直用Harvard的CS50 Applicance学C语言,可惜蛋疼的网速想同步 文件都难,因此决定设置共享文件夹,虽然折腾了好几个小时了,不过这增强 功能包竟然连分辨率都搞掂了,以后我不用一直 ...
- centos7安装配置vsftp搭建FTP
参考文章: CentOS7下安装FTP服务 详解CentOS7安装配置vsftp搭建FTP centos7之vsftp安装和使用 1.安装vsftp # 查看是否已安装 方法一 [root@local ...
最新文章
- “智源论坛Live”报名 | 清华大学游凯超:领域适配前沿研究--场景、方法与模型选择...
- WindowsPhone后台新特性
- poj 2352 线段树
- Jmeter(二)Jmeter目录介绍
- Oracle EXP/IMP参数详解
- 这28张图绝非超现实,都是在真实世界中存在的
- VC与Matlab混合编程的快速实现(3-1)
- Kali学习笔记5:被动信息收集工具集
- c#中onclick事件请求的两种区别
- 二胎妈妈,35岁,年薪70万,家庭工作平衡太难,要不要辞职?
- 改进的冒泡排序算法一
- Tensorflow2.0入门教程(一)
- 并查集路径压缩_并查集简单教学
- java随机点名器的代码_巧用Excel制作随机点名器,简单易学,快来尝试吧
- eclipse运行jsp文件时出现乱码解决方法
- 产生分类中的双月问题的数据集
- gfs和hdfs文件系统的区别
- Django项目——CRM
- [转载]Emit学习之旅(1):Emit概览
- 图码详解算法|理解八大思想,胜刷百道力扣!