Bash di Windows 10

Soeleman 2 Februari 2017

Bash di Windows 10

Windows 10 Anniversary Update memberikan fitur yang ditunggu. Fitur tersebut adalah Bash-On-Windows (BoW). Dengan ini kita bisa menjalankan ubuntu tanpa Linux Kernel.

Menarik bukan? Tentunya penasaran, apakah bisa menjalankan aplikasi native ubuntu di BoW?

Windows

Dalam Windows 10 ada fitur yang berguna bagi developer. Koleksi setting dan aplikasi yang mungkin akan membantu banyak ketika membuat aplikasi. Pada dasarnya dengan mode ini, kita memberitahu kepada Windows bahwa komputer ini digunakan untuk developer. Maka secara tidak langsung ia akan men-setting yang optimal untuk itu.

Setelah kita pilih itu, ia akan meng-install dan juga membutuhkan restart. Tampaknya beberapa setting dan konfigurasinya perlu dibaca ulang pada saat memuat OS.

alt text

Feature

Untuk mengaktifkan BoW. Kita perlu ke "Turn Windows feature on or off". Dari tombol Win, ketik "Feature" dan pilih menu seperti di gambar.

alt text

Pada "Windows Features", pilih "Windows Subsystem for Linux(Beta)". Walaupun itu tertulis Beta, tapi ini sudah lebih dari setahun fitur ini dalam Testing Windows Insider. Pilihan ini akan meminta kita untuk me-restart.

alt text

Bash

Setelah restart, seharusnya kita sudah mendapatkan Bash Shell. Dari tombol Win, ketik "Bash" dan pilih menu "bash". Seperti pada gambar dibawah.

alt text

Bash yang ada sekarang ini belum ada apa-apanya. Oleh karena itu pertama kali dijalankan ia akan meminta untuk meng-install ubuntu lewat windows store.

alt text

Sebagaimana pada umumnya di unix, kita perlu membuat account. Account ini berbeda dengan user di Windows. Ini hanya untuk di lingkungan ubuntu saja.

alt text

Installer akan menyiapkan hal yang diperlukan untuk sebuah Bash Shell yang berjalan di ubuntu. Setelah itu kita bisa tutup windows itu.

alt text

Dari tombol Win, ketik "bash" maka akan muncul menu "Bash on Ubuntu on Windows" dengan icon ubuntu. Kita bisa menggunakan Bash Shell dengan ubuntu lewat menu tersebut.

alt text

Linux Standard Base

Tentu kita ingin tahu versi apa yang di-install? Untung saja ubuntu sudah mengikuti Linux Standard Base (LSB).

alt text

Jadi kita tinggal menggunakan perintah lsb_realese untuk mendapatkan informasi tersebut. Codename yang di pakai adalah trusty, dengan begitu kalau kita mencari informasi package maka sesuaikan dengan codename-nya.

Print Working Directory

Sekarang kita akan coba jalankan perintah yang umum dijalankan pada bash. Perintah Print Working Directory (pwd) biasa digunakan untuk mendapatkan lokasi yang digunakan atau posisi dimana kita sedang berada atau bekerja. Akan berguna sekali apabila prompt-nya tidak menampilkan lokasinya. Kebetulan di sini prompt memperlihatkan path-nya.

alt text

Kalau di perhatikan kita melihat "~" itu berada di "/home/$user" atau di sini "/home/dede". Path itu hanya ada di dalam bash-nya. Sedangkan lokasi di Windows akan terlihat seperti pada gambar di bawah.

alt text

Disk-Free

Berbicara lokasi antara bash dengan Windows. Dan karena mereka menggunakan hdd yang sama, maka BoW juga dapat meng-akses hardware. Menggunakan perintah Disk-Free (df) untuk mendapatkan informasi itu.

alt text

Padahal ubuntu hanya membuat folder seperti pada gambar di bawah. Walaupun begitu BoW dapat mengakses file di-folder lain dengan perintah mount.

alt text

Telnet

Dalam ubuntu biasanya juga terdapat beberapa utility, seperti telnet. telnet adalah sebuah aplikasi Command Line Interface (CLI) untuk remote-host.

Dengan telnet, kita bisa mencoba apakah BoW bekerja juga lewat network. Coba telnet seperti pada gambar di bawah.

alt text

Kebetulan remote-host tersebut akan mengirim data terus-menerus. Sehingga ia terlihat seperti animasi sebuah film. Dan itu boleh dibilang telnet bekerja baik dalam network.

alt text

X Windows

Tentunya penasaran, apakah bisa menjalankan aplikasi Graphical User Interface (GUI) di BoW?

X Server

Dalam X Windows System (lebih biasa di panggil X), X Server-nya lah yang berhubungan langsung dengan grahpic hardware-nya. Beda dengan yang digunakan oleh Windows, yang langsung ke hardware lewat API.

X ada karena sesuai dengan kebutuhan di unix, multi-user. Oleh karena itu ada lapisan (protokol) antara pengguna dengan hardware. Ini menyebabkan lebih lambat dibandingkan sistim yang digunakan oleh Windows. Walaupun begitu ada keuntungannya, yaitu X Client-nya bisa dijalankan secara local maupun remote.

Jadi dengan ini, aplikasi(X Client) bekerja di komputer A tapi "window"-nya di 'gambar' ke layar oleh X Server pada komputer B. Seakan-akan ada di komputer B, tapi sebetulnya aplikasinya berada komputer A; bisa saja ada beberapa user yang menjalankan aplikasi itu bersamaan (per-user per-aplikasi) di komputer A (baca: multi-user). Oleh karena itu memungkinkan kita menjalankan aplikasi GUI dengan BoW.

Ada banyak pilihan X Server, untuk windows yang paling banyak dipakai adalah Xming. Ambil di Sourceforge dan pasang Xming agar kita bisa menjalan X dengan BoW.

alt text

Bila aplikasi sedang aktif, ia memiliki icon di taskbar. Seperti ini About Xming windows-nya.

alt text

X Client

X Server sudah terpasang, sekarang kita butuhkan X Client-nya.

Untuk itu kita perlu memasang package x11-apps. Package ini merupakan kumpulan dari beberapa aplikasi, lebih dikenalnya dengan nama xutils.

alt text

Salah satu dari banyak aplikasi yang terdapat dalam xutils ini adalah xeyes. Kita akan gunakan xeyes untuk mencoba apakah X Windows bekerja di-BoW.

Kita masukkan perintah xeyes &. Maksud tanda "&" itu berarti berjalan di thread yang berbeda. Dan tidak ada yang terjadi, malah muncul pesan error. Tekan enter untuk kembali ke prompt.

Apa yang terjadi? Ini terjadi karena variable DISPLAY pada bash tidak ada. X-Client perlu informasi ini, untuk mengarahkan pada DISPLAY yang mana ada X-Server.

Salah satu caranya adalah memberitahukan ke bash dengan export. Tulis perintah export-nya seperti pada gambar. Umumnya isi DISPLAY-nya adalah 0, kadang di X-Server yang berbeda bisa berisi 0.0.

alt text

Bisa juga kita lakukan tanpa export. Jadi kita set bersamaan dengan aplikasinya. Hanya saja kita perlu melakukan itu setiap kali menjalankan aplikasi. Sedangkan dengan export cukup jalankan satu kali saja.

alt text

Penutup

BoW membuat sub-system di atas Windows agar dapat menjalankan binary linux tanpa linux kernel.

Ini bukan emulator atau virtual-machine tapi binary file linux yang bekerja di dalam Windows. Perlu diingat bahwa BoW bukan server-grade performa, ini ditujukan untuk developer. Walaupun begitu hasil compiler-nya compatible(dapat di copy dan jalan) pada ubuntu dengan linux kernel.

BoW hadir untuk menjawab keperluan developer yang bekerja dengan multi-os atau user yang memerlukan software yang tidak ada porting windows-nya. Soalnya banyak sekali software yang ada di Linux tapi belum ada di Windows. Apalagi .NET Core sudah multi-platform, tentu kita akhirnya kita perlu juga menggunakan Bash.

Saat ini bash berjalan diatas distro ubuntu karena memang itu yang di-support oleh Microsoft. Bagaimana dengan distro lainnya? Tampaknya sudah ada yang dapat menjalankan distro selain ubuntu seperti di-RoliSoft/WSL-Distribution-Switcher.

BoW juga bisa menjalankan aplikasi GUI dengan X-Windows. Dengan ini pula kita bisa menjalankan aplikasi Linux(GUI) yang belum ada porting-nya di Windows. Tentu kita bisa juga menggunakan aplikasi dari KDE atau GNOME dengan memasang package yang diperlukan.

Referensi