Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Thursday, April 18, 2013

Instalasi Linux pada Asus X45U - bagian kedua

Cara mudah memasang Linux yang perangkat jaringannya tak dikenali oleh installer adalah dengan memakai bantuan Ethernet USB yang chipsetnya sudah dikenal oleh kernel lama. Installer Debian 6 yang semula saya pakai memiliki kernel 2.6.32. Setelah memasang versi minimum OS di notebook ini, proses dilanjutkan dengan upgrade OS dari squeeze (Debian 6) ke wheezy (Debian 7). Wheezy memakai kernel 3.2.0.

Setelah wheezy terpasang, reboot, maka ethernet onboard langsung dikenali. Posting selanjutnya akan membahas tentang setup VGA, sound, WiFi, dan berbagai periferal lain di notebook Asus X45U.

Instalasi Linux pada Notebook Asus X45U - bagian pertama

Hari ini berkesempatan ngoprek notebook Asus X45U. Notebook datang dengan OS FreeDOS. Langsung dicoba pasang Linux saja. Coba boot pakai Ubuntu Lucid yang sudah terpasang di USB flash disk. Kok gagal? Bagaimana cara masuk ke menu BIOS? Ternyata cukup dengan menekan F2. Coba lagi diperiksa kenapa tidak bisa boot ke flash disk. Tidak ditemukan masalahnya dimana.

Pindah boot via CD. Debian 6.0. Sukses boot setelah urutan boot diubah paksa. Installer gagal mengenali Ethernet maupun WiFi :(

01:00.0 Network controller [0280] RaLink Device [1814:5390]
02:00.0 Ethernet controller [0200] Atheros Communication Device [1969:1091] (rev 10)
Mesti cari tahu installer Ubuntu/Debian/... mana yang sudah mendukung salah satu dari dua perangkat jaringan di atas, agar instalasi dapat dilanjutkan via jaringan.

Thursday, September 30, 2010

Cara Cepat Mengakses Penerjemahan Paket Ubuntu

Ubuntu Lucid Lynx. Saat boot. Disk sedang diperiksa kesehatannya secara otomatis memakai fsck. Di layar muncul pesan terjemahan yang terpotong karena terlalu panjang.

Bagaimana memperbaiki masalah ini?
1. catat pesan yang tampil
2. cari berkas yang memuat pesan tersebut

cd /usr/share/locale-langpack/id/LC_MESSAGES
atau
cd /usr/share/locale/id/LC_MESSAGES
grep "pesan yang tampil" *
3. cari nama paket yang memuat berkas tersebut
dlocate NAMABERKAS
4. menuju ke translation.lp
launchpad-integration -t -P NAMAPAKET

Wednesday, May 12, 2010

Just Another Brown Paperbag Day

Salah satu kebahagiaan saya sebagai pemakai aplikasi open source, adalah ketika menemukan bug, melaporkan ke pengelola aplikasi, dan mendapat tanggapan positif dari dia/mereka. Tapi kadang kita mesti menahan diri untuk tidak terburu-buru melaporkan 'bug' seperti yang satu ini.

Ternyata gara-gara GlobalMenu yang buggy. Jadi impian Linux/GNOME meniru Mac masih mesti ditunda ya? ;)

Tuesday, May 11, 2010

Nikmatnya Memakai Linux

Komputer rusak tapi hard disk masih ok? Pindahkan saja hard disk ke komputer baru. Tanpa perlu reinstall, langsung semua hardware dikenali, dan semua aplikasi berjalan lancar.

Thursday, April 01, 2010

Old and New ... Battery

$ cat /proc/acpi/battery/BAT1/*
alarm: unsupported
present: yes
design capacity: 5184 mAh
last full capacity: 1423 mAh
battery technology: rechargeable
design voltage: 10800 mV
design capacity warning: 518 mAh
design capacity low: 155 mAh
capacity granularity 1: 10 mAh
capacity granularity 2: 25 mAh
model number: L08O6C02
serial number:
battery type: LION
OEM info: SONY
present: yes
capacity state: ok
charging state: charged
present rate: 0 mA
remaining capacity: 1423 mAh
present voltage: 12436 mV

$ cat /proc/acpi/battery/BAT1/*
alarm: unsupported
present: yes
design capacity: 18558 mAh
last full capacity: 5184 mAh
battery technology: rechargeable
design voltage: 10800 mV
design capacity warning: 1855 mAh
design capacity low: 556 mAh
capacity granularity 1: 10 mAh
capacity granularity 2: 25 mAh
model number: L08O6C02
serial number:
battery type: LION
OEM info: SONY
present: yes
capacity state: ok
charging state: charged
present rate: 0 mA
remaining capacity: 5183 mAh
present voltage: 12529 mV

Rasanya ada yang salah dengan design capacity baterai baru. Kondisi saat baru mulai diisi:
$ cat /proc/acpi/battery/BAT1/*
alarm: unsupported
present: yes
design capacity: 5184 mAh
last full capacity: 5184 mAh
battery technology: rechargeable
design voltage: 0 mV
design capacity warning: 518 mAh
design capacity low: 155 mAh
capacity granularity 1: 10 mAh
capacity granularity 2: 25 mAh
model number: L08O6C02
serial number:
battery type: LION
OEM info: SONY
present: yes
capacity state: ok
charging state: charging
present rate: 2223 mA
remaining capacity: 2654 mAh
present voltage: 11637 mV
Mungkin ada bug di driver linux, yang muncul karena baterai digonta-ganti dengan cara cabut pasang tanpa power cycle.

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

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

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

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

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.

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.

Tuesday, October 14, 2008

Translasi Lagi

Ada lagi pekerjaan penterjemahan untuk Debian dan Ubuntu. Kali ini bukan menterjemahkan berbagai teks di dalam setiap paket, tapi sekedar deskripsi tentang isi suatu paket, yang ditampilkan ketika kita menjalankan perintah dpkg -l foo, atau apt-cache show bar.

Friday, October 10, 2008

2.6.27 is out

48 MB terkompresi bzip2; filesystem baru untuk media flash: UBIFS; hibernasi varian ketiga setelah suspend dan suspend2, yang didasarkan atas kexec/kdump; driver wifi Atheros atk9k; dsb.

Detail perubahan ada disini http://kernelnewbies.org/LinuxChanges

Wednesday, October 01, 2008

Quicklinks saat Idul Fitri 1429H


  • ToDo yang menarik dan bakal perlu waktu lama: optimasi boot time desktopku. Arjan katanya berhasil memotong boot time di EEE Pc 901 menjadi tinggal 5 detik!
  • ToDo belajar tool untuk SQL injection: sqlmap

dan tak lupa: selamat Idul Fitri 1429H, mohon maaf lahir & batin