Análisis detallado de los aspectos internos

Este es un proceso avanzado que no recomendamos para los usuarios nuevos de Linux.

ChromeOS admite la ejecución de código arbitrario dentro de VMs. Esta es la documentación de bajo nivel sobre esa compatibilidad. Para obtener una vista más fácil de usar, consulta las faq.

Requisitos previos

Funciones de tiempo de ejecución

Cuando ejecutes tu contenedor de Linux, deberías esperar que funcionen las siguientes funciones:

  • Conexiones de red salientes (IPv4)
  • Gráficos sin aceleración.
  • Gráficos acelerados (a través de OpenGL).
  • Programas de Wayland (preferidos; a través de Sommelier)
  • Programas X (compatibilidad a través de Sommelier y XWayland)
  • Salida de audio en M74 y captura/micrófono experimental en imágenes de R79 y versiones posteriores.

Funciones faltantes

Hay muchas oportunidades que estamos aprovechando. Estos son algunos ejemplos claros:

  • Decodificación de video por hardware.
  • IME

Si bien se están considerando más aspectos, el equipo de ChromeOS adopta un enfoque medido para lanzar nuevas funciones y garantizar que no se vea comprometida la seguridad general del sistema. Consulta las Preguntas frecuentes sobre Crostini para obtener información más detallada sobre la mayoría de los temas relacionados con el desarrollo de Linux en ChromeOS.

Seguridad

Si bien ejecutar código arbitrario suele ser un riesgo de seguridad, el equipo de ChromeOS cree que el modelo de tiempo de ejecución que emplea el contenedor de Linux en ChromeOS mitiga y contiene ese riesgo de seguridad de manera suficiente. La máquina virtual (VM) es el límite de seguridad, y todo lo que se encuentra dentro de ella se considera no confiable. La imagen de invitado de la VM actual también ejecuta un kernel reforzado personalizado para mejorar aún más la seguridad de los contenedores, pero se considera una función útil en lugar de depender de ella para garantizar la seguridad general del sistema.

En este modelo, el resto del sistema ChromeOS debe permanecer protegido del código arbitrario (malicioso o accidental) que se ejecuta dentro de los contenedores de la VM.

El único contacto con el mundo exterior es a través de crosvm, y cada canal se comunica con procesos individuales (cada uno de los cuales está muy aislado en un sandbox).

Datos del usuario en el contenedor

Con el cambio a los servicios en la nube, el pensamiento actual sobre la seguridad destaca el hecho de que obtener credenciales de cuentas (p.ej., tus contraseñas de Google o Facebook) es un vector de ataque más lucrativo que atacar tu computadora de escritorio o portátil. No se equivocan. La solución actual de ChromeOS para VM o contenedores no mejora este aspecto. En pocas palabras, todo lo que se ingrese en el contenedor es responsabilidad del usuario en este momento. Por lo tanto, si ejecutas un contenedor no seguro o vulnerado y, luego, ingresas tus contraseñas en él, se pueden robar incluso mientras el resto del sistema ChromeOS permanece seguro.

Persistencia del proceso

Los procesos en las VMs y los contenedores no sobreviven al cierre de sesión (ya que se encuentran en el almacenamiento encriptado del usuario) y se detienen automáticamente. Tampoco se inician automáticamente cuando se accede (para evitar ataques persistentes) ni se pueden ejecutar automáticamente durante el inicio (sin una sesión de acceso), ya que no serían accesibles (porque están en el almacenamiento encriptado del usuario).

Código ejecutable y grabable

La imagen de disco de la VM de Termina se descarga en la partición con estado grabable, al igual que otros componentes de Chrome. Para asegurarse de que el contenido no se modifique, se usa dm-verity. Esto también significa que solo se pueden cargar imágenes firmadas por Google y que la imagen siempre es de solo lectura.

Ataques de hardware

Las vulnerabilidades de Meltdown y Spectre tienen implicaciones para el uso seguro de las VMs. Aplicamos correcciones y mitigaciones para asegurarnos de que las VMs no puedan atacar el sistema host ni otras VMs. Para obtener más detalles, consulta la página de wiki de Chromium OS sobre el estado de vulnerabilidad de Meltdown y Spectre para dispositivos ChromeOS.

Lifecycles

Una vez que habilites el contenedor de Linux (que se encarga de instalar todos los demás componentes necesarios, como Termina), el sistema estará listo para usarse.

Si bien estos componentes pueden estar instalados, nada comienza a ejecutarse de inmediato. Cuando sales de la cuenta, todo se cierra y se detiene, y cuando vuelves a ingresar, nada se reinicia automáticamente.

Cuando ejecutas la app de Terminal o cualquier otra app de Linux que inicie el contenedor, y su contenedor principal aún no se está ejecutando, la VM de Termina se iniciará automáticamente, y el contenedor predeterminado de Linux en ChromeOS (también conocido como Crostini) se iniciará en ella. Esto te permite conectarte al contenedor a través de SSH o SFTP (a través de la app de Files).

Cuando cierras todas las aplicaciones visibles, no se apagan la VM ni los contenedores. Si lo deseas, puedes detenerlos e iniciarlos de forma manual, así como generar más contenedores que el predeterminado.

Persistencia de datos

Todas las VMs y los contenedores creados, así como los datos dentro de esos contenedores, persistirán en las sesiones del usuario (acceso y cierre de sesión). Se almacenan en el mismo almacenamiento encriptado por usuario que el resto de los datos del navegador.

Si una VM o un contenedor se detienen o se cierran de forma incorrecta (p.ej., por una pérdida de energía), es posible que se pierdan datos y que sea necesario recuperarlos, como cualquier otro elemento del sistema.

Dispositivos compatibles

Si bien el objetivo es que Linux en ChromeOS funcione con todas las Chromebooks, el kernel y las funciones de hardware necesarios limitan dónde se puede implementar. El equipo se centró en la seguridad y la estabilidad del sistema, y, al mismo tiempo, transfirió funciones a versiones anteriores cuando tenía sentido hacerlo. Esta es un área de esfuerzo continuo.

Ahora es compatible

Para obtener una lista de los dispositivos compatibles actualmente, consulta Sistemas ChromeOS compatibles con Linux.

Requisitos de hardware

Si bien actualmente no hay una cantidad mínima de RAM, almacenamiento o velocidad de CPU requerida para ejecutar el contenedor de Linux en ChromeOS, cuanto más tengas de cada uno, mejor será el rendimiento del sistema.

Dicho esto, necesitarás una CPU que admita la virtualización de hardware. En las plataformas x86, esto tiene muchos nombres. Intel se refiere a ella como VT-x y VMX. AMD se refiere a ella como AMD-V y SVM.

Sistemas BayTrail

Las Chromebooks que usan BayTrail de Intel no incluyen VT-x. Si bien esta CPU normalmente incluye VMX, la variante en Chromebooks no lo hace y, por lo tanto, lamentablemente, nunca será compatible.

Para saber si una placa es compatible, busca BayTrail en la columna Platform de nuestra lista de dispositivos pública.

Kernels anteriores

No hay planes para admitir Linux 3.14 ni versiones anteriores. Estos requieren la adaptación de nuevas funciones que son extensas y, a menudo, invasivas. Por ejemplo:

Para saber si una placa es compatible, busca en nuestra lista de dispositivos pública los números de versión inferiores a 3.14 en la columna Kernel.

CPUs ARM de 32 bits

Lograr que las máquinas virtuales funcionen con CPU ARM de 32 bits es difícil, no estándar y requiere coordinación con el firmware. Lamentablemente, el firmware de ChromeOS no suele configurar las extensiones. Por lo tanto, estos sistemas no son compatibles.

Para saber si una placa es compatible, busca arm en la columna Kernel ABI de nuestra lista de dispositivos pública.