Friday, December 18, 2009

Build snort inline in Ubuntu 9.10

For IDS experiment in Linux, I was trying snort inline and hlbr. Building hlbr was smooth. But snort inline, as of version 2.6.1.5 can't be smoothly built on Ubuntu 9.10. You need older version of libnet0. It also depend on libdnet, which in Ubuntu renamed into libdumbnet due to name conflict to older DECNet package. So you also need to modify snort inline with this patch: http://cecunguk.blankonlinux.or.id/~andika/snort-inline.patch.

$ wget http://downloads.sourceforge.net/project/snort-inline/snort_inline%20source%20%282.6.x%29/snort_inline-2.6.1.5/snort_inline-2.6.1.5.tar.gz
$ wget http://cecunguk.blankonlinux.or.id/~andika/snort-inline.patch
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/libn/libnet0/libnet0_1.0.2a-7.dsc
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/libn/libnet0/libnet0_1.0.2a.orig.tar.gz
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/libn/libnet0/libnet0_1.0.2a-7.diff.gz
# prepare old libnet
$ dpkg-source -x libnet0_1.0.2a-7.dsc
$ cd libnet0-1.0.2a
$ fakeroot debian/rules binary
$ cd ..
$ sudo dpkg -i libnet0_1.0.2a-7_*.deb
# build snort inline
$ tar xvfz snort_inline-2.6.1.5.tar.gz
$ cd snort_inline-2.6.1.5
$ patch -p1 < ../snort-inline.patch
$ sudo apt-get install iptables-dev libnetfilter-queue-dev libdumbnet-dev
$ ./configure
$ make
$ sudo make install
Happy hacking!

Monday, November 16, 2009

Little Green Guys With Guns


Beberapa hari ini saya mulai kecanduan suatu permainan: LGGwG. Ini adalah permainan strategi, para pemainnya bergantian melangkah. Strategi diatur bisa melalui klien Windows, Mac, maupun web-based bila Anda bukan pemakai Mac maupun Windows. Untuk klien berbasis web, diperlukan java selain peramban.

Setiap kali pemain mendapat giliran, dia dapat mengatur pergerakan pasukannya. Unit mana bergerak ke mana, menunggu, menembak, atau diam. Ternyata seringkali rancangan pergerakan yang ketika kita coba di aplikasi klien terlihat mulus, ketika diadu dengan rancangan lawan kita, banyak hal yang tak terduga.

Yang juga membuat LGGwG menarik adalah, adanya sangat banyak peta. Pengguna bahkan dapat menyunting sendiri petanya, lalu mengunggah ke situs LGGwG untuk dipakai bertarung. Permainan bisa hanya berdua, sampai berdelapan. Setiap peta baru memerlukan strategi baru tentu saja.

Variasi strategi tidak hanya di tengah permainan. Beberapa peta mendukung trading, dimana para pemain diberi kesempatan untuk memilih sendiri kombinasi unit pasukannya. Kita bisa memilih pasukan yang kuat dalam pertarungan jarak dekat, atau pasukan sniper yang mampu membidik musuh dari jarak jauh.

Kalau tertarik, jangan lupa untuk mencoba semua tutorial. Setelahnya, baru ikut misi-misi bebas.

Update: saksikan video klipnya di sini: http://lggwg.com/main/tour1

Thursday, October 15, 2009

Interfacing ke Perangkat Fingerprint Scanner

Barusan coba berinteraksi antar perangkat fingerprint scanner merk FingerSpot Desktop Series, yang memiliki interface USB, dengan mesin Linux. Perangkat tersebut dikenali sebagai perangkat 'generik' USB 067b:2303 Prolific Technology, Inc. PL2303 Serial Port, tanpa embel-embel lain yang spesifik mengacu ke FingerSpot. Tapi tidak ada masalah dengan kondisi ini.

Koneksi dari Linux dilakukan melalui /dev/ttyUSB0, dengan parameter serial 57600, 8N1.

Begitu user yang sudah terdaftar di perangkat melakukan pemindaian sidik jari, dan pemindaian berhasil, perangkat otomatis mengirim string ASCII dengan bentuk berikut:

(kqinfo,no_seri_perangkat,id,in_out,tahun,bulan,tanggal,jam,menit,detik)
  • Field id adalah integer 4 digit, mulai dari 0001, yang mengacu ke daftar pengguna yang disimpan di dalam perangkat.
  • Field tahun s/d detik masing-masing terdiri dari 2 digit. Bila angka < 10, digit pertama diisi nol.
  • Field tahun di-offset 2000 (09 berarti tahun 2009, dst).
  • Field in_out berisi 0 untuk in atau 1 untuk out.

Sangat sederhana. Tentu saja cukup mudah untuk di-spoof juga :(

Tuesday, October 13, 2009

Friday, October 02, 2009

Penerjemahan: Deadline dll

Acuan penerjemahan Gnome: Localisation Guide. Jangan terjemahkan modul berikut, karena obsolete: esound, libgnomevfs, libgnomeprint, libgnomeprintui, libart_lgpl, libbonobo(ui), libglade, libgnome, libgnomecanvas, libgnomeprint(ui), libgnomeui. Deadline masih sekitar 6 bulan lagi karena 2.28 baru saja dirilis.

Moblin 2.1: deadline 12 Oktober 2009

Ubuntu Karmic Koala: skedul rilis 29 Okt, deadline terjemahan non language-pack 15 Okt, language-pack 22 Okt.

Wednesday, September 09, 2009

Uji Coba Flexinet Di Ubuntu Jaunty

Beberapa hari ini saya mencoba memakai Flexinet untuk menyambung ke Internet. Modem yang dipakai bermerek Skydata model BRG-U100. Dari lsusb, IDnya adalah 2227:3105. Dari lsusb -v akan muncul info lebih lengkap, idVendor 0x2227 = Samwoo Enterprise, sedangkan idProduct 0x3105 = Skydata SKD-U100. Ternyata modem CDMA tersebut tidak selalu langsung dikenal oleh Ubuntu Jaunty, yang akan menampilkan pesan berikut di syslog:

Sep  8 22:07:50 quirk-a kernel: [ 1457.112160] usb 4-2: new full speed USB device using uhci_hcd and address 3
Sep 8 22:07:50 quirk-a kernel: [ 1457.349099] usb 4-2: configuration #1 chosen from 1 choice
Sep 8 22:07:50 quirk-a kernel: [ 1457.352232] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
Sep 8 22:07:57 quirk-a NetworkManager: (ttyACM0): ignoring due to lack of mobile broadband capabilties
Apabila proses deteksi modem lancar, di syslog akan muncul pesan berbeda:
Sep  8 21:48:40 quirk-a kernel: [  307.604159] usb 4-2: new full speed USB device using uhci_hcd and address 2
Sep 8 21:48:41 quirk-a kernel: [ 307.848088] usb 4-2: configuration #1 chosen from 1 choice
Sep 8 21:48:41 quirk-a kernel: [ 307.889370] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
Sep 8 21:48:41 quirk-a kernel: [ 307.966393] usbcore: registered new interface driver cdc_acm
Sep 8 21:48:41 quirk-a kernel: [ 307.966402] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
Sep 8 21:48:47 quirk-a NetworkManager: (ttyACM0): found serial port (udev:CDMA hal:)
Sep 8 21:48:47 quirk-a NetworkManager: (ttyACM0): deferring until all ports found
Sep 8 21:48:51 quirk-a NetworkManager: Re-checking deferred serial ports
Sep 8 21:48:51 quirk-a NetworkManager: (ttyACM0): new Modem device (driver: 'cdc_acm')
Sep 8 21:48:51 quirk-a NetworkManager: (ttyACM0): exported as /org/freedesktop/Hal/devices/usb_device_2227_3105_SKD_U20_000_if0_serial_unknown_0
Analisis sementara, inisialisasi modem ini kadang perlu waktu > 3 detik, padahal program pendeteksi modem di Jaunty diset dengan timeout 3 detik. Solusi sementara adalah cabut-pasang modem sampai Jaunty otomatis mengenali, karena program pendeteksi di /lib/udev/nm-modem-probe memiliki batas timeout 3 detik yang di-hardcode.

Setelah modem terdeteksi, proses setup koneksi via network manager dapat dilakukan seperti biasa. Tidak perlu memakai wizard, karena memang Flexinet belum terdaftar di wizard.

Satu perangkat keras lagi yang tidak perlu driver khusus di Linux! (Walaupun perlu tweaking dan kesabaran untuk dapat memakainya).

Thursday, September 03, 2009

Brain Fuck Scheduler for Linux Kernel (aka Welcome Back Con Kolivas)

Take newest BFS patch from http://ck.kolivas.org/patches/bfs/2.6.30-sched-bfs-203.patch, start from mainline kernel 2.6.30.3, then apply 3 patches:

tar xvfj vanilla/linux-2.6.30.3.tar.bz2 
cd linux-2.6.30.3/
patch -p1 < ../ck/2.6.30-sched-bfs-203.patch
bzip2 -dc ../vanilla/patch-2.6.30.3-4.bz2 | patch -p1
# skip 2 patches to kernel/sched.c and kernel/sched_rt.c above
bzip2 -dc ../vanilla/patch-2.6.30.4-5.bz2 | patch -p1
cd ..
mv linux-2.6.30.3 linux-2.6.30.5-ck
... and now reconfig, compile, reboot, test, loop

ps: don't forget to read BFS FAQ

Friday, August 14, 2009

Header PO Standar Untuk Terjemahan ke Bahasa Indonesia

Ketika mulai menterjemahkan Tomboy, Gtranslator versi 1.9.4 terus saja menampilkan pesan kesalahan invalid plural forms. Ternyata mesti diisi sebagai berikut untuk bahasa Indonesia:

"Language-Team: Indonesian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
referensi: disini

Wednesday, August 12, 2009

Memeriksa Penggunaan Memori di Linux

Setelah saya mengeluh tentang betapa borosnya aplikasi memakan memori, MDAMT mengirim link tentang analisis pemakaian memori yang menyesatkan. Artikel tersebut merujuk ke beberapa tool untuk analisis memori. Disana disarankan untuk memakai exmap. Sayang di kernel versi baru, exmap tidak berjalan mulus. Setelah di-patch-pun, untuk platform x86_64, exmap masih gagal menampilkan angka-angka yang benar.

Sebenarnya dengan command line, dapat juga diperoleh angka pemakaian memori yang cukup representatif:

$echo 0 $(cat /proc/4343/smaps | grep Pss | awk '{print $2}' | sed 's#^#+#' ) | bc
584017
Tapi hasilnya kok tidak jauh berbeda dengan top:
$ top -n 3 -p 4343
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.8%us, 4.9%sy, 0.0%ni, 89.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3851036k total, 3158780k used, 692256k free, 122012k buffers
Swap: 3903752k total, 571888k used, 3331864k free, 994192k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4343 andika 20 0 1135m 581m 23m S 0 15.5 60:53.80 /usr/lib/firefox-3.0.13/firefox
Salah satu komentar pada blog Lubos Lunak menyarankan untuk mencoba smem. Hasilnya cukup menarik:
$ ./smem -u
User Count Swap USS PSS RSS
andika 63 111268 1156636 1185668 1393260

$ ./smem > z; head -1 z; tail -3 z
PID User Command Swap USS PSS RSS
30205 andika evince file:///tmp/Paket-De 8 76328 78288 89284
12172 andika /usr/lib/opera/9.64/opera 0 123132 123602 126964
4343 andika /usr/lib/firefox-3.0.13/fir 8 581528 584012 595924

Mari Berburu Supernova

Setelah projek Galaxy Zoo yang berusaha mengidentifikasi tipe galaksi menuai sukses, rupanya ada projek lanjutan yaitu Galaxy Zoo Supernova.

Ini terjemahan pengumumannya:

Galaxy zoo memerlukan bantuan anda lagi, kali ini dengan projek khusus untuk mencari supernova - bintang yang meledak. Citra dari kandidat-kandidat yang mungkin ditangkap oleh sebuah teleskop di California sedang dimasukkan ke situs web kami di http://supernova.galaxyzoo.org. Astronom sedang bersiap di Canary Islands untuk menindaklanjuti kemungkinan-kemungkinan yang paling menarik, tapi pertama-tama kami perlu bantuan anda untuk memutuskan kemana mesti mengarahkan teleskop. Mohon luangkan waktu untuk mengunjungi situs tersebut, baca tutorialnya, lalu mulai berburu.

Tentu saja, apabila bintang meledak tidak menarik bagi anda, kami masih perlu bantuan anda pada Galaxy Zoo di http://www.galaxyzoo.org. Kemajuan Zoo 2 baik - dan kami akan mengumumkan berita menarik dalam 2 minggu mendatang - tapi setiap klik masih penting, dan akan membantu kami membuat lebih banyak penemuan seperti 'Pea' - galaksi kecil, bulat, hijau yang pertama kali diidentifikasi oleh para Zooite, yang nampaknya menjadi tempat formasi bintang yang paling efisien di jagat raya.

Monday, August 10, 2009

Banyak Notifikasi GMail Nyasar

Dalam setahun ini telah ada 19 notifikasi dari GMail yang nyasar ke mailbox saya. Yang mengherankan, polanya tidak jelas. Apakah nyasar ke saya bila nama asli memuat kata 'Andika'?

Ini daftarnya:
satria.andika35@gmail.com
citra.astuti@gmail.com
federicosimatupang@gmail.com
fransnapitupulu01@gmail.com
bosndok@gmail.com
ploso.andika9@gmail.com
febrikalandika91@gmail.com
andika1212.dika@gmail.com
andika.charly@gmail.com
lolaandika@gmail.com
rmdhan05@gmail.com
andika.gilang.r@gmail.com
chulunt@gmail.com
revandika88@gmail.com
republik.wahyudi659@gmail.com
pencaric53@gmail.com
agussptr695@gmail.com
ikhaandika@gmail.com
dwihandika@gmail.com

Wednesday, July 22, 2009

Ke Jogja

Baru saja sampai ke Jogja, Kamis besok akan mengisi acara training APNIC. Sambil menunggu check in dsb, baca-baca berita:

Wednesday, July 15, 2009

Penerjemahan untuk Karmic telah bisa dimulai!

David Planella mengumumkan bahwa penerjemahan untuk Ubuntu Karmic Koala telah dibuka. Silahkan kunjungi translations.lp.

This will be the first Ubuntu release to feature message sharing functionality, which will initially allow Jaunty and Karmic translations to be shared on a template and message basis. This will mean that you no longer need to translate the same strings in Jaunty and Karmic. Translate it in one, and your translation will automatically -read instantly- appear in the other.
Yay!

Tuesday, June 30, 2009

Mencoba Ksplice di Ubuntu 9.04

Ksplice mulai bisa dipakai di Ubuntu Jaunty. Bila sebelumnya baru berupa implementasi internal, kini ada layanan Ksplice Uptrack yang dapat dipakai oleh sebarang user untuk memperoleh update, mirip dengan anti virus.

Instalasi maupun update mudah, tapi perlu bandwidth memadai karena default timeout hanya 10 detik, yang berlaku untuk mendaftar (untuk memperoleh key), maupun untuk mengunduh setiap patch yang berukuran sampai sekitar 200kB. Berarti kita perlu bandwidth minimal sekitar 256 kbps.

Wednesday, May 27, 2009

Mengendalikan Proses Rakus CPU Di Linux

Kalau kita memakai laptop yang memiliki CPU multi core, lalu ada proses yang menghabiskan CPU, ada cara agar suhu CPU kita tidak melejit: memaksa CPU bekerja pada clock yang lebih rendah. Tapi bagaimana agar proses lain yang kadang perlu CPU bekerja secepat mungkin tidak ikut direm? Kita bisa gunakan kombinasi schedtool dan cpufrequtils.

# proses dipaksa hanya berjalan di CPU1, -a 0x1 untuk memaksa ke CPU0
$ sudo schedtool -a 0x2 PID_proses_rakus
# atur governor clock CPU1 ke userspace
$ sudo cpufreq-set -c 1 -g userspace
# paksa clock CPU1 maks 1.2GHz
$ sudo cpufreq-set -c 1 -u 1.2g

Thursday, May 21, 2009

Continuing Broken rsync

$ ls -lah|grep nanggar
-rwxrwxrwx 1 root root 675M 2009-05-04 02:20 nanggar-alternate-i386.iso
-rwxrwxrwx 1 root root 675M 2009-05-04 03:26 nanggar-cdlive-i386.iso
-rwxrwxrwx 1 root root 334M 2009-05-20 18:22 .nanggar-cdlive-i386.iso.ThN6oe

$ dd if=nanggar-cdlive-i386.iso of=2nd-part bs=1M skip=334
$ mv nanggar-cdlive-i386.iso nanggar-cdlive-i386.iso.prev
$ mv .nanggar-cdlive-i386.iso.ThN6oe nanggar-cdlive-i386.iso
$ cat 2nd-part >> nanggar-cdlive-i386.iso
$ rsync -avP cdimage.blankonlinux.or.id::cdimage/livecd-harian/current/nanggar-cdlive-i386.iso .
Why does it matter? Because we still need old, same parts from previous iso to prevent rsync redownload them again. But how to force rsync to know that old part was already downloaded? By putting them into the same iso of course.

Old iso consists of two parts: O1 and O2. New iso consists of two parts: N1 and N2. N1 has been downloaded into dotfile, while N2 is to be checked against O2, and we only need N2 vs O2 difference. So we need to create temporary iso, which consists of N1 (=dotfile) and O2, to enable rsync delta algorithm.

I hope this idea is clear enough.

Tuesday, May 05, 2009

Ternyata Kadang Masih Perlu Image Floppy

Untuk membuat berkas image floppy berukuran 1.44MB:

$ mkfs.msdos -C floppy0.img 1440
Lalu agar bisa diisi, di-mount loopback saja:
sudo mount -o loop,uid=1000 floppy0.img /mnt/floppy
Baru salin-salin berkas:
$ cp /path/to/source/file /mnt/floppy
Jangan lupa dilepas kaitnya sebelum dipakai:
$ sudo umount /mnt/floppy
Daftarkan di VirtualBox:
$ VBoxManage openmedium floppy floppy0.img

Sumber:
Create mount and copy floppy disks images under linux


menunggu komen hari gini masih pake floppy? :D

Wednesday, April 29, 2009

PCI Slot yang Sangat Spesial



Pantas mas BR sempat bingung pas mau pasang NIC baru. Saya sempat pasang NIC lain yang kebetulan punya 2 'coakan' (bahasa Indonesianya apa ya? :D) sehingga tetap bisa ditancapkan.

Update 20090429 17:47
Ternyata menurut Wikipedia, itu adalah slot PCI 3.3V *facepalm*
Terima kasih buat Vicong yang telah menyadarkan saya.

Mencoba Ubuntu Jaunty Netbook Remix

Axioo CMPC gagal mengenali modem USB Sierra Wireless Compass 885 mungkin karena versi kernel 2.6.22 terlalu tua. Daripada upgrade distro bawaan mesin yang merupakan turunan PCLinuxOS, yang lebih memerlukan interaksi intensif, saya coba saja UNR, dengan harapan berbagai tool untuk konfigurasi sudah lebih netbook-friendly.

Langkah pertama tentu saja menyiapkan media boot, yaitu USB flash 2 GB. Percobaan instalasi dengan cara mudah ternyata malah tidak mudah. Proses penulisan ke flash sangat lambat. Saya coba cara alternatif memakai dd dengan bs=1M. Lancar. Rupanya 'cara mudah' juga memanggil dd tapi parameter bs=1k (doh).

Boot lancar. Konfigurasi modem USB beres (walaupun ternyata dialog konfigurasi juga masih tidak netbook-friendly karena tinggi tampilan dialog > dari tinggi layar). Sound lupa dicoba. Ethernet belum dicoba karena di rumah tidak ada ethernet hub/switch. Wifi belum dicoba. Setelah Dian mencoba live distro ini dan puas, nanti distro lama akan ditimpa, dan testing lain dilengkapi. Stay tuned!

update: Koneksi ke AP WiFi yang memakai WPA lancar, jauh lebih mudah daripada PCLinuxOS.
update-2: Sound dan ethernet tidak bermasalah. Sleep + hibernate belum lancar, perlu tweak (ToDo).
update-3: 2 Mei 2009. Sleep lancar setelah di-patch (lihat bug report Ubuntu no 370778), hibernate tidak ada masalah.

Thursday, April 23, 2009

Tips Nekat Ambil ISO Untuk Para Fakir Bandwidth (a.k.a Menyambut Rilis Ubuntu 9.04)

Ingin segera merasakan Ubuntu 9.04 tapi fakir bandwidth? Kalau anda sudah punya ISO 9.04 RC, trik ini bisa dipakai:

$ cp ubuntu-9.04-rc-desktop-i386.iso ubuntu-9.04-desktop-i386.iso
$ rsync -avP mirror.favorit.anda::ubuntu-releases/.pool/ubuntu-9.04-desktop-i386.iso .
receiving incremental file list
ubuntu-9.04-desktop-i386.iso
96623225 13% 81.49kB/s 2:10:08
Apa untungnya? Sebenarnya ISO 9.04-rc vs 9.04 hanya berbeda 'sedikit'. Dengan rsync anda hanya perlu mengambil perbedaannya, yang pasti jauh lebih kecil daripada ukuran ISO yang ~700MB. Perhatikan bahwa kecepatan unduh pernah mencapai angka yang berlipat-lipat daripada bandwidth anda. Pada saat itu, rsync mengambil potongan dari salinan lokal alih-alih dari server sumber.

Selamat menikmati Jaunty Jackalope!

ps: titik tunggal di akhir baris perintah jangan sampai tertinggal

update: pemakaian rsync dapat menghemat 584 MB
   732909568 100%  271.13kB/s    0:43:59 (xfer#1, to-check=0/1)

sent 189658 bytes received 148727157 bytes 55973.24 bytes/sec
total size is 732909568 speedup is 4.92

Tuesday, April 07, 2009

Mengamati Mekanisme Back End Facebook

Kehebohan SNTM di Facebook akhir-akhir ini malah menimbulkan pertanyaan sangat menggelitik di benak saya: kenapa kurva pertambahan pendukung SNTM stabil?

Perhatikan kemiringan kurva, dari pukul 8 pagi sampai 10 malam. Linier kan? Padahal kabar panas seperti ini mestinya membuat efek snowball kan? Atau paling tidak ada 'ledakan' saat istirahat makan siang. Atau saat jam pulang kantor. Atau kapanpun. Yang jelas bagi saya, linieritas itu sangat membingungkan.

Sebenarnya data delta, bukan kumulatif, bisa lebih berbicara.

Akan tetapi data tersebut agak meragukan karena pada sekitar pukul 17 frekuensi sampling diubah dari per 10 menit menjadi per 5 menit. Walaupun post-processing juga ikut disesuaikan, tapi seolah ada kesalahan yang belum bisa saya jelaskan penyebabnya.

Dugaan saya, berdasar keduga grafik di atas, adalah mekanisme back end Facebook yang mengerem. Tapi apa gunanya?

Tracking grup SNTM baru menarik juga untuk diamati, karena trend terdahulu, yaitu penambahan yang linier juga terjadi disini.

Sunday, February 08, 2009

Tweaking htop display


htop is more flexible than top from procps. But recently I found a tiny inconvinience when htop display processes which use more than 10GB memory. Those processes use 6 characters in VIRT field, while normally it is 5 or less.





$ diff -urN Process.c.orig Process.c
--- Process.c.orig 2008-09-23 10:43:34.000000000 +0700
+++ Process.c 2009-02-07 23:21:57.000000000 +0700
@@ -205,8 +205,8 @@
static void Process_printLargeNumber(Process* this, RichString *str, unsigned long number) {
char buffer[11];
int len;
- if(number >= (1000 * ONE_M)) {
- len = snprintf(buffer, 10, "%4.2fG ", (float)number / ONE_M);
+ if(number >= (10 * ONE_M)) {
+ len = snprintf(buffer, 10, "%3.1fG ", (float)number / ONE_M);
RichString_appendn(str, CRT_colors[LARGE_NUMBER], buffer, len);
} else if(number >= (100000)) {
len = snprintf(buffer, 10, "%4ldM ", number / ONE_K);

After small modification above, now htop behaves 'properly'.

Tuesday, January 20, 2009

Setup Mercurial pada RHEL 4


/* pasang paket mercurial */
$ sudo yum install mercurial
/* ambil flup, ekstrak, instal modul flup */
$ wget http://www.saddi.com/software/flup/dist/flup-1.0.1.tar.gz
$ tar xvfz flup-1.0.1.tar.gz
$ sudo easy_install flup-1.0.1
/* ikuti langkah selanjutnya di http://www.selenic.com/mercurial/wiki/index.cgi/RHEL4HgWebDirSetup */

Sunday, January 11, 2009

Cacah Partisi SCSI Maks Pada Linux

Sempat panik ketika salah satu partisi (yang berukuran paling besar) pada disk eksternal saya tidak dapat di-mount, bahkan tidak dikenal oleh Linux. Cari-cari info kesana kemari, ternyata ini limitasi device SCSI, yang hanya menyediakan 16 nomor minor untuk setiap major. Dari file Documentation/devices.txt di source kernel:

  8 block       SCSI disk devices (0-15)
0 = /dev/sda First SCSI disk whole disk
16 = /dev/sdb Second SCSI disk whole disk
32 = /dev/sdc Third SCSI disk whole disk
...
240 = /dev/sdp Sixteenth SCSI disk whole disk

Partitions are handled in the same way as for IDE
disks (see major number 3) except that the limit on
partitions is 15.
Jadi misalnya hard disk tersebut dikenal sebagai /dev/sdb, maka hanya akan ada /dev/sdb1 s/d /dev/sdb15 yang dapat diakses oleh Linux. Karena disk eksternal saya memakai interface USB, yang oleh Linux ditangani melalui subsistem SCSI, maka pembatasan tersebut berlaku. Kelihatannya tidak mudah membongkar pembatasan tersebut (belum sempat dicoba sih), karena berakibat panjang pada pergeseran nomor minor block device SCSI. Bila minor untuk /dev/sda kita perbesar dari 16 ke 32, maka nomor awal minor sdb bergeser dari 16 ke 32, sdc dari 32 ke 48, dst. Cacah device SCSI yang didukung akan berkurang dari 16 ke 8. Barangkali untuk mayoritas pengguna, 8 device SCSI yang masing-masing bisa memiliki 32 sub-device, lebih bermanfaat daripada 16 device yang masing-masing hanya memiliki 16 sub-device.

Friday, January 09, 2009

Patch for Broadcom NetXtreme II 10GbE on kernel 2.6.22

While preparing some IBM x3950 M2 machines, I got several problems. Distro used is Debian Lenny AMD64 varian, which provides kernel 2.6.22 and 2.6.26. Machine couldn't boot kernel 2.6.26, but this problem needs proper IPMI setup or local access (which I don't have now). So back to kernel 2.6.22. Next problem is that 2.6.22 doesn't support Broadcom BCM57710 10GbE. Searching IBM's support, I find potential driver v1.45.20, but they are for SLES/RHEL. Time to get dirty!

First try, too many errors:

$ make KVER=2.6.22-bnx
make -C /lib/modules/2.6.22-bnx/build M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6-2.6.22'
CC [M] /home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.o
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c: In function ‘bnx2x_xmit_type’:
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9759: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9764: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c: In function ‘bnx2x_pkt_req_lin’:
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9809: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9810: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c: In function ‘bnx2x_start_xmit’:
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9899: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9899: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9968: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9975: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9976: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9978: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9992: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9992: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9992: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9992: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10000: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10007: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10008: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10044: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10045: error: ‘struct sk_buff’ has no member named ‘h’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10048: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10048: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10048: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10048: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10050: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:10056: error: ‘struct sk_buff’ has no member named ‘nh’
make[2]: *** [/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.o] Error 1
make[1]: *** [_module_/home/andika/src/broadcom/bnx2x-1.45.20] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6-2.6.22'
make: *** [bnx2x.o] Error 2
After long warming up, last effort involving GNU global (gtags, htags), creating cross references for kernel 2.6.21, 2.6.22, and 2.6.28, path to solution started to appear. The culprit is file bnx2x-compat.h which is a compatibility header created to make this driver compatible to multiple kernel versions. Line #4 originally:
#if (LINUX_VERSION_CODE < 0x020617)
changing this to
#if (LINUX_VERSION_CODE < 0x020616)
made a big difference:
make -C /lib/modules/2.6.22-bnx/build M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6-2.6.22'
CC [M] /home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.o
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c: In function ‘bnx2x_interrupt’:
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:1746: error: ‘struct bnx2x_fastpath’ has no member named ‘napi’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:1746: error: too many arguments to function ‘netif_rx_schedule’
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c: In function ‘bnx2x_poll’:
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9660: error: ‘napi’ undeclared (first use in this function)
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9660: error: (Each undeclared identifier is reported only once
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9660: error: for each function it appears in.)
/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.c:9660: error: too many arguments to function ‘netif_rx_complete’
make[2]: *** [/home/andika/src/broadcom/bnx2x-1.45.20/bnx2x_main.o] Error 1
make[1]: *** [_module_/home/andika/src/broadcom/bnx2x-1.45.20] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6-2.6.22'
make: *** [bnx2x.o] Error 2
All error disappeared after this complete patch:
--- bnx2x_compat.h.asli 2008-08-26 16:07:35.000000000 +0700
+++ bnx2x_compat.h 2009-01-08 22:51:52.000000000 +0700
@@ -1,14 +1,16 @@
#ifndef __BNX2X_COMPAT_H__
#define __BNX2X_COMPAT_H__

-#if (LINUX_VERSION_CODE < 0x020617)
+#if (LINUX_VERSION_CODE < 0x020618)

#define skb_copy_from_linear_data_offset(skb, pad, new_skb_data, len) \
memcpy(new_skb_data, skb->data + pad, len)

#define netif_rx_schedule(dev, X) netif_rx_schedule(dev)
#define netif_rx_complete(X, Y) netif_rx_complete(dev)
+#endif

+#if (LINUX_VERSION_CODE < 0x020616)
/* skb_buff accessors */
#define ip_hdr(skb) (skb)->nh.iph
#define ipv6_hdr(skb) (skb)->nh.ipv6h
Alternatively you can get the patch here: http://research.indocisc.com/~andika/ibm/bnx2x-compat-2.6.22.patch

NIC working now, next target is making 2.6.27+ kernel boots.

Ayo Menerjemahkan Ubuntu Jaunty!

Baru saja saya menerima email:

Message-ID: <49661839.30506@canonical.com>
Date: Thu, 08 Jan 2009 23:14:01 +0800
From: Arne Goetje
To: ubuntu-translators@lists.ubuntu.com
Subject: Jaunty now open for translations

Dear all,

the subject says it all: We have opened Rosetta for Jaunty translations.

Happy translating! :)

Cheers
Arne

Bagaimana kondisi saat ini?
Indonesian statistics in Jaunty
Translatable items: 466.046
Untranslated: 375.453