Tag Archives

12 Articles
Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Access point configuration

Access point configuration

Saya hendak membuat sebuah jaringan nirkabel. Jaringan nirkabel itu terhubung ke sebuah komputer yang berfungsi sebagai router. Setiap akses dari perangkat-perangkat dalam jaringan tersebut dienkapsulasi dalam NAT dan dikirim ke Internet/jaringan lainnya.

Komputer yang saya gunakan adalah GNU/Linux Gentoo dengan spesifikasi sebagai berikut:

  • Kernel Linux 3.19-pf1
  • Systemd 219

Saya pun tertarik menggunakan nftables karena dia yang akan menggantikan iptables di masa mendatang. Perkakas nftables pertama kali ada di Linux 3.13. Jadi, ya, lumayan relatif baru.

Aktifkan IP Forwarding

Setiap kali mau memakai NAT, jangan lupa mengaktifkan IP Forwarding di kernel. Lihat dulu kalau dia aktif:

$ sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Kalau nilainya 0, berarti belum aktif. Aktifkan:

sudo sysctl -w net.ipv4.ip_forward=1

Supaya permanen, tambahkan ke konfigurasi. Ingat! Sistem ini menggunakan systemd. Jadi, berkasnya ada di /etc/sysctl.d

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

Ini kalau tadi sebelumnya IPv4 belum menyala. Kalau sudah, lewati saja. Tapi, biasanya distro-distro bakunya mematikan fitur ini.

nftables

Ada beberapa langkah yang dilakukan untuk memasang nftables:

  1. Memasang kernel yang sudah mendukung nftables.
  2. Memasang perkakas nftables.
  3. Memasang unit systemd.

Modul Kernel

Saya tidak tahu Anda menggunakan kernel versi apa. Tapi, seandainya kernel tersebut di atas 3.13, kemungkinan ada. Kalau saya kebetulan mengompilasi sendiri kernel saya. Jadinya, saya aktifkan nftables pada bagian:

-> Networking support
  -> Networking options
    -> Network packet filtering framework (Netfilter)
      -> Core Netfilter Configuration

Lalu saya centang saja semua yang berbau nf_tables di konfigurasi seperti terlihat pada gambar.

I just opt-in every "nf_tables" in Core Netfilter Configuration

I just opt-in every “nf_tables” in Core Netfilter Configuration

Setelah saya kompilasi dan pasang kernel saya. Lalu saya masuk ke sistem dengan menggunakan kernel tersebut. Selanjutnya saya memasang perkakas nftables untuk bisa memanipulasi tabel nftables.

Perkakas

Saya memasang nftables dengan cara berikut:

sudo emerge -av net-firewall/nftables

Atau gunakan pemaket dari distro kesayangan Anda masing-masing. Untuk Debian dan turunannya, ada bacaan menarik mengenai cara cepat membuat perkakas ini.

Jika sudah, ada beberapa contoh penggunaan nftables yang menarik, misalnya:

  • Melihat seluruh isi tabel:
    nft list ruleset
  • Menghapus seluruh tabel:
    nft flush ruleset
  • Menyimpan seluruh tabel ke berkas konfigurasi:
    nft list ruleset > /var/lib/nftables/rules-save
  • Memuat konfigurasi dari berkas konfigurasi:
    nft -f /var/lib/nftables/rules-save

Saya mengikuti tata letak berkas di Gentoo. Dia menaruh aturan iptables, nftables, ebtables, dan lain-lain di direktori /var/lib. Kalau Debian menaruhnya di /etc. Anda terserah mau taruh di mana, yang penting konsisten.

Inisialisasi Aturan nftables

Awal-awalnya nftables masih kosong. Saya menggunakan aturan yang telah disediakan gentoo untuk IPv4 NAT. Gentoo saat ini menaruh berbagai aturan siap pakai di /etc/nftables.

Mengapa saat ini? Karena biasanya aturan siap pakai ditaruh di /usr/share. Mungkin saja bilamana nftables sudah stabil, aturan-aturan ini dipindahkan ke sana. Ya, sudah, pakai saja:

sudo nft -f /etc/nftables/ipv4-nat

Supaya Anda tidak penasaran, isi berkas itu sebenarnya cuma aturan biasa:

#!/sbin/nft -f

table nat {
    chain prerouting    { type nat hook prerouting priority -150; }
    chain postrouting   { type nat hook postrouting priority -150; }
}

Mirip-miriplah dengan tutorial nftables NAT yang resmi.

Lalu tambahkan aturan yang mentranslasi semua paket jaringan dari wlan0 ke eth0.

sudo nft add rule nat postrouting ip saddr 10.10.0.0/24 meta oif eth0 snat 192.168.0.5

Ganti 192.168.0.5 dengan IP kartu ethernet Anda. Lihat gambar awal mengenai skema jaringan yang hendak dibangun.

Padanan di iptables

Aturan ini padanannya di iptables seperti ini:

sudo iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT --to 192.168.0.5

Lalu mengapa tidak menggunakan iptables saja biar sederhana? Judul artikel ini belajar nftables. Lagipula, sebenarnya lebih sederhana nftables, hanya saja ia belum terintegrasi dengan distro-distro yang ada saat ini. Dia masih baru, bahkan kernel yang mendukung belum masuk.

Sebelum ini saya biasanya menggunakan perintah berikut untuk iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nanti saya coba di Wheezy, deh. Kalau tidak malas, tapinya. Untuk saat ini jangan lupa untuk mematikan NAT di iptables supaya tidak kacau!

sudo rmmod iptable_nat

Menyimpan Aturan nftables

Kalau sudah selesai, seharusnya aturan nftables akan sebagai berikut:

$ sudo nft list ruleset
table ip nat {
    chain prerouting {
         type nat hook prerouting priority -150;
    }

    chain postrouting {
         type nat hook postrouting priority -150;
         ip saddr 10.10.0.0/24 oif eth0 snat 192.168.0.5
    }
}

Nah, kalau di Gentoo, dia sudah menyediakan skrip initnya. Sayangnya cuma untuk OpenRC. Kita bisa memanfaatkan skrip itu untuk menyimpan aturan NAT:

sudo /etc/init.d/nftables save

Atau cara manualnya:

sudo mkdir -p /var/lib/nftables
sudo nft list ruleset | sudo tee /var/lib/nftables/rules-save

Selanjutnya membuat aturan systemd supaya dijalankan otomatis.

Aturan systemd untuk nftables

Belum ada aturan untuk nftables. Ada seseorang yang berbaik hati untuk membuat skrip untuk systemd. Tetapi, saya memilih untuk membuat sendiri.

Skrip orang itu membuat nftables sebagai layanan. Tetapi, saya pikir seharusnya perilaku nftables sama seperti skrip ALSA dan iptables. Ia hanya perlu dijalankan sekali saja. Itu sebabnya, sama seperti kedua subsistem, saya memecah nftables menjadi tiga berkas aturan.

Aturan /usr/lib/systemd/system/nftables.service

[Unit]
Description=Store and restore nftables firewall rules
Documentation=man:nftables(8)

[Install]
Also=nftables-store.service
Also=nftables-restore.service

Aturan /usr/lib/systemd/system/nftables-restore.service

[Unit]
Description=Restore nftables firewall rules
# if both are queued for some reason, don't store before restoring :)
Before=nftables-store.service
# sounds reasonable to have firewall up before any of the services go up
Before=network.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/nft -f /var/lib/nftables/rules-save

[Install]
WantedBy=basic.target

Aturan /usr/lib/systemd/system/nftables-store.service

[Unit]
Description=Store nftables firewall rules
Before=shutdown.target
DefaultDependencies=No

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/sbin/nft list ruleset > /var/lib/nftables/rules-save"

[Install]
WantedBy=shutdown.target

Selanjutnya, pasang ketiga layanan tersebut:

sudo systemctl enable nftables

Selesai untuk nftables, selanjutnya mengonfigurasi antarmuka jaringan.

Mengonfigurasi Antarmuka Jaringan

Sudah menjadi aturan umum kalau firewall berjalan sebelum antarmuka jaringan diaktifkan. Dengan memulai firewall terlebih dahulu, tidak ada jeda yang bisa dipakai untuk masuk. Tidak ada waktu antara menjalankan antarmuka jaringan dengan menyalakan firewall. Itu sebabnya, nftables dipasang pertama kali sebelum antarmuka jaringan.

Kalau Anda pengguna destop, kemungkinan sudah ada NetworkManager. Untuk konfigurasi minimal, NetworkManager biasanya tidak dipasang. Antarmuka jaringan harus dipasang dengan cara lain.

Saya gagal menggunakan metode systemd-networkd. Kalau saya menggunakan infrastruktur itu, firewall (nftables/iptables) tidak ada yang berjalan! Mungkin saya ada yang kurang. Entahlah, yang pasti saya mengonfigurasi statik dengan cara lain saja.

Antarmuka eth0

Gentoo menggunakan pendekatan yang sama dengan Arch Linux. Mereka menggunakan systemd untuk menjalankan skrip Gentoo. Dengan demikian, konfigurasi Gentoo yang lama bisa dibaca. Ini konfigurasi lama saya di  /etc/conf.d/net

dns_servers=( "8.8.8.8" )

config_eth0="192.168.0.5 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"

Cara mengaktifkan layanan adalah dengan membuat tautan simbolik dari net@.service ke net@eth0.service.

sudo ln -s /usr/lib/systemd/system/net@{,eth0}.service

Kalau Anda tidak percaya diri dengan menggunakan enumerasi BASH, bentuk lain dari perintah itu adalah

sudo ln -s /usr/lib/systemd/system/net@.service /usr/lib/systemd/system/net@eth0.service

Setelah itu, pasang layanan ini ke systemd agar dijalankan pada waktu komputer baru menyala.

sudo systemctl enable net@eth0

Kalau Debian, seperti biasa ada di /etc/network/interfaces. Jadi, mungkin systemd tidak terlalu dibutuhkan.

Antarmuka wlan0

Saya menggunakan Linksys WUSB54GC. Kemampuan yang dimiliki:

    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point

Dia bisa menjadi Access Point (AP)!

Implementasi yang kita pilih merupakan implementasi statik. Kita bisa dengan aman berasumsi bahwa IP yang dipakai tidak akan berubah.

Saya tadinya ingin membuat seperti antarmuka Ethernet. Tapi, konfigurasi gagal karena RFKill selalu memblokir wlan0 dengan soft block. Saya pun memutuskan untuk membuat sebuah layanan kecil untuk menjalankan wlan0 di /usr/lib/systemd/system/ap-static.service

[Unit]
Description=Static WLAN0 as an Access Point
Documentation=man:rfkill(8) man:ip(8)
After=network.target
After=time-sync.target

[Service]
Type=oneshot
RemainAfterExit=yes 
ExecStart=/usr/sbin/rfkill unblock all
ExecStart=/bin/ip addr add 10.10.0.1/24 dev wlan0
ExecStart=/bin/ip link set wlan0 up

[Install]
WantedBy=multi-user.target

Seperti biasa, pasang layanan ini:

sudo systemctl enable ap-static

Untuk antarmuka nirkabel sudah selesai. Saatnya memasang layanan yang akan mengonfigurasi klien WIFI.

Layanan Konfigurator WIFI

Ada dua layanan utama yang dipakai untuk tutorial kali ini. Keduanya masing-masing bisa diganti dengan yang lain. Namun, saat ini saya menggunakan dua layanan ini karena keduanya dapat dikembangkan untuk kebutuhan kompleks.

hostapd
Hostapd adalah aplikasi penyedia Access Point. Dia menyediakan autentikator, mengatur antarmuka WIFI, dan sejenisnya. Selain memiliki autentikator internal, hostapd dapat terhubung ke Radius dan mendukung ACS.
DHCPd
DHCPd adalah penyedia layanan DHCP. Layanan ini yang mengatur kepemilikan IP dan sejenisnya kepada klien. Sebenarnya masih ada udhcpd yang lebih sederhana. Yah, namanya juga belajar.

Mari konfigurasi keduanya.

Layanan hostapd

Setiap distro umum memiliki paket hostapd. Saya sendiri di Gentoo mengunakan hostapd versi:

$ sudo hostapd -v
hostapd v2.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi> and contributors

Pertama-tama, konfigurasikan AP yang hendak kita buat. Berikut contohnya pada /etc/hostapd/hostapd.conf

# WiFi Hotspot
interface=wlan0
driver=nl80211
# Access Point
ssid=AP Lo Nyambung2
hw_mode=g
ieee80211d=1
country_code=ID  ### 802.11d/h harus ada kode negara
# WiFi Channel:
ieee80211h=1  
channel=3     ### Channel 3
wmm_enabled=1 ### QoS
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=s4nD1Al4yFtW
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Saya menyalin skrip layanan systemd hostapd yang disediakan oleh Gentoo menjadi /usr/lib/systemd/system/hostapd-wlan0.service. Alasan saya supaya kalau ada pembaharuan sistem, skrip ini tidak berubah. Lagipula, saya mengubah agar layanan berjalan setelah ap-static.service sudah berjalan. Isinya:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
After=ap-static.service

[Service]
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

[Install]
WantedBy=multi-user.target

Setelah itu, pasang layanan ini.

sudo systemctl enable hostapd-wlan0

Selesai.

Layanan dhcpd

Seperti saya bilang, sebenarnya DHCPd agak mubazir. Tapi, berhubung sistem ringan, saya pasang saja. Oh, iya, kalau di Debian, nama paketnya isc-dhcp-server.

Gentoo:

sudo emerge -av net-misc/dhcp

Debian dan turunannya:

sudo apt-get install isc-dhcp-server

Setelah terpasang, buat berkas konfigurasi /etc/dhcp/dhcpd.conf

ddns-update-style none;
log-facility local7;
subnet 10.10.0.0 netmask 255.255.255.0 {
    range 10.10.0.2 10.10.0.32;
    option domain-name-servers 8.8.8.8;
    option routers 10.10.0.1;
}

Jangkauan IP tidak saya buat jauh karena pun jumlah maksimal klien yang terhubung ke AP tidak begitu banyak. Lain cerita kalau misalnya DHCPd kita pakai juga untuk yang lain.

Seperti biasa, saya menyalin berkas systemd DHCPd dan menamainya menjadi /usr/lib/systemd/system/dhcpd4-wlan0.service

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
After=ap-static.service

[Service]
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcp -group dhcp --no-pid

[Install]
WantedBy=multi-user.target

Terakhir, pasang layanan DHCPd:

sudo systemctl enable dhcpd4-wlan0

Selesai.

Terakhir

Matikan dan kemudian hidupkan kembali komputer yang dipakai sebagai AP. Kalau benar, maka otomatis layanan ini akan berjalan.

Example on working AP.

Example on working AP from my phone.

Tamat.

Multipath TCP (MPTCP)

Multipath TCP (MPTCP)

MPTCP adalah sebuah ekstensi protokol TCP untuk menggunakan beberapa IP sebagai jalur-jalur transportasi dalam jaringan. Hal ini menambah kehandalan dan kecepatan transfer. Fitur ini dapat dicapai dengan memodifikasi paket TCP.

Fitur ini tak asing lagi bila kita menggunakan SCTP. Sayangnya, secara de facto Internet masih menggunakan TCP/IP. Jadi, penambahan fitur seperti ini kepada TCP sangat bagus karena kompatibel dengan sebagian besar orang.

Siapa mau coba di peladennya?

Bebaskan LG G2 D802 Saya!
Super Android, recharge!

Bebaskan LG G2 D802 Saya!

Tulisan ini dibuat dari

PERINGATAN:

SEMUA INI DAPAT MERUSAK TELEPON ANDA, LG G2. SAYA TIDAK BERTANGGUNG JAWAB ATAS RUSAKNYA TELEPON ANDA. RISIKO TANGGUNG SENDIRI!

Sebelumnya

Di komputer pasang dev-util/android-sdk-update-manager

sudo emerge dev-util/android-sdk-update-manager

Aktifkan Perunutan USB dari Opsi Pengembang.

Pergi ke Pengaturan ⇒ Umum ⇒ Tentang ponsel ⇒ Informasi perangkat lunak

Tekan sekitar tujuh kali pada Versi perangkat lunak

Lalu, kembali dan masuk ke Opsi pengembang.

Aktifkan Perunutan USB dari Modus Pengembang

Aktifkan Perunutan USB (USB Debugging) dari Opsi Pengembang

Tekan Pilih untuk mengaktifkan konfirmasi.

Berikan otorisasi kepada komputer yang kita gunakan untuk melakukan pemasangan.

Berikan otorisasi kepada komputer yang kita gunakan untuk melakukan pemasangan.

Spesifikasi

Berikut dari telepon

 

Spesifikasi Telepon LG G2 saya

Spesifikasi Telepon LG G2 saya sebelum dibongkar

Pesan dari lsusb

Bus 007 Device 026: ID 1004:61f1 LG Electronics, Inc. Optimus Android Phone [LG Software mode]

Berikut pesan dari dmesg

[317809.731719] usb 7-4: new high-speed USB device number 25 using ehci-pci
[317809.882599] usb 7-4: New USB device found, idVendor=1004, idProduct=631f
[317809.882602] usb 7-4: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[317809.882603] usb 7-4: Product: LGE Android Phone
[317809.882604] usb 7-4: Manufacturer: LG Electronics Inc.
[317809.882605] usb 7-4: SerialNumber: 03020af49f549229

Berikut pesan dari adb devices

List of devices attached 
03020af49f549229        device

Saatnya dibongkar

Unduh berkas dengan pergi ke laman unduhan.

Buka berkas Zip dan masuk ke dalam direktori.

unzip ioroot.zip && cd ioroot/bts

Sebenarnya ioroot sudah menyediakan adb versi GNU/Linux (adblinux). Tapi, saya lebih memilih menggunakan adb yang telah dipasang ke sistem (lewat paket dev-util/android-sdk-update-manager). Lebih barokah. 🙂

Perintahkan telepon ke recovery

adb reboot recovery

Tunggu beberapa saat untuk telepon menyalakan kembali dirinya. Bila benar, akan muncul menu recovery. Gunakan tombol volume untuk naik dan turun.

Pilih menu apply update from adb

Lalu, dari komputer kirim perintah [PASTIKAN ANDA MASIH DI DIREKTORI bts]

adb sideload datroot.zip

Kalau sudah benar, akan ada gambar ASCII art “Dat Root” dan terakhir tulisan “Install from ADB Complete”.

Silakan pilih reboot system now untuk kembali masuk ke mode normal.

Terakhir

Pergi ke toko Google Play Store dan pasang aplikasi SuperSU.

Selesai.

Printer Scanner EPSON L210 in Ubuntu 13.10 Saucy

Printer Scanner EPSON L210 in Ubuntu 13.10 Saucy

Still in the same story of Ubuntu 13.10. The vendor also provided EPSON L210. This printer is economic and it has big toners. So, yeah, then again I think they made a good deal with this vendor.

Just google it up, because the EPSON Indonesia’s Terms of Use  prohibited me from taking any of their pictures.

According to OpenPrinting, EPSON L210 have epson-201207w official driver. Hmm… I wonder why they haven’t included it into the Installation CD in Indonesia. To download it, follow the link to the download page. They might be have updates from time to time. Or, just use the later.

I used the first method: (ethically, you must agreed with their terms first before you go download these)

$ wget http://a1227.g.akamai.net/f/1227/40484/7d/download.ebz.epson.net/dsc/f/01/00/01/87/87/126d18060d9881eaed0ff545ad711bd4e642b62a/epson-inkjet-printer-201207w_1.0.0-1lsb3.2_i386.deb

Download also the Scanner driver: (ethically, you must agreed with their terms first before you go download these)

$ wget http://a1227.g.akamai.net/f/1227/40484/7d/download.ebz.epson.net/dsc/f/01/00/02/50/83/cdca0d1272f76cb915b90784e27afc03a055ac19/iscan_2.29.3-1~usb0.1.ltdl7_i386.deb
$ wget http://a1227.g.akamai.net/f/1227/40484/7d/download.ebz.epson.net/dsc/f/01/00/02/50/83/cdca0d1272f76cb915b90784e27afc03a055ac19/iscan_2.29.3-1~usb0.1.ltdl7_i386.deb

Install all:

$ sudo dpkg -i *.deb

And it would be normally error because of the absent of dependencies. Install the dependencies and the packages:

$ sudo apt-get -f install

Install XSane for scanner application:

$ sudo apt-get install xsane

GIMP could detect XSane when installed and took it as GIMP’s plugin. Enjoy!

 

TP Link TL-WN725N in Ubuntu 13.10 Saucy

TP Link TL-WN725N in Ubuntu 13.10 Saucy

TL-WN725N, image taken from TP Link's site.

TL-WN725N, image taken as is from TP Link’s site. Used according to TP Link’s site Terms of Use.

I was helping some folks setting up their PC. They used Edubuntu 13.10 and using a broadband provider. They got a modem connected into a Wireless LAN Access Point (WLAN AP).

They brought TP Link TL-WN725N to connect into the AP. It was suggested by their vendor. Well, it was a cheap one, so I think the vendor was right.

Unfortunately, installing it on Ubuntu 13.10 (Saucy) variant wasn’t that easy. Ubuntu 13.10 came with 3.11 kernel. After a long search, I have came up with solution. So, I wrote this tutorial for others to find.

Cut The Chase and Go On

To install this, make sure the PC got the right packages for building kernel modules.

sudo apt-get install linux-headers-generic build-essential dkms

Optionally, if you haven’t got GIT, install it:

sudo apt-get install git

Then, grab the driver’s source code:

git clone https://github.com/lwfinger/rtl8188eu

Get into the directory.

cd rtl8188eu

Compile.

make

And install.

sudo make install

Don’t forget to reload the kernel modules dependency.

sudo depmod -aq

Reboot, and enjoy.

Tambahan Pemasangan untuk BlankOn Suroboyo

Tambahan Pemasangan untuk BlankOn Suroboyo

Citarasa itu berbeda tiap orang. Ini adalah versi BlankOn yang seharusnya ada menurut saya. Kalau tak setuju, tak mengapa. Kali ini saya menggunakan Root Terminal yang tersedia dengan mudah di BlankOn untuk menghindari sudo.

Pindah ke systemd Sepenuhnya

Seperti yang diberitakan, Debian akan membuang sysvinit dan pindah ke systemd pada iterasi berikutnya. Versi GNOME3 yang menjadi dasar BlankOn pun menggunakan modul yang sama. Maka, saya menggunakan inisiatif untuk mengganti saat ini juga.

Pertama-tama, pastikan akar direktori terpasang di /etc/fstab. Asumsi saya adalah sistemberkas diformat EXT4. Silakan ganti dengan format yang lainnya jika berbeda.

# cat /etc/mounts | grep ext4 >> /etc/fstab

Lalu, pasang systemd-sysv untuk menggantikan sysvinit:

# apt-get install systemd-sysv

Silakan nyalakan ulang BlankOn untuk mengaktifkan systemd. Perhatikan bahwa waktu mulai pun lebih cepat dibandingkan dengan sysvinit.

Segala Sesuatu tentang VirtualBox

Anda dapat melewati bagian ini. Saya memerlukan langkah-langkah ini karena saya menggunakan BlankOn pada VirtualBox di komputer kerja saya.

Memasang VirtualBox Guest

BlankOn menggunakan XOrg versi 1.15. Versi ini tidak didukung dengan baik oleh Virtual Box 4.3.6, versi terbaru Virtual Box saat penulisan ini. Diperlukan VirtualBox Guest Additions yang versi beta (4.3.7) untuk itu.

Pada komputer inang, unduh:

$ wget https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_4.3.7-92075.iso

Selanjutnya, lakukan hal-hal berikut di BlankOn. Buka terminal di BlankOn dan lakukan. Pasang paket-paket ketergantungan.

# apt-get install dkms linux-headers-3.12-1-amd64

Entah mengapa, BlankOn juga memasang linux-image-3.9.1-amd64. Buang saja:

# apt-get remove --purge linux-image-3.9.1-amd64 # update-grub

Pada VirtualBox Anda di inang, pasang ISO yang sudah diunduh tadi ke BlankOn. Kalau benar, BlankOn akan menanyakan apakah CD yang baru dimasukkan hendak dijalankan atau tidak. Bila tak berjalan otomatis, langsung saja jalankan dari terminal.

Cari tahu dipasang ke direktori mana:

# mount | grep sr0

Pada kasus saya, saya pindah ke direktori berikut:

# cd /media/jp/VBOXADDITIONS_4.3.7_92080

Lalu, pasang VirtualBox Guest Additions:

# ./VBoxLinuxAdditions.run

Tunggu beberapa saat dan nyalakan kembali BlankOn.

Menambahkan Pengguna ke Grup vboxsf

Agar dapat mengakses direktori-direktori yang dibagi-pakai oleh VirtualBox, pengguna harus tergabung dalam grup vboxsf. Untuk menambahkan pengguna tersebut:

# adduser jp vboxsf

Keluar dari sesi BlankOn dan masuk kembali.

Memasang SSH

Saya bingung mengapa dewasa ini SSH tidak dipasang secara otomatis.

# apt-get install ssh

Dan, SSH pun terpasang.

Memasang Peluncur Aplikasi

Peluncur aplikasi KDE menggunakan KRunner. GNOME Shell menggunakan peluncur internal. Namun, sayangnya Manokwari tidak ada peluncur aplikasi.

Untungnya, ada aplikasi pihak ketiga. Ada GNOME Do yang menggunakan Mono. Ada Synapse yang biasa digunakan oleh BlankOn Pattimura dan pendahulunya. Ada Kupfer yang juga ringan. Terakhir, yang paling ringan dari itu semua: dmenu.

Saya tertarik pada Kupfer, namun untuk sementara ini saya memasang Synapse saja:

# apt-get install synapse

Sementara ini baru itu saja yang saya tambahkan.

Perjalanan Membangun Sistem (ZFS)

Perjalanan Membangun Sistem (ZFS)

My PC, built with Gentoo

My PC, built with Gentoo inside.

Ada dua WDC Green 1 TB yang bertengger di atas. Dua itu adalah milik rekan saya. Dia sedang melakukan forensik dengan salah satunya. Katanya chipset AMD lebih cepat dan stabil dalam melakukan operasi salin daripada Intel. Meh, he’s the hardware guy, /me dunno…

Punya saya yang ada di salah satu tiga itu cuma sebesar 300 GB. Satu penyimpan di bawah monitor, SATA3 Cheetah 10K RPM 300 GB, saya pakai buat direktori pusat (root directory). Satu lagi di sebelahnya juga 250 GB.

Dari set tersebut, 2 penyimpan (300 GB dan 250 GB) saya ambil untuk iseng-iseng. Tadinya, saya menggunakan 250 GB saja. Tapi, seiring dengan perkembangan kepercayaan diri yang tinggi, saya mencopot penyimpan saya dari komputer kerja dan menaruh di komputer ini.

Sistemberkas

Kebutuhan saya akan sistemberkas kali ini adalah untuk memanajemennya dengan mudah. Kebutuhan yang paling utama adalah untuk virtualisasi. Saya butuh setiap VM untuk sebuah lingkungan pengembangan yang terisolasi.

Yang kedua, saya butuh untuk bisa secara daring memperbesar ruang penyimpan. Hal ini karena terkadang ketika saya membangun sistem dalam VM, ruang yang disediakan ternyata tidak cukup. Saya perlu menambah ruang dengan dinamis tanpa harus memindah-mindahkan data.

Saya menguji 3 sistem berkas: LVM, BTRFS, dan ZFS. Dari ketiganya, yang paling familiar adalah LVM. Namun, entah mengapa Device Mapper gagal membuatkan node di “/dev” untuk LVM. Saya jadi tidak bisa memasangnya.

Hal serupa juga terjadi dengan BTRFS. Ternyata BTRFS juga menggunakan menggunakan Device Mapper. Saya jadi tak bisa memasang BTRFS. Hal ini ditambah pula dengan kegamangan menggunakan BTRFS.

Kemudian, saya mencoba memasang ZFS. Memasangnya cukup sederhana di Gentoo. Karena faktor itu, saya jadinya suka ZFS. Mungkin tulisan ini lebih menjelaskan mengapa sederhana itu indah. Mengingat terminologi setiap sistem berkas berbeda, ZFS memiliki konsep yang sama dengan LVM tapi jauh lebih canggih.

Saya menggunakan versi GIT. Jangan salah, saya bukannya penyuka ketidakstabilan. Akan tetapi, menurut saya, teknologi terbaru seharusnya menggunakan kode yang terbaru. Selain lebih stabil, beberapa fitur lebih didukung. Apalagi, pengembangan ZFS di GNU/Linux sangat cepat.

Pasang ZFS

Aktifkan versi GIT.

echo "=sys-kernel/spl-9999 **" | sudo tee -a /etc/portage/package.accept_keywords 
echo "=sys-fs/zfs-9999 **" | sudo tee -a /etc/portage/package.accept_keywords

Saya lupa, bila ada sesuatu yang salah, aktifkan “–autowrite-unmask” pada emerge. Selain itu, pastikan bahwa header kernel merupakan versi yang terpasang dan aktif. Saya sempat gagal memasang SPL karena dia membutuhkan versi header yang valid.

Lanjut pasang:

sudo emerge -av zfs

Selanjutnya tentang jenis-jenis volum.

Sekilas mengenai ZFS

ZFS mengenal konsep pool yang kalau dalam LVM itu artinya volume group. Berhubung saya hanya memiliki 1 penyimpan saja (waktu itu). Saya hanya menambahkan:

sudo zfs create vmdisk /dev/sda

Sistemberkas utama saya ada di /dev/sdb1, jadi hati-hati kawan. Saya tidak menambahkan /dev/sdb1 ke dalam ZFS saya. Saya masih belum tahu cara memasangnya ZFS sebagai berkas utama.

Baru-baru ini, saya menemukan bahwa ternyata subvolum ZFS terdiri atas dua:

  1. Sebuah blok yang bisa diformat
  2. Sebuah direktori

Berikut bedanya.

Subvolum Blok

Saya membutuhkan sebuah partisi untuk BlankOn Rote. Sistem ini sangat stabil dan cocok untuk membangun OpenELEC. Saya selalu gagal bila melakukan di Gentoo. Hal ini karena Python yang digunakan sama. Entahlah, saya hanya percaya BlankOn untuk sistem stabil.

sudo zfs create -V 20g vmdisk/blankon

Dengan menyatakan ukuran, ZFS secara otomatis menganggap bahwa yang hendak dibuat adalah sebuah subvolum blok. Ia akan otomatis membuat node di /dev/vmdisk/blankon dan /dev/zvol/vmdisk/blankon.

Subvolum Direktori

Subvolum yang kedua adalah membuat sebuah direktori khusus (child node) di bawah sebuah pool (vmdisk). Beda dengan subvolum blok, ia tidak memiliki node di /dev, ia hanya sebuah direktori biasa. Namun, ia bisa diisolasi dengan memberikan kuota dan hak khusus kepada beberapa orang misalnya.

Cara buatnya:

sudo zfs create vmdisk/musik

Lalu buat kuota untuk direktori itu:

sudo zfs set quota=30g vmdisk/musik

Entah mengapa, subvolum ZFS jenis ini di Gentoo belum terintegrasi. Jadinya, saya harus memasang manual. Yah, saya juga belum eksplorasi lebih lanjut dengan ZFS. Yang keren dari cara memasang ZFS adalah kita bisa mengubah titik pemasangan subvolum ini:

sudo zfs set mountpoint=/home/jp/Musik vmdisk/musik

Lalu pasang:

sudo zfs mount vmdisk/musik

Seperti sistemberkas lainnya, biasanya direktori tersebut dimiliki oleh root. Saya harus mengganti menjadi milik pengguna biasa:

sudo chown jp:jp /home/jp/Musik

Tidak ada yang istimewa dengan perintah ini. Namun saat kita memasang ulang, direktori ini tetap menjadi milik pengguna biasa.

Hasil penyalinan yang saya lakukan dengan memindahkan berkas Musik ke dalam subvolum vmdisk/musik.

sent 13448261665 bytes  received 29625 bytes  92428118.83 bytes/sec
total size is 13446492269  speedup is 1.00

Lumayanlah.

Tambahan

Ada banyak properti yang bisa diubah untuk sebuah subvolum. Untuk tahu lebih lanjut apa saja properti yang bisa diubah-ubah:

sudo zfs get vmdisk/musik

Saya sendiri telah mengubah properti kuota sebelumnya. Saya juga mengaktifkan kompresi [pasti, dong., Vishera 8 inti sayang kalau tak digunakan] untuk sistem berkas saya:

sudo zfs set compression=lz4 vmdisk/musik

Kalau mau tahu tentang nilai sebuah properti, silakan:

sudo zfs get compression vmdisk/musik

Silakan eksplorasi sendiri. Oh, iya, ZFS menghabiskan banyak memori. Katanya, sih, yang ideal itu minimal memori 4GB.

Kesimpulan

ZFS memiliki zona-zona yang terisolasi dan hak akses yang terintegrasi. Cocok sekali digunakan untuk sistem yang memiliki banyak pengguna. Saya belum sempat membahas, namun ZFS bisa diekspor sebagai NFS, iSCSI, dan SMB. Tak heran banyak pusat data yang menggunakan ZFS sebagai sistemberkas dasar. Saya juga belum membahas mengenai format RAIDZ yang dimilikinya dan fasilitas membuat cuplikan secara daring. Maklum, ruang penyimpan saya belum banyak.

Driver for U.r.U 4500 in Kernel 2.6.36

Driver for U.r.U 4500 in Kernel 2.6.36

It seems the Linux kernel getting another ABI change for USB in 2.6.36. function

ioctl

is being deprecated for a while and now being removed. It is changed with function 

unlocked_ioctl

. The parameter also changed.

Here’s the chunk of changes that would gives you idea of what changed:

<2.6.36 2.6.36+
ioctl   = usbdpfp_ioctl
.unlocked_ioctl   = usbdpfp_ioctl
usbdpfp_ioctl(struct inode *inode, struct file *file, unsigned int cmd, usbdpfp_ioctl(struct file *file, unsigned int cmd,
static int usbdpfp_ioctl( static long usbdpfp_ioctl(

That’s not all of the code, but you get the idea. The

ioctl

is changed. Every

ioctl

calling is having one less parameter. The return is no longer

int

but

long

.

According to Alex comment in my previous post, the UDEV rule also changing. Every USB device is default installed in /dev/usb directory. That’s why we have to make an adjustment in udev rule. As usual, I’m uploading the whole code here. As usual, remove the .pdf extension.

Getting Omnikey 5321 To Work On Maverick

Getting Omnikey 5321 To Work On Maverick

It didn’t work with the

pcsc-omnikey

package. I have reinstalled the

pcscd

package with compiling from source. I’ve configured with

"--enable-libusb --disable-libhal"

to use libusb instead of HAL. Those failed.

Then it turned out I have to install the driver from HID Global (the producer of the said card reader) and installed it. The way:

  1. Download driver from: http://www.hidglobal.com/driverDownloads.php?techCat=19&prod_id=171#
  2. Untar the driver to a directory and cd to it.
  3. $ sudo ./install -d /usr/lib/pcsc/drivers/
  4. Restart pcscd:
    $ sudo invoke-rc.d pcscd restart
  5. Done.

Then we have the Omnikey back.

Driver for U.r.U 4500 in Kernel 2.6.31

Driver for U.r.U 4500 in Kernel 2.6.31

I was having trouble with using kernel 2.6.21 that get supported by default UrU kernel, the X server refused to run. So, in my despair, I view some LKML threads, patch here and there: Voila! I got a working  Kernel driver for U.r.U fingerprint for Linux kernel 2.6.31. [NOTE: Remove the .pdf extension.]This patched driver has been working in Debian’s 2.6.31-trunk and Ubuntu Karmic, my fave distro at the momen. The installation is simple and described here.For the sake of KISS, I will try to cover it for you.

$ mv dpfp-2.6.31.tar.gz.pdf dpfp-2.6.31.tar.gz
$ tar xvfz dpfp-2.6.31.tar.gz
$ cd source
$ make

And then install it to your kernel:


$ sudo mkdir /lib/modules/`uname -r`/kernel/drivers/biometric
$ sudo cp mod_usbdpfp.ko /lib/modules/`uname -r`/kernel/drivers/biometric/
$ sudo depmod -aq

Then you can abuse it the way you feel. This kernel has been tested worked on UrU 4500 and UrU4000B.

Kambing Spidol

Kambing Spidol

After the collapsing, Kambing have resurrected again. It needs few hours thanks to the almighty Universitas Indonesia‘s bandwith to recover all of the contents (± 2 TB). Unfortunately, after we struggle to put down sotfware RAID 5, the server having trouble at performance. The popular (most accessed contents) were on the same hard drive making it an I/O bottleneck.

Well, Adin said we will resurrect the good ol’ software RAID 5. Meanwhile, enjoy the slow throughput like the rest of us. 🙁

UPDATE: Adin have done it. Now, the popular contents in RAID 5