Это происходит потому, что команда netcat еще даже не запущена! Оболочка при попытке открыть fifo для ввода блокируется. Попробуйте
strace cat >fifo <fifo
и вы ничего не увидите. Вместо этого используйте, например,
nc -k -l 4458 -v <>fifo >&0
который открывает fifo для чтения и записи как stdin, а затем копирует его в stdout.
Трассировка полной команды bash показывает, что ни открытие для чтения, ни для записи не возвращается (пока не будет выполнено противоположное открытие):
$ strace -f -e open bash -c 'nc -k -l 4458 -v >fifo <fifo'
...
Process 3631 attached
[pid 3631] open("fifo", O_WRONLY|O_CREAT|O_TRUNC, 0666
$ strace -f -e open bash -c 'nc -k -l 4458 -v <fifo >fifo'
...
Process 3684 attached
[pid 3684] open("fifo", O_RDONLY
man 3 mkfifo: Открытие FIFO для для чтения обычно блокируется до тех пор, пока какой-либо другой процесс не откроет тот же FIFO для записи, и наоборот.
Я работаю над безопасной загрузкой BeagleBone Black с доверенным платформенным модулем Atmel. Если вы не нашли решение, это то, что я сделал.
Я использую Buildroot для создания простого встроенного Linux для BeagleBone Black (BBB ). Я добавил инструменты tpm -и tpm -tss с помощью Buildroot.
Я добавил следующую опцию в качестве модуля:
Я также изменил дерево устройств для своего BBB и добавил следующую модификацию:
&i2c2 {
tpm29:tpm@29 {
compatible = "atmel,at97sc3204t";
reg = <0x29>;
};
};
Когда я запускаю свой встроенный Linux на BBB, я загружаю следующие драйверы, подобные этому:
# modprobe tpm_i2c_atmel
# modprobe tpm_tis
# modprobe tpm_tis_core
# modprobe tpm
затем я запускаю демон tcsd следующим образом:
# /usr/sbin/tcsd
Вы можете убедиться, что видите /usr/sbin/tcsd
в команде top
/ htop
.
После этих шагов я могу общаться со своим TPM.