Pregunta
En el arranque de Linux, ¿hay alguna opción que pueda agregar a la línea “vmlinuz…” que impida que el sistema operativo (al menos en esa sesión) pueda ver o acceder a los SSD NVMe, manteniendo al mismo tiempo el resto del hardware reconocible y montable?
Contexto
Soy bastante nuevo en Linux y todavía estoy aprendiendo. Quiero crear una configuración de arranque múltiple (desde diferentes unidades, no desde diferentes particiones) donde cada instancia del sistema operativo esté efectivamente "aislada" de la otra. Luego puedo seleccionar desde qué unidad arrancar en el BIOS al inicio y, cualquiera que sea la unidad que arranque, ese sistema operativo no podrá ver la otra unidad.
Estoy usando una computadora portátil donde no es práctico intercambiar unidades físicamente (al menos no con frecuencia) y quiero ejecutar Win 10 Pro desde mi unidad NVMe (con la unidad SATA desactivada en el Administrador de dispositivos) y jugar con varias distribuciones de Linux. ejecutándolos desde mi unidad SATA o un Live CD (con la unidad NVMe invisible para ellos), mientras mantengo seguros los datos en mi unidad NVMe.
Alguna información del sistema
- BIOS
AMI Aptio 2.18.126
Versión de firmware 1.05.03 - Conjunto de chips
Intel Z170 - Familia de procesadores
Skylake - Unidad NVMe
Samsung 950 Pro - Unidad SATA
Samsung 850 Pro
Muchas gracias a @EugenRieck, @davidgo, @TwistyImpersonator, @dirkt, @KamilMaciorowski y a todos los que se tomaron el tiempo de responder.
En respuesta a la pregunta de Dirk. Lo que buscaba era una configuración de arranque múltiple donde la "unidad a" con sus datos y sistema operativo estuviera aislada de cualquier cosa que se ejecutara en la "unidad b". Idealmente, sería útil deshabilitar una unidad seleccionada (o puerto de unidad) en BIOS o mejor aún, a través de un interruptor de hardware, pero mi sistema no tiene esa opción. Vi algunas cosas que hacían referencia a la configuración de las opciones del kernel de Linux en el arranque a través de una línea de comando, así que me pregunté si podía desactivar una unidad de esa manera. Parecía que ese enfoque podría ser útil, ya que se aplicaría más fácilmente a algo como un Live CD preconfigurado, así como a cualquier cosa que pudiera instalar y configurar en la "unidad b". (Gracias de nuevo Eugen por los detalles sobre cómo hacerlo). Por lo que dijo David en su publicación, parece que dichos comandos del kernel no son primordiales y aún así sería bastante trivial bajo tal enfoque que un poco de malware llegue a mi unidad NVMe si, por ejemplo, configuro mal IPTables o configuro mal una VM. o instalar un paquete que parecía tener algunas características creativas únicas pero que en realidad estaba corrupto. ¿Es eso correcto?
Respuesta1
Esto es bastante fácil: un parámetro de línea de comando de arranque modprobe.blacklist=nvme
hará el trabajo.
EDITAR
Como se solicitó en los comentarios, aquí hay algunos antecedentes:
modprobe
es el mecanismo mediante el cual los controladores se cargan automáticamente cuando se detecta un dispositivo. Entonces, cuando se detecte su unidad NVMe en el bus PCIe, se llamará para intentar cargar los controladores.- Dado que hay algunas situaciones en las que no desea que un controlador se cargue automáticamente (el ejemplo canónico es
nouveau
frente al controlador binario nvidia del proveedor), este mecanismo contiene una función de "lista negra" que detendrá la carga automática de un controlador. - Esta lista negra se puede iniciar editando un archivo en
/etc/modprobe.d
la línea de comando del kernel o mediante ella. Utilicé este último, ya que su pregunta indica explícitamente la línea de comando de arranque. - El controlador (módulo kernel), que hace que las unidades NVMe sean accesibles como dispositivos de bloque, se llama, como era de esperar, "nvme".
Al unir todo esto, se obtiene la línea de comando mencionada; no es nada raro usar un parámetro de este tipo, especialmente en portátiles extravagantes. Básicamente, es exactamente análogo a deshabilitar los controladores SATA en el administrador de dispositivos de Windows.