基于Xen4.7在Ubuntu16.04 LTS搭建Drakvuf使用环境
-
引言
- 本文是对这次搭建过程的一次总结。由于个人能力有限,断断续续和小组成员们搭建了半个学期,最后实现了drakvuf官网上示例视频的几个功能。搭建过程中也出了一些问题,最后解决了大部分,剩下虚拟机的网络配置有些问题,还需要完善。 实验环境
- ubuntu 16.04 LTS,xen4.7,一台服务器(穷学生买不起符合实验硬件要求的机子,只能向研究所的老师借了一台,感谢T^T)
搭建过程和步骤
好,下面开始正题~~~
1.先装一些必要的依赖
sudo apt-get install wget git bcc bin86 gawk bridge-utilsiproute libcurl3 libcurl4-openssl-dev bzip2 module-init-tools pciutils-devbuild-essential make gcc clang libc6-dev libc6-dev-i386 linux-libc-devzlib1g-dev python python-dev python-twisted python-gevent python-setuptools libncurses5-dev patch libvncserver-dev libssl-dev libsdl-dev iasl libbz2-deve2fs libs-dev git-core uuid-dev ocaml libx11-dev bison flex ocaml-find libxz-utils gettext libyajl-dev libpixman-1-dev libaio-dev libfdt-dev cabextract libglib2.0-dev autoconf automake libtool check libjson-c-dev libfuse-dev libsystemd-daemon-dev
报错,把 libsystemd-daemon-dev 改成 libsystemd-dev
2.子模块的安装
在github上下载drakvuf源码;
cd ~
git clone https://github.com/tklengyel/drakvuf
cd drakvuf
git submodule init
git submodule update
cd xen
./configure --enable-githttp
make -j4 dist-xen
make -j4 dist-tools
“git submodule init”就是安装drakvuf所需要的子模块(xen, rekall, libvmi等)
3.分配内存和cpu
sudo su
make -j4 install-xen
make -j4 install-tools
echo "GRUB_CMDLINE_XEN_DEFAULT=\"dom0_mem=4096M,max:4096M dom0_max_vcpus=4 dom0_vcpus_pin=true hap_1gb=false hap_2mb=false altp2m=1 flask_enforcing=1\"" >> /etc/default/grub
echo "/usr/local/lib" > /etc/ld.so.conf.d/xen.conf
ldconfig
echo "none /proc/xen xenfs defaults,nofail 0 0" >> /etc/fstab
echo "xen-evtchn" >> /etc/modules
echo "xen-privcmd" >> /etc/modules
update-rc.d xencommons defaults 19 18
update-rc.d xendomains defaults 21 20
update-rc.d xen-watchdog defaults 22 23
3.重启,进入xen4.7,重启后要按shift键,进入grub引导
update-grub
reboot
4.检测
检测内核版本,大于3.8的就行~~
uname -r
检测是否在XEN上运行,结果显示应该是: Running in PV context on Xen v4.7
sudo xen-detect
检测正在运行的domain,这时候应该只有一个Domain0(就是ubuntu~)
xl list
结果长这样子~~
Name ID Mem VCPUs State Time(s)
Domain-0 0 4096 2 r----- 614.0
5.给虚拟机分配硬盘空间
lvcreate -L20G -n windows7-sp1 vg
官网上就这一句,但是我折腾了好几天从头开始看怎么在ubuntu的磁盘上分区,最后成功的,具体过程如下(使用了fdisk这个工具)
- fdisk分出lvm的类型
Ubuntu是给出一系列的代号对应的lvm类型,大致看一下fdisk的使用方法就能知道了 pvcreate /dev/sdb3
vgcreate vgpool /dev/sdb3
vgpool是新的卷组名称lvcreate -L 20G -n win7 vgpool
6.生成cfg配置文件
arch = 'x86_64'
name = "win7"
seclabel='drakvuf:vm_r:drakvuf_domU_t'
maxmem = 3000
memory = 3000
vcpus = 1
maxcpus = 1
builder = "hvm"
boot = "cd"
hap = 1
acpi = 1