initramfs에서 /dev/tpm*을 얻는 방법은 무엇입니까?

initramfs에서 /dev/tpm*을 얻는 방법은 무엇입니까?

LUKS 볼륨의 비밀번호 없는 암호 해독을 위해 TPM 2.0 모듈과 함께 클레비스를 사용하고 싶습니다. 모듈은 데비안 테스트(과녁의 중심)에서 승인되었으며 존재 /dev/tpm0합니다 /dev/tpmrm0(데비안에서 필요한 U자 모양 명령을 실행할 수 있도록).

그러나 clevis initramfs 스크립트는 실패합니다. 쉘에서 이것을 조사한 후 위의 장치가 init=premountinitramfs에 있음을 발견했습니다./dev/tpm*존재하지 않는다. 이것을 어떻게 바꿀 수 있나요? 데비안을 사용하면서 initramfs-tools.

답변1

TPM을 구동하는 커널 모듈이 에 나열되어 initramfs에 로드되었는지 확인하십시오 /etc/initramfs-tools/modules. 그러면 initramfs가 udev장치를 생성해야 합니다.

먼저 lsmod | grep tpmTPM 드라이버 모듈 찾기를 실행하세요. 나에게 출력은 다음과 같습니다.

# lsmod |grep tpm
tpm_tis                16384  0
tpm_tis_core           20480  1 tpm_tis
tpm                    61440  2 tpm_tis,tpm_tis_core
rng_core               16384  2 tpm

tpm_tisx86 하드웨어에서 가장 일반적인 TPM 구현을 위한 드라이버입니다. 출력에서 다른 모듈( tpm_tis_core, tpm및 ) 에 의존한다는 것을 알 수 있습니다 rng_core. 목록은 lsmod아래에서 위로 작성되므로 최적의 로드 순서는 먼저 로드하는 것입니다 rng_core.

따라서 이러한 모듈이 initramfs에 로드되었는지 확인하려면 /etc/initramfs-tools/modules파일에 네 줄을 추가해야 합니다.

rng_core
tpm
tpm_tis_core
tpm_tis

(이것은 약간 과잉일 수 있습니다. initramfs-tools이제 모듈 종속성이 자동으로 처리된다고 생각하므로 언급하는 것만으로도 tpm_tis충분할 수 있습니다. 하지만 재시도의 필요성을 최소화하기 위해 모듈을 명시적으로 지정하는 것을 좋아합니다...)

/etc/initramfs-tools/modules파일을 편집한 후 initramfs 파일을 다시 생성해야 합니다. 데비안에서는 update-initramfs -u.

다음 단계는 재부팅하고 init=premount셸을 다시 사용하여 /dev/tpm*장치가 이제 생성되었는지 확인하는 것입니다.

관련 정보