TI AM335x에서 실행되는 빌드 루트 빌드의 일부로 fscryptctl을 사용하여 디스크 암호화를 활성화했습니다. fscryptctl이 파일 시스템에 키를 삽입하면 부팅 중에 파일 시스템에서 작동합니다. 시작이 지연되고 다음 메시지가 표시됩니다.
[ 11.830969] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cts(cbc(aes)), throttling...
[ 16.882010] request_module: modprobe crypto-cts(cbc(aes)) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 16.894836] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cts(cbc(aes))-all, throttling...
[ 21.921400] request_module: modprobe crypto-cts(cbc(aes))-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 21.951692] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cbc(aes), throttling...
[ 27.041390] request_module: modprobe crypto-cbc(aes) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 27.053529] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cbc(aes)-all, throttling...
[ 32.081413] request_module: modprobe crypto-cbc(aes)-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 32.112925] fscrypt: AES-256-CTS-CBC using implementation "cts(cbc(aes-generic))"
[ 32.157809] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-xts(aes), throttling...
[ 37.201404] request_module: modprobe crypto-xts(aes) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 37.213554] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-xts(aes)-all, throttling...
[ 42.241409] request_module: modprobe crypto-xts(aes)-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 42.271482] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-aes, throttling...
[ 47.361399] request_module: modprobe crypto-aes cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 47.373078] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-aes-all, throttling...
[ 52.401501] request_module: modprobe crypto-aes-all cannot be processed, kmod busy with 100 threads for more than 5 seconds now
[ 52.413610] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module cryptomgr, throttling...
[ 57.441884] request_module: modprobe cryptomgr cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 57.453523] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-ecb(aes), throttling...
[ 62.481629] request_module: modprobe crypto-ecb(aes) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 62.493723] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-ecb(aes)-all, throttling...
[ 67.521683] request_module: modprobe crypto-ecb(aes)-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 67.536046] fscrypt: AES-256-XTS using implementation "xts(ecb(aes-generic))"
커널에 컴파일되도록 AES 모듈을 변경하여 이 시간을 줄일 수 있었습니다. 이제 시작 로그에 이 내용이 표시됩니다.
[ 10.542972] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cts(cbc(aes)), throttling...
[ 15.604200] request_module: modprobe crypto-cts(cbc(aes)) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 15.617017] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cts(cbc(aes))-all, throttling...
[ 20.643736] request_module: modprobe crypto-cts(cbc(aes))-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 20.674918] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cryptd(__cbc-aes-neonbs), throttling...
[ 25.763747] request_module: modprobe crypto-cryptd(__cbc-aes-neonbs) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 25.777340] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cryptd(__cbc-aes-neonbs)-all, throttling...
[ 30.803742] request_module: modprobe crypto-cryptd(__cbc-aes-neonbs)-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 30.834599] fscrypt: AES-256-CTS-CBC using implementation "cts(cbc-aes-neonbs)"
[ 30.890095] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cryptd(__xts-aes-neonbs), throttling...
[ 35.923747] request_module: modprobe crypto-cryptd(__xts-aes-neonbs) cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 35.937348] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module crypto-cryptd(__xts-aes-neonbs)-all, throttling...
[ 40.963785] request_module: modprobe crypto-cryptd(__xts-aes-neonbs)-all cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[ 40.994725] fscrypt: AES-256-XTS using implementation "xts-aes-neonbs"`
그래서 문제를 27초로 줄였지만, 여전히 30초가 걸리기 때문에 문제를 완전히 해결한 것은 아닙니다. max_modprobes가 100이 되도록 커널 패치를 시도했지만 아무것도 작동하지 않는 것 같습니다.
및 모듈 crypto-cryptd
대신 crypto-cts
커널에서도 컴파일 되도록 Linux 구성을 변경해 보았습니다 . 부팅 시간에 눈에 띄는 영향은 없지만 두 번째 부팅 로그 조각에는 여전히 메시지가 표시됩니다.CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_CTS=y
ARM 특정 구현을 결정하기 전에 몇 가지 다른 모듈을 로드하려고 시도하는 것 같습니다. 시스템이 스스로 결정하도록 하는 대신 로드해야 하는 모듈에 대한 힌트를 시스템에 제공하여 30초의 대기 시간을 피할 수 있는 방법이 있습니까? 아니면 이 문제를 해결할 수 있는 다른 방법이 있나요?
미리 감사드립니다, 알렉스.