Under Construction...
If you can not detect a TPM on your machine.
http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-66306 ThinkCentre M55 Small (タイプ 8800, 8808) ThinkCentre M55 Tower (タイプ 8802, 8811) ThinkCentre M55 Ultra Small (タイプ 8799, 8009, 8803, 8807) ThinkStation S10(タイプ 6483, 6423) uses Broadcom TPm chip.
http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-66304 ThinkCentre M55p Small (タイプ 8800, 8808) ThinkCentre M55p Tower (タイプ 8811) uses Atmel TPM chip.
http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-58054 ThinkPad R60, R60e, R61 ThinkPad T42, T42p ThinkPad T60, T60p, T61, T61p ThinkPad X300 ThinkPad X41, X41 Tablet ThinkPad X60, X60s, X60 Tablet ThinkPad X61, X61s, X61 Tablet ThinkPad Z60m, Z60t ThinkPad Z61e, Z61m, Z61p, Z61t uses Atmel TPM 1.2 chip.
http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-70813 ThinkCentre M58 Small (タイプ 7174, 6258) ThinkCentre M58 Tower (タイプ 7244, 6239) ThinkCentre M58 Ultra Small (タイプ 7187) ThinkCentre M58p Small (タイプ 7346, 7220, 6137, 6234) ThinkCentre M58p Tower (タイプ 7347, 7188, 6138, 6209) ThinkCentre M58p Ultra Small (タイプ 7345, 6136) uses Winbond TPM 1.2 chip.
http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/MIGR-70123 ThinkPad R400 ThinkPad R500 ThinkPad T400 ThinkPad T500 ThinkPad W500 ThinkPad W700 ThinkPad X200, X200, X200 Tablet ThinkPad X301 uses Intel Integrated TPM.
Check /boot/config-XXXX file, which may have the following lines
CONFIG_PNPACPI=y CONFIG_PNP=y CONFIG_TCG_TPM=m CONFIG_TCG_TIS=m CONFIG_TCG_NSC=m CONFIG_TCG_ATMEL=m CONFIG_TCG_INFINEON=m
e.g. Thinkpad X60
# /sbin/modprobe tpm_tis # dmesg | tail <snip> tpm_tis 00:0b: 1.2 TPM (device-id 0x3202, rev-id 5) # cat /sys/class/misc/tpm0/device/id ATM1200 PNP0c31
/sbin/modprobe tpm_tis force=1 interrupts=0
e.g. Intel iTPM on GM45
# cat /sys/class/misc/tpm0/device/caps Manufacturer: 0x494e5443
# mount -t securityfs none /sys/kernel/security # cat /sys/kernel/security/tpm0/ascii_bios_measurements 0 13cb4e01fde5d83f521ce265a6a0d5eeb0114daf 08 [S-CRTM Version] 0 b5b241ead6d2ff8e5f8c049f1e8bc157bb71b190 01 [POST CODE] 0 ec5446d7e84aa3bc22a5dd7fb0a290831dce5818 01 [POST CODE] <snip>
Add following line to /etc/fstab
securityfs /sys/kernel/security securityfs rw 0 0
Install iasl. e.g. yum install iasl
cat /proc/acpi/dsdt > dsdt.dat iasl -d dsdt.dat
File, dsdt.dsl is generated.
Thinkpad X60, Atmel TPM v1.2
Device (TPM) { Name (_HID, EisaId ("ATM1200")) Name (_CID, 0x310CD041) Method (_STA, 0, NotSerialized) { If (And (\TPMP, 0x01)) { Store (0x0F, Local0) } Else { Store (0x00, Local0) } Return (Local0) } Name (_CRS, ResourceTemplate () { Memory32Fixed (ReadWrite, 0xFED40000, // Address Base 0x00001000, // Address Length ) })
This is typical definition. "ATM1200" is the device ID.
Thinkpad X200, Intel iTPM
<snip> Device (TPM) { Method (_HID, 0, NotSerialized) { TPHY (0x00) If (LEqual (TPMV, 0x01)) { Return (0x0201D824) } If (LEqual (TPMV, 0x02)) { Return (0x0435CF4D) } If (LEqual (TPMV, 0x03)) { Return (0x02016D08) } If (LEqual (TPMV, 0x04)) { Return (0x01016D08) } If (LOr (LEqual (TPMV, 0x05), LEqual (TPMV, 0x06))) { Return (0x0010A35C) } If (LEqual (TPMV, 0x08)) { Return (0x00128D06) } If (LEqual (TPMV, 0x09)) { Return ("INTC0102") } Return (0x310CD041) } Name (_CID, 0x310CD041) Name (_UID, 0x01) <snip>This is new definiton. It seems current Linux PnP driver can't support this. use force=1 option with tpm_tis driver.
cat /proc/ioport
$ sudo apt-get install fakeroot build-essential makedumpfile $ sudo apt-get build-dep linux $ sudo apt-get build-dep linux-image-$(uname -r) $ apt-get source linux-image-$(uname -r)
Modify driver code, then just rebuild the tpm driver.
$ cd linux-2.6.27/drivers/char/tpm $ make -C /usr/src/linux M=`pwd` V=1 $ sudo cp -b tpm_tis.ko /lib/modules/$(uname -r)/kernel/drivers/char/tpm/tpm_tis.ko
$ sudo modprobe tpm_tis $ sudo modprobe tpm_tis force=1 interrupts=0 $ lsmod | grep tpm tpm_tis 17676 0 tpm 22848 1 tpm_tis tpm_bios 14080 1 tpm $ cat /sys/class/misc/tpm0/device/pcrs $ sudo less /sys/kernel/security/tpm0/ascii_bios_measurements $ sudo modprobe -r tpm_tis
$ sudo apt-get install tpm-tools $ /usr/sbin/tpm_getpubek Public Endorsement Key: Version: 01010000 Usage: 0x0002 (Unknown) Flags: 0x00000000 (!VOLATILE, !MIGRATABLE, !REDIRECTION) AuthUsage: 0x00 (Never) Algorithm: 0x00000020 (Unknown) Encryption Scheme: 0x00000012 (Unknown) Signature Scheme: 0x00000010 (Unknown) Public Key: c31d0e0b b963be82 3520493e f2dc1eb0 8b2e8b98 cd22cc37 9c4ea3b4 b97705e4 <snip>
tpmdd project http://sourceforge.net/projects/tpmdd