日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

centos7:安装配置 virtualbox 增强功能 VBoxGuestAdditions,并实现物理机脚本控制虚拟机

發(fā)布時(shí)間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos7:安装配置 virtualbox 增强功能 VBoxGuestAdditions,并实现物理机脚本控制虚拟机 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

需求來(lái)源

本地virtualbox 上有四臺(tái)互聯(lián)虛擬機(jī),由于物理機(jī)是臺(tái)筆記本,網(wǎng)絡(luò)可能會(huì)發(fā)生變化
而且,由于某些原因,虛擬機(jī)需要設(shè)置成靜態(tài)ip
所以,當(dāng)網(wǎng)絡(luò)發(fā)生變化時(shí),我需要適應(yīng)性的修改虛擬機(jī)的網(wǎng)卡中的ip(IPADDR)和路由(GATEWAY)的配置
鑒于手動(dòng)修改太過(guò)于繁瑣,所以想實(shí)現(xiàn)本地物理機(jī)腳本控制虛擬機(jī),主要面臨情況以及需要實(shí)現(xiàn)的功能如下:
(1)虛擬機(jī)可能已經(jīng)無(wú)法聯(lián)網(wǎng),無(wú)法被ssh 登陸
(2)需要修改的配置可能不止一兩個(gè),很多配置 需要執(zhí)行 shell 腳本 或者修改 配置 文件
(3)實(shí)現(xiàn)從物理機(jī)控制虛擬機(jī),不管是通過(guò)VBoxManage 還是 python 或者是 golang 控制等
(4)主要實(shí)現(xiàn),包括關(guān)機(jī)狀態(tài)下自動(dòng)開(kāi)啟虛擬機(jī),執(zhí)行shell 腳本或者bash 命令(腳本或者命令是在虛擬機(jī)中執(zhí)行),最關(guān)鍵的是一定要能執(zhí)行 bash 命令

物理環(huán)境

物理機(jī):MAC OS X
virtualbox:版本 5.2.16
虛擬機(jī):centos 7(四臺(tái)全是)

安裝準(zhǔn)備

VBoxGuestAdditions鏡像:下載地址 http://download.virtualbox.org/virtualbox/5.2.16/

后邊的版本號(hào)可以修改,最好是跟virtualbox版本對(duì)應(yīng)上。不過(guò)我用的小版本號(hào)不太一樣,也沒(méi)出啥問(wèn)題
國(guó)內(nèi)下載會(huì)很慢,國(guó)內(nèi)鏡像版本也不太齊全
好多人都是去外網(wǎng)下載之后放到csdn下載之后,讓別人用積分才能下載,也是醉了,明明就是開(kāi)源工具
最好科學(xué)上網(wǎng)一下

安裝步驟

Step1 在存儲(chǔ)里添加 VBoxGuestAdditions 的iso,如下圖

Step2 安裝并配置 VBoxGuestAdditions

# 開(kāi)機(jī)之后進(jìn)行操作 # mount 剛剛加入的 iso 到 /mnt 下,執(zhí)行以下命令 mkdir /mnt/vbox mount /dev/sr0 /mnt/vbox# 安裝 依賴 yum update -y yum install -y kernel-devel kernel-headers yum install -y gcc make perl# 執(zhí)行安裝腳本 cd /mnt/vbox ls -l# 其中有很多腳本,有windows 上用的,也有Linux 上用的

# 執(zhí)行Linux 上的安裝腳本, 下圖是成功的標(biāo)志 ./VBoxLinuxAdditions.run

# 有可能成功,也有可能會(huì)因?yàn)槿鄙倨渌蕾囀?#xff0c;如我遇到的是缺少 bzip2 # 如果是缺少依賴,繼續(xù)把依賴裝上,重新執(zhí)行上述安裝腳本即可 # 如果是成功,原來(lái)的虛擬機(jī)窗口,會(huì)變大一號(hào)# 重啟 reboot

網(wǎng)上有很多人說(shuō),安裝成功之后,還會(huì)有兩個(gè)標(biāo)志:

(1)執(zhí)行 df 命令時(shí),會(huì)出現(xiàn)一個(gè)帶有 vbox 字樣的共享目錄,但是很奇怪我的虛擬機(jī)里沒(méi)有,但是我的目的不是為了使用共享目錄,所以沒(méi)有深究。我猜測(cè)是不是因?yàn)槲沂褂玫奶摂M機(jī)共用一塊虛擬盤,當(dāng)然沒(méi)有確實(shí)的根據(jù)
(2)執(zhí)行 cat /etc/group | grep box,打印結(jié)果中有 vboxsf 的用戶組。但我認(rèn)為即使打印了這個(gè)用戶組并不代表 VBoxLinuxAdditions.run 執(zhí)行安裝就成功了。原因是,當(dāng)我在其中某一臺(tái)虛擬機(jī),在缺少gcc 依賴的時(shí)候,執(zhí)行腳本安裝的時(shí)候,依然有用戶組vboxsf,但是實(shí)際上,通過(guò)VBoxManage 操作的時(shí)候并沒(méi)有成功,返回錯(cuò)誤依舊是VBoxManage: error: The guest execution service is not ready (yet),我認(rèn)為此時(shí)安裝根本沒(méi)有成功

綜上,確認(rèn)安裝成功的特征是,虛擬機(jī)窗口變大

確認(rèn)安裝成功的檢驗(yàn)標(biāo)準(zhǔn)是,在物理機(jī)上執(zhí)行一個(gè)VBoxManage 命令,操縱下虛擬機(jī),看是否返回結(jié)果
VBoxManage 命令行 API 介紹地址:https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm

# 提供一個(gè)命令,在mac 上執(zhí)行的,用于檢驗(yàn)上述安裝是否成功。在windows 上執(zhí)行也有,可以去 上面的 鏈接里找,這里不贅述 # 解釋一下這個(gè)命令的所做的事情以及需要的條件 # 需要的條件:虛擬機(jī)開(kāi)機(jī)狀態(tài)下才能執(zhí)行(可以不用登入),VBoxManage 有一個(gè)開(kāi)啟虛擬機(jī)的命令,可以在上面 的鏈接里找一下 # 所做的事情:連接名稱為 bg03 的虛擬機(jī),其用戶名 --username 為 root ,其密碼 --password 為root,ls 目錄 /user VBoxManage --nologo guestcontrol "bg03" run --exe "/bin/ls" --username root --password root --wait-stdout -- -l /usr# 如果上述成功,則打印 /usr 目錄下的文件以及目錄。如同真的在虛擬機(jī)里執(zhí)行 ls /usr 命令執(zhí)行的結(jié)果一摸一樣 # 如果不成功,返回的錯(cuò)誤是 VBoxManage: error: The guest execution service is not ready (yet) ,說(shuō)明上述安裝 沒(méi)有成功

附錄,關(guān)于 virtualbox-python

解釋一下,為什么要附錄這一部分
一開(kāi)始,當(dāng)我意識(shí)到我需要一個(gè)自動(dòng)化腳本,從物理機(jī)直接控制虛擬機(jī)腳本的時(shí)候,我首先想到的不是 VBoxManage ,因?yàn)樵诖酥安僮魈摂M機(jī)我都是鼠標(biāo)鍵盤操作,從未通過(guò)命令行控制virtualBox,更不用說(shuō)是虛擬機(jī)。
所以,最早我想到的是用 python 腳本打開(kāi)虛擬機(jī)、并加入連接,最后進(jìn)行操縱。
當(dāng)時(shí),我最早使用的就是 virtualbox-python 這個(gè)python 的第三方的模塊,在 github 上可以搜到,安裝(在mac上有點(diǎn)復(fù)雜)以及使用就不贅述。之后加上我用python寫的代碼鏈接。
當(dāng)我使用 virtualbox-python 實(shí)現(xiàn)了虛擬機(jī)開(kāi)機(jī)、以及關(guān)機(jī)之后,怎么都無(wú)法實(shí)現(xiàn)在虛擬機(jī)中執(zhí)行一個(gè)腳本,其中執(zhí)行虛擬機(jī)腳本的大致代碼如下:

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 版本)上運(yùn)行的,代碼的意思是通過(guò) create_session 創(chuàng)建一個(gè)session 連接 , 然后使用連接 執(zhí)行一個(gè)命令 ls /usr ,打印結(jié)果 stdout。最后關(guān)閉虛擬機(jī)。
當(dāng)時(shí),這段操作的返回結(jié)果一直都如下所示。當(dāng)時(shí)找了很多資料,包括stackoverflow、github 、google 等,都沒(méi)有很好的解決方法,很多帖子都石沉大海。

0x80bb0005 (The guest execution service is not ready (yet))

這個(gè)輸出和沒(méi)有安裝 VBoxGuestAdditions 之前,直接執(zhí)行 VBoxManage 命令操作虛擬機(jī)命令的返回結(jié)果其實(shí)非常相似。
其實(shí),原因就是因?yàn)樾枰惭b VBoxGuestAdditions 。但是很奇怪的是 virtualbox-python 的作者,沒(méi)有提及 必須要安裝 VBoxGuestAdditions ,是不是大佬思維都太跳了。
由此,說(shuō)明 virtualbox-python 是基于 VBoxGuestAdditions 實(shí)現(xiàn)的,除此之外,它還依賴于vboxapi(這個(gè)沒(méi)有找到太多資料,確實(shí)有這么一說(shuō)),在 Mac 自帶python 的庫(kù)里有。

總結(jié)

以上是生活随笔為你收集整理的centos7:安装配置 virtualbox 增强功能 VBoxGuestAdditions,并实现物理机脚本控制虚拟机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。