编译xen环境( http://www.lvtao.net/server/574.html#comment-1882):



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



wget  http://mirror.centos.org/centos/6/os/x86_64/Packages/dev86-0.16.17-15.1.el6.x86_64.rpm


参照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

出现错误




centos filezilla server 编译安装_html

解决方法: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




centos filezilla server 编译安装_配置文件_02

 



processor type and features的相关项目均没有进行配置,文档中dom0内核在配置时需要关闭硬件tpm,但在linux-4.6.3中该项一直是开启的,不能进行关闭。



 



下载最新的Linux内核源代码,配置dom0内核,编译,安装,注意dom0内核需要选择下面一些内核选项:




centos filezilla server 编译安装_配置文件_03

 



默认的内核配置文件中基本上完成了上述配置,但个别需要进行修改,在.config文件中查找相应项进行确认是否正确配置



在centos7中安装vtpm,xen版本要为xen-4.5.0以上,xen-4.3.0会出现vtpmmgr启动时段错误,xen-4.7.0在配置文件中没有XSM_ENABLE项,不确定是否能够配置成功



 



配置Grub



centos filezilla server 编译安装_配置文件_04



可能出现的错误和解决方法:



重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了(链接包括如下但不仅限于,多余的链接自行添加即可,每次添加了新的链接后要ldconfig进行更新)




centos filezilla server 编译安装_html_05

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

centos filezilla server 编译安装_html_06



是因为没有挂载 xenfs 的缘故,挂载一下就可以了:



启动xen服务:service xencommons start



centos filezilla server 编译安装_linux_07

 

centos filezilla server 编译安装_html_08

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

 

 配置安装domU






/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配置文件:




centos filezilla server 编译安装_linux_09

 

配置安装TPM模拟器



由于安装的主机上没有安装tpm硬件芯片,为了开发方便,安装tpm_emulator模拟器用于开发调试



参考的博文: http://blog.sina.com.cn/s/blog_6090be7b0100wqsj.html



http://www.xuebuyuan.com/894225.html



http://blog.chinaunix.net/uid-20657527-id-1588199.html



http://blog.sina.com.cn/s/blog_6035b21301012cgg.html









http://www.linuxdiyf.com/linux/14791.html



 



主要步骤:
安装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 
             
 
             

               4. qemu-tpm:  
              https://github.com/stefanberger/qemu-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