yum update
yum groupinstall "Development Tools"
yum install -y gcc gcc-c++ git patch texinfo
yum install -y python-devel acpica-tools libuuid-devel ncurses-devel glib2 glib2-devel libaio-devel openssl-devel yajl-devel glibc-devel glibc-devel.x86_64 pixman-devel
参照Configuring Virtual TPM (vTPM) for Xen 4.3 Guest Virtual Machines.如果在./configure xen是没有对应vtpm包,则安装cmake再试
rpm -ivh dev86-0.16.17-15.1.el6.x86_64.rpm
下载xen源代码编译安装:
(make tools出错:KeyError: ‘.text.asm.out/../src/smp.c.77’解决方法:加LC_ALL=C make编译,上网查到的原因是:语言设置为UTF-8)
cd xen
./configure
在configure中可以看到最终安装的stubdom,需要有vtpm-stubdom和vtpmmgr-stubdom两个包,如果没有,先安装cmake和gmplib,tss软件协议栈最好也进行安装,后续启动vtpm manager时出现问题不确定是否是由该问题引起。见后面tpm模拟器安装步骤)
make dist
make install
出现错误

解决方法:yum install iasl

(上述错误是由于在编译过程中需要从xenbits.org网站上下载相关文件,由于网络设置原因,不能成功登陆该网站,导致该错误发生。解决方法,配置网络使得可以成功登陆该网站,直接修改/etc/hosts文件中添加ip和域名)
在成功安装xen后可以在/boot下找到许多xen.gz文件
在卸载xen时,需要切换到普通内核中,在xen文件夹下make uninstall进行卸载,检查/usr/local/lib和/usr/lib中的库文件和链接文件,不要在xen内核下进行卸载
 
安装dom0内核
此时需要加入带xen的linux dom0内核
在配置vtpm时,按照Configuring Virtual TPM (vTPM) for Xen 4.3 Guest Virtual Machines.文档中对dom0内核文件的配置,dom0内核版本为linux-3.15.4,domU版本为linux-4.6.3

processor type and features的相关项目均没有进行配置,文档中dom0内核在配置时需要关闭硬件tpm,但在linux-4.6.3中该项一直是开启的,不能进行关闭。
 
下载最新的Linux内核源代码,配置dom0内核,编译,安装,注意dom0内核需要选择下面一些内核选项:

默认的内核配置文件中基本上完成了上述配置,但个别需要进行修改,在.config文件中查找相应项进行确认是否正确配置
在centos7中安装vtpm,xen版本要为xen-4.5.0以上,xen-4.3.0会出现vtpmmgr启动时段错误,xen-4.7.0在配置文件中没有XSM_ENABLE项,不确定是否能够配置成功
 
配置Grub
可能出现的错误和解决方法:
重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了(链接包括如下但不仅限于,多余的链接自行添加即可,每次添加了新的链接后要ldconfig进行更新)

再次运行xl info发现如下问题

是因为没有挂载 xenfs 的缘故,挂载一下就可以了:
启动xen服务:service xencommons start

vmware虚拟机不支持虚拟化,在vmware虚拟机设置中打开intel vt。该方法还不能成功,在虚拟机配置文件(.vmx为后缀)修改“vhv_enable=TRUE"

配置安装domU

对于xen而言,libvirt默认版本只支持kvm,故采用直接安装包的方式不能够使用libvirt。yum install libvirt这种安装方式使用virt-install会出现错误,主机不支持虚拟化,而且使用virt-manager会出现无法连接xen
在xen4.1后,默认不再支持自动建立桥接网络。故建议手动建立网桥进行虚拟机通信。默认的在xend的配置文件/etc/xen/xend-config.sxp中,桥接模式时默认的格式,除了network-bridge和vif-bridge以外其他行都是被注释掉的
配置文件看起来像如下所示:
 
(network-script network-bridge)
(vif-script vif-bridge)
# (network-script network-route)
# (vif-script vif-route)
# (network-script network-nat)
# (vif-script vif-nat)
 
network-bridge脚本和vif-bridge脚本都存放在/etc/xen/scripts目录下。
network-bridge脚本的作用是建立网络环境,并且使用bridge-utils工具创建一个网桥xenbr0。
vif-bridge脚本的作用是当一台guest服务器启动的时候,为这个guest服务器创建后端的vif接口
1、xen网桥配置
显示xen网桥:brctl show
没有发现xenbr0虚拟网卡
xen4.1版本之后官方建议手动建立桥接网络。所以默认的/etc/xen/scripts/network-bridge 脚本是没有启动的。
(1)关闭xen网络脚本
/etc/xen/scripts/network-bridge stop
(2)修改xen配置文件
vi /etc/xen/xend-config
注释下面两行
#network-script network-bridge)
#(vif-script vif-bridge)
(3)重新启动xend服务
service xend restart 
(4)手动创建桥接网络,将物理网卡eth0设置为桥,我设置的服务器是DELL 410,网卡装完系统是em1,em2,只是名称区别而已。
vi /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=eth0
ONBOOT=yes
BRIDGE=xenbr0
NM_CONTROLLED=no
HWADDR=***********
UUID=************
 
vi /etc/sysconfig/network-scripts/ifcfg-xenbr0
DEVICE=xenbr0
BOOTPROTO=static
IPADDR=192.168.*.*
NETMASK=255.255.255.0
GATEWAY=192.168.*.*
ONBOOT=yes
TYPE=Bridge
上面这个就是创建一个xenbr0桥接到网卡em1,xen的虚拟机就可以通过xenbr0这个桥上网了
还有em2 em3网卡的话按照上面的方式创建就可以了。
重新启动网络:service network restart
在重启后,执行命令ifconfig可以看到所配置的xenbr0网卡
安装XEN的客户机操作系统
1、制作镜像
使用dd创建
dd if=/dev/zero of=centos.img bs=2k seek=4096k count=1
制作客户机主要磁盘
vi config 对配置文件进行编写
name = “win2003″
builder = “hvm”
memory = “2048”
disk = [ ‘file:/data/win2003.iso,hdc:cdrom,r’,’file:/data/xen/win2003.img,hda,w’]
vif = [ ‘type=ioemu, bridge=xenbr0′, ]
 
device_model = “/usr/lib64/xen/bin/qemu-dm”   //在根目录下使用locate qemu-dm进行查找,一般在/usr/local/lib中
kernel = “/usr/lib/xen/boot/hvmloader”   //在根目录下使用locate hvmloader进行查找
#boot=’d’
boot=”dc”
vnc=1
vncunused=1
vncpasswd=’wo_de_mima’
localtime=1
timer_mode=1
apic=1
acpi=1
pae=1
 
vcpus=2
serial = “pty” # enable serial console
on_reboot   = ‘restart’
on_crash    = ‘restart’
注:主要是disk的iso要写在前面.这样启动顺序就是以iso先启动,还有就是设置vnc=1开启,然后用vnc来连接590X端口来安装系统.
使用xm create -c /……config来启动虚拟机,主要要有参数c,代表使用conf配置文件启动,不加c代表启动一个已经安装好的虚拟机
虚拟机配置vnc
vi /etc/xen/xend-config.sxp
# set this to 0.0.0.0
(vnc-listen ‘0.0.0.0’)
 
# The default password for VNC console on HVM domain.
# Empty string is no authentication.
(vncpasswd ‘wo_de_mima’)
重启xend
系统安装完成后,直接xl destroy domU而不点击重启,修改配置文件,boot=“d"为boot="c",xl create 配置文件,启动虚拟机
vtpm domu配置文件:

配置安装TPM模拟器

主要步骤:
安装cmake软件包:
cd cmake
./bootstrap(如果没有这个文件可以不执行)
make
make install
 
安装算法库gmplib
cd gmplib
./configure
make
make check
make install
 
安装tpm_emulator(在make中出现错误:tpm_migration.c:385:14: 错误: 变量‘res’被设定但未被使用 [-Werror=unused-but-set-variable] ,解决方法:将该代码res变量定义与赋值删除)
cd tpm_emulator
mkdir build
cd build
cmake ../
make
make install
 
安装完tpm_emulator进行初始化
tpmd deactivated(如果成功,则显示一直connection)
killall tpmd
rm /var/run/tpm/tpmd_socket:0(出现failed:address already in use时执行该命令)
 
安装TSS软件协议栈(包括了安装trouser软件包和tpm-tools软件包)
cd trouser
sh ./bootstrap.sh
./configure
make
make install
安装完后重定向tddl
修改trouser/src/tcsd/Makefile.am第四行左右
 tcsd_LDADD=../tcs/libtcs.a ../tddl/libtddl.a –lpthread为:tcsd_LDADD=../tcs/libtcs.a /usr/lib/libtddl.so –lpthread
上述修改路径为/usr/lib还是/usr/local/lib都有可能,直接去路径下找是否有libtddl.so文件,下述情况同此
修改 ./src/tcsd/Makefile.in 第59(左右)行:
tcsd_DEPENDENCIES = ../tcs/libtcs.a ../tddl/libtddl.a为:tcsd_DEPENDENCIES=../tcs/libtcs.a /usr/lib/libtddl.so
修改 ./src/include/obj_context.h 第79行:
struct tcs_api_table *obj_context_get_tcs_api();为:struct tcs_api_table *obj_context_get_tcs_api(UINT32):可能没有这个项,则不修改
执行
sh bootstrap.sh(没有不用执行)
./configure
make
make install
启动TCSD
tcsd -e -f:在该步之前需要先启动tpm_emulator,否则会提示找不到设备
 
安装tpm-tools
sh ./bootstrap.sh
./configure
make
make install
 
测试tpm_emulator是否成功
在tpm_emulator-0.7.2/tddl文件夹下有测试事例:
 # gcc -o test_tddl test_tddl.c -ltddl  //-ltddl为链接tddl的动态链接库
 # LD_LIBRARY_PATH=/usr/local/lib  ./test_tddl    //运行结果
 如果配置成功,在3测试中得两条指令后会出现
Driver status: DRIVER OK
Device status: DEVICE OK
DRV version: 1.5.0.0
TPM Version: 1.1.0.0
Manufacturer: Mario Strasser, ETH Zurich
Module type: Software-based TPM Emulator
Transmit: 00 c1 00 00 00 0a 00 00 00 5a
Result:   00 c4 00 00 00 0a 00 00 00 00
 
在centos7上搭建vtpm
安装依赖包:
yum install glibc-headers openssl-devel nss-softokn-freebl-devel nsssoftokn-devel gmp-devel libtool nss-devel
yum install automake autoconf bash coreutils expect libtool sed fuse fuse-devel glib2 glib2-devel gmp gmp-devel nss-devel net-tools selinuxpolicy-devel gnutls gnutls-devel libtasn1 libtasn1-tools libtasn1-devel rpm-build iasl socat
yum groupinstall "Development Tools"
yum install pixman pixman-devel libuuid-devel libaio-devel spice-serverdevel SDL SDL-devel
 
下载安装包:
1. libtpms: https://github.com/stefanberger/libtpms
2. swtpm: https://github.com/stefanberger/swtpm
3. seabios-tpm: https://github.com/stefanberger/seabios-tpm
安装seabios-tpm和libtpms
seabios:直接make即可
libtpms:
./bootstrap.sh
./configure --prefix=/usr
make
sudo make install
安装swtpm:
./bootstrap.sh
./configure --prefix=/usr
make
make check
sudo make install
 
出现错误:
configure: error: "Is libtpms-devel installed? -- could not get libs for
libtpms"
[luowu@localhost swtpm]$ pkg-config --libs libtpms
Package libtpms was not found in the pkg-config search path.
Perhaps you should add the directory containing `libtpms.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libtpms' found
[luowu@localhost swtpm]$ sudo find / -name libtpms.pc
[sudo] password for luowu:
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/pkgconfig/libtpms.pc
[luowu@localhost swtpm]$ sudo vim /etc/profile
在文件中添加export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
[luowu@localhost swtpm-master]$ source /etc/profile

Centos7编译安装Xen环境(vtpm)的更多相关文章

  1. centos7 编译安装新版LNMP环境

    centos7 编译安装新版LNMP环境 环境版本如下: 1.系统环境:Centos 7 x86_64 2.NGINX:nginx-1.11.3.tar.gz 3.数据库:mariadb-10.0.2 ...

  2. CentOS7编译安装Nginx-1.8.1和编译参数

    CentOS7编译安装Nginx-1.8.1和编译参数 Web服务器Nginx    LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也 ...

  3. centos7编译安装Python3所需要的库(模块)依赖

    在centos中编译安装python3环境,第三方的库 实战的编辑环境: 1.VMware虚拟机   2.centos7 依赖包经过百度搜集以及之前安装Python3报错搜集(centos7反反复复安 ...

  4. CentOS7编译安装httpd-2.4.41 php7.3

    CentOS7编译安装httpd-2.4.41 php7.3 安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yu ...

  5. Centos7 编译安装PHP7

    Centos7 编译安装PHP7 编译安装的方式可以让组件等设置更加合理,但需要你对PHP的代码及各种配置非常的熟悉,以下为大致的安装流程,大家可以参考 1.下载编译工具 yum groupinsta ...

  6. CentOS7编译安装php7.1配置教程详解

    这篇文章主要介绍CentOS7编译安装php7.1的过程和配置详解,亲测 ,需要的朋友可以参考. 1.首先安装依赖包: yum install libxml2 libxml2-devel openss ...

  7. LINUX 编译安装 PHP 环境

    今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...

  8. centos7编译安装MySQL5.7.9

    title: centos7编译安装MySQL5.7.9 date: 2016-05-12 16:20:17 tags: --- Centos7编译安装mysql5.7.9 mysql5.7有更好的性 ...

  9. CentOS编译安装LNMP环境

    这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...

随机推荐

  1. JavaScript 语句标识符,变量周期,常见的HTML事件

    语句 描述 break 用于跳出循环. catch 语句块,在 try 语句块执行出错时执行 catch 语句块. continue 跳过循环中的一个迭代. do ... while 执行一个语句块, ...

  2. BZOJ 2326 数学作业(分段矩阵快速幂)

    实际上,对于位数相同的连续段,可以用矩阵快速幂求出最后的ans,那么题目中一共只有18个连续段. 分段矩阵快速幂即可. #include<cstdio> #include<iostr ...

  3. BZOJ 1263 整数划分(数学+高精度)

    我们不妨考虑可以划分为实数的情况,设划分为x份实数,使得总乘积最大. 易得当每一份都相等时乘积最大.即 ans=(n/x)^x. 现在只需要求出这个函数取得最大值的时候x的取值了. 两边取对数,则有l ...

  4. BZOJ 1045 糖果传递(思维)

    设第i个人给了第i+1个人mi个糖果(可以为负),因为最后每个人的糖果都会变成sum/n. 可以得到方程组 mi-mi+1=a[i+1]-sum/n.(1<=i<=n). 把方程组化为mn ...

  5. 【bzoj3524】[Poi2014]Couriers 主席树

    题目描述 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. 输入 第一行 ...

  6. YY的GCD 莫比乌斯反演

    ---题面--- 题解: $ans = \sum_{x = 1}^{n}\sum_{y = 1}^{m}\sum_{i = 1}^{k}[gcd(x, y) == p_{i}]$其中k为质数个数 $$ ...

  7. BZOJ4568:[SCOI2016]幸运数字——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4568 https://www.luogu.org/problemnew/show/P3292 A ...

  8. [Leetcode] valid parentheses 有效括号对

    Given a string containing just the characters'(',')','{','}','['and']', determine if the input strin ...

  9. 51nod 1196 字符串的数量(DP+数论?)

    这题好像是神题...V1 V2 V3分别涵盖了51nod 5级算法题 6级算法题 难题 讨论区的曹鹏神牛好强啊...一种做法切了V1 V2 V3,而且做法是一步一步优化的 还没去看优化的部分,未优化已 ...

  10. hdu5652:India and China Origins(并查集)

    倒序操作用并查集判断是否连通,新技能get√(其实以前就会了 这题细节很多...搞得整个程序都是调试输出,几度看不下去想要重写 并查集到现在大概掌握了两个基本用途:判断是否连通 / 路径压缩(上一篇b ...