главное устройство выглядит как стандартный терминал для программы драйвера?

Atendiendo a su pregunta original y comentarios posteriores, la respuesta es no.

Is there a possibility to place variables under the custody of the Linux kernel?

Ideally with persistency after reboot and unalterable between boots.

I could think of a kernel module that allows access to the variables via /proc filesystem and storing the values in the kernel keyring.

Si está buscando una forma de almacenar datos de forma segura, entonces necesita una base de datos de algún tipo y los medios para garantizar la integridad de los datos almacenados -, lo que generalmente implica criptografía. Esto en sí mismo crea varios problemas que deben abordarse con cuidado, como la gestión de claves, el cifrado de almacenamiento, etc.

El kernel ofrece muy pocas opciones para el almacenamiento persistente de datos. Hay un llavero como se mencionó que podría ayudar, pero su propósito es ligeramente diferente. Nunca he estudiado la seguridad de este tipo de subsistema, por lo que no podría comentar sobre su fortaleza para su caso de uso.

1
26.05.2018, 02:33
1 ответ

El dispositivo maestro parece un archivo de dispositivo terminal, completo con una disciplina de línea a la que se puede acceder a través de tcgetattr()/ tcsetattr()/&c. y un resultado exitoso de isatty(). De hecho, es la misma instancia de disciplina de línea que el dispositivo esclavo, y así es como el programa del lado maestro transmite cosas como cambios en el tamaño de la ventana a los programas del lado esclavo. También es la forma en que el programa lateral maestro -señala (un bloqueo del módem emulado ), estableciendo la velocidad de la línea en cero y, por lo tanto, activando el mecanismo de bloqueo de la disciplina de línea. (Por lo tanto, lo que dice el texto sobre la velocidad de la línea es incorrecto. Hay un caso en el que la velocidad de la línea es significativa.)

La diferencia radica en la E/S de lectura/escritura. Lo que se lee es la secuencia de caracteres que, para un terminal real, se enviaría a través de un dispositivo serie subyacente real. Lo que se escribe es la secuencia de caracteres que, para un terminal real, recibe ese dispositivo serial subyacente real. En otras palabras, :es el otro lado del procesamiento de entrada y salida canónico/no -canónico por parte de la disciplina de línea.

Hay complejidades en esto, a saber, modo de paquete y modo remoto . Este último cayó en desuso hace mucho tiempo y no existía en la mayoría de los sistemas operativos incluso a principios de este siglo, lo que requirió parches para las antiguas herramientas pty de Daniel J. Bernstein.El primero no es particularmente útil para la mayoría de las tareas y, por lo tanto, no lo cubriré en detalle en esta respuesta.

El dispositivo maestro es generalmente no el terminal de control para las sesiones en las que se ejecutan los procesos del lado maestro -. Esto sería conceptualmente poner cosas que son análogas a las partes internas de una terminal real en el lugar equivocado. El terminal de control de tales sesiones es, si es que existe, otro terminal .

Este será el caso de programas como script, NeoVIM :terminal, emacs yptybandage(si no forman parte de una tubería ), que se procesan directamente en otro dispositivo terminal y se ejecutan dentro de un interactivo sesión controlada por ese dispositivo terminal.

No es el caso de un servidor SSH, emuladores de terminal GUI,console-terminal-emulatordel conjunto de herramientas nosh,ptyrun(en uso normal )o emuladores de terminal monolíticos de framebuffer como zhcon. Esos están renderizando a todo tipo de dispositivos de E/S diferentes, desde búferes y FIFO en el sistema de archivos en el caso de console-terminal-emulatora través de conectores TCP hasta dispositivos de clase framebuffer y HID, ninguno de los cuales son terminales. Además, console-terminal-emulator, los servidores SSH y los emuladores de terminal de framebuffer se invocan generalmente en contextos de daemon donde, por supuesto, no hay un terminal de control para comenzar la sesión.

Tenga en cuenta que el diagrama no es definitivo. No es necesariamente el caso de que el proceso del lado maestro -bifurque los procesos del lado esclavo -. En nosh -toolset user -terminales virtuales de espacio, por ejemplo, los procesos del lado esclavo -son ​​servicios ordinarios ttylogin@*, bifurcados por el administrador de servicios, y no existe una relación de proceso directa entre el proceso del emulador en el lado maestro y los procesos de sesión de inicio de sesión en el lado esclavo. Pero eso va más allá del alcance de esta respuesta.

Lecturas adicionales

1
28.04.2021, 23:46

Теги

Похожие вопросы