设为首页 收藏本站
查看: 2248|回复: 0

[经验分享] CentOS minimal 上安装 VirtualBox 虚拟机自启动

[复制链接]

尚未签到

发表于 2015-10-12 13:46:57 | 显示全部楼层 |阅读模式
  VirtualBox 4.3 可以配置为自动启动虚拟机。下面步骤是在 CentOS 6.5 x86 64位系统上的实施,用的是 minimal 版本,使主机成为 Headless PC (无头主机,即没有显示器,没有键盘鼠标等),在此主机系统上接上网线,安装 VitrualBox,并创建几个虚拟机。经过配置后,实现主机上电启动后,同时自动启动几个虚拟机系统(虚拟的 Windows 2003,Ubuntu
等系统)

  



1. 安装宿主系统

  首先在硬件主机上安装 CentOS 6.5 minimal x86_64。从官网下载 ISO 文件,完成系统安装。作为 VirtualBox 的宿主,不运行其它服务,选择 Minimal 版本,装完只有几百 M 大小,比其它版本或系统动辄几个 G 的系统,真是轻巧多了。
  



1.1 启动网卡

默认安装完成后,系统只开了一个 lo 的本机网络接口,物理网卡驱动后,默认是关闭的,需要修改配置文件来打开

使用 ifconfig 查看,只能看到一个 lo,但用 ifconfig -a 可以看到其它网卡,如果还是看不到,则网卡系统不认识,没有驱动,需要先安装驱动

修改配置文件:


# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=no
HWADDR=A4:BA:DB:37:F1:04
TYPE=Ethernet
BOOTPROTO=dhcp
  将 ONBOOT=no 改为 ONBOOT=yes
  



默认的 IP 地址是 DHCP,如果要改为静态地址,如下:


DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=A4:BA:DB:37:F1:04
TYPE=Ethernet
BOOTPROTO=static
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
IPADDR=192.168.1.44
NETMASK=255.255.255.0

使用静态地址,还需要继续配置网关及 DNS


# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6
GATEWAY=192.168.1.1

重新启动网络接口,使上面的配置修改生效


# service network restart
继续配置 DNS


# vi /etc/resolv.conf
nameserver 8.8.8.8      # Replace with your nameserver ip
nameserver 192.168.1.1  # Replace with your nameserver ip
  (注:不同的网卡设备,在系统中的名称会有不同,如上面的是 eth0,有的则是 p3p1, p3p2 等,后者可能是千兆网卡)
  



1.2 配置防火墙

在后面,我们创建的虚拟机在 Command-Line 模式下,没有 GUI,如果要安装如 Windows 之类的图形操作系统,需要使用远程桌面来连接操作,因此需要开启远程桌面连接的端口。


# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

上面的示例中,我们增加了一行,打开了 VRDP 默认的端口 3389

重启防火墙,让刚才的配置生效


# service iptables restart
  


  1.3 挂载 CDROM

比如要安装 Windows2003 的虚拟机,需要有 Windows2003 的安装光盘,如果你是使用物理光盘,就要挂载到 CentOS 中。

创建挂载点


# mkdir /mnt/cdrom
挂载 CDROM


# mount /dev/cdrom /mnt/cdrom
查看 cdrom


# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   14G  1.6G   12G  13% /
tmpfs                         246M     0  246M   0% /dev/shm
/dev/sda1                     485M   54M  407M  12% /boot
/dev/sr0                      626M  626M     0 100% /mnt/cdrom

  (注:参数 -h 表示 human,以 M,G 为单位显示。其中 /dev/cdrom 实际指向的是 /dev/sr0,与光驱插在哪个接口上有关)
  



1.4 挂载 ntfs 格式的移动存储设备

你也有可能将安装光盘的 ISO 文件存放在移动硬盘上,而且很有可能是 NTFS 格式的。在挂载之前,则需要安装 ntfs-3g 来支持。

在官方的软件仓库中,没有 ntfs-3g,这里推荐使用 EPEL 第三方软件仓库。


# cd /tmp
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh epel-release-6*.rpm
# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-Media.repo  epel.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo  epel-testing.repo

  可以看到,除了 CentOS,多了两个 epel 的 repo,第三方软件仓库就已经可以用了,如果要尝试测试版软件,打开 epel-testing.repo,将里面的 enabled = 0 改为 enabled = 1
  



# yum install ntfs-3g
  用上面简单的命令即完成 ntfs-3g 的安装
  



将移动硬盘插入 USB 口,查看一下设备:


# fdisk -l
在列出来的清单中,可以看到 USB 盘的设备名称,如:/dev/sdc1 等。用 mount 来进行挂载:


# mkdir /mnt/usb
# mount -t ntfs-3g /dev/sdc1 /mnt/usb
# ls /mnt/usb/

要移除硬盘:


# umount /mnt/usb
  


  2. 准备 VirtualBox 用户

我们使用普通用户来管理及创建虚拟机,而不是 root 用户。如果你没有普通用户,通过下面命令来创建,这里我们创建一个 vmuser 的普通用户,组也为 vmuser


# groupadd vmuser# useradd -d /home/vmuser -m -g vmuser -s /bin/bash vmuser
  为新用户创建登录密码


# passwd vmuser
  然后用这个用户登录

  

3. 安装 VirtualBox

安装 VirtualBox 需要 root 权限,因此要运行


# su
更新你的 linux 内核


# yum install kernel
更新完成后,必须重启电脑


# reboot
用普通用户登录后,再转为 root


$ su
接下来安装 VirtualBox 4.3 的依赖包


# yum groupinstall 'Development Tools'
# yum install SDL kernel-devel kernel-headers dkms

安装下载工具 wget


# yum install wget
下一步下载并注册 VirtualBox 的 rpm 公钥


# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc
# rpm --import oracle_vbox.asc
# rm -f oracle_vbox.asc

现在我们开启 VirtualBox 的 RHEL 软件仓库(CentOS 是从 RedHat 衍生出来的 Linux 版本)


# cd /etc/yum.repos.d/
# wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo

(注:如果是 Fedora 系统,将上面下载地址中的 rhel 改为 fedora,你也可以取地址前面部分,直接在网站上浏览,找找看有哪些系统被支持软件仓库)

在软件仓库中搜索并安装最新的 VirtualBox 版本


# yum search virtualbox
VirtualBox-3.2.x86_64 : Oracle VM VirtualBox
VirtualBox-4.0.x86_64 : Oracle VM VirtualBox
VirtualBox-4.1.x86_64 : Oracle VM VirtualBox
VirtualBox-4.2.x86_64 : Oracle VM VirtualBox
VirtualBox-4.3.x86_64 : Oracle VM VirtualBox

用下面这条简单的命令来安装


# yum install VirtualBox-4.3.x86_64
VirtualBox 4.3 核心包有 72M,如果在安装时,下载失败,可以重复执行安装命令,yum install 会断点续传,不用担心下载失败问题

从 4.0 版本开始,VirtualBox 提供扩展包,提供远程桌面连接(VRDP),USB运行等功能。因为我们接下来需要 VRDP 功能来安装管理虚拟机系统。

下载并安装扩展包(具体下载地址请到官方网站的下载页面查看)


# cd /tmp
# wget http://download.virtualbox.org/virtualbox/4.3.6/Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.6-91406.vbox-extpack

(注:请确认下载最新版本)

现在,将要运行 VirtualBox 的用户添加到组 vboxusers 中(这里,我们创建的用户是 vmuser)


# /usr/sbin/usermod -G vboxusers vmuser
好了,现在已经完成安装了。

输入


# exit
  退出 root 用户,返回到普通用户
  



4. 在命令行字符模式下使用 VirtualBox

4.1 创建一个虚拟机


常用的命令是 VBoxManage,你可以加 --help 参数来查看帮助,也可以在官方手册的第8单查看详细说明:

http://www.virtualbox.org/manual/ch08.html


$ VBoxManage --help




创建一个 Windows2003 虚拟机。加参数 --register 直接注册到虚拟机列表


$ VBoxManage createvm --name "Windows2003" --register --ostype Windows2003
接下来设置内存为 1024M,打开 acpi,设置启动项,以及桥接到主机的 p3p1 物理网卡上


$ VBoxManage modifyvm "Windows2003" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 p3p1
下一步是创建一个虚拟机硬盘,分配 10G 空间,默认动态增长文件大小


$ cd /home/vmuser/Virtual\ VMs/Windows2003/
$ VBoxManage createhd --filename Windows2003_CN.vdi --size 10000

添加一个 IDE 控制器,然后将虚拟硬盘添加到 IDE 的第一个接口,并作为主设备


$ VBoxManage storagectl “Windows2003" --name "IDE Controller" --add ide
$ VBoxManage storageattach "Windows2003" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium Windows2003_CN.vdi

添加一个 IDE 光驱,并指定光盘映像


$ VBoxManage storageattach "Windows2003" --storagectl "IDE Controller" --port1 --device 0 --type dvddrive --medium /mnt/usb/windows2003.iso




你也可以从其它电脑上复制现成的 vdi 文件,只要将 --medium Windows2003_CN.vdi 改为你复制过来的 VDI 文件即可。

同样,你也可以从其它电脑上复制整个虚拟机,只要将它注册到虚拟机列表即可。

如:


$ VBoxManage registervm /home/Virtual\ VMs/myvm/myvm.vbox
这里,vbox文件是一个 xml 格式的配置文件,复制时,保持文件相对位置不变。

复制过来的文件,有可能无法启动,如网卡桥接模式,绑定的物理网卡通常不在当前的宿主机网卡列表中,这时只要打开 vbox 文件,找到 bridge 配置项,将网卡名称改为当前宿主机上的网卡名称就可以了。

BTW,大部分的 VBoxManage 命令最终就是修改这个 vbox 文件。





现在你可以用下面的命令来查看刚才创建的虚拟机


$ VBoxManage showvminfo Windows2003




4.2 用 Headless 方式启动虚拟机


$ VBoxHeadless --startvm Windows2003
默认,会打开 VRDP,端口为 3389,这时,就可以用标准的 VRDP 客户端来连接虚拟机进行系统安装及管理了。

在命令行,按 Ctrl + Z,可以将虚拟机任务挂机。


$ jobs
可以看到挂起的任务,我们用 bg + 任务号,将它转为后台运行


$ bg 1
这时,你输入下面命令,可以查看当前在运行的虚拟机


$ VBoxManage list runningvms
"Windows2003" {7eee7d4b-ef1b-4dc7-8d08-dab2b6531646}

显示了运行中的虚拟机名称及 UUID 列表





关闭虚拟机:


$ VBoxManage controlvm Windows2003 --acpipowerbutton



$ VBoxManage controlvm Windows2003 --poweroff
前者相当于按一下电源按钮,系统开始关闭处理,后者相当于直接拨电源线





4.3 挂载 USB 设备

首先要启用 USB 支持,并打开 USB 2.0 增强


$ VBoxManage modifyvm Windows2003 --usb on --usbehci on
接入 USB 设备,查看 USB 列表


$ VBoxManage list usbhost
Host USB Devices:

UUID:               1af60eb8-0cad-4bf9-89b1-edae0c38e97b
VendorId:           0x05ac (05AC)
ProductId:          0x8510 (8510)
Revision:           128.37 (12837)
Port:               0
USB version/speed:  2/2
Manufacturer:       Apple Inc.
Product:            FaceTime HD Camera (Built-in)
SerialNumber:       CCGCBM05XJDWC8C0
Address:            sysfs:/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1//device:/dev/vboxusb/001/002
Current State:      Busy

接下来,用 usbfilter 命令来添加


$ VBoxManage usbfilter add 0 --target "Windows2003" --name "myusbdevice" --action ignore --serialnumber CCGCBM05XJDWC8C0
这里用的是 USB 设备序列号来添加,有些 USB 设备没有序列号,那还可以用 productid, product 等来进行选择设备





完成 USB 挂载后,启动 Windows 系统,就可以看到找到新设备了。





5. 自启动设置

5.1 设置自启动的两个环境变量。



$ su
# vi /etc/default/virtualbox

添加下面两行:


VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxauto.conf





5.2 配置启动用户


# vi /etc/vbox/vboxauto.conf
添加下面内容:


default_policy = deny
vmuser= {
allow = true
}

  (注:将 vmuser 替换成你实际的用户,这个用户加入了vboxusers组,用来操作 VBoxManage 的用户)
  



5.3 修改 vbox 目录权限


# chgrp vboxusers /etc/vbox
# chmod 1775 /etc/vbox
# exit

完成以上操作后,退出 root,返回普通用户

5.4 设置dbpath属性


$ VBoxManage setproperty autostartdbpath /etc/vbox
$ VBoxManage list systemproperties
...
Autostart database path:         /etc/vbox

  


  5.5 指定虚拟机自动启动

$ VBoxManage modifyvm Windows2003 --autostart-enabled on --autostop-type acpishutdown
$ ls /etc/vbox

可以看到生成了以用户名开始的两个文件


vmuser.start   vmuser.stop
  


  5.6 重启 vboxauto 服务

$su
# service vboxautostart-service stop
# service vboxautostart-service start





好了,重启主机,虚拟机已经自动运行了,用 VDRP 客户端直接连接即可。





6. 其它

6.1 挂载 GuestAddition.iso,安装客户机增强工具



$ VBoxManage storageattach "Windows2003" --storagectl "IDE Control" --port 1 --device 0 --type dvddrive --medium emptydrive
$ VBoxManage storageattach "Windows2003" --storagectl "IDE Control" --port 1 --device 0 --type dvddrive --medium additions

这样在虚拟机里就可以看到增强工具光盘了。

注意,必须先 emptydrive 后,才能加载 addtions。





6.2. 显式指定 VRDP


$ VBoxManage modifyvm "Windows2003" --vrde on --vrdeport 3389
$ VBoxManage showvminfo "Windows2003"

设置后,你可以检查虚拟机的设置状态。





6.3 查看宿主系统性能


$ top
系统占用还是非常低的。









参考资料:

#1: Chapter 8. VBoxManage

https://www.virtualbox.org/manual/ch08.html

#2: creating a virtual machine on a headless server

https://www.virtualbox.org/manual/ch07.html#idp51975936

#3: How to set your VM to auto start at system startup in VirtualBox 4.2 on Ubuntu 12.04

http://yakupkorkmaz.info/?p=191

#4: Linux查看CPU和内存使用情况

http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html

#5: VBoxHeadless - Running Virtual Machines With VirtualBox 4.2 On A Headless Fedora 18 Server

http://www.howtoforge.com/vboxheadless-running-virtual-machines-with-virtualbox-4.2-on-a-headless-fedora-18-server

#6: Creating and Configuring Headless VMs in VirtualBox

http://vmetc.com/2008/07/12/creating-and-configuring-headless-vms-in-virtualbox/

#7: CTRL-Z和CTRL-C区别?

http://www.linuxsir.org/bbs/thread20600.html

#8: Installing RHEL EPEL Repo on Centos 5.x or 6.x

http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x

#9: How Do I Access or Mount Windows/USB NTFS Partition in RHEL/CentOS/Fedora

http://www.tecmint.com/how-do-i-access-or-mount-windows-ntfs-partition-in-linux/

#10: CentOS 6 minimal VirtualBox eth0

http://www.viqsoft.com/blog/-/blogs/centos-6-minimal-virtualbox-eth0

#11: How To Configure Static IP On CentOS 6

https://gist.github.com/fernandoaleman/2172388

#12: Centos下设置VNC为3389端口

http://yuky1327.iyunv.com/blog/1743816

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125941-1-1.html 上篇帖子: virtualbox网络配置和调试linux内核 下篇帖子: VirtualBox上Ubuntu虚拟机反应慢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表