# Chromium OS

Chromium OS es el código abierto de la versión de desarrollo para Google Chrome OS y Chrome OS Flex.
El código fuente de Google Chrome OS fue liberado en noviembre de 2009 bajo un Licencia BSD, denominándose así Chromium OS.
Chromium OS (nombrado en Latinoamérica como Sistema Operativo Chromium) fue construido sobre la base de un núcleo Linux, en un entorno Ubuntu 10.04, utilizando el gestor de paquetes oficial de la distribución Linux Gentoo, Portage. Por lo tanto es un híbrido entre Ubuntu y Gentoo, basándose en ambas distribuciones Linux.

## Interfaz de usuario

Chromium OS utiliza pestañas de página, new:tab, incluidas en Google Chrome, para abrir las aplicaciones web. Chromium OS proporciona un reloj, indicador de batería y el indicador de estado de la red.
La combinación de teclas Ctrl+Alt+/ cambia a una superposición de teclado, que muestra la función de todas las combinaciones de teclas utilizadas en Chromium, incluyendo tareas y gestores de memoria también encontradas en el navegador web Google Chrome, y una interfaz de línea de comandos que acepta los comandos comunes de Linux

## Arquitectura

En los documentos de diseño preliminar, Google describe una arquitectura de tres capas: firmware, navegador web, gestor de ventanas, y un nivel del sistema de software de servicios en espacio de usuario.
* El firmware contribuye al tiempo de arranque rápido porque no se comprueba el hardware, tal como en disquetes, que no son comunes en las computadoras, especialmente netbooks. El firmware también contribuye a la seguridad mediante la verificación de cada paso en el proceso de arranque y la incorporación de la recuperación del sistema.
* A nivel del sistema de software se incluye el núcleo Linux, el cual ha sido parcheado para mejorar el rendimiento de arranque. El software en el espacio de usuario se ha recortado a lo esencial, con una gestión por Upstart, que puede lanzar servicios en paralelo, regenerar puestos de trabajo caídos, y aplazar los servicios para que el arranque sean más rápido.
* El gestor de ventanas controla la interacción del usuario con múltiples ventanas de clientes, al igual que otros gestores de ventana de X Window.

## Builds / Compilaciones

En mayo de 2010, las versiones compiladas de los trabajos en curso del código fuente ha sido descargadas de Internet más de un millón de veces. La versión más popular titulada Chromium OS Flow fue creada por Liam McLoughlin, un entonces joven de 17 años de edad, estudiante de la universidad de Mánchester, Inglaterra, publicada bajo el nombre de Hexxeh. Las compilaciones de McLoughlin arrancan desde una memoria USB, e incluyen características que los ingenieros de Google no habían implementado, como el soporte para el lenguaje de programación Java.
Aunque Google no esperaba que los aficionados pudieran usar y evaluar Chromium OS antes de su lanzamiento oficial, Sundar Pichai, vicepresidente de gestión de producto de Google, dijo que "lo que ha hecho la gente, como Hexxeh, es increíble de ver." Pichai dijo que los primeros lanzamientos fueron una consecuencia no deseada de desarrollo de código abierto. "Si usted decide hacer proyectos de código abierto, tiene que estar abierto todo el tiempo."
El trabajo de Hexxeh ha continuado en los años siguientes. El anunció el "Chromium OS Lime" en diciembre de 2010, y enero de 2011, publicó "Luigi", una aplicación diseñada para "jailbreak", para el prototipo de hardware "Google Cr-48 "Mario", y una BIOS genérica instalada. El desarrollador hizo compilaciones disponibles para el formato de màquina virtual el 13 de marzo de 2011
Sin una versión oficial de Chromium OS de Google, las últimas versiones compilada de "Vanilla" de Hexxeh continúan siendo el principal recurso para las personas que quieran probar Chromium OS.
En mayo de 2011, Dell Computer también realizó una nueva compilación para el netbook Dell Inspiron Mini 10v, siguiendo una compilación anterior publicada casi 18 meses antes. La compilación no soporta audio, pero fue booteable desde una memoria USB.

## Requisitos preliminares y gestor de paquetes
### Requisitos preliminares

* Tener Linux instalado para el desarrollo de Chromium OS, en específico:
   * Ubuntu Linux (versión 10.04 - Lucid) (puede ser otra distribución Linux pero se utilizó este sabor de Linux).
      * Un sistema de 64 bits para realizar la compilación; un sistema de 32 bits puede ser soportado por el camino.
      * Una cuenta con acceso a sudo
      * Acceso a root, para correr el comando chroot y montar la tabla de montaje.
      * +512Mb RAM
      * Una conexión a Internet, para la descarga inicial de mínimo uno 2 GB, y para actualizaciones posteriores.
   * Instalar los siguientes paquetes para desarrollar Chrome OS :
      * git - cliente de control de fuentes
      * keychain - para gestión de clave ssh
      * depot_tools - Conjunto de herramientas mantenidas por Google y utilizadas por Chromium OS
      * subversion - cliente de control de fuentes (usada por depot_tools)
      * curl - para descargar archivos desde Internet (usada por cros_sdk)

### Gestor de paquetes

Chromium OS utiliza Portage como gestor de paquetes, el cual se compone de dos partes principales, el sistema ebuild y emerge:
* ebuild se encarga del trabajo de construcción e instalación de paquetes
* emerge proporciona una interfaz para ebuild, administrando un repositorio de ebuilds, resolviendo las dependencias y cuestiones similares.
Funcionalidades relacionadas con la gestión del sistema son: permitir paralelo paquete-versión de la instalación, el seguimiento de dependencias entre paquetes, la gestión de una base de datos de paquetes instalados, proporcionando un repositorio de ebuilds local, y la sincronización del árbol de Portage local con repositorios remotos. Funcionalidades relacionadas con la instalación de paquetes individuales son: especificar la configuración de la compilación para el equipo de destino y la elección de los componentes del paquete.
En particular ejecuta make_chroot para establecer un estándar de Portage en el entorno de compilación e instala algunas dependencias de construcción. El árbol de Portage contiene recetas de construcción (llamada ebuilds) para los paquetes. A diferencia de Debian, donde las reglas de construcción se encuentran en el código fuente, el enfoque de Portage es seguir las instrucciones de construcción por separado desde el código fuente en el árbol portage. Se usa chromiumos_overlay para mantener ebuilds nuevos y los cambios en ebuilds existentes separados de las fuentes originales.