Estimados amigos de Protegerse,
Seguro que recordáis de hace un par de semanas la noticia de BASH Ubuntu en Windows 10. No sé si fue trending topic. En mi entorno y en la redes dedicadas al IT seguro que lo fue. He leído todo tipo de artículos sobre este asunto por lo que me he decidido a escribir esta entrada con las pequeñas pruebas que hemos realizado en la oficina.
Lo primero que debemos hacer es dejar claro qué es eso de Bash Ubuntu. ¿Hablamos de una máquina virtual Ubuntu dentro de Windows 10? No. ¿Es una instalación de Docker? No.
Vamos a hacer un pequeño (pequeñísimo) repaso a la teoría de los sistemas operativos. Básicamente vamos a introducir el concepto de kernel space y user space. Kernel space es el espacio para el kernel :-), para el núcleo del sistema operativo, la parte del sistema que realmente ejecuta las operaciones sobre el procesador. En teoría no se puede acceder al kernel space directamente, ya que sería peligroso. Para ello se implementa una capa intermedia denominada espacio de usuario, en la que mediante funciones se accede a operaciones en el espacio del kernel. Vamos a ilustrarlo con una imagen:
Cuando haces un programa que tiene que solicitar abrir un fichero, puedes usar una llamada del sistema que ya maneja esta función, o programarla desde el principio, pero no escribes código de bajo nivel directamente contra el Kernel Space para manejar el abrir un fichero, lo haces a través de una función intermedia.
El sistema Bash de Ubuntu sobre Windows es eso, un conjunto de funciones que acceden al kernel del sistema operativo para realizar funciones. Si en en windows escribimos Dir en la consola, se pasan una serie de parámetros desde el user space al kernel space de windows, y este devuelve el resultado. Si programamos la misma llamada dir al kernel, pero mediante el comando ls, tenemos como resultado que ejecutando ls accedemos a los datos como si fuera un linux, pero es el kernel space de Windows el que realmente ejecuta el proceso.
Los usuarios más experimentados en esta materia se les pasará por la cabeza CygWin, una librería de funciones Linux recompiladas para arquitectura Windows. Tampoco se trata de esto. Sin embargo, si que se podría decir que es un Wine a la inversa. Wine nos permite ejecutar binarios compilados en formato Windows sobre Linux… algunos.
Desconozco el número total de funciones del sistema operativo Windows, pero deben ser más de 10, y más de 100, y más de 1000, por lo que no es de extrañar que no se hayan portado todas al «modo Ubuntu» por lo que no todas las aplicaciones corren sobre este entorno. Microsoft especifica que no se debe tomar esta mejora como un sustituto para entornos de producción. Es simplemente un acercamiento para el mundo de los desarrolladores al entorno Ubuntu-Windows. Puedes acceder al Github, no con el código fuente, pero sí con la lista de errores y respuestas de los programadores.
Después de este pequeño rollo, vamos a realizar algunas pruebas que es lo que realmente nos gusta. Romperlo todo 🙂
Como indican la mayoría de tutoriales que he visto por la red, los pasos son habilitar el modo programador en Windows 10, e instalar la característica.
Ahora accedemos a agregar o quitar programas y activamos la característica.
Ahora es cuando recuerdo por qué empecé con mi blog y con la redacción de contenidos. Después de leer más de 20 artículos, en ninguno especificaban bien los pasos. Esto siempre me ha cabreado mucho, muchísimo. Cuando sigues un procedimiento y falla en un punto, y te das cuenta que todas las web que describen el procedimiento han hecho copy & paste y todas tienen el mismo fallo o falta de información. Es por esto que me decidí un día a escribir un blog, para detallar con pelos y señales toda la información para que cualquier persona pudiera seguir el manual.
Dicho esto: si has intentado acceder a la característica y no encuentras el Bash, tranquilo. Esto es una actualización que estará disponible en verano. Solo los miembros del programa de test Microsoft Insider tienen disponible esta actualización. Para poder realizar esta prueba debes tener una versión de Windows 10 Build 14316. Puedes comprobar la versión de Windows instalada mediante la consola de comandos y el comando VER.
Puedes registrarte en este proyecto, pero bajo tu propio riesgo recibirás actualizaciones no muy probadas, para eso está el programa… y puede que con alguna de ellas detectes que no era compatible con tu hardware… y pierdas el equipo :-). Yo voy a suponer en este artículo que SI eres miembro del programa, o que es verano y estás leyendo esto.
Bueno vamos al asunto, probemos unos cuantos comandos:
El primer comando que probamos es un típico ls con algunos modificadores y funciona bien.
Pruebo a instalar htop para monitorizar los recursos de la máquina, y se instala, pero para mi decepción no se ejecuta.
La siguiente herramienta que pruebo, por eso del cariño, es NMAP. ¡¡Me pongo algo nervioso cuando veo que funciona!! Qué comodidad para mi trabajo diario…
Pero cuando llega a la capa de la red se encuentra con una NEGATIVA a funcionar.
Como entorno orientado al desarrollo, decir que vim, por ejemplo, sí funciona a la perfección.
También he podido descargar librerías Python de todo tipo, usar Git para bajarme proyectos incluso ejecutarlos. La magia de los lenguajes interpretados…
En general me ha dado una buena sensación, pero hay que tener claro que es una beta, y que es un entorno de «comodidad» para un programador o para un devops, no es un Linux completo. Pero bueno, para eso lo tenemos para instalar cuándo y dónde queramos.
Un apunte de última hora. Rebuscando la información al final he encontrado la ruta donde se guarda el «entorno» con las aplicaciones que nos bajamos e instalamos. Podemos encontrarlo en la siguiente ruta: C:\Users\»tu usuario»\AppData\Local\lxss
Espero que os guste. ¡Gracias por leerme!
Si quieres ver una demostración online con más información puedes ver el siguiente vídeo: