Optimalisasi PostgreSQL 8.3 Untuk Mesin Opteron Pada Distro CentOS 5 64bit

March 30th, 2009

Tulisan kali ini hanya sekedar dokumentasi dari pekerjaan saya di kantor, yang mana saya ditugaskan untuk mencoba server HP Proliant DL 785 G5 dengan spesifikasi menggunakan 4 x Quad Core AMD Opteron 8354 2.2 GHz dan 8 GB RAM. Mesin tersebut rencananya akan digunakan sebagai mesin database utama di kantor saya, database yang digunakan adalah PostgreSQL yang berjalan di atas sistem operasi GNU/Linux.

Untuk saat ini tahapan ujicoba yang saya lakukan adalah menggunakan Distro Linux CentOS 5.2 64bit dengan kernel default, dan menggunakan PostgreSQL 8.3.7 vanilla source yang langsung di ambil dari mirror terdekat PostgreSQL. Sengaja saya menggunakan PostgreSQL 8.3.7 source bukan menggunakan PostgreSQL binary yang telah di bundle dalam paket distro CentOS 5.2, karena selain versi 8.3.7 belum tersedia di dalam distro CentOS, saya ingin mengoptimalkan PostgreSQL sesuai dengan mesin yang digunakan. Untuk itu saya memerlukan source dari PostgreSQL 8.3.7 agar dapat dicompile pada mesin tersebut.

Baik lah, tak perlu berpanjang lebar lagi, karena tujuan dari tulisan ini hanyalah sebagai dokumentasi dari apa yang telah saya kerjakan.

Pertama-tama buat kita buat group dan user dari postgresql

#groupadd -g 26 postgres > /dev/null 2>&1 || :
#useradd -u 26 -g 26 -s /bin/bash -M -r -d /var/lib/pgsql postgres > /dev/null 2>&1 || :

Kemudian download source tarball PostgreSQL 8.3.7 dari mirror terdekat:

#wget http://kambing.ui.edu/postgresql/latest/postgresql-8.3.7.tar.bz2

Lalu ekstrak paket source tarball tersebut dan pindah ke dalam direktori hasil ekstrak

#tar -jxvf postgresql-8.3.7.tar.bz2
#cd postgresql-8.3.7

Setelah itu export variable CFLAGS dan CXXFLAGS yang sesuai dengan arsitektur mesin kita. Hal ini dimaksudkan agar compiler membentuk binari hasil compile khusus untuk arsitektur mesin yang kita miliki. Kemudian jalankan perintah ./configure dengan opsi yang sesuai dengan struktur direktori CentOS 5.2. Ketik baris berikut pada shell

CFLAGS=”-O2 -march=opteron -funroll-loops” \
CXXFLAGS=”-O2 -march=opteron -funroll-loops -felide-constructors -fnoexceptions -fno-rtti” \
./configure \
–prefix=/usr \
–libdir=/usr/lib64 \
–includedir=/usr/include \
–localstatedir=/var \
–sysconfdir=/etc \
–mandir=/usr/share/man \
–infodir=/usr/share/info \
–with-libs=/usr/lib64 \
–with-includes=/usr/include \
–with-docdir=/usr/share/doc \
–enable-shared \
–disable-debug \
–enable-integer-datetimes \
–with-perl \
–with-python \
–with-openssl \
–with-pam \
–with-ldap \
–with-krb5 \
–with-libxml \
–with-libxslt

Setelah itu compile paket tersebut dan install

#make all
#make install

Selanjutnya kita membuat init script PostgreSQL yang akan digunakan untuk star|stop|restart service PostgreSQL, karena paket PostgreSQL yang kita install ini bukan berasal dari CentOS maka init script tersebut harus dibuat manual. Namun tak perlu repot, cukup copy paste init script bawaan CentOS seperti di bawah ini ke dalam file /etc/rc.d/init.d/postgresql

#!/bin/sh
# postgresql This is the init script for starting up the PostgreSQL
# server
#
# chkconfig: – 64 36
# description: Starts and stops the PostgreSQL backend daemon that handles \
# all database requests.
# processname: postmaster
# pidfile: /var/run/postmaster.pid

# Version 6.5.3-2 Lamar Owen
# Added code to determine if PGDATA exists, whether it is current version
# or not, and initdb if no PGDATA (initdb will not overwrite a database).

# Version 7.0 Lamar Owen
# Added logging code
# Changed PGDATA.

# Version 7.0.2 Trond Eivind Glomsrd
# use functions, add conditional restart

# Version 7.0.3 Lamar Owen
# Check for the existence of functions before blindly using them
# in particular — check for success () and failure () before using.
# More Cross-distribution support — PGVERSION variable, and docdir checks.

# Version 7.1 Release Candidate Lamar Owen
# initdb parameters have changed.

# Version 7.1.2 Trond Eivind Glomsrd
# Specify shell for su
# Handle stop better – kill unwanted output, make it wait until the database is ready
# Handle locales slightly differently – always using “C” isn’t a valid option
# Kill output from database initialization
# Mark messages for translation

# Version 7.1.2-2.PGDG Lamar Owen
# sync up.
# Karl’s fixes for some quoting issues.

# Version 7.2b2 Lamar Owen
# version change.

# Version 7.2 final. Lamar Owen
# reload from Peter E.
# Eliminate the pidof postmaster test in stop — we’re using pg_ctl so we don’t need pidof.
# Tested the $? return for the stop script — it does in fact propagate.
# TODO: multiple postmasters.

# Version 7.3 Lamar Owen
# Multiple postmasters, courtesy Karl DeBisschop

# Version 7.4 Lamar Owen.

# Version 7.4.3 Tom Lane
# Support condstop for uninstall
# Minor other changes suggested by Fernando Nasser.

# Version 7.4.5 Tom Lane
# Rewrite to start postmaster directly, rather than via pg_ctl; this avoids
# fooling the postmaster’s stale-lockfile check by having too many
# postgres-owned processes laying about.

# PGVERSION is the full package version, e.g., 7.4.7
# Note: the specfile ordinarily updates this during install
PGVERSION=8.3.7
# PGMAJORVERSION is major version, e.g., 7.4 (this should match PG_VERSION)
PGMAJORVERSION=`echo “$PGVERSION” | sed ’s/^\([0-9]*\.[0-9]*\).*$/\1/’`

# Source function library.
. /etc/rc.d/init.d/functions

# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep “declare”`

# Get config.
. /etc/sysconfig/network

# Find the name of the script
NAME=`basename $0`
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
then
NAME=${NAME:3}
fi

# For SELinux we need to use ‘runuser’ not ’su’
if [ -x /sbin/runuser ]
then
SU=runuser
else
SU=su
fi

# Set defaults for configuration variables
PGENGINE=/usr/bin
PGPORT=5432
PGDATA=/var/lib/pgsql
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base/template1" ]
then
echo “Using old-style directory structure”
else
PGDATA=/var/lib/pgsql/data
fi
PGLOG=/var/lib/pgsql/pgstartup.log

# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}

export PGDATA
export PGPORT

# Check that networking is up.
# Pretty much need it for postmaster.
[ "${NETWORKING}" = "no" ] && exit 1

[ -f "$PGENGINE/postmaster" ] || exit 1

script_result=0

start(){
PSQL_START=$”Starting ${NAME} service: ”

# Make sure startup-time log file is valid

if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
then
touch “$PGLOG” || exit 1
chown postgres:postgres “$PGLOG”
chmod go-rwx “$PGLOG”
[ -x /usr/bin/chcon ] && /usr/bin/chcon -u system_u -r object_r -t postgresql_log_t “$PGLOG” 2>/dev/null
fi

# Check for the PGDATA structure
if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
then
# Check version of existing PGDATA

if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
then
SYSDOCDIR=”(Your System’s documentation directory)”
if [ -d "/usr/doc/postgresql-$PGVERSION" ]
then
SYSDOCDIR=/usr/doc
fi
if [ -d "/usr/share/doc/postgresql-$PGVERSION" ]
then
SYSDOCDIR=/usr/share/doc
fi
if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ]
then
SYSDOCDIR=/usr/doc/packages
fi
if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ]
then
SYSDOCDIR=/usr/share/doc/packages
fi
echo
echo $”An old version of the database format was found.”
echo $”You need to upgrade the data format before using PostgreSQL.”
echo $”See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information.”
exit 1
fi

# No existing PGDATA! Initdb it.

else
echo -n $”Initializing database: ”
if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
then
mkdir -p “$PGDATA” || exit 1
chown postgres:postgres “$PGDATA”
chmod go-rwx “$PGDATA”
fi
# Clean up SELinux tagging for PGDATA
[ -x /sbin/restorecon ] && /sbin/restorecon “$PGDATA”
# Initialize the database
$SU -l postgres -c “$PGENGINE/initdb –pgdata=’$PGDATA’ –auth=’ident sameuser’” >> “$PGLOG” 2>&1 < /dev/null
# Create directory for postmaster log
mkdir “$PGDATA/pg_log”
chown postgres:postgres “$PGDATA/pg_log”
chmod go-rwx “$PGDATA/pg_log”

[ -f "$PGDATA/PG_VERSION" ] && echo_success
[ ! -f "$PGDATA/PG_VERSION" ] && echo_failure
echo
fi

echo -n “$PSQL_START”
$SU -l postgres -c “$PGENGINE/postmaster -p ‘$PGPORT’ -D ‘$PGDATA’ ${PGOPTS} &” >> “$PGLOG” 2>&1 < /dev/null
sleep 2
pid=`pidof -s “$PGENGINE/postmaster”`
if [ $pid ] && [ -f "$PGDATA/postmaster.pid" ]
then
success “$PSQL_START”
touch /var/lock/subsys/${NAME}
head -n 1 “$PGDATA/postmaster.pid” > “/var/run/postmaster.${PGPORT}.pid”
echo
else
failure “$PSQL_START”
echo
script_result=1
fi
}

stop(){
echo -n $”Stopping ${NAME} service: ”

$SU -l postgres -c “$PGENGINE/pg_ctl stop -D ‘$PGDATA’ -s -m fast” > /dev/null 2>&1 < /dev/null
ret=$?
if [ $ret -eq 0 ]
then
echo_success
else
echo_failure
script_result=1
fi
echo
rm -f “/var/run/postmaster.${PGPORT}.pid”
rm -f “/var/lock/subsys/${NAME}”
}

restart(){
stop
start
}

condrestart(){
[ -e /var/lock/subsys/${NAME} ] && restart
}

condstop(){
[ -e /var/lock/subsys/${NAME} ] && stop
}

reload(){
$SU -l postgres -c “$PGENGINE/pg_ctl reload -D ‘$PGDATA’ -s” > /dev/null 2>&1 < /dev/null
}

# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)

# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status postmaster
script_result=$?
;;
restart)
restart
;;
condrestart)
condrestart
;;
condstop)
condstop
;;
reload|force-reload)
reload
;;
*)
echo $”Usage: $0 {start|stop|status|restart|condrestart|condstop|reload|force-reload}”
exit 1
esac

exit $script_result

Langkah berikutnya adalah menjalankan PostgreSQL dan mengaktifkan PostgreSQL tiap kali mesin dihidupkan

#chkconfig –add postgresql
#chkconfig –level 345 postgresql on
#/etc/init.d/postgresql start

Yak, sampai di situ saja dokumentasi dari apa yang telah saya kerjakan kali ini. Semoga bisa bermanfaat untuk anda..

How-To, Linux, Tutorial , , , ,

Debian Repository

February 4th, 2009

Horeeee…!!! Akhirnya root dari irvan.or.id ini diapdet jugah setelah sekian lama. Enyaris genep satu tahun ini gak diapdet-apdet :D

Okeh, kali ini saya apdet, cuma karena biar saya ndak lupa daftar repository distro kesayangan sayah, yaitu Debian GNU/Linux. Berikut daftar repository Debian baik lokal IIX atau pun internasional link yang biasa saya gunakan pada mesin kesayangan saya yang imut-imut kecil berlayar 12″

Sekali lagi saya tegaskan ini repository Debian yah, sesuai dengan judulnya, bukan repository Ubuntu.

“Kenapa Debian? Kenapa bukan Ubuntu?”

Karena Ubuntu cuma buat banci, laki-laki sejati pakenya wingdos.. :lol: *menebar benih-benih flame war buat para pecinta Ubuntu*

Becanda dengs.. jangan dimasukin ati lah.. Kenapa bukan Ubuntu? well.. jawabannya sih simple ajah….

“Saya suka Debian”

Ya udah, jangan kepanjangan intronyah, berikut isi file /etc/apt/source.list milik saya. Kalo ada yang lain, silahkan ditambahkan di bagian komen.

Debian Stable

deb http://security.debian.org/ stable/updates main contrib
deb ftp://packages.debian.org/debian/ stable main contrib non-free
deb-src ftp://packages.debian.org/debian/ stable main contrib non-free

deb http://kambing.ui.edu/debian/ stable main contrib non-free
deb http://kambing.ui.edu/debian-security/ stable/updates main contrib non-free
deb-src http://kambing.ui.edu/debian/ stable main contrib non-free
deb-src http://kambing.ui.edu/debian-security/ stable/updates main contrib non-free

Debian Testing

deb http://security.debian.org/ testing/updates main contrib
deb ftp://packages.debian.org/debian/ testing main contrib non-free
deb-src ftp://packages.debian.org/debian/ testing main contrib non-free

deb http://kambing.ui.edu/debian/ testing main contrib non-free
deb http://kambing.ui.edu/debian-security/ testing/updates main contrib non-free
deb-src http://kambing.ui.edu/debian/ testing main contrib non-free
deb-src http://kambing.ui.edu/debian-security/ testing/updates main contrib non-free

*list ini akan diapdet lagi*

Linux, Tutorial , , , , ,

Mengatasi Masalah Tidak Keluarnya Suara pada snd-hda-intel

April 25th, 2008

Beberapa kali saya ditanyakan oleh siswa saya tentang masalah sound card snd-hda-intel di beberapa laptop yang terinstall Linux. Mereka mengalami masalah pada soundcard tersebut dimana soundcard tersebut sudah dapat dikenali dengan baik dan driver sudah di-load denga baik pula. Volume control pada desktop pun telah muncul.

Tetapi ketika mereka menyetel musik, suara pun tak kunjung keluar. Padahal kondisi soundcard tersebut tidak mute. Kondisi ini pernah saya alami ketika saya memiliki laptop Acer Aspire dahulu. Dengan sedikit googling, saya pun dapat dengan mudah menemukan solusinya.

Namun kebiasaan buruk saya yang tidak mendokumentasikannya membuat saya mendadak amensia :D Nah karena beberapa waktu yang lalu ada satu lagi siswa saya yang bertanya hal serupa, maka saya pun berniat untuk mendokumentasikannya di sini.

Berikut solusi terhadap masalah tersebut:

Buka file “/etc/modprobe.conf” (untuk beberapa distro file tersebut tidak ada, tapi tidak masalah) lalu isi dengan parameter berikut

options snd-hda-intel model=auto probe-mask=1

Simpan file tersebut dan reboot mesin linux anda. Semoga trik ini dapat membantu..

How-To, Linux, Tutorial

Recover Password Root Pada Linux

October 26th, 2007

Lagi-lagi saya harus menulis kembali tutorial yang sebenarnya sudah banyaaaaaaaaaaaaaaakkkk bertebaran di internet. Yakni mengenai hal “Recover Password Root pada Linux”.
Beberapa kali saya ditanya oleh teman-teman yang baru terjun menggunakan Linux, bagaimana cara mengembalikan password root jika kita lupa?

Entah mereka malas atau benar-benar tidak tahu? Mereka lebih memilih untuk nge-BUZZ saya via Yahoo Messenger cuma untuk menanyakan hal seperti itu. Padahal menurut saya lebih cepat mencari di google daripada harus bertanya melalui Yahoo Messenger :)

Well, baik lah, saya akan coba menulis hal yang sebenarnya sudah banyaaaaaakkk sekali di internet. Jika anda yang merasa masih awam dalam menggunakan Linux dan lupa password root anda, berikut tips sederhana untuk mengembalikan password root pada distro kesayangan anda.

Jika distro linux yang anda gunakan saat ini memakai GRUB sebagai boot loader, lakukan langkah berikut:

  1. Restart Linux anda
  2. Pada tampilan menu Grub, tahan menu tersebut, dengan menekan sembarang tombol pada keyboard anda, tombol tanda panah adalah pilihan yang bagus
  3. Pilih menu os linux anda, sebagai contoh: "Debian GNU/Linux, kernel 2.6.18-5-686" lalu tekan tombol “e” pada keyboard
  4. Lalu pilih baris yang dimulai dari kata-kata “kernel”, sebagai contoh baris : "kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/sdb1 ro" , lalu tekan “e” kembali
  5. Arahkan kursor ke baris paling akhir, dan tambahkan angka 1 atau tambahkan kata single lalu tekan tombol enter
  6. Pilih kembali baris yang dimulai dengan kata-kata kernel tadi, lalu tekan tombol “b”, maka anda akan dibawa ke modus single user, dan berstatus “root”
  7. Lalu ketik passwd pada shell untuk mengganti password root.

Jika distro anda menggunakan LILO sebagai boot loader, lakukan langkah berikut:

  1. Restart Linux anda
  2. Pada menu LILO, tekan tombol "esc" atau "CTRL+X" atau "Tab"
  3. Lalu ketikkan Linux 1 atau Linux single maka anda akan dibawa ke modus single user, dan berstatus “root”
  4. Selanjutnya ketik passwd pada shell untuk mengganti password root

Cukup mudah bukan? Oleh karena itu, jangan segan-segan untuk mencari terlebih dahulu melalui google, sebelum bertanya lewat YM :)

How-To, Linux, Tutorial

Instalasi Mozilla Firefox 2.0 dari source code pada SUSE 10.1

October 7th, 2007

Siapa yang tidak kenal dengan Mozilla Firefox? Browser yang satu ini sering disebut sebagai “The Killer Browser”. Mozilla Firefox merupakan browser yang bernaung di bawah bendera open source, merupakan “pecahan” dari aplikasi browser sebelumnya yang bernama Mozilla Suite. Mozilla foundation memberikan pilihan kepada pengguna yang hanya ingin menggunakan browser saja tanpa menginstall email client. Untuk itu Mozilla foundation mengeluarkan browser dan email client secara terpisah, yaitu Firefox sebagai browser dan ThunderBird sebagai Email client.

Browser Firefox besutan Mozilla.org ini disukai banyak pengguna di seluruh dunia, hal ini karena Firefox hadir dalam bentuk platform yang kompatibel dengan berbagai sistem operasi, seperti platform windows, platform linux, platform Mac dan lainnya. Dan yang lebih disukainya adalah FireFox hadir dalam bentuk source code yang terbuka. Jadi pengguna yang memiliki kemampuan programming yang cukup tinggi dapat memodifikasi source Firefox untuk disesuaikan dengan kebutuhan masing-masing.

Mozilla Firefox juga disenangi karena diklaim tidak rentan terhadap spyware dan memiliki fitur anti phising yang lebih baik daripada IE. Selama perjalanannya hingga saat ini Firefox telah mencapai versi 2.0 stable. Bagi mereka pengguna Linux yang ingin menggunakan Firefox 2.0 ini mungkin akan menunggu waktu yang lama untuk Firefox agar bisa mendapatkan paket binary masing-masing distro. Atau para pengguna dapat mendownload vesi binary global untuk linux dari situs resmi Mozilla Firefox.

Kelebihan menggunakan binary umum dari Mozilla Firefox adalah, user tidak perlu repot-repot melakukan kompilasi source. Yang jadi perbedaan hanyalah binary tersebut langsung dibungkus dalam satu direktori, alhasil untuk menggunakannya harus memanggil binary tersebut dengan path yang lengkap. Hal ini mungkin sangat menyebalkan bagi mereka yang fanatik dengan Layout Path default masing-masing distro.

Hal ini dapat di atasi dengan melakukan instalasi Firefox 2.0 dari source code. Untuk itu pada tulisan ini saya akan memberikan trik dari apa yang pernah saya alami, yaitu melakukan instalasi mozilla firefox 2.0 dari source code pada distro SUSE 10.1. Sedangkan untuk pengguna distro lain, caranya juga sama, yang berbeda adalah layout path instalasi pada proses configure.

Baik lah, saya akan memaparkan trik mudah melakukan instalasi firefox 2.0 menggunakan source code. Namun sebelumnya ada beberapa hal yang perlu dipersiapkan untuk mendukung proses ini, yaitu memastikan beberapa file dan aplikasi di bawah ini telah ada pada distro linux anda:

  • Source Code Mozilla Firefox 2.0 yang dapat diambil dari ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
  • GCC 3.2 atau lebih yang telah terinstall pada distro linux anda
  • Perl 5.6 atau lebih yang telah terinstall pada distro linux anda
  • GNU make 3.79.1 atau lebih yang telah terinstall pada distro linux anda
  • GTK2 yang telah terinstall pada distro linux anda
  • libXt-devel for X11/Intrinsic.h, X11/Shell.h yang telah terinstall pada distro linux anda
  • libIDL 0.6.3 atau lebih yang telah terinstall pada distro linux anda
  • zip 2.3 atau lebih yang telah terinstall pada distro linux anda
  • freetype 2.1.0 atau lebih yang telah terinstall pada distro linux anda
  • fontconfig atau lebih yang telah terinstall pada distro linux anda
  • pkgconfig 0.9.0 atau lebih yang telah terinstall pada distro linux anda

Jika semua yang dibutuhkan belum komplit terinstall anda bisa mengeceknya dan melakukan install paket-paket yang diperlukan dengan menggunakan YAST2 atau tools sejenisnya pada distro lain selain SUSE. Namun jika semua paket yang diperlukan sudah terinstall, maka kita dapat melakukan proses installasi.

Berikut tahapan instalasi Mozilla Firefox 2.0:

Ekstrak source code Firefox 2.0

# cd mozilla

Buat file .mozconfig pada home direktori

# vi ~/.mozconfig

Lalu isi dengan parameter berikut

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-tests
ac_add_options --prefix=/usr
ac_add_options --mandir=/usr/share/man
ac_add_options --enable-official-branding
mk_add_options MOZ_CO_PROJECT=browser

Simpan konfigurasi dan keluar dari editor, lalu compile dan install firefox

# ./configure
# make
# make install

Lalu tes firefox dengan menjalakan binary firefox dengan mengetikkan


$ firefox

Selamat menikmati Mozilla Firefox 2.0 pada SUSE 10.1 Untuk distro lainnya cara instalasi tidak jauh berbeda, yang membedakan hanya layout path saja.

How-To, Linux, Tutorial

Upgrade Kernel 2.6 dengan Mudah

October 7th, 2007

Masih melanjuti tulisan saya yang terdahulu mengenai kernel linux. Namun kali ini saya akan memberikan sebuah trik mudah mengupgrade kernel. Mungkin trik ini telah diketahui oleh seluruh jagad semesta dan jagad maya :D . Akan tetapi seperti sebelum-sebelumnya, meski pun trik ini bertebaran di internet, namun masih saja banyak teman-teman kita yang mengalami kesulitan dalam melakukan upgrade kernel.

Berbeda dengan tulisan sebelumnya, kali ini saya akan memberikan trik mudah melakukan upgrade kernel versi 2.6 dengan kondisi kernel sebelumnya juga versi 2.6.
Sebagai contoh, kernel linux yang sekarang adalah 2.6.17 ingin di-upgrade ke versi 2.6.18 . Maka kita akan melakukan proses upgrade kernel versi tersebut.
Tulisan ini dibuat semudah mungkin dari sudut pandang newbie yang belum pernah sekali pun melakukan konfigurasi kernel.Dengan tulisan ini saya harap teman-teman tidak lagi menemui kesulitan dalam mengupgrade kernel versi 2.6.

Hal yang cukup membingungkan bagi para newbie yang ingin melakukan upgrade kernel adalah terlalu banyaknya pilihan pada menu konfigurasi kernel. Terlalu banyak fitur yang terdapat pada kernel linux, mungkin di situ lah letak kelebihan linux :) .Bahkan terkadang saya sendiri masih belum mengerti semua fitur yang ada pada menu kernel, setiap muncul versi baru, ada saja fitur baru pada kernel linux tersebut, belum lagi jika ditambahkan dengan patch dari pihak ketiga.

Baik lah, kita mulai trik ini, sebagai informasi trik ini berjalan sukses pada distro Fedora Core dan CentOS, untuk ditro lain seperti Debian, Slackware, SuSE dll, hanya terdapat perbedaan pada sentuhan terakhir. Dengan kata lain masih ada sentuhan manual untuk menyelesaikannya. Jadi pada tulisan ini saya akan berasumsi bahwa distro yang digunakan adalah Fedora Core.

Sebelum melakukan upgrade ada beberapa yang harus disediakan pada system linux anda, yaitu:

  • Paket developer, seperti gcc, automake, ncurses dll
  • Paket linux kernel header
  • Source Code kernel ( bisa diambil dari situs http://www.kernel.org/pub/linux/kernel/v2.6/ )

Sesuai dengan skenario di atas, kita akan melakukan upgrade kernel ke versi 2.6.18. untuk itu download source code kernel versi 2.6.18, ekstrak, compile dan install dengan cara berikut:

#cd /usr/src/
#tar -jxvf /path/to/linux-2.6.18.tar.bz2
#rm linux
#ln -sf linux-2.6.18 linux
#cd linux
#make allmodconfig
#make menuconfig

Sampai tahap ini, kita membutuhkan sedikit sentuhan manual :) Pada layar menu konfigurasi kernel pilih File System –> Second extended fs support (tekan ‘Y’) lalu pilih Ext3 journalling file system support (tekan ‘Y’). Lalu keluar tekan “esc” dan tekan “esc” lagi, lalu pilih Yes. Selanjutnya jalankan perintah compile dan install

#make all modules_install install

Sampai tahap ini proses proses konfigurasi dan kompilasi kernel selesai. Mudah bukan. Untuk mengetes kernel yang baru tinggal reboot pc anda, dan pilih kernel yangbaru pada bootloader.

How-To, Linux, Tutorial

Upgrade Kernel Linux versi 2.4 ke versi 2.6

October 7th, 2007

Meski tutorial melakukan upgrade kernel linux dari versi kernel 2.4 ke versi 2.6 telah banyak yang menulisnya di internet. Namun tetap saja banyak teman-teman yang menemukan kesulitan untuk melakukan upgrade tersebut. Mungkin dikarenakan kendala kemampuan mengartikan tutorial yang kebanyakan ditulis dalam bahasa inggris, menyebabkan tidak sedikit dari mereka mengalami error ketika melakukan upgrade kernel.

Untuk itu saya mencoba menulis kembali tutorial ini dengan menggunakan bahasa yang mudah-mudahan dapat dimengerti oleh teman-teman semua, khususnya penghuni milis kelas-linux yang saya motori, serta siswa-siswa kursus yang saya ajari.

Baik lah saya akan coba memulai tutorial ini

Sebelum melakukan kegiatan upgrade, ada beberapa persiapan yang harus dilakukan diantaranya, adalah:

  1. Download module-init-tools yang terbaru dari http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/
  2. Download source code kernel versi 2.6 terbaru dari http://www.kernel.org/pub/linux/kernel/v2.6/

Untuk apa kita harus mendownload module-init-tools yang terbaru? Mengapa tidak cukup dengan source kernel 2.6 yang terbaru? Toh tujuan kita hanya melakukan upgrade kernel?
Well, perlu diketahui bahwa kernel versi 2.6 memiliki cara yang berbeda untuk meload modul kernel. Untuk itu diperlukan tool untuk meload modul kernel yang compatible dengan kernel yang baru. Beberapa distro lawas menggunakan module-init-tools versi lama yang belum compatible dengan kernel 2.6. Jika dipaksakan menggunakan module-init-tools bawaan distro tersebut, maka kita akan menemukan kendala ketika system mencoba meload modul kernel. Itulah alasan kenapa kita harus melakukan upgrade module-init-tools jika kita menggunakan distro lawas.

Setelah source module-init-tools yang terbaru telah kita download, ekstrak source module-init-tools tersebut, baca manual instalasinya, compile dan install:

# tar -jxvf module-init-tools-3.2.tar.bz2
# cd moudule-init-tools-3.2
# ./configure --prefix=/
# make moveold
# make
# make install
# ./generate-modprobe.conf /etc/modprobe.conf
# cp modprobe.devfs /etc

Jika tidak terdapat error, itu artinya kita dapat melaju ke langkah berikutnya yaitu melakukan upgrade kernel.
Agar source code kernel yang anda download tidak berserakan di berbagai direktori, ada baiknya anda mengcopy source code kernel tersebut ke dalam direktori /usr/src/. Setelah itu anda dapat melanjutkan proses ekstrak kernel, konfigurasi kernel, compile, install dan reboot :)
Berikut langkah-langkah yang dapat anda lakukan.

# cp linux-2.6.17.tar.bz /usr/src
# cd /usr/src
# tar -jxvf /usr/src/linux-2.6.17.tar.bz
# ln -s linux-2.6.17 linux
# cd linux
# make allmodconfig
(Perintah ini optional jika anda ingin membuat kernel secara generic)
# make menuconfig (Perintah ini optional, jika anda ingin membuat kernel sesuai kebutuhan
# make all module_install install
# reboot

Ketika komputer telah restart, pastikan anda memilih kernel terbaru pada menu boot loader.
Demikian saja, tutorial sederhana ini.Cukup mudah kan? :)

How-To, Linux, Tutorial

Menganalisa Aktivitas Worm dengan tcpdump

October 7th, 2007

Tulisan ini saya kutip dari blog saya dengan judul yang sama, yaitu Menganalisa Aktivitas Worm dengan tcpdump. Lebih tepatnya adalah menganalisa aktivitas worm sejenis sasser dan variantnya.

Seperti yang kita ketahui, bahwa worm sejenis sasser mengeksploitasi kelemahan service lsass serta rpc dcom pada windows xp sp1 ke bawah dan windows 2000. worm ini mengeksploitasi port 445.

Lalu, bagaimana cara menganalisa hal tersebut? Dan tools apa saja yang digunakan? Mari kita simak langkah-langkahnya.

Ada pun tools yang digunakan untuk menganalisa kegiatan worm pada jaringan sehingga menimbulkan gejala-gejala anomaly pada traffic di jaringan kita adalah tools yang memiliki fungsi sebagai sniffer pada jaringan dan mampu menangkap paket-paket data yang lewat pada jaringan.
Tools seperti itu dapat dengan mudah ditemukan pada sistem operasi *NIX based atau *NIX Like seperti GNU/Linux, *BSD Family, Solaris dll. Ada pun tools yang dimaksud diantaranya adalah, tcpdump, ethereal, ettercap, dll.Namun di sini saya akan menggunakan tools yang sudah secara default “dibungkus” oleh berbagai distribusi GNU/Linux, yaitu tcpdump

Ada pun cara menganalisa anomaly yang ada pada network dengan menggunakan tcpdump adalah seperti berikut:

Sebagai root, jalankan tcpdump pada console

# tcpdump -vvv -n port 445 -i eth0

atau

# tcpdump -vvv -n -i eth0 | grep 445

Maka perintah tersebut akan menghasilkan output pada layar sbb (hasil output dapat bervariasi):

12:23:19.228272 IP (tos 0x0, ttl 128, id 35414, offset 0, flags [DF], length: 48) 172.16.71.48.1680 > 172.17.71.238.445: S [tcp sum ok] 3373859222:3373859222(0) win 64240
12:23:19.228273 IP (tos 0×0, ttl 128, id 35415, offset 0, flags [DF], length: 48) 172.16.71.48.1614 > 172.24.147.163.445: S [tcp sum ok] 3369072752:3369072752(0) win 64240
12:23:19.328332 IP (tos 0×0, ttl 128, id 35417, offset 0, flags [DF], length: 48) 172.16.71.48.1615 > 172.26.17.63.445: S [tcp sum ok] 3369160962:3369160962(0) win 64240
12:23:19.349194 IP (tos 0×0, ttl 128, id 35418, offset 0, flags [DF], length: 48) 172.16.71.48.1731 > 172.18.55.236.445: S [tcp sum ok] 3377117354:3377117354(0) win 64240
12:23:19.349694 IP (tos 0×0, ttl 128, id 35419, offset 0, flags [DF], length: 48) 172.16.71.48.1732 > 172.22.202.179.445: S [tcp sum ok] 3377182538:3377182538(0) win 64240
12:23:19.428518 IP (tos 0×0, ttl 128, id 35420, offset 0, flags [DF], length: 48) 172.16.71.48.1681 > 172.29.71.175.445: S [tcp sum ok] 3373960655:3373960655(0) win 64240
12:23:19.428519 IP (tos 0×0, ttl 128, id 35421, offset 0, flags [DF], length: 48) 172.16.71.48.1682 > 172.18.71.172.445: S [tcp sum ok] 3374004893:3374004893(0) win 64240
12:23:19.428519 IP (tos 0×0, ttl 128, id 35422, offset 0, flags [DF], length: 48) 172.16.71.48.1617 > 172.22.68.79.445: S [tcp sum ok] 3369284527:3369284527(0) win 64240
12:23:19.428520 IP (tos 0×0, ttl 128, id 35423, offset 0, flags [DF], length: 48) 172.16.71.48.1616 > 172.29.71.168.445: S [tcp sum ok] 3369220154:3369220154(0) win 64240
12:23:19.449379 IP (tos 0×0, ttl 128, id 35425, offset 0, flags [DF], length: 48) 172.16.71.48.1734 > 172.18.11.143.445: S [tcp sum ok] 3377323046:3377323046(0) win 64240
12:23:19.450004 IP (tos 0×0, ttl 128, id 35427, offset 0, flags [DF], length: 48) 172.16.71.48.1736 > 172.28.71.62.445: S [tcp sum ok] 3377405193:3377405193(0) win 64240
12:23:19.450129 IP (tos 0×0, ttl 128, id 35428, offset 0, flags [DF], length: 48) 172.16.71.48.1737 > 172.21.93.188.445: S [tcp sum ok] 3377444974:3377444974(0) win 64240
12:23:19.628765 IP (tos 0×0, ttl 128, id 35429, offset 0, flags [DF], length: 48) 172.16.71.48.1683 > 172.27.155.244.445: S [tcp sum ok] 3374120210:3374120210(0) win 64240
12:23:19.628765 IP (tos 0×0, ttl 128, id 35430, offset 0, flags [DF], length: 48) 172.16.71.48.1684 > 172.21.13.218.445: S [tcp sum ok] 3374178015:3374178015(0) win 64240

Selanjutnya, kita coba untuk menganalisa.
Kita lihat di sana, ada aktivitas yang simultan / secara terus menerus dari IP 172.16.71.48, menuju ke banyak ip secara random. Di sini bisa kita lihat bahwa tujuan ip tersebut ke semua ip yang berawalan 172.*.*.* dan menuju ke port 445.
Kita tahu bahwa port 445 digunakan oleh windows untuk melewati message kepada client, serta digunakan untuk otentikasi pada server. akan tetapi sangat tidak mungkin ada 1 buah PC melakukan otentikasi kebanyak IP jika itu bukanlah perbuatan virus atau worm.
Di sini kita lihat bahwa aktivitas tersebut sangat mencurigakan, dan positif bahwa aktivitas tersebut adalah aktivitas virus/worm :)
Tidak percaya? silahkan googling tentang karakteristik worm variant sasser. Pasti anda akan menemukan salah satu cirinya adalah, membawa data window pada paket sebesar 64240. Bandingkan lagi dengan hasil log di atas:

win 64240

lihat, bagian ini lah yang menunjukan bahwa paket tersebut adalah paket khas yang dikirim oleh worm atau virus variant sasser.

Security

Site Updated

October 7th, 2007

Hai.. hai.. hai.. untuk kesekian kalinya irvan.or.id berubah penampilan. Dan untuk kesekian kalinya irvan.or.id berubah konsep. Setelah kemarin irvan.or.id menggunakan konsep HTML murni dikarenakan saya sendiri malas melakukan update terhadap irvan.or.id. Kali ini saya mencoba untuk rajin melakukan update terhadap situs ini. Untuk itu saya berusaha mengganti konsep irvan.or.id dengan situs dinamis, dan kembali menggunakan WordPress.

Berita