หน้าเว็บ

วันเสาร์ที่ 31 กรกฎาคม พ.ศ. 2553

วิธี Compile Linux kernel 2.6 บน Ubuntu 10.04

ในบางคราวเราอาจจะต้องคอมไพล์ Linux Kernel เพื่อเพิ่มฟังก์ชันอะไรบางอย่าง หรือเพื่ออยากรู้อยากลองก็มีวิธีการดังต่อไปนี้ครับ (ผมทำบน Ubuntu 10.04)
1. ดาวน์โหลด source code ของ kernel มาก่อน โดยสามารถดาวน์โหลดได้ที่ http://www.kernel.org/ โดยที่ผมทำจะใช้เป็นรุ่น 2.6.34.1 ครับ
แตกไฟล์แล้วเอาโฟลเดอร์ linux-2.6.34.1 ไปไว้ใน /usr/src ซึ่งเป็นโฟลเดอร์ที่นิยมใช้เก็บ source ของ kernel

2. เตรียมเครื่องมือ ได้แก่ kernel-package, fakeroot, ncurses (อันไหนมีแล้วก็ไม่ต้องโหลดเพิ่ม แต่ถ้าอันไหนมันฟ้องว่ายังขาดก็โหลดเพิ่มนะครับ :P)
sudo apt-get install kernel-package fakeroot libncurses5-dev

3. ทำการ configure kernel
ไปที่โฟลเดอร์ source ของเรา /usr/src/linux-2.6.34.1 แล้วสั่ง configure โดยสั่งได้ 3 รูปแบบ
วิธีแรกเป็นแบบ text-based
make menuconfig

วิธีที่สองถ้ามี Qt
make xconfig

วิธีที่สามถ้ามี Gtk
make gconfig

ก็เลือกตามสะดวกครับ ถ้าคิดไม่ออกก็เลือกวิธีแรกก็ได้
โดยใน menu สำหรับ configure นั้นจะมีอะไรให้เราเลือกมากมายครับก็เลือกตามที่ต้องการ แต่ถ้าไม่แน่ใจว่าคืออะไรก็ปล่อยเป็นค่า default ก็ได้ครับ

4. Compile Kernel
ในกรณีถ้าเครื่องมีหลาย cpu และต้องการให้คอมไพล์เร็วขึ้นให้สั่ง
export CONCURRENCY_LEVEL=3
โดยตัวเลขให้ใช้ จำนวนcpuที่มี + 1 (ในกรณีนี้ผมมี 2 cpu (2 core) เลยเป็น 3)

แล้วสั่ง
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-some-string-here kernel-image kernel-headers

โดย -some-string-here ใส่เป็นอะไรก็ได้เพื่อบอก version ของเรา เช่นของผมจะใส่ว่า -ping2p (ต้องขึ้นต้นด้วยเครื่องหมาย - และห้ามมีเว้นวรรค)

แล้วก็รอมันคอมไพล์ไป ระหว่างนี้ก็ไปอาบน้ำ อ่านหนังสือ กินข้าว รอจนกว่ามันจะเสร็จนะครับ ถ้าเสร็จแล้วลองดูที่โฟลเดอร์ /usr/src จะมีไฟล์ 2 ไฟล์คือ linux-image-2.6.34.1-ping2p_2.6.34.1-ping2p-10.00.Custom_i386.deb และ linux-headers-2.6.34.1-ping2p_2.6.34.1-ping2p-10.00.Custom_i386.deb (ในกรณีที่ compile แล้ว error เพราะ permission denied ให้ลองเปลี่ยน permission ของโฟลเดอร์ /usr/src ให้สามารถ write ได้ แล้วลองคอมไพล์ใหม่อีกรอบ (แต่จะใช้เวลาไม่นานเหมือนครั้งแรก เพราะหลายๆอย่างคอมไพล์เสร็จแล้ว))

5. Install
คราวนี้ก็จะทำการ Install kernel ใหม่นี้ โดยทำเป็น Option ให้เลือกตอน boot เผื่อเกิดอะไรผิดพลาดจะได้เรียกของเก่ากลับมาได้
ไปที่โฟลเดอร์ /usr/src จะพบ kernel ใหม่ที่เราคอมไพล์ แล้วให้ทำการติดตั้งดังนี้
sudo dpkg -i linux-image-2.6.34.1-ping2p_2.6.34.1-ping2p-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-2.6.34.1-ping2p_2.6.34.1-ping2p-10.00.Custom_i386.deb


*** ในกรณี Ubuntu 10.04 จะมี bug โดยไม่ยอม initramfs มาให้ ให้สร้างเอง โดยในโฟลเดอร์ /usr/src ให้สั่ง sudo update-initramfs -c -k 2.6.34.1-ping2p (ใส่ version และชื่อตามรุ่นที่เราคอมไพล์และตั้งชื่อไว้ตอนแรก) เสร็จแล้วให้ลองตรวจสอบใน /boot ดูจะมีไฟล์ initrd.img2.6.34.1-ping2p, System.map-2.6.34.1-ping2p และ vmlinuz-2.6.34.1-ping2p ออกมา

6. ตรวจสอบ Bootloader
เพื่อให้แน่ใจว่าตอน boot แล้วจะมี kernel ใหม่ให้เลือก ให้ลองตรวจสอบ bootloader ดู ซึ่งแล้วแต่ว่า bootloader เป็น grub หรือ lilo
ในกรณีของผมเป็น grub2 ก็ไปดูที่ไฟล์ /boot/grub/grub.cfg (แต่ถ้าเป็น grub 1 จะอยู่ใน /boot/grub/menu.lst) จะมี kernel ใหม่อยู่

*** ลองตรวจสอบว่าตรงรายการ kernel ใหม่นั้นมีบรรทัด initrd /boot/initrd.img-2.6.34.1-ping2p อยู่หรือไม่ ถ้าไม่มีให้ใส่เพิ่มเข้าไป (ตัวที่เป็น recovery mode ก็เช่นกันให้ใส่เข้าไปด้วย) ส่วนบรรทัดที่ขึ้นต้นด้วย linux /boot/vmlinuz-2.6.34.1-ping2p ให้ลองเปลี่ยนค่า root=/dev/sda5 เป็น root=UUID=..... โดยค่า UUID ให้ใช้ค่าที่อยู่ใน option --fs-uuid --set .... ที่อยู่ในบรรทัดข้างบน เช่นของผมจะเป็น
menuentry 'Ubuntu, with Linux 2.6.34.1-ping2p' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,5)'
search --no-floppy --fs-uuid --set 54c8e93d-971f-4197-8a08-b9e131d1becf
linux /boot/vmlinuz-2.6.34.1-ping2p root=UUID=54c8e93d-971f-4197-8a08-b9e131d1becf ro quiet splash
initrd /boot/initrd.img-2.6.34.1-ping2p
}


เป็นอันเรียบร้อยครับ ลอง reboot ดู ตัว bootloader ของเราจะมี option kernel ตัวใหม่ของเราอยู่ด้วย

ระบบที่ทดสอบ
OS: Ubuntu 10.04
Kernel: Linux 2.6.34.1

อ้างอิง
http://www.howtoforge.com/kernel_compilation_ubuntu
http://linuxtweaking.blogspot.com/2010/05/how-to-compile-kernel-on-ubuntu-1004.html
http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html

วันศุกร์ที่ 30 กรกฎาคม พ.ศ. 2553

วิธีเขียน PHP เรียกข้อมูลจาก MS Access .mdb บน Ubuntu

การเรียกดูข้อมูลจาก MS Access บน Ubuntu โดยใช้ PHP นั้นสามารถทำได้โดยเรียกผ่าน ODBC (ย่อจาก Open Database Connectivity ซึ่งเป็น API ใช้สำหรับการเชื่อมต่อกับฐานข้อมูลใดๆ โดย ODBC จะทำหน้าที่เป็น Layer กลางแปลงคำสั่ง odbc ไปเป็นคำสั่งของฐานข้อมูลนั้นๆให้)

1. ก่อนอื่นเตรียมอุปกรณ์กันก่อน ดังต่อไปนี้
sudo apt-get install php5-odbc libmdbodbc mdbtools unixodbc-bin

2. หลังจากนั้นทำการสร้าง DSN (Data Source Name) เพื่อให้ ODBC ทำการเชื่อมต่อ
ในขั้นตอนนี้จะเกี่ยวข้องด้วย 2 ไฟล์ด้วยกันคือ
2.1 ไฟล์ /etc/odbcinst.ini ซึ่งเป็นไฟล์ที่ใช้ในการกำหนด Driver ในการเชื่อมต่อ บางกรณีไฟล์นี้อาจถูกเขียนไว้แล้ว แต่ถ้ายังไม่มีหรือมีแล้วแต่ไม่ใช่ Driver ตัวเดียวกันก็ให้เพิ่มเข้าไปดังนี้ (อย่าลืม sudo ด้วย เดี่ยว save ไม่ได้)
[mdbtoolsodbc]
Description = MDB Tools odbc drivers
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =
UsageCount = 1

- ตรง [mdbtoolsodbc] เป็นชื่อ driver ของเรา ใส่เป็นอะไรก็ได้แต่ห้ามมีเว้นวรรค ไว้ใช้สำหรับการอ้างถึงจากไฟล์อื่น
- ตรง Description ใส่อะไรก็ได้ เป็นแค่คำบรรยายให้เราเข้าใจทีหลังเวลากลับมาอ่าน
- ตรง Driver ลองตรวจสอบดูว่าไฟล์อยู่ที่ /usr/lib หรือไม่ ถ้าไม่อยู่ให้เปลี่ยน path ให้ตรงกับที่อยู่จริง

ขั้นตอนนี้จะเป็นการกำหนด ODBC Driver ให้เป็น mdbtools ซึ่งใช้สำหรับการเชื่อมต่อกับไฟล์ MS Access (.mdb) พอเสร็จแล้ว save และไปขั้นตอนถัดไป

2.2 ไฟล์ /etc/odbc.ini ไฟล์นี้จะเป็นตัวกำหนดการเชื่อมต่อไปยังฐานข้อมูลของเราให้เพิ่มรายละเอียดดังนี้
[TestDatabase]
Description = Miscrosoft Access Database of TestDatabase
Driver = mdbtoolsodbc
Database = /home/supasate/desktop/testdatabase.mdb
Servername = localhost
UserName =
Password =
port = 5432

- ตรง [TestDatabase] เป็นชื่อฐานข้อมูลที่ใช้ในการเชื่อมต่อ ซึ่งตั้งเป็นอะไรก็ได้ ไว้ใช้อ้างถึงจากที่อื่น (ตั้งให้คล้ายกับชื่อไฟล์ .mdb ก็ดี)
- ตรง Description เช่นเดิมเป็นอะไรก็ได้
- ตรง Driver อ้างอิงชื่อ driver ที่เราสร้างไว้ที่ไฟล์ odbcinst.ini ดังนั้นเขียนให้เหมือนกัน
- ตรง Database ให้ใส่ path ไปยังไฟล์ MS Access (.mdb) ที่เราต้องการเรียกข้อมูล
- ส่วนที่เหลือจริงๆไม่ต้องพิมพ์ก็ได้ แต่เขียนให้ดูเป็นตัวอย่างเผื่อเอาไปใช้กับฐานข้อมูลแบบอื่นที่เป็นแบบ server และมีการยืนยันตัวตน

เท่านี้เราก็พร้อมที่เชื่อมต่อกันแล้ว

3. เขียน PHP เพื่อทำการเชื่อมต่อ ดังตัวอย่างข้างล่าง ผมเขียนไว้ในไฟล์ test.php
if (!($conn = odbc_connect("TestDatabase", "", ""))) {
echo "Connection Falied.";
} else {
echo "Connection Success.";
$query = "SELECT ID, FirstName, LastName From EMPLOYEE";
$result = odbc_exec($conn, $query);
while ($row = odbc_fetch_array($result)) {
print $row['ID'].' '.$row['FirstName'].' '.$row['LastName'].'
';
}

- odbc_connect("ชื่อ db ที่เรากำหนดไว้ในไฟล์ odbc.ini", "username", "password")
- $query ใส่คิวรีที่ต้องการ ในที่นี้คือจะดึง field ID, FirstName, LastName มาจากตาราง EMPLOYEE
- odbc_exe(คอนเน็คชันที่สร้างขึ้น, คิวรีสตริง)
- odbc_fetch_array ดึงข้อมูลมาทีละแถว

ในกรณีที่อยากรู้ว่าฐานข้อมูลเรามีตารางอะไรและ Field อะไรบ้างนั้นให้ใช้ตัว GNOME MDB Viewer ในการดู

ลองทดลองบน Command line ดูก่อน โดยสั่ง
php test.php
ถ้าไม่สำเร็จลองตรวจสอบชื่อ Driver ชื่อ ODBC และ Path ไปยังฐานข้อมูลว่าถูกต้องหรือไม่
ถ้าสำเร็จก็ลองไป run บน server ดู โดยถ้าบน server ไม่สำเร็จอาจเกิดจาก SELinux หรือ Firewall ในกรณีที่ต้องมีการเชื่อมต่อ port

ขอให้โชคดีครับ

ระบบที่ทดสอบ
OS: Ubuntu 10.04

อ้างอิง
http://ubuntuforums.org/showthread.php?t=678690
http://www.infoqu.com/dev/database-management/access-msaccess-via-odbc-from-linux-php-228635-1/

วิธีเรียกดูข้อมูล MS Access .mdb บน Ubuntu

ใช้โปรแกรม GNOME MDB Viwer
sudo apt-get install mdbtools-gmdb
เมื่อลงเสร็จโปรแกรมจะอยู่ใน Applications -> Office -> MDB Viewer
เวลาใช้งานก็ Open ไฟล์สกุล mdb ของเราได้เลย แล้วจะเกิด Table ต่างๆที่มีขึ้นมา อยากดูข้อมูล Table ไหนก็เลือก Table นั้นแล้วเลือก Data

ระบบที่ทดสอบ
OS: Ubuntu 10.04
MDB Viewer: gmdb2 0.6pre1

วันพฤหัสบดีที่ 22 กรกฎาคม พ.ศ. 2553

วิธีสร้างไฟล์ animation จาก Nam (Network animator)

สมมติว่าเรามีไฟล์ .nam ซึ่งสามารถใช้ Nam (Network animator) ในการแสดง Animation ได้ แล้วเราต้องการที่จะทำ Animation นี้เป็น Movie clip แบบ gif animation สามารถทำได้ดังนี้
1. ในโปรแกรม Nam ให้ทำการตั้งค่าต่างๆให้เรียบร้อย เช่น ตำแหน่งการซูม ค่า step การขยับ animation (ในแต่ละ step จะ generator ออกมา 1 frame ดังนั้นถ้า step สั้นไฟล์จะใหญ่ละเอียด แต่ถ้า step ไกลไฟล์จะเล็กแต่ไม่ละเอียด)

2. เมื่อพร้อมแล้วให้เลื่อนแกนเวลาไปตำแหน่งที่เราต้องการจะเริ่มอัด แล้วไปที่ File -> Record Animation

3. กดปุ่ม Play ก็เริ่มทำการอัด Animation (คือจะทำการสร้างไฟล์ .xwd ออกมาทุกๆ frame) ถ้าอยากหยุดให้กดปุ่ม Stop หรือรอจนเล่นไปจนจบก็ได้

4. ในโฟลเดอร์เดียวกับไฟล์ .nam ของเราจะเกิดไฟล์ภาพ .xwd ออกมามากมายเท่ากับจำนวน frame ขั้นตอนต่อไปคือการแปลงจาก .xwd ให้เป็น .gif และทำการ merge .gif ออกมาเป็นไฟล์เดียว

for i in *.xwd; do
xwdtopnm $i | ppmtogif -interlace > `basename $i .xwd`.gif;
done
gifmerge -10 -2 -notransp *.gif > movie.gif

คำสั่ง xwdtopnm บางคนถ้าใช้รุ่นเก่าจะเป็นชื่อว่า xwdtoppm โดยจะหน้าที่แปลงไฟล์ format .ppm ซึ่งในที่เราจะไม่ต้อง save เป็นไฟล์ .ppm ให้เปลืองพื้นที่ก็ทำการ pipe binary ที่ได้ไปแปลงต่อเป็น .gif เลยด้วยคำสั่ง ppmtogif พอเสร็จแล้วจะก็ทำการ merge ไฟล์ .gif ทั้งหมดออกมาเป็นไฟล์ animated gif ไฟล์เดียวชื่อ movie.gif

ถ้าใครไม่มี xwdtopnm กับ ppmtogif ให้ลง netpbm ก่อน (sudo apt-get install netpbm) ถ้าใครไม่มี gifmerge ให้โหลดจาก http://www.the-labs.com/GIFMerge/ แล้วเอามา compile โดยการสั่ง make หลังจากนั้นให้ตั้งค่าให้ execute ได้ด้วย chmod +x gifmerge

ข้อควรระวังเมื่อได้ไฟล์ movie.gif มาแล้ว อย่าเผลอลบไฟล์ .gif ทั้งหมด ด้วย rm *.gif ล่ะ ไม่งั้นได้ทำใหม่

ระบบที่ทดสอบ
OS: Ubuntu 10.04
gifmerge: 1.33

อ้างอิง
http://isi.edu/nsnam/ns/doc/node610.html

วันจันทร์ที่ 12 กรกฎาคม พ.ศ. 2553

วิธี get ค่า local time บน TinyOS

เราสามารถเรียกค่าเวลาของโหนดๆหนึ่งตั้งแต่มันเริ่มทำงานได้โดยใช้ component HilTimerMilliC
component นี้จะ provides interface LocalTime ก็ให้จัดการ wiring ให้เรียบร้อย
เวลาจะเรียกดูค่าก็ให้ใช้คำสั่ง call LocalTime.get()

ระบบที่ทดสอบ
OS: TinyOS 2.1.1

วิธี extract text จากไฟล์ pdf บน Ubuntu

ใช้คำสั่ง
pdftotext filename.pdf
โดย filename.pdf แทนด้วยชื่อไฟล์ที่เราต้องการ แล้วโปรแกรมจะสร้างไฟล์ที่ชื่อเหมือนกันว่า filename.txt ออกมา

ในกรณีที่ต้องการทำหลายๆไฟล์ ให้นำไฟล์ .pdf ทั้งหมดใส่ไว้ในโฟลเดอร์เดียวแล้วสั่ง bash script ดังนี้
$for f in *.pdf
> do
> pdftotext "$f"
>done


ระบบที่ทดสอบ
OS: Ubuntu 10.04

ที่มา:
http://en.wikipedia.org/wiki/Pdftotext วันที่ 12 ก.ค. 53

วันศุกร์ที่ 9 กรกฎาคม พ.ศ. 2553

วิธีเอาจอ Android ขึ้นจอคอม หรือ projector

สิ่งที่ต้องมี
1. Android SDK (ดาวน์โหลดได้ที่ http://developer.android.com/sdk/index.html ) แล้วสั่งเปิด adb server ด้วยคำสั่ง sudo adb start-server (คำสั่ง adb อยู่ใน /path/to/android-sdk-yourversion/tools โดย yourversion แทนด้วย sdk ที่ใช้ เช่นของผมคือ android-sdk-linux_86)
2. ดาวน์โหลดโปรแกรม DroidEx จาก http://groups.google.com/group/cw-android/web/DroidEx.jar

การเรียกใช้โปรแกรม
1. ที่เครื่อง android ไปที่ Settings->Applications->Development เลือก USB Debugging
2. ต่อสาย USB เครื่อง android เข้ากับ PC
3. บน PC ให้ cd ไปที่โฟลเดอร์ที่มีโปรแกรม DroidEx.jar ที่ดาวน์โหลดมา
4. สั่งคำสั่ง java -cp DroidEx.jar:/path/to/android-sdk-yourversion/tools/lib/ddmlib.jar com.commonsware.droidex.DroidEx (หรือถ้าอยากเรียกสั้นๆก็ให้ set classpath ให้มีค่า DroidEx.jar:/path/to/android-sdk-yourversion/tools/lib/ddmlib.jar แล้วเวลาเรียกก็เรียกแค่ java com.commonsware.droidex.DroidEx)

โปรแกรมจะแสดงภาพหน้าจอที่เราใช้งานขึ้นมา คราวนี้เราก็สามารถต่อเครื่อง PC เราออก projector ได้เพื่อให้คนอื่นเห็น

หมายเหตุ โปรแกรมจะทำงานโดยเรียกใช้ Dalvik Debug Monitor อีกทีนึง ดังนั้นสังเกตได้ว่าภาพจะไม่ใช่การ live video แต่เป็นการ capture ภาพแบบต่อเนื่องมาให้ดู จึงมีดีเลย์ระหว่างการ capture แต่ละภาพ

ระบบที่ทดสอบ
Device: Samsung Galaxy S (GT-I9000)
Android OS: 2.1 Eclair
PC OS: Ubuntu 10.04

อ้างอิง:
http://www.androidguys.com/2009/01/30/projecting-android-on-the-big-screen/
http://www.makeuseof.com/tag/how-to-capture-screenshots-with-your-android-mobile-phone/

Root Samsung Galaxy S ด้วย Ubuntu

วิธีการนี้คือวิธีที่ผมใช้ในการ root เครื่อง Samsung Galaxy S (ssgs) โดยใช้ Ubuntu 10.04 ครับ (หมายเหตุ การ root อาจทำให้เครื่องหมดประกัน และถ้าเกิดข้อผิดพลาดขึ้นได้ ข้อให้ทดลองอย่างระมัดระวัง และผู้เขียนไม่รับประกันใดๆครับ) สำหรับใครใช้ Windows ก็คล้ายๆกัน หรือลองไปอ่านในลิงค์อ้างอิงด้านล่างสุดได้ครับ

เครื่องมือที่ต้องใช้ในการ root
1. Android SDK Linux http://developer.android.com/sdk/index.html
2. Update Script http://forum.samdroid.net/attachments/f49/1224d1277452759-superuser-su-busybox-i9000-26-06-2010-update.zip หรือ http://www.deedns.net/update.zip

เตรียมเครื่องมือก่อน
บนเครื่องคอม

1. แตกไฟล์ android sdk สมมติว่าเอาไว้ที่ /path/to/android-sdk-linux_86 ให้เข้าไปที่โฟลเดอร์ tools ตัวที่เราจะใช้คือ adb
2. สั่งคำสั่ง sudo adb start-server

บนมือถือ ssgs
1. ไปที่ Settings->Applications->Development ติ๊กเลือก USB debugging
2. เสียบสาย usb ต่อเข้ากับคอม
3. เลื่อนแถบ notification bar ด้านบนลงมา เลือก USB connected แล้วเลือก Mount

โอเคเตรียมการเรียบร้อย ตอนนี้เครื่องคอมเราจะสามารถเข้าไปยังโฟลเดอร์ของ ssgs ได้ (จะมีของ haddisk 2GB และ SD Card 14GB) และลองทดสอบด้วยคำสั่ง adb devices จะมีรายการอุปกรณ์ขึ้นมาหนึ่งอัน (ในกรณีชื่อเป็น ?????? แสดงว่าตอนสั่ง adb start-server ลืมใส่ sudo ให้แก้ด้วยการสั่ง adb kill-server ก่อน แล้วลอง sudo adb start-server ใหม่อีกครั้ง)

เริ่มทำการ root
1. copy ไฟล์ update.zip ที่ดาวน์โหลดมาข้างต้นไปไว้ด้านนอกสุดของ SD Card
2. สั่งคำสั่ง adb reboot recovery แล้วเครื่อง ssgs จะเข้าสู่ recovery mode
3. พอเครื่อง ssgs เข้าสู่ recovery mode แล้ว ให้เลือก apply sdcard:update.zip (ใช้ปุ่ม volumn ด้านข้างในการเลื่อนขึ้นลง และกดปุ่ม Home ด้านล่างในการเลือก) แล้วเครื่องจะ reboot เป็นอันเสร็จพิธี

ตรวจสอบว่า root สำเร็จ
1. ใน Applications จะมีโปรแกรมชื่อ Superuser Permission โผล่มา
2. ลองโหลดโปรแกรม CacheMate มาติดตั้ง โปรแกรมจะขอสิทธิ root ในการทำงาน ถ้าทำงานได้โปรแกรมจะล้าง cache ของเครื่องทิ้งให้ ทำให้ได้พื้นที่คืนมา (ของผมลองแล้วได้ 14MB)

ระบบที่่ทดสอบ
Device: Samsung Galaxy S (GT-I9000)
Firmware: Android ECLAIR 2.1-update1
Baseband: I9000DXJF4
Kernel: 2.6.29
Ububunt: 10.04

เบื้องหลังการ root
0. ทดสอบว่าเป็น Galaxy 3 (GT-I5800) หรือ Galaxy S (GT-I9000) ก่อน แล้วทำการแตก package ออกมาเพื่อเตรียมใช้
1. ลบ su เดิมทิ้งออกจาก bin และ xbin
2. copy app Superuser, busybox และ su ตัวใหม่เข้าไป
3. สร้าง symlink ของ su และกำหนด permission ให้ su กับ busybox

อ้างอิง
http://pdamobiz.com/forum/forum_posts.asp?TID=321558&PN=1