Привязка-монтирование вступает в силу только в контексте текущего процесса и его потомков

También he tratado con iOT de forma intermitente. La realidad de la situación es que no todas las placas aceptan nuevos núcleos y, a menudo, el proveedor realiza modificaciones para un par de versiones específicas y, por lo general, está atado a esas versiones para siempre.

A mi modo de ver :La documentación de Debian establece claramente que Clearfog pro está bien soportado por el núcleo de la línea principal hoy en día, lo que sugiere claramente que existen algunas limitaciones para la versión no -pro.

Además, a partir de las versiones del kernel que proporciona, es fácil ver que su kernel 3.x fue algo bendecido/cambiado/pirateado por el proveedor, mientras que la versión 4.x que está utilizando no lo es.

Aconsejaría seguir con el kernel 3.x por ahora, y ambos solucionar un error con el proveedor, siguiendo sus tableros para ver si aparece algún parche o una versión con mejor soporte.

1
18.05.2018, 22:03
2 ответа

Una shell -única solución sería:

Para shell interactivo:

# unshare --mount
# mount --bind /MyDir/MySubDir/b /MyDir/a
# 

no -de forma interactiva, antes de un script que no tiene que conocer estas configuraciones:

# unshare --mount sh -c 'mount --bind /MyDir/MySubDir/b /MyDir/a; exec somethingelse'

La página de manual unshare también advierte sobre montajes de subárboles compartidos. Si tiene que deshabilitarlos, considere agregar, por ejemplo, --make-privatepara montar.

Como dijo Hauke, debe asegurarse de no abandonar el espacio de nombres justo después de haberlo creado, porque desaparecerá.

Si es necesario, hay un método para mantener un espacio de nombres sin proceso. Dado que implica el montaje, es un poco más complicado para un espacio de nombres de montaje. Aquí hay un ejemplo interactivo para esto:

shell1# unshare --mount
shell1# echo $$
12345
shell1#

shell2# : > /root/mntreference
shell2# mount --bind /proc/12345/ns/mnt /root/mntreference

Ahora, mientras esta referencia se mantenga montada, el espacio de nombres no desaparecerá incluso si ya no hay ningún proceso que lo use. El uso de nsenter --mount=/root/mntreferencelo ingresará, por lo que puede ejecutar fácilmente scripts adicionales en él.

Usar el equivalente en C no debería ser un problema.

2
28.04.2021, 23:46

Desafortunadamente, todavía no has explicado cómo se relacionan el programa C y el script.

Una razón posible (y aquí probable )del problema es :Usted llama al programa C desde el script pero el cambio de espacio de nombres es efectivo solo dentro del programa C (y los posibles hijos ). Una vez que existe ese programa, la situación no cambia para todos los comandos siguientes.

Debe iniciar un shell desde el programa C llamando a execve()para el shell previsto.

1
28.04.2021, 23:46

Теги

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