Category Archives

76 Articles
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.

Memasang pf-kernel untuk BlankOn Rote

Memasang pf-kernel untuk BlankOn Rote

Kernel pf-kernel merupakan kernel yang telah ditambal dengan hal-hal berikut:

  • Penjadwal CPU BFS yang dibuat oleh Con Kolivas. Penjadwal CPU ini dioptimasi untuk pengguna Desktop.
  • Penjadwal I/O BFQ. Penjadwal I/O ini dioptimasi seperti BFS sehingga memberikan optimasi kepada respon yang lebih interaktif.
  • TuxOnIce, sebuah infrastruktur  suspensi sistem yang cocok digunakan untuk laptop.
  • UKSM (Ultra KSM), sebuah perkakas kernel yang menyatukan setiap page di memori yang identik sehingga hanya satu saja. Cocok untuk aplikasi virtualisasi atau aplikasi yang menggunakan proses berbeda tetapi isinya sama (Google Chrome).

Seperti biasa, tambahan ini belum tentu untuk Anda. Jadi, berhati-hatilah dalam memasang kernel baru.

Untuk memasangnya:

$ wget http://pf.natalenko.name/binaries/debian/3.7.4/linux-{image,headers}-3.7.4-pf_1_i386.deb
$ sudo dpkg -i *.deb

Ganti i386 dengan amd64 untuk arsitektur 64bita. Saat ini yang terbaru adalah versi 3.7.4-pf.  Anda bisa cek versi yang lebih baru di situs utama.

Memasang Mutter untuk BlankOn

Memasang Mutter untuk BlankOn

BlankOn baku menggunakan Metacity sebagai pengatur jendela. Sayangnya, Metacity kurang memiliki efek grafis. Untungnya ada Mutter, sebuah pengatur jendela sederhana dari Clutter yang menggunakan akselerasi 3D (OpenGL).

Pasang:

$ sudo apt-get install mutter

Karena Mutter dipasangkan untuk Gnome Shell, ia membaca akselerasi tombol Meta (tombol Windoze) kiri untuk melihat Aktivitas. Hal ini menyebalkan kalau Anda seperti saya menggunakan tombol Meta+R untuk membuka peluncur aplikasi. Harus tekan tombol R dua kali.

Untuk mengatasi hal tersebut, matikan tombol akselerasi:

$ gconftool -s /apps/mutter/general/overlay_key -t string ""

Kini Anda bebas menggunakan tombol Meta untuk menjadi tombol pintas dengan yang lainnya.

Untuk langsung menjalankan Mutter:

$ mutter --replace

Lupa kasih tahu. 🙂

Meretas Manokwari (True Hacking)

Meretas Manokwari (True Hacking)

Mari saya beri contoh mengenai penggunaan yang benar kata hacking. Bukan merebut hape teman lalu memasang status aneh. Bukan juga menjebol situs-situs dengan menggunakan skrip yang diunduh dari Internet. Melainkan, mempelajari sebuah sistem dan mengubah/memperbagusnya sesuai dengan kemauan kita. Contoh kasus desktop kita tercinta, BlankOn.

Anda mungkin narsis menghargai keberagaman yang sudah Tuhan berikan bagi kita dan terinspirasi untuk membuat komputer Anda berbeda. Tetapi, bagaimana mungkin, BlankOn tidak menyediakan konfigurasi tematik yang diberikan.

Sesuai FHS, biasanya aplikasi menaruh pustaka ke dalam direktori “/usr/lib”.  Setelah ditelaah lebih lanjut diketemukan sebagai berikut:

$ ls -al /usr/lib/manokwari/system/
total 963
drwxr-xr-x 2 root root    312 Nov 26 14:43 .
drwxr-xr-x 3 root root     72 Agu 29 22:52 ..
-rw-r--r-- 1 root root   2865 Nov 22 15:09 desktop.css
-rw-r--r-- 1 root root    586 Nov 22 15:09 desktop.html
-rw-r--r-- 1 root root   5252 Nov 22 15:09 desktop.js
-rw-r--r-- 1 root root 248235 Nov 22 15:09 jq.js
-rw-r--r-- 1 root root   2321 Nov 22 15:09 menu.html
-rw-r--r-- 1 root root  29523 Nov 22 15:09 menu.js
-rw-r--r-- 1 root root   5618 Nov 22 15:09 style.css
-rw-r--r-- 1 root root 661141 Nov 22 15:09 texture.jpg

Wow, ternyata mereka menggunakan HTML, Javascript, dan CSS. Dari hasil penelaahan diketemukan:

desktop.html
Blok-blok tampilan desktop
desktop.css
Konfigurasi tampilan.
menu.html
Blok-blok untuk menu.
menu.js
Skrip Javascript untuk animasi dan penempatan.
style.css
Tempat untuk mengubah-ubah tampilan.
jq.js
Pustaka JQuery.

Setelah dilihat lebih lanjut, Manokwari menggunakan CSS Animation dari Webkit. Dan memang kalau dilihat dari paket-paket yang dibutuhkan oleh Manokwari, Manokwari menggunakan Webkit. Jadi, kita bisa menggunakan CSS3 khusus untuk Webkit dalam mewarnai Manokwari.

Hei, am I talking to a noob or a real hacker? Sorry, I’m spoiling things up for you.

Demi menghargai kalian, saya tidak membahas lebih lanjut. Tetapi maaf, saya hendak memberi contoh untuk perubahan yang dapat dilakukan.

Mengganti Latar Menu

Saya mengunduh sebuah latar belakang dari bgrepeat.com. Lalu saya taruh di direktori Manokwari.

$ sudo mv /tmp/128-129.jpg /usr/lib/manokwari/system/texture.jpg

Ya, saya memang jantan, langsung tindih saja. No turning back, u scared?

Buka berkas style.css, lalu tambah pada elemen “.ui-page” kalimat ini:

background-repeat: repeat;

Setelah “background: url(texture.jpg);” juga tak apa. Nyalakan ulang manokwari:

$ killall manokwari

Tunggu beberapa saat sampai Manokwari berubah menjadi:

Menu Manokwari Berubah

Menu Manokwari Berubah

Kesimpulan

Maaf bila saya sudah spoiler satu hal yang bisa dilakukan, ha… ha… ha….

Masih banyak, kok, yang bisa Anda lakukan. Silakan gunakan kekuatan kreatif Anda. Kalau sudah, ayo coba berbagi dengan mengompres isi direktori “/usr/lib/manokwari/system” ke sebuah tempat dan tinggalkan pesan di bawah sini. Contohnya manokwari-jp.tar.bz2 yang telah saya ubah sedikit.

Baru saja saya memperbaharui BlankOn saya dan ternyata ada Manokwari versi baru. Gagal untuk membuat tutorial yang lain, ha… ha… ha….

So, if you are real hacker, go and start hack Manokwari theme. Do it before BlankOn devs making things dull and uninteresting with a theme manager nor Manokwari IDE. 🙂

NB:

Ayolah, gunakan pengetahuanmu untuk hal yang positif. Jangan cuma menghancurkan saja.

Blankon ke BlankOn
Pendekar Blankon berubah menjadi BlankOn!

Blankon ke BlankOn

Blankon Transform

Pendekar Blankon berubah menjadi BlankOn!

Suatu hari, perserikatan Ubuntu tempat Blankon bernaung memutuskan untuk menyeragamkan tampilan mereka kepada Unity. Pendekar Blankon kemudian keluar dari perserikatan itu dan masuk kepada perguruan Debian, tempat asal semua ilmu. Untuk itu, pendekar Blankon melepas seluruh persenjataan beratnya dan berubah menjadi pendekar BlankOn. Hal ini dilakukannya semenjak versi 8.0 (Rote).

Pendekar BlankOn lebih mengutamakan menggunakan ilmu kanuragan sehingga lebih ringan. Jurus Manokwari yang menjadi andalan mampu dirapalkan pada setiap kondisi.

Kendati terlihat lemah, tetapi seperti laiknya ninja, BlankOn menyusup di kegelapan bangsa. Siap membela kebenaran dan melepaskan negara ini dari kebutaan pengetahuan. Bagi pengguna BlankOn (rilis Rote dan yang terbaru), hikayat konfigurasi memanfaatkan cermin KAMBING.ui.ac.id telah tertulis di sini.

Bagi pengikut BlankOn 7.0 dan yang lebih lawas, para punggawa BlankOn telah memindahkan repositori ke blankon-legacy. Jikalau kisanak hendak memanfaatkan repositori untuk versi-versi tersebut, kisanak dapat menulis berikut di “sources.list”:

deb-src http://kambing.ui.ac.id/blankon-legacy pattimura main restricted extras extras-restricted

deb http://kambing.ui.ac.id/blankon-legacy pattimura-security main restricted extras extras-restricted

deb http://kambing.ui.ac.id/blankon-legacy pattimura-updates main restricted extras extras-restricted

Bilamana kisanak mempergunakan versi yang lain, kisanak dapat mengubah kata “pattimura” menjadi yang lain, misalnya “ombilin”. Selamat berjuang pendekar! Majulah bangsaku, majulah Indonesia!

Pelipur Lara: Torchlight 2
Torchlight 2 dari Steam, Tidak Perlu Daring

Pelipur Lara: Torchlight 2

Torchlight 2 dari Steam

Torchlight 2 dari Steam, Tidak Perlu Daring

Setelah kecewa dengan Diablo 3 yang harus selalu daring, saya menghentikan proyek membangun komputer Bermain. Seperti yang kita ketahui bersama, lebar pita jaringan di Indonesia itu tulisannya up to, yang artinya: “Sampeyan dapat primbon kali, ye, baru bisa benar-benar segitu kecepatannya.” Ya, sampai Ksatria Piningit datang, permainan yang selalu membutuhkan dedikasi pita jaringan itu tidak bisa diharapkan.

Untungnya, sudah ada Torchlight 2 buatan Runic. Permainan ini mirip dengan Diablo 2, satu-satunya permainan RPG yang saya mainkan dengan intensif dahulu. Kata teman saya, permainan ini dibuat oleh mantan pengembang Diablo. Hmmm… seingat saya, mereka bikin perusahaan dan mengembangkan Sacred.

Harga permainan ini di Steam saat ini US$19,99 atau sekitar Rp200.000,00. Mungkin nanti bisa lebih murah lagi ketika libur Natal. Tapi, ini sudah cukup terjangkau buat saya. Enak juga kalau membeli asli, saya jadi harus menjaga diri untuk tidak membeli banyak permainan dan terasa amat berharga permainan yang dibeli.

Torchlight 2 menggunakan mesin Ogre3D, sebuah pustaka kode sumber terbuka. Ogre3D sendiri dapat dijalankan di GNU/Linux, saya ingat dahulu InfoLINUX pernah membahas. Yang seru dari seri permainan ini adalah Torchlight yang pertama sudah ada di Ubuntu Apps. Saya merasa positif untuk versi asli Torchlight 2 untuk GNU/Linux.

Untuk memainkan Torchlight 2, saya tinggal menggunakan Wine:

$ wine Steam.exe -opengl -no-dwrite

Nah, perhatikan “-no-dwrite”. Itu parameter yang digunakan untuk Wine 1.5 (wine-unstable kalau di BlankOn). Kalau tidak, tulisan di Steam tak terbaca. Sepertinya dwrite.dll versi Wine 1.5 bermasalah.

Saya sudah memasang semuanya dan untuk komputer saya yang masih pakai Pentium D, VGA on-board GeForce 9200, dan memori 4G aplikasi berjalan lancar. Saya harus mengonfigurasi grafis menjadi medium dan mematikan FSAA.

Waduh, sudah terlalu banyak saya tulis. Saatnya bermain. Jangan lupa mandi.

Debootstrap BlankBerry pada Gentoo

Debootstrap BlankBerry pada Gentoo

Halaman membangun BlankBerry hanya memberikan asumsi bahwa kita menggunakan BlankOn atau sistem berbasis Debian lainnya. Untuk sistem Gentoo, ada caranya. Terinspirasi dari halaman ini. Saya mengasumsikan bahwa:

  1. Debootstrap telah terpasang.
  2. Direktori yang akan dipasangi BlankBerry sudah siap (maksudnya drive-nya sudah di-mountpada direktori tersebut, dsb.).
    export rootfs=/mnt/sysroot
  3. Akses Internet mumpuni atau Anda sudah menyiapkan repo lokal.

Persiapan dari sisi Gentoo

USE="static" emerge -b1 qemu-user

Ini akan memasang “/usr/bin/qemu-static-arm” dan “qemu-static-arm-binfmt” dan seabrek-abrek arsitektur lainnya.

Sekarang saatnya berpesta! Debootstrap seperti biasa.

debootstrap --verbose --arch armhf --no-check-gpg --foreign rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/deboostrap/scripts/wheezy

Pasang sistem-sistemberkas yang perlu.

mount -t proc none $rootfs/proc
mount -t sysfs none $rootfs/sys
mount -o bind /dev $rootfs/dev
mount -t devpts none $rootfs/dev/pts

Mari persiapkan “binfmt_misc”.  Modul “binfmt_misc” adalah sebuah fasilitas kernel Linux untuk menjalankan sebuah binari kepada sebuah aplikasi, misalnya emulator. Mari pasang modul ini untuk menjalankan ARM.

modprobe binfmt_misc
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

Beritahu emulator untuk ARM.

echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-static-arm:' > /proc/sys/fs/binfmt_misc/register

Salin kedua berkas emulator ARM.

cp /usr/bin/qemu-static-arm $rootfs/usr/bin/qemu-static-arm-binfmt
cp /usr/bin/qemu-static-arm-binfmt $rootfs/usr/bin/qemu-static-arm-binfm

Yak, sudah selesai.

Lanjutkan Debootstrap:

LC_ALL=C chroot $rootfs /debootstrap/debootstrap --second-stage

Yak, ini semua untuk menggantikan satu baris berikut yang ada pada halaman WIKI BlankOn:

qemu-debootstrap --arch armhf rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/debootstrap/scripts/wheezy

Selanjutnya terserah Anda.

Jurnal Debootstrap BlankBerry

Jurnal Debootstrap BlankBerry

Prakata

Uh, nampaknya tulisan ini sudah terpublikasi di Planet. Sepertinya saya salah memencet tombol. Ya, sudah, berhubung tulisan ini ditujukan bagi pemakai lanjut yang beruntung memiliki Raspberry Pi. Sebelumnya, saya menggunakan repositori BlankOn dan harus memakai cara yang hancur-hancuran. Beruntung, @aftian memberikan tautan yang benar mengenai repositori BlankOn yang sebenarnya.

 

Uh, seandainya kamu adalah wanita cantik akan kukecup mesra. Ha… ha… ha….

kabur takut kena gaplok

Sekilas Raspberry

Raspberry menggunakan ARM dengan tambahan prosesor untuk menghitung floating point. Firmware yang ia gunakan mengasumsikan bahwa SDCard memiliki setidaknya hal berikut:

  • Partisi pertama harus FAT32 (VFAT) dan berisi firmware yang akan dijalankan pertama kali.
  • Partisi kedua biasanya berisi sistem berkas utama. Biasanya formatnya EXT4.

Di dalam BlankOn, SDCard terpasang sebagai mmcblk0. Dengan demikian, partisi pertama disebut /dev/mmcblk0p1 dan partisi kedua bernama /dev/mmcblk0p2.

Saya mengasumsikan kartu memori (SDCard) sudah terpartisi dan terformat dengan baik. Gampang, tinggal menggunakan gparted.

Saya membagi beberapa pekerjaan ini menjadi beberapa bagian:

  • Awalan: mempersiapkan partisi yang hendak ditulisi dan variabel rootfs agar memudahkan.
  • Pasang Awal: proses debootstrap. Dilakukan dua kali karena kita menggunakan arsitektur yang berbeda
  • Konfigurasi: pasang sandi, jaringan, waktu, lokalisasi, dsb.
  • Pasang kernel: memasang kernel yang telah disertakan oleh Hexxeh.
  • Bersih-bersih: menghapus paket-paket dan melepaskan partisi.

Ada beberapa proses yang terlewat, seperti membuat pengguna biasa baru. Nanti saya perbaiki lagi tulisan ini, saya hendak mengulang apa yang saya kerjakan.

Tulisan ini sudah berhasil dan diujicobakan pada dapur Fem*na… hahaha…. 🙂

Awalan

export rootfs=/mnt
mount /dev/mmcblk0p2 $rootfs

Pasang Awal

debootstrap --verbose --arch armhf --variant=minbase --no-check-gpg --foreign rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian
cp $(which qemu-arm-static) $rootfs/usr/bin
mkdir $rootfs/dev/pts
mount -t devpts none $rootfs/dev/pts
mount -t proc none $rootfs/proc
LC_ALL=C chroot $rootfs /debootstrap/debootstrap --second-stage

Konfigurasi

echo "deb http://arsip-dev.blankonlinux.or.id/raspbian rote main" > $rootfs/etc/apt/sources.list
echo "blankjp" > $rootfs/etc/hostname
cat > $rootfs/etc/hosts << EOF
127.0.0.1    localhost.localdomain    localhost blankjp
::1     localhost6.localdomain6    localhost6 blankjp
EOF

cat > $rootfs/etc/network/interfaces << EOF
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
EOF

cat >> $rootfs/etc/modules << EOF
echo vchiq
snd_bcm2835
EOF

LC_ALL=C chroot $rootfs /usr/bin/apt-get update
LC_ALL=C chroot $rootfs /usr/bin/apt-get -y --force-yes install binutils kmod
LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install apt-utils dialog locales
&& dpkg-reconfigure locales && dpkg-reconfigure tzdata
LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install
dhcp3-client udev netbase ifupdown iproute ssh iputils-ping wget net-tools ntpdate vim less LC_ALL=C chroot $rootfs su -c "echo \"root:blankon\" | chpasswd" LC_ALL=C chroot $rootfs su -c "sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' /lib/udev/rules.d/75-persistent-net-generator.rules"
LC_ALL=C chroot $rootfs dpkg-reconfigure locales
LC_ALL=C chroot $rootfs dpkg-reconfigure tzdata

cat > $rootfs/etc/fstab << EOF
/dev/mmcblk0p2 / ext4 noatime,nodiratime  0  0
/dev/mmcblk0p1 /boot vfat defaults  0   0
EOF

Pasang Kernel

mount /dev/mmcblk0p1 $rootfs/boot
touch $rootfs/boot/start.elf
mkdir $rootfs/lib/modules
ROOT_PATH=$rootfs BOOT_PATH=$rootfs/boot rpi-update
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > $rootfs/boot/cmdline.txt

Bonus: Menambah Satu Pengguna

LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install
sudo LC_ALL=C chroot $rootfs addgroup blankon LC_ALL=C chroot $rootfs chroot $rootfs useradd blankon -g blankon -G adm,disk,sudo,audio,video,plugdev -m LC_ALL=C chroot $rootfs su -c "echo \"blankon:blankon\" | chpasswd"

Bersih-bersih

LC_ALL=C chroot $rootfs /usr/bin/apt-get clean
umount $rootfs/boot
umount $rootfs/dev/pts
umount $rootfs/proc
umount $rootfs
sync

Beres

Colok ke Raspberry Pi dan berharap tidak ada masalah.

BlankOn dan Raspberry Pi

BlankOn dan Raspberry Pi

Tulisan ini ditulis sambil menunggu kompilasi. Kalau seperti tidak niat menulis, mohon maaf karena saya juga hendak menulis sekenanya saja. Mungkin nanti saya tambahkan tautan dan tulisan lebih sempurna.

Pertama-tama, ingatkan saya untuk tidak menggunakan SD Card di bawah kelas 10. Lama sekali memasang sistem. Setelah dipasang, belum tentu jalan. Saya salah satu korbannya.

Setelah stres mengganti-ganti SD Card,  tetap saja Raspberry gagal dijalankan. Saya sudah suntuk. Maklum, nampaknya repositori BlankOn belum lengkap dan skrip debootstrap yang saya miliki tidak memasang sistem dengan sempurna. Hal ini mengakibatkan saya harus secara langsung menyunting sistem.

Berhubung rumit dan harus kasus per kasus, saya tidak jadi menulis pengalaman saya menggunakan repositori murni BlankOn. Namun, tadi malam setelah saya jalan-jalan sebentar, saya baru menyadari kesalahan saya. Saya terlalu bernafsu untuk membuat sistem dengan:

  • Partisi utama menggunakan NILFS2. Hal ini karena NILFS2 lebih efisien dibandingkan dengan ext4. (noatime dan nodiratime tentunya)
  • Arsitektur yang dipakai adalah ARMHF, sebuah arsitektur yang telah memanfaatkan prosesor floating point terpisah. Selama ini, prosesor ARM dipakai juga untuk operasi floating point (soft floating point/ARMEL). Padahal, di dalam perangkat keras sudah tersedia sebuah instruksi tambahan untuk menghitungnya.

Nah, dari hasil perenungan saya, saya baru sadar bahwa saya menggunakan kernel yang dibangun dengan arsitektur ARMEL. Aih, pantas saja selalu gagal! Bikin tidak bisa tidur… 🙁

Karena itu, sekarang saya hendak membangun infrastruktur ARMHF yang bisa dipakai untuk membangun paket-paket yang terhilang. Saya kali ini membangunnya dari Raspbian. Saya lihat BlankBerry Rote pun dibangun dari Raspbian.

Ih, curang… 🙂

Saya kira dibangun dari repositori BlankOn. Ternyata dibangun dari repositori Raspberry dan repositori lokal (192.168.x.x) yang sepertinya berisi paket-paket BlankOn yang masih dalam pengembangan dan tidak tersedia di dalam repositori BlankOn.

Ya, begitulah. Setelah gagal seharian membangun sistem sendiri dengan debootstrap, saya pun memasang BlankBerry yang sudah jadi. Dari situ baru saya menemukan kesalahan saya.

Nampaknya pula, BlankBerry yang sudah jadi tidak kompatibel dengan repostori BlankOn yang ARMHF. Saya memasang openssh-server dan mengalami kerusakan segmentasi. Nampaknya saya harus kembali memasang.

Yak, semoga saya tidak malas untuk mendokumentasikan perjalanan saya. Kembali mengoprek… 🙂

Bonus: Cicip BlankBerry Bagi yang Punya Raspberry Pi

Saat ini tutorial di wiki BlankOn hanya bagi yang menggunakan QEmu. Buat yang beruntung telah mendapatkan Raspberry Pi, saya memiliki cara untuk memasang BlankBerry.

Alat-alat yang dibutuhkan

  • XZ Utils
    sudo apt-get install xz-utils
  • gparted
    sudo apt-get install gparted

Caranya

Unduh: (pilih versi terbaru)

$ wget http://kambing.ui.ac.id/pub/blankon/blankberry/rote/blankberry-rote-armhf-20120827-01.img.xz

Taruh ke dalam SD Card:

$ xzcat blankberry-rote-armhf-20120827-01.img.xz > /dev/mmcblk0

Saya asumsikan bahwa itu nama driver ruang penyimpan Anda. Ingat! Taruhnya di ruang utama Anda, bukan di sebuah partisi.

Anda sudah salam orang tua, cuci piring, atau menyapu rumah?

Setelah melakukan hal-hal trivial dan transfer image ke dalam SD Card, Anda dapat memodifikasi partisi SD Card Anda. Secara baku, BlankBerry mengandung dua partisi: 64MB partisi dan sebuah partisi ext4 berisi 1,6 GB Blankon.

Jika Anda memiliki SD Card berukuran lebih dari 2 GB, terdapat banyak ruang mubazir. Untuk itu, Anda dapat mengubah partisi dengan GUI:

$ sudo gparted /dev/mmcblk0

Tinggal digeser-geser sesuai selera. Saya sendiri menambahkan partisi ketiga, yakni partisi swap. Lumayan, jargon ruang swap dua kali besar memori kembali terngiang.

Yak, setelah itu selesai, tinggal ditaruh ke BlankBerry.

Selanjutnya: Proses instalasi dengan menggunakan repositori BlankOn.  (Mungkin) 🙂

Java 8 Early Access Pada BlankOn 8
Blankon dan JDK8.

Java 8 Early Access Pada BlankOn 8

Blankon dan JDK8.

Beberapa alasan yang saya pikirkan untuk mencoba Java8:

  • Tulisan Milisdad yang memasang JDK8 pada Linux Mint.
  • Project Jigsaw akhirnya diterapkan! Proyek ini adalah sebuah usaha untuk memodularisasi Java sehingga JVM hanya menjalankan modul-modul yang diperlukan.
  • Operasi Lambda diterapkan. (Functional programming, anyone?)
  • Saya bosan karena ternyata Raspberry butuh monitor HDMI. Padahal, saya sudah berhasrat untuk begadang.

Yah, sebenarnya karena saya bosan. 🙂

Langsung Saja!

Ternyata caranya ada di sini pada bagian Debian. Yaaaa…. ternyata segampang itu. sedih

su - 
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team-java.list 
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list.d/webupd8team-java.list 
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 
apt-get update 
apt-get install oracle-java8-installer  
exit
Catatan #1: Log Server
Every wizard tinker his box.

Catatan #1: Log Server

Tinkering server

Every wizard tinker his box.

tl;dr

Bukan untuk konsumsi umum dan tidak disarankan untuk pemula. Hanya sebagai pengingat saja. Kerusakan akibat menggunakan trik-trik di tulisan ini adalah akibat pelaku sendiri.

Menguruskan Server

Untuk dapat mengecilkan server, dicari berkas yang lebih besar dari 100MB.

# find /var/log -type f -size +10000k -exec ls -lh {} \;

Biasanya /var/log/syslog. Coba cari tahu siapa yang sedang mengakses syslog.

# fuser /var/log/syslog

Biasanya, sih, rsyslog. Matikan saja dulu, cadangkan syslog, baru kosongkan:

# > /var/log/syslog
Bertahan Hidup Tanpa Network Manager

Bertahan Hidup Tanpa Network Manager

TL;DR

$ sudo iwlist wlan0 scan
$ sudo iwconfig wlan0 essid "Hotspot - UI, Balairung Selatan"
$ sudo dhclient wlan0

Versi Lengkap (Bonus RFKILL)

Tadi malam saya melakukan kesilapan dengan membuang paket Network Manager. Saya baru sadar setelah menjalankan ulang laptop. Akibatnya, laptop BlankOn Rote saya tidak dapat terhubung ke dalam  jaringan bergerak.

Tapi, tunggu dulu! Ternyata bisa dilakukan dengan sekumpulan perintah sederhana.

Kartu Jaringan (Opsional)

Ini tidak perlu dilakukan. Tetapi,  terkadang kita suka menonaktifkan tombol Wireless di laptop sehingga perangkat nonaktif. Cara paling cepat, sih, biasanya saya menjalankan ulang laptop dengan tombol Wireless menyala.

Mengetahui kartu jaringan mana yang buat jaringan bergerak

$ sudo iwconfig

Melihat status fisik kartu jaringan yang ada:

$ sudo rfkill list

Contoh punya saya:

$ sudo rfkill list
0: ideapad_wlan: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: ideapad_bluetooth: Bluetooth
    Soft blocked: yes
    Hard blocked: no
2: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no

Mengaktifkan kartu jaringan:

$ rfkill unblock 2

Ganti 2 dengan kartu jaringan bergerak Anda (Kalau saya phy0, Intel Wireless).

Jaringan Bergerak

Mencari jaringan bergerak

$ sudo iwlist wlan0 scan

Kalau wlan0 tidak disebutkan, semua antarmuka jaringan akan dicari satu persatu oleh iwlist. Kebetulan kartu jaringan saya wlan0, jadi saya tak perlu mencari antarmuka yang lain.

Biar lebih sederhana, kita cukup mencari ESSID yang mau kita cari. Informasi yang lainnya tak perlu disertakan. Contohnya:

$ sudo iwlist wlan0 scan | grep ESSID
                    ESSID:"Hotspot - UI, Balairung Selatan"
                    ESSID:"CISCO-DLTT-8"
                    ESSID:"HotSpot - UI"
                    ESSID:"HotSpot-UI, Area Perpus-Lt.2-2"
                    ESSID:"HotSpot - UI"
                    ESSID:"EnGenius8B4A00"

Terhubung ke Titik Akses/ESSID/Router Jaringan Bergerak

Saya berada di Balairung UI. Untuk itu, saya memilih titik akses terdekat.

$ sudo iwconfig wlan0 essid "Hotspot - UI, Balairung Selatan"

Dapatkan IP

Setelah terhubung, saatnya mendapatkan informasi IP, DNS, dan segala macam. Gunakan klien DHCP.

$ sudo dhclient wlan0

Selesai

Buka peramban atau buka terminal dan pasang Network Manager. Ha… ha… ha….

Steam Pada Blankon 8
Steam pada BlankOn 8

Steam Pada Blankon 8

Steam pada BlankOn 8

Steam pada BlankOn 8

Saya bukannya tim PR-nya Valve. Tapi, niat mereka untuk serius masuk ke GNU/Linux membuat saya membuka akun di Steam. Saya bahkan membeli satu pak permainan.

Sambil menunggu Steam versi GNU/Linux, saya pun memasang versi Windoze di laptop. Baiknya Valve, mereka menyediakan sebuah halaman Wiki tentang cara memasang Steam di GNU/Linux.

Berikut perjalanan saya memasang Steam.

Memasang WINE

Sejujurnya, Steam saya sudah terpasang di GNU/Linux melalui 12.04 saya. Dia terpasang pada direktori “

~/.local/share/wineprefixes/steam

“. Saya belum sempat memasang ulang Steam.

Di Blankon 8 ada dua buah versi Wine, Wine 1.4.1-2 sebagai versi stabil dan versi 1.5.6-2 sebagai versi tidak stabil. Untuk kasus kali ini, saya lebih menyukai versi terbaru. Dengan versi ini, seharusnya banyak trik yang telah dipasang agar aplikasi dapat berjalan. Intinya, saya memasang:

$ sudo apt-get install wine-unstable

Aplikasi Pembantu

Ada dua aplikasi pembantu yang memasang paket-paket yang dibutuhkan agar Wine dapat menjalankan aplikasi dengan baik. Ada dua yang saya tahu:

PlayOnLinux menggunakan GUI sebagai latar. Ia memasang Wine versi tersendiri. Sedangkan winetricks merupakan sekumpulan skrip untuk memasang aplikasi-aplikasi populer. Rasanya menjadi peretas itu tidak enak bila memakai GUI. Jadi, saya memilihwinetricks.Cara pasang:

$ sudo apt-get install winetricks

Yak, begitu saja. Selanjutnya, mari kita memasang Steam

Pasang Steam

Yang membuat saya terkejut adalah ternyata cara pasangnya sangat gampang. Begitu gampangnya sehingga saya memanjangkan paragraf ini supaya tulisan ini tidak terlalu sedikit. Maaf, sebenarnya Anda tidak perlu membaca paragraf ini. 🙂

Cara pasang:

$ winetricks steam

Yak, cuma segitu saja dan nantinya Wine akan memasang tautan di laman depan.

Memindahkan Steamapps ke Partisi Terbesar

Jujur saja, masalah saya sebagai berikut:

$ df -h
Sistem Berkas                       Besar   Isi  Sisa Isi% Dipasang di
rootfs                               5,0G  4,6G  485M  91% /
udev                                  10M     0   10M   0% /dev
tmpfs                                202M  700K  201M   1% /run
/dev/mapper/Linux_LVM-UbuntuLucid    5,0G  4,6G  485M  91% /
tmpfs                                5,0M  4,0K  5,0M   1% /run/lock
tmpfs                                404M  5,0M  399M   2% /run/shm
/dev/mapper/Linux_LVM-Linux_Dokumen   43G   42G  276M 100% /home
/dev/sda5                             40G   37G  3,0G  93% /media/doCum3nt

Ruang partisi rumah saya sudah penuh. Untungnya, menurut WIKI, aplikasi-aplikasi Steam dapat dipindah ke partisi lain dan di GNU/Linux tinggal membuat sebuah tautan dari instalasi Steam ke partisi tersebut.

Singkat cerita, saya memindahkan “steamapps” ke partisi lain. Namanya memang agak 4lay, karena laptop ini pernah dipakai seseorang. Intinya, 1) buat direktori; 2) pindahkan steamapps ke sana; dan 3) profit! 🙂

Saya asumsikan bahwa partisi yang memiliki ruang cukup besar dipasang di “/media/doCum3nt”. Lalu, saya menggunakan winetricks memasang Steam di direktori rumah saya, “/home/jp”. Berikut caranya:

$ export STEAMAPPS_DIR="/media/doCum3nt/steamapps"
$ export STEAMAPPS_WINE_DIR="/home/jp/.local/share/wineprefixes/steam/drive_c/Program Files/Steam/steamapps"
$ mkdir $STEAMAPPS_DIR
$ mv $STEAMAPPS_WINE_DIR/* $STEAMAPPS_DIR
$ sudo mount -o bind $STEAMAPPS_DIR $STEAMAPPS_WINE_DIR

Ganti “$STEAMAPPS_DIR” dan “$STEAMAPPS_WINE_DIR” dengan lokasi yang ada pada komputer Anda. Saya menggunakan tautan keras, tapi bisa juga membuat tautan simbolik (tautan lunak/symlink).

Pengalaman Bermain

Steam mendeteksi kartu grafik yang dipakai. Namun, berhubung driver-nya versi GNU/Linux, dia memberikan peringatan.

Steam Peringatkan Driver tidak Dikenali

Steam Peringatkan Driver tidak Dikenali

Seperti Anda lihat, kartu grafis saya ternyata cuma bisa memainkan Half Life, Counter Strike, dan beberapa permainan kecil lainnya. Weleh, perlu segera memberi komputer baru. Yang pasti,driverBlankOn dapat memainkan permainan saya dengan baik.

Kudos buat pengembang BlankOn!

Read More

BlankOn 8 Pasca Debootstrap
Menu Manokwari berubah! :)

BlankOn 8 Pasca Debootstrap

Yak, setelah selesai memasang BlankOn 8 pada laptop saya, saya pertama-tama kagum. Namun, seperti saya bilang, ternyata ada beberapa hal yang perlu dipermak agar memenuhi kebutuhan saya.

Manokwari Tanpa

Entah mungkin paket “blankon-desktop” tidak lengkap, atau ada paket meta lain yang seharusnya dipasang, BlankOn saya ada beberapa kekurangan.

Manokwari Tanpa Konfigurator Dasar

Saya bingung dengan BlankOn Tweak. Saya cuma ingin mengubah tematik, huruf, dan jumlah Ruang kerja Metacity. Ya, sudah, saya coba untuk memasang perkakas yang sudah saya ketahui.

Untuk konfigurator Gnome3, Gnome Tweak Tool jawaban. Untuk konfigurator tematik yang agak baik, gunakan “lxappearance”. Untuk semacam Regedit, saya menggunakan GConf Editor.

$ sudo apt-get install gnome-tweak-tool lxappearance gconf-editor

Yak, itu sudah cukup.

Manokwari Tanpa Peluncur Aplikasi

Saya mendapati bahwa Manokwari tidak memiliki peluncur aplikasi (ALT+F2 atau META+R). Ya, ampun, mana pintasan global (global binding) tidak berfungsi pula. Saya terbiasa memakai papan ketik dan absennya pintasan global amat mengganggu.

Untungnya, Pattimura telah membuat saya tergila-gila dengan Synapse. Itu, loh, peluncur aplikasi yang kontekstual yang bikin tambah malas pindah ke Windoze. Ya, sudah, saya pun memasang itu:

$ sudo apt-get install synapse

Jadi, deh:

Synapse terpasang di Manokwari

Synapse terpasang di Manokwari. Tematik Virgillio

Gatal Ganti Tematik Menu Manokwari

Saya gatal mendengar bahwa Manokwari terdiri dari HTML5. Dan ternyata, benar! Menu itu disusun berdasarkan CSS. Serunya, seperti kecurigaan saya, Manokwari memasang sebuah gambar sebagai latar.

Berkas-berkas Manokwari ada di direktori

 /usr/lib/manokwari/system/

Yeah! Berkasnya cukup sederhana. Namun, sayang seribu sayang, saya sedang mencetak kartu mahasiswa baru, jadi saya belum bisa berbuat macam-macam. Jangankan ngoprek, tidur pun kurang.

Ahem, kembali dari curcol tidak jelas. Saya pun sekedar iseng dapat gambar bagus dari blog Kepak Garuda. Bermodalkan GIMP dan perkakas cap yang dimilikinya, beserta beberapa hal yang lain, jadilah gambar ini:

texture.jpg

texture.jpg silakan ikuti tautan untuk mengunduh yang asli.

Gambar itu kemudian ditimpa ke gambar asli menu Manokwari. Anggap bahwa gambar hasil suntingan ditaruh di “/tmp”. Maka caranya:

$ cd /usr/lib/manokwari/system/
$ sudo mv texture.jpg texture.jpg.orig
$ sudo mv /tmp/texture.jpg .

Setelah ditaruh gambarnya, muat ulang Manokwari. Dari referensi di Internet, sepertinya kita harus keluar lalu masuk kembali. Saya termasuk orang yang malas menunggu, jadi saya coba ingat dari kepala dan menemukan dalam ingatan bahwa desktop manager dijalankan oleh gnome-session. Jadi, kalau proses Manokwari dibunuh, dia pasti dibangkitkan kembali.

$ killall manokwari

Dan, menu pun berubah menjadi:

Menu Manokwari

Menu Manokwari berubah! 🙂

Memasang dan Membuang Aplikasi

Menurut saya, Totem itu aplikasi paling menyusahkan. Kodek banyak yang tidak terpasang dan sulit sekali untuk mengonfigurasi karena pengembang GNOME menganggap bahwa kita orang idiot yang tidak perlu opsi-opsi yang lengkap.

Yang kedua, saya sebenarnya menyukai Audacious. Namun, entah sejak versi berapa, Audacious tidak lagi bisa memainkan Musepack. Galat di FFAudio bla… bla… bla…. Dengan berat hati, saya berpindah ke lain hati.

Untuk menggantikan Totem, saya memilih VLC. Untuk menggantikan Audacious, saya menggunakan Clementine.

$ sudo apt-get remove totem audacious
$ sudo apt-get install vlc clementine

Untuk acara bakar-bakar CD, saya memasang “sound-juicer”. Lalu, untuk menjalankan Steam, seperti biasa saya memasang Wine. Saya masih menunggu versi GNU/Linux yang katanya akan segera keluar. Berhubung saya sudah beli beberapa permainan.

$ sudo apt-get install wine sound-juicer

Kesimpulan

Aduh sudah malam dan saya sudah tidak kuat. Nanti lagi saya coba ubek-ubek lagi Manokwari. Aplikasi ini sangat menarik.

Bangsa ini membanggakan karena memiliki pengembang-pengembang BlankOn dan Manokwari. Merdeka!

Creating DKIM on Debian 5.0

Creating DKIM on Debian 5.0

DKIM is a technique based on Yahoo!’s DomainKey. Some may say that it look alike SPF (Sender Policy Framework), but the two is different. DKIM is authenticating the email sent by checking the signature againts the domain’s public key. On the contrary, SPF check the MTA (mail server) that sends the email againsts the domain’s list of MTA. For the simplicity, let’s say that the sending domain is UI and the receiving domain is GMail, so DKIM works like this:

  1. User foo send an email
  2. The UI mailserver signed the email and send it to GMail mailserver
  3. GMail then querying the DNS and search for the public key for the sending domain.
  4. After that, GMail checks signature and the data.
  5. If it is alright, then GMail deliver the message to the recipient’s mailbox.

DKIM uses two encyption algorithms: RSA-1 (or just RSA) or RSA256. Those are public and private key pair authentication. The magic is what get encrypted by the private key can only be decrypted by public key and vice versa. But, you can’t decrypt using the same key that used to encrypt the data.

This mechanism is differ from SPF. For mailserver that implements SPF, it would just ask the DNS about a list of legal mailserver that have the right to send email originating from that particular domain.

Let’s us set Postfix to use DKIM. I assume that the mailserver is already functional and running.

There are two applications in Debian repository that serve the same purpose. The first is DKIM-Proxy which is a stand alone service that get injected and then inject back. It would run two processes which one would handle incoming traffic (verifying the email) and the later would do the signing. Both have their own socket to communicate with the mailserver.

The second is DKIM-Milter (or dkim-filter as Debian named it). It uses Sendmail‘s Milter protocol. So, it would run just like a plugin in Postfix. From my experimentation, I choose this because of the convinience for me. But, who knows you would choose the other.

Now, let’s install DKIM-Milter:

# apt-get install dkim-filter

The installation includes dkim-genkey tool to generate configurations including the DNS setting. Use the tool to generate DNS entry and private key:

# dkim-genkey -d ui.ac.id -s mail

The parameter:

  • -d ui.ac.id means we would like to sign mails from ui.ac.id
  • -s mail sets the selector’s name is “mail“. Selector is an entry in DNS that holds public key that will be used by other mail servers to verify the signature signed by origin mail server. Well, I decide not to define this further to simplify things. You could google it.

The command will generate two files: mail.txt which contains DNS entry and mail.private which is the private key that would be used to sign the letter. Here’s the example of mail.txt:

mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCS...AB" ; ----- DKIM mail for ui.ac.id

The public key entry is being cut to save space pertaining aesthetic aspect in this blog post. I would put the private key into /etc/dkim directory. The directory is non-existence, so we have to create it first.


 

# mkdir /etc/dkim
# mv mail.private /etc/dkim

Now, the DNS part. I would refined the entry to add “t=y” and remove the comments. I’m also appending our domain after _domainkey (watch for the dot after “id”). So, it would be just like this:

mail._domainkey.ui.ac.id. IN TXT "v=DKIM1; g=*; t=y; k=rsa; p=MIGfMA0GCS...AB"

And put that in your DNS database and reload it.

Default installation do not run the DKIM-Milter. We need to set the DKIM-Milter in order to run. First, edit /etc/dkim-filter.conf file. Here’s the relevant things that I’ve change to suite my need: (just find the line)

Domain      ui.ac.id 
KeyFile     /etc/dkim/mail.private
Selector    mail
Mode        sv
Amazing thing about Debian is it has a great documentation style, so you can read the comments on the configuration file for further information. To have a functional DKIM-Milter, edit /etc/default/dkim-filter file to set where it should listen/respond to. To simplify things, I choose to have network socket than the UNIX socket. Unix socket slightly better in performance, but it must be set so that the chrooted Postfix and the DKIM-Milter service can both read and write it. I uncomment this:
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
Last piece that should be configured is the Postfix configuration to use the DKIM-Milter. Edit /etc/postfix/main.cf file and add these lines:

 

smtpd_milters = inet:localhost:12345
non_smtpd_milters = inet:localhost:12345
Lastly, restart Postfix and DKIM-Milter service:
# invoke-rc.d dkim-filter restart
# invoke-rc.d postfix restart

We are using the friendly GMail for testing. Here’s what we do in one of our testing subdomain before we set the DKIM: Before DKIM

After we set the DKIM:
After DKIM

Now GMail knows our test subdomain. To check if our verification also works, we send the a mail from GMail to our test domain and would have these on the header:

Authentication-Results: groups.ui.ac.id; dkim=pass (1024-bit key)
header.i=@gmail.com; dkim-asp=none

There are things that I’m not covering, like the multiple selector and using 3rd party like Verisign to accomplish that, handling subdomains, using both DKIM and DomainKey, setup UNIX socket, etc. Don’t worry, for a single domain, the tutorial may run well.

Reference: Coker, Russel. 2008. Installing DKIM and Postfix in Debian. http://etbe.coker.com.au/2008/09/18/installing-dkim-postfix-debian/ Postfix. 2009. Postfix before-queue Milter support. http://www.postfix.org/MILTER_README.html Sendmail Consortium, The. 2009. http://www.sendmail.org/dkim