坑啊!virtual box差分磁盘文件在修改虚拟机后会被清空!

被坑死了,下载一夜的文件,白下载了!

事情这样:
「背景」因为ssd空间较小,vbox里的win xp虚拟机,使用的动态差分硬盘:原始磁盘文件在sata盘上,差分文件放到ssd上,这样磁盘性能会比较好。虚拟硬盘设置的20G,比较小。
「发现」昨晚下载了几个大文件,在解压缩时,磁盘空间不够了,于是再分配一块新硬盘上去,机器重启后,发现系统竟然被还原了。查了磁盘文件,发现差分文件只有50M,这肯定不对。到处找,也没有。
「确认」为了验证一下,在v xp里做了一些文件修改,让磁盘差分文件大一点,然后把第二块盘从配置里移除,果然,

【161010补】之前看这篇草稿,想完成并发布之,但没动。一个主要原因是,仔细想想,vbox这样的设定,其实是合理的。怪自己当时的自作聪明。

本文是以前一次悲惨经历的记录。在草稿箱里放了1年多,最近整理博客看其更新时间为 2015年9月12日 @ 09:05,这么久都没有继续写,大概以后也不会续写,直接发出来算了(2016-10-10 16:46)。

virtualbox虚拟机里使用USB设备

给virtualbox的虚拟机,分配usb设备时,列表是空的,显示没有可用的usb设备。

virtualbox是linux下,使用通用版(非rpm,apk等包)安装的。

原因:是权限问题。具体没搞很清楚,能用就行(因为不是专门搞虚拟机的)。

解决方法:

1. 安装virtualbox的扩展包,VirtualBox 4.xx.yy Oracle VM VirtualBox Extension Pack,这里下载 https://www.virtualbox.org/wiki/Downloads

2. 把查看当前linux用户加到vboxusers用户组里,重启机器。

附注:

关于这个问题,网上有很多解决方法,以本法最简单,改动小,而且安全必较高。

手工编译内核安装virtualbox出错提示Please install the build and header files for your current Linux kernel

核心提示:

检查/lib/module/{内核版本号}/kernel/目录下的文件(符号链接) header,及source是否有效,它们应该链到你的内核编译目录里

使用centos 6.x的linux,嫌自带内核太老,自己编译的内核3.0.32.

virtualbox长期没更新,今天更新一下,到vbox官方下载安装包VirtualBox-4.2.12-84980-Linux_x86.run,sh 运行之,但得到提示:

[root@fsc download]# sh VirtualBox-4.2.12-84980-Linux_x86.run
Verifying archive integrity... All good.
Uncompressing VirtualBox for Linux installation............
VirtualBox Version 4.2.12 r84980 (2013-04-12T10:19:13Z) installer
Please install the build and header files for your current Linux kernel.
The current kernel version is 3.0.32
Problems were found which would prevent VirtualBox from installing.
Please correct these problems and try again.

印象中编译内核时安装装过header,要不然上次是不可能安装成功的。

思考原因,是否因为内核某些地方出错了原因,如某些环境变量或者什么东西,实在不想再次重新编译内核,麻烦,好像还得另外下载并编译网卡驱动。于是考虑找个别人编译好的rpm包装上,找到了一个叫 ELRepo 的项目,提供一系列的内核rpm包 http://elrepo.org/linux/kernel/el6/i386/RPMS/ 看上去还是相当不错的,可以安装他们的yum源。

正准备下载,突然想到,机器换固态硬盘了,是直接使用cp带-p参数拷过来的,而家目录里的很多文件在机械硬盘上,通过符号链接链到~/opdata,当时的内核文件就在其中。联想到/lib/module/`uname -r`/目录里有两个符号链接,是链接到编译内核的目录里的。是否安装kernel-header其实并没有将相应文件拷到某个目录里,而只是符号链接过去。去检查一下。

[root@fsc download]# cd /lib/modules/3.0.32/kernel/
[root@fsc kernel]# ls -alh ..
总用量 3.8M
drwxr-xr-x.  4 root root 4.0K 12月  2 11:05 .
dr-xr-xr-x. 16 root root 4.0K 6月   2 10:47 ..
lrwxrwxrwx.  1 root root   39 5月  26 2012 build -> /home/feng/software/kernel/linux-3.0.32
drwxr-xr-x. 12 root root 4.0K 6月  24 2012 kernel
......
-rw-r--r--.  1 root root 964K 12月  2 11:05 modules.usbmap
lrwxrwxrwx.  1 root root   39 6月  24 2012 source -> /home/feng/software/kernel/linux-3.0.32

果然,build, source两个链接文件,还是链接到原来的位置,而且被shell以红背景提示是“死链接”。

删除这两个链接文件,并重建有效的链接

rm build source
ln -s /home/feng/optdata/software/kernel/linux-3.0.32/ build
ln -s /home/feng/optdata/software/kernel/linux-3.0.32/ source

再次运行sh VirtualBox-4.2.12-84980-Linux_x86.run,virtualbox顺利安装。