Álvaro José Agámez Licha
Medellín, Colombia - 2017-05-17
Desde la concepción de Microsoft Windows NT tuvo un diseño que permitió tener suministrar una interfaz programática a diferentes subsistemas sin que estos estuvieran ligados a una implementación en el kernel.
Inicialmente se soportaba POSIX, OS/2 y Win32 más tarde el soporte POSIX fue reemplazado por un Subsistema llamado Subsystem for Unix-based Applications (SUA).
Esta implementación de los subsistemas tuvo problemas de rendimiento y finalmente fue retirada.
Bash en Windows proporciona a los desarrolladores un entorno de Bash shell y Linux familiar en el que se puede ejecutar la mayoría de las herramientas de línea de comandos de Linux, directamente en Windows, INMODIFICADOS, sin necesidad de una máquina virtual Linux completa.
¿Recuerdas los Subsistemas de Windows NT?, bueno, volvieron, mejorados y esta vez para quedarse.
Bash/WSL nos permite:
WSL es una colección de componentes que permite ejecutar binarios nativos ELF64 de Linux en Windows. Contiene tanto el modo de usuario como los componentes del modo kernel. Se compone principalmente de:
El soporte del sistema de archivos en WSL fue diseñado para cumplir con dos objetivos.
El Subsistema de Windows para Linux proporciona un soporte de sistema de archivos virtual similar al kernel real de Linux. Dos sistemas de archivos se utilizan para proporcionar acceso a los archivos en el sistema de usuarios: VolFs y DriveFs.
VolFs es un sistema de archivos que proporciona soporte completo para las características del sistema de archivos Linux, incluyendo:
Los directorios que contienen el sistema Linux, los archivos de aplicación (/etc, /bin, /usr, etc.) y los usuarios de la carpeta de inicio de Linux, usan VolFs.
La interoperabilidad entre aplicaciones y archivos de Windows en VolFs no es compatible.
DriveFs es el sistema de archivos utilizado para la interoperabilidad con Windows. Requiere que todos los nombres de archivos sean nombres de archivos de Windows legales, use seguridad de Windows y no admite todas las características de los sistemas de archivos de Linux. Los archivos distinguen entre mayúsculas y minúsculas y los usuarios no pueden crear archivos cuyos nombres difieren sólo por caso.
Prerequisito: Su PC debe estar ejecutando (como mínimo) una versión de 64 bits de Windows 10 Anniversary Update. Se recomienda la actualización de Creators Update.
Para encontrar la arquitectura de la CPU de su PC y el número de versión/build de Windows, debemos abrir Settings>System>About. Busque los campos OS y de tipo de sistema.
Habilitar Developer Mode
Habilitar la característica de Windows Subsystem for Linux
Después de habilitar Windows Subsystem para Linux, reinica tu computadora cuando se te indique. Es muy importante hacer esto, ya que algunas características de WSL solo se habilitan durante el inicio de Windows.
Ejecutar bash en una línea de comandos de Windows:
Crear un usuario LINUX
La primera vez que instale Bash en Windows, se le pedirá que cree un nombre de usuario y una contraseña de LINUX.
Verificar nuestra instalación
Si queremos verificar la versión del kernel de Linux que estamos ejecutando, podemos usar el comando lsb_release -a
Con la habilidad de poder ejecutar los mismos binarios con los que contamos en Ubuntu (y próximamente openSUSE y Fedora), podemos armar un completo entorno de desarrollo que hasta ahora para los usuarios de windows solo podía lograrse mediante la virtualización (o el uso de containers con sus consabidos problemas). Eso es cosa del pasado.
tmux: Para aquellos que no están familiarizados con Tmux, es una herramienta de línea de comandos que le permite dividir una ventana de terminal en varios paneles. Este multiplexor de terminal permite al usuario cambiar entre diferentes paneles y renderizar la salida en cada panel.
sudo apt-get install tmux
Git: Bueno, que decir sobre Git, es el sistema de control de versiones de código fuente por excelencia.
sudo apt-get install git
zsh: Es un potente intérprete de comandos para sistemas operativos de tipo Unix.
sudo apt-get install zsh
Para hacer zsh en Windows su shell por defecto hay que editar el archivo ~/.bashrc y agregar el inicio de este lo siguiente:
# if running in terminal...
if test -t 1; then
# ...start zsh
exec zsh
fi
(Oh-My-) zsh: Un framework guiado por la comunidad (con más de 1.000 colaboradores) para administrar su configuración de zsh. Incluye 200 plugins adicionales (rails, git, OSX, hub, capistrano, brew, ant, php, python, etc).
sh -c "$(curl -fsSL
https://raw.githubusercontent.com/robbyrussell/oh-my-
zsh/master/tools/install.sh)"
Para configurar Oh-My-zsh debemos editar el archivo: ~/.zshrc
nvm: Node Version Manager - Simple script bash para gestionar múltiples versiones activas de node.js.
# usando cURL
curl -o- https://raw.githubusercontent.com/
creationix/nvm/v0.33.2/install.sh | bash
# o usando Wget
wget -qO- https://raw.githubusercontent.com/
creationix/nvm/v0.33.2/install.sh | bash
nvm install node
nvm use node
Ahora podemos instalar Node.js
Si nvm no funciona, y estás usando zsh, puede ser que el script de instalación no agregó la configuración al archive de configuración de zsh; para hacer esto abrimos el archivos de configuración y agregamos lo siguiente al final del mismo.
Yo uso VIM para esto, así que el commando que ejecuto es el siguiente: vim ~/.zshrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
VIM: Es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX.
sudo apt-get install vim
VIM: Emacs es un editor de texto con una gran cantidad de funciones, muy popular entre programadores y usuarios técnicos.
sudo apt-get install emacs
# desinstalación completa
lxrun /uninstall /y /full
# por si te arrepientes o dañas la
# instalación
lxrun /install