vtpm相关文档
1 xen环境(包括vtpm)的搭建
1 xen的安装

在shell下依次执行:

# yum install -y zlib-devel.i386 libX11-devel.i386 openssl-devel.i386 curl-devel.i386 ncurses-devel.i386 libxml2-devel.i386 expat-devel.i386 bridge-utils.i386 gmp-devel.i386 cmake.i386 python-devel.i386 dev86.i386 texinfo.i386 xfig.i386 graphviz-devel.i386 docbook-utils.noarchdocbook-utils-pdf.noarch

        # wgethttp://bits.xensource.com/oss-xen/release/3.4.4/xen-3.4.4.tar.gz

        # tar zxvf xen-3.4.4.tar.gz

        # cd xen-3.4.4

        # make && make install
2 dom0的安装

        由于在第一步中已经在/boot文件夹下生成了vmlinux,还需要ramdisk,执行命令:

# depmod 2.6.18.8-xen

         # mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18.8-xen.img 2.6.18.8-xen

         # cp initrd-2.6.18.8-xen.img /boot

      修改grub(grub0.98)

      title xen-vtpm

linux /boot/xen.gz

      module


3 domu的安装

由于在centos5.8下虚拟化工具的不熟悉,以及qemu不容易安装到centos5.8下。所以

1.在Ubuntu的系统中使用qemu安装使用与centos5.8同样的安装光盘安装系统,这时候为了减少空间的使用,可以选择较少的安装软件。

2.       在xen的根目录下首先拷贝一份linux-2.6.18.8-hg的源码,

3.       修改Makefile的第四行 EXTRAVERSION=.8.domu

4.       然后使用make menuconfig对其进行配置,在选择的时候,

 [*] Enable Xen compatible kernel  

 [ ] Privileged Guest (domain 0) (NEW)

5.       <> Backend driver support           

6.       <M>   XEN TPM Interface

7.       完成后make && make modules_install&& make install


2 vtpm的使用

xend start

modprobetpmd_dev

modprobetpmbk

xm create config

vtpmd -f

vtpm_managerd

其中的config文件如下:

bootloader='/usr/bin/pygrub'

disk = [ 'tap:aio:/root/domu_modified/domu2.img,xvda,w']

vtpm = ['backend=0']

#usb=['1']

vif =['bridge=eth0']

vcpus=4

memory = 256

vfb = ["vnc=1"]

name = "debug-tpm1"

on_crash = 'destroy'

然后执行

xmvncviewer n或xm console n进入domu,在domu中就可以使用vtpm了。

tcsd -f

tpm_version

tpm_getpubkey

    ...
3 Ukey(Senselock)的使用
4 vtpm与Ukey的结合
1 vtpm前端驱动分析

vtpm的前端驱动存放在drivers/char/文件夹下,文件名是tpm_xenu.c。

由于现在只需要输出从前端驱动接收到的后端驱动发来的信息,对其具体的分析是没有必要的。经测试,处理后端驱动发送过来信息的函数是tpmif_rx_action,信息存放在变量txb->data中。因此添加以下代码到以上函数:

              /******************************  ***********************/

 

              int i = 0;

 

              printk("tpmif_rx_action %d bytes:\n",tocopy);

 

              for (i=0;i <tocopy; i++)

 

              {

 

                     printk("%03x ",txb->data[i]);

 

              }

 

              printk("\n");

 

              /***************************** **************************/

这样之后重新编译前端驱动,并将其安装到系统中。
2 vtpm后端驱动分析

待完成
3修改vtpm实例处理tpm命令的代码(改为使用Ukey),以tpm_getpubkey为例

经过调试确定对tpm命令的处理是在文件tpm_cmd_handler.c中完成的,所以修改tpm_getpubkey的处理函数TPM_RESULT execute_TPM_ReadPubek,在其中添加调用Ukey的代码,并修改其返回值。

/********************* modified by gcy3y begin*********************/

 

#ifdef debug_gcy3y

 

#include "readUKey/readUKey.c"

 

       int i_gcy3y = 0;

 

       char s[20] = {0};

 

       i_gcy3y = readUKey(s);

 

       if( i_gcy3y != 0)

 

       {

 

              printf(" call USBkey function  error !\n");

 

       }else{

 

              memcpy((char *)&checksum, s, 20);

 

       }     

 

#endif

 

这样之后重新编译程序并安装到系统中。下次使用的时候就可一查看到结果。

/********************* modified by gcy3y end **********************/
4 查看结果

在没有使用Ukey的时候,在domu中调用命令tpm_getpubkey,vptm_manager的输出日志为:

TPMD[9]: tpm/tpm_cmd_handler.c:4182: Debug: tpm_handle_command()

 

TPMD[9]: tpm/tpm_cmd_handler.c:3493: Debug: [TPM_TAG_RQU_COMMAND]

 

TPMD[9]: tpm/tpm_cmd_handler.c:3829: Debug: [TPM_ORD_ReadPubek]

 

TPMD[9]: tpm/tpm_credentials.c:149: Info: TPM_ReadPubek()

 

EliteIV not found!

 

 call USBkey function  error !

 

TPMD[9]: tpm/tpm_cmd_handler.c:4137: Info: TPM command succeeded

 

TPMD[9]: tpmd.c:227: Debug: Sent[318]: 0 0 0 9 0 c4 0 0 1 3a 0 0 0 0 0 0 0 1 0 3 0 1 0 0 0 c 0 0 8 0 0 0 0 2 0 0 0 0 0 0 1 0 a9 83 1c 2c 18 fa 74 72 c0 13 a1 97 f2 41 ed 5b c7 ae 9 24 34 63 2 5c 2 f c3 b4 a3 bf 4f 3a 1b 98 54 84 37 72 2c 40 b3 45 a3 2f 5d 86 aebd 7c f0 d9 50 30 b 57 49 41 cd 13 32 89 cc 3e 92 a5 c8 44 ec c0 a5 3e e8 a0 ac 1 26 ca 91 0 b6 75 91 c 93 67 74 91 55 83 a6 1f 72 cbaf 15 7f 26 8e 3 d3 ed c0 9e ab e6 8b 89 52 cf 92 cd c4 bf 96 67 5e 3f 8e f1 6a 2d b5 8c 4c 32 72 3c 91 0 9 87 2c 26 90 a7 d6 ef 38 87 2e 61 33 99 19 1a 76 f 77 41 f7 c0 c9 74 f0 d5 1a e5 f5 35 fc db ad f 98 5f 62 68 66 4 31 12 6a e 54 c2 a cd a9 83 e3 6d d4 38 cc f7 72 f6 e8 5c 6 a4 56 dc e5 97 0 53 97 f6 e1 1 97 48 29 15 4c 8e 44 30 1d ce 62 b2 6a 98 5d ed 4 61 cf e 8b ef d2 66 1 78 8c fafb 93 43 dc 2d ec 73 68 95 ad c8 be b1 ed a8 98 0 fa 80 0 b4 4f 13 16 fd d4 c5 d1 3a 23 51 c3 8d 1d 6f 2f bf 4d 56 f8 44 afed e 85 9b f5

在使用Ukey以后,从新在domu中执行tpm_getpubkey命令,vtpm_manager的日志输出为

TPMD[9]: tpm/tpm_cmd_handler.c:4182: Debug: tpm_handle_command()

TPMD[9]: tpm/tpm_cmd_handler.c:3493: Debug: [TPM_TAG_RQU_COMMAND]

TPMD[9]: tpm/tpm_cmd_handler.c:3829: Debug: [TPM_ORD_ReadPubek]

TPMD[9]: tpm/tpm_credentials.c:149: Info: TPM_ReadPubek()

Verify DEV_PIN of root directory...

Success!

Create objective file using S4WriteFile()...

File exists!

Update objective file ...

Success!

Read data from objective file ...

Success!

The data read: 123456789guochunyang

end all OK

TPMD[9]: tpm/tpm_cmd_handler.c:4137: Info: TPM command succeeded

INFO[VTPM]: [Backend Listener]: Sending DMI's response to guest.

INFO[VTPM]: [Backend Listener]: Backend Listener waiting for messages.

TPMD[9]: tpmd.c:227: Debug: Sent[318]: 0 0 0 9 0 c4 0 0 1 3a 0 0 0 0 0 0 0 1 0 3 0 1 0 0 0 c 0 0 8 0 0 0 0 2 0 0 0 0 0 0 1 0 a9 83 1c 2c 18 fa 74 72 c0 13 a1 97 f2 41 ed 5b c7 ae 9 24 34 63 2 5c 2 f c3 b4 a3 bf 4f 3a 1b 98 54 84 37 72 2c 40 b3 45 a3 2f 5d 86 aebd 7c f0 d9 50 30 b 57 49 41 cd 13 32 89 cc 3e 92 a5 c8 44 ec c0 a5 3e e8 a0 ac 1 26 ca 91 0 b6 75 91 c 93 67 74 91 55 83 a6 1f 72 cbaf 15 7f 26 8e 3 d3 ed c0 9e ab e6 8b 89 52 cf 92 cd c4 bf 96 67 5e 3f 8e f1 6a 2d b5 8c 4c 32 72 3c 91 0 9 87 2c 26 90 a7 d6 ef 38 87 2e 61 33 99 19 1a 76 f 77 41 f7 c0 c9 74 f0 d5 1a e5 f5 35 fc db ad f 98 5f 62 68 66 4 31 12 6a e 54 c2 a cd a9 83 e3 6d d4 38 cc f7 72 f6 e8 5c 6 a4 56 dc e5 97 0 53 97 f6 e1 1 97 48 29 15 4c 8e 44 30 1d ce 62 b2 6a 98 5d ed 4 61 cf e 8b ef d2 66 1 78 8c fafb 93 43 dc 2d ec 73 68 95 ad c8 be b1 ed a8 98 0 fa 80 0 b4 4f 13 16 fd d4 c5 31 32 33 34 35 36 37 38 39 67 75 6f 63 68 75 6e 79 61 6e 67

在domu中的前端驱动的输出信息是:

tpmif_rx_action 314 bytes:

000 0c4 000 000 001 03a 000 000 000 000 000 000 000 001 000 003 000 001 000 000 000 00c 000 000 008 000 000 000 000 002 000 000 000 000 000 000 001 000 0a9 083 01c 02c 018 0fa 074 072 0c0 013 0a1 097 0f2 041 0ed 05b 0c7 0ae 009 024 034 063 002 05c 002 00f 0c3 0b4 0a3 0bf 04f 03a 01b 098 054 084 037 072 02c 040 0b3 045 0a3 02f 05d 086 0ae 0bd 07c 0f0 0d9 050 030 00b 057 049 041 0cd 013 032 089 0cc 03e 092 0a5 0c8 044 0ec 0c0 0a5 03e 0e8 0a0 0ac 001 026 0ca 091 000 0b6 075 091 00c 093 067 074 091 055 083 0a6 01f 072 0cb 0af 015 07f 026 08e 003 0d3 0ed 0c0 09e 0ab 0e6 08b 089 052 0cf 092 0cd 0c4 0bf 096 067 05e 03f 08e 0f1 06a 02d 0b5 08c 04c 032 072 03c 091 000 009 087 02c 026 090 0a7 0d6 0ef 038 087 02e 061 033 099 019 01a 076 00f 077 041 0f7 0c0 0c9 074 0f0 0d5 01a 0e5 0f5 035 0fc 0db 0ad 00f 098 05f 062 068 066 004 031 012 06a 00e 054 0c2 00a 0cd 0a9 083 0e3 06d 0d4 038 0cc 0f7 072 0f6 0e8 05c 006 0a4 056 0dc 0e5 097 000 053 097 0f6 0e1 001 097 048 029 015 04c 08e 044 030 01d 0ce 062 0b2 06a 098 05d 0ed 004 061 0cf 00e 08b 0ef 0d2 066 001 078 08c 0fa 0fb 093 043 0dc 02d 0ec 073 068 095 0ad 0c8 0be 0b1 0ed 0a8 098 000 0fa 080 000 0b4 04f 013 016 0fd 0d4 0c5 031 032 033 034 035 036 037 038 039 067 075 06f 063 068 075 06e 079 061 06e 067

这就说明成功的访问了Ukey,并且将读取到的数据传送到了前端驱动。这个时候,tpm_getpubkey命令的执行结果是:

Tspi_TPM_GetPubEndorsementKey failed: 0x00003128 - layer=tsp, code=0128 (296), Unknown

这说明在修改了公钥的hash值之后,没能通过tss的某些有效性验证。如果需要的话,这需要在以后的工作中完成。

Xen vtpm安装随笔相关推荐

  1. xen虚拟化实战系列(二)之xen虚拟机安装

    xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装 xen虚拟化实战系列(二)之xen虚拟机安装 xen虚拟化实战系列(三)之xen虚拟机复制 xen虚拟化实战系列(四)之 ...

  2. Xen虚拟机安装Windows8

    Xen虚拟机安装Windows8 本文主要讲解在xen环境下如何安装Windows8系统虚拟机,主机系统是Ubantu14.04. 转载请注明出处. 目录 Xen虚拟机安装Windows8 安装前硬件 ...

  3. 虚拟化工具Xen的安装配置详解

    上一篇介绍了虚拟化的基础知识:这里来介绍具体的虚拟化工具的配置使用: 一.Xen的安装配置详解: 1.配置yum源 http://mirrors.163.com/centos/6.5/xen4/x86 ...

  4. xen vm安装_如何使用Xen-Phoenix(Bash)免费还原Citrix-Xen VM

    xen vm安装 Have you ever had the need to bulk restore your Citrix-Xen VMs for a disaster recovery (DR) ...

  5. xen vm安装_如何使用Xen-pocalypse(Bash)免费备份Citrix Xen VM

    xen vm安装 Have you ever needed to backup your Citrix Xen Virtual Machines (VMs) but didn't want to br ...

  6. linux centos7 xen虚拟机 安装方法

    目录 简介 安装Xen Hypervisor环境 部署第一个VM 简介 Xen是一个开源的裸机虚拟机管理程序,允许你在一台主机上并行运行不同的操作系统,这种类型的管理程序通常在虚拟化世界中被称为typ ...

  7. Linux 中的 XEN 虚拟化技术(二)Xen 的安装和配置

    1.       安装 Xen Red Hat 公司在 RHEL5 版本的 Linux 操作系统中正式加入了对 Xen 虚拟技术的支持.而在RHEL5 之前的 Linux 系统中安装 Xen 需要进行 ...

  8. linux安装 xen,Centos安装Xen总结

    Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达100个满特征的操作系统.操作系统必须进行显式地修改("移植")以在Xen上运行(但是提供对用户应 ...

  9. linux安装 xen,Redhat 安装 Xen

    下面介绍一下简单的RedHat 安装 Xen步骤和遇到的问题. 一.配置好yum源 二.用yum install XX, 安装kernel-xen和xen-libs,一般在安装镜像里有相应的包,若没有 ...

最新文章

  1. 如何交叉编译Python到ARM-Linux平台(转)
  2. xshell导出文件用ftp到本地_使用xshell从远程服务器下载文件到本地
  3. 目前最细致清晰的NSDictionary以及NSMutableDictionary用法总结
  4. [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
  5. python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
  6. UIView的旋转iOS开发
  7. 免费12个月!阿里云助力中小企业0成本上云
  8. 巧用Calendar求解黑色星期五问题(洛谷P1202题题解,Java语言描述)
  9. Git教程 Git Bash详细教程
  10. Mac上安装Mysql配置文件的添加及修改配置文件
  11. vue2项目中给echarts地图设置背景图和打点
  12. 多功能雨伞项目计划书_雨伞策划书范文
  13. windows替换鼠标指针
  14. WorldPress出现Briefly unavailable for scheduled maintenance. Check back in a minute.的解决方法
  15. svchost.exe占网速的解决办法
  16. 软件工程 | 第六章 系统集成与测试
  17. Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(2)
  18. jQuery中的end()的定义与用法
  19. android蓝牙传文件开发,Android Bluetooth文件传输
  20. Sigmoid 与 Softmax 的区别

热门文章

  1. 外部Activity和fragment之间的切换,传值
  2. Mysql-mmm高可用集群
  3. 计算机英语名词简释(转载)
  4. posix_memalign函数详解以及使用时的注意事项
  5. warning MSB8012 VS2010
  6. python模拟点击后获取状态码_Python获取网页状态码
  7. QCon上海2015盛大开幕
  8. 【CEC2017】CEC2017优化算法目标测试函数综述以及CEC2017的matlab实现
  9. MTK平台点亮sensor以及mtk开机初始化
  10. 集成电路,微小电子元件焊接技巧