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. Bootstrap 轮播图的使用和理解

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  2. 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

    数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

  3. BZOJ4198 & 洛谷2168 & UOJ130:[NOI2015]荷马史诗——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4198 https://www.luogu.org/problemnew/show/P2168 ht ...

  4. Linux实验一

    一.Linux 简介 1.Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS , 我们的 Linux 也就是系统调用和内核那两层,当然直观的来看,我们使 ...

  5. Mysql Fabric实现学习笔记

    Mysql Fabric用来管理mysql服务,提供扩展性和容易使用的系统,管理mysql分片和高可用部署(当前实现了两个特性:高可用和使用数据分片的横向扩展,能单独使用或结合使用这两个特性.). 架 ...

  6. Navcat中Oracle连接的坑-Instant Client

    报错信息: 官方下载Instant Client下载: http://www.oracle.com/technetwork/cn/topics/intel-macsoft-102027-zhs.htm ...

  7. mobx动态添加observable

    mobx使用extendObservable来动态添加observable属性. extendObservable(target, properties, decorators?, options?) ...

  8. OpenCV学习笔记(01)我的第一个OpenCV程序(环境配置)

    昨天刚刚考完编译原理,私心想着可以做一些与考试无关的东西了.一直想做和图像处理相关的东西,趁这段时间有空学习一下OpenCV,搭建环境真是一件麻烦的事情,搞了近三个小时终于OK了.先来张图: 大致描述 ...

  9. bzoj 2124 等差子序列 树状数组维护hash+回文串

    等差子序列 Time Limit: 3 Sec  Memory Limit: 259 MBSubmit: 1919  Solved: 713[Submit][Status][Discuss] Desc ...

  10. PowerDesigner逆向生成

    人越长大话越少,我们不再说今天受了委屈,不再说谁谁谁不理我了我好难过,不再分享生活中的琐事. 我知道人和人之间没法互相理解,大家都很忙,针也没扎在别人身上. 所以把那些还没说出口的话消化在每一步走过的 ...