วันจันทร์ที่ 11 สิงหาคม พ.ศ. 2551

การลบ kernel เก่าทิ้ง

กรณีที่เราอัปเกรด kernel ใหม่ เราสามารถลบ kernel เก่าๆออกไปได้ด้วยการที่ไป remove linux-image-*******-generic ใน synaptic ครับเมื่อลบเสร็จแล้วไปที่เทอมินอลและพิมพ์คำสั่งนี้

$ sudo update-grub

การติดตั้งไดรเวอร์ Canon pixma Ip1800

1. ดาวโหลดไดรเวอร์จาก http://www.canon-asia.com/index.jsp?fuseaction=support&prod_type=bj&country=SG
โดยให้ดาวโหลด 2 ไฟล์นี้
cnijfilter-common-2.70-1.i386.rpm และ cnijfilter-ip1800series-2.70-1.i386.rpm
2.ติดตั้ง
alien ด้วยคำสั่ง sudo apt-get install alien
3. แปลงไฟล์ทั้งสองไฟล์ให้เป็น deb ด้วยคำสั่ง
sudo alien -k cnijfilter-common-2.70-1.i386.rpm และ sudo alien -k cnijfilter-ip1800series-2.70-1.i386.rpm โดยต้องเข้าไปที่พาทร์ที่ไฟล์ทั้งสองตั้งอยู่เสียก่อน
4.
เริ่มติดตั้งทั้งสองไฟล์ตามลำดับดงันี้ sudo dpkg -i cnijfilter-common_2.70-1_i386.deb และ sudo dpkg -i cnijfilter-ip1800series_2.70-1_i386.deb
5.
cd /usr/lib/
6. sudo ln -s ./libtiff.so.4.2.1 ./libtiff.so.3
7.
sudo apt-get install libpng3
และสุดท้ายถ้าเป็น ubuntu 7.10 8.04 และ Tle 9.0 ให้ติดตั้งสองไฟล์นี้ด้วย
sudo apt-get install libgtk1.2
sudo apt-get install libxml1
หลังจากติดตั้งแล้วเข้าไปแอดปริ้นเตอร์ตามปกติ
อ้างอิงจาก
http://ibr94.blogspot.com/2007/08/canon-pixma-ip1880-printer-in-ubuntu.h...

วันพฤหัสบดีที่ 7 สิงหาคม พ.ศ. 2551

การคอมไพล์ Kernel

บทความนี้คัดลอกมาจาก http://www.ubuntuclub.com/html/index.php?option=com_content&task=view&id=333&Itemid=41 ซึ่งเขียนโดย rooney
นำมาบันทึกไว้เพื่ความสะดวกในการค้นหาเพื่อการศึกษาส่วนตัวในอนาคต
วิธีก็ยังงี้เลย เดี๋ยวจะหาว่าพูดมาก
step 1 : # apt-get install kernel-package ncurses*
เป็นการ load เอาเครื่องไม้ เครื่องมือ ที่จะใช้ในการ compile kernel มาลงเครื่อง

step 2 : เข้า web เพื่อไป load kernel ตัวใหม่มาลงเครื่อง โดยปกติก็ต้อง web นี้เลยครับ www.kernel.org โดยเข้าไป path นี้ http://www.kernel.org/pub/linux/kernel/v2.6/ มันจะมี kernel version 2.6 ให้ load (รุ่นเก่าจะเป็น version 2.4 , 2.5) โดยไอ้ version 2.6 ก็จะมีแบ่งย่อยลงไปอีก เช่น 2.6.15 , 2.6.16 , 2.6.17 ประมาณนั้นแหละ แต่ถ้าจะให้จ๊าบแนะนำไอ้ตัวใหม่สุดๆไปเลย 2.6.18 เวลาเลือกก็ หาไอ้ตัว icon ที่เป็นสีแดงๆ ที่เขียนว่า linux-2.6.18.tar.gz แล้วก็ load ซะ

step 3 : # mv linux-2.6.18.tar.gz /usr/src
load เสร็จก็ ลอง move คุณ kernel ไปไว้ที่ ที่ควรอยู่

step 4 : # cd /usr/src
เปลี่ยน path เข้าไปในที่เก็บ kernel

step 5 : # tar -xzvf linux-2.6.18.tar.gz
แตก zip ออกซะ โดยหลังจากแตกเสร็จมันจะมี folder ชื่อ linux-2.6.18 ผล่ขึ้นมา (อยู่ใน /usr/src นั่นแหละ)

step 6 : # make menuconfig
config kernel ก่อน compile ครับ

หลังจากแตกเสร็จ จะได้ kernel พร้อม compile แต่ก่อน compile มีอีกขั้นตอนที่สำคัญ คือปรับแต่ง config ของ kernel ก่อน compile เว่ากันซื่อๆ คือ เมื่อพิมพ์ make menuconfig มันจะมีหน้าจอฟ้าๆขึ้นมา ให้เราเลือกปรับแต่ง kernel ของเราให้เหมาะกับ ที่เราต้องการใช้

จะว่าไปไม่ต้องปรับอะไรก็ได้นะครับใช้ค่า default ของมันไปเลยก็ได้ ถึงยังไงเราก็จะได้ kernel ที่ security มากขึ้น รองรับ hardware เยอะขึ้นอะไรประมาณนั้น แต่ถ้าเรามีความรู้มากพอก็อาจไม่ใช้ค่า default ของมัน โดยอาจจะมีการปรับแต่ง module บางส่วนให้ enable , disable เช่น มีอยู่ตอนนึงเห็น ปู่อ้น แก enable module อะไรบางอย่างของ kernel เครื่อง firewall ของแกเลยมีความสามารถที่จะ blog โปรแกรมพวก bittorrent ได้

step 7 : # make clean bzImage modules
เป็นขั้นตอนการ compile kernel ครับ

* ลืมบอกไปอย่างน่ะ คือถ้า ระหว่าง ขั้นตอน 6 กับ 7 เกิด error อะไรขึ้นมา ก็ไม่ต้องตกใจนะ ส่วนมากมักจะ error เพราะขาด packageบางอย่างที่จำเป็นไป แต่ไม่ต้องห่วงถ้า error มันจะฟ้องว่าขาด package อะไรไป เช่น gcc (compiler ภาษา C) ก็เอาเป็นว่าถ้ามันฟ้องว่า ขาดอะไรไป เราก็ apt-get install แมร่งไปเลย หรือถ้าเรามี gcc แล้ว บางทีมันจะไม่ฟ้องว่าขาด package อะไร แต่มันอาจจะบอกว่าตอน compile หรือตอน make menuconfig มัน error นู่นนี่ี่เฉยๆ ก็ลองไล่ลง library ที่เกี่ยวกับตัวแปลภาษา(พวก C , C++) เอาละกันเพราะผมก็ไล่ลงมั่วๆเหมือนกัน

step 8 :
# make modules_install install
ขั้นตอนนี้ คือ การติดตั้ง kernel ที่ compile เสร็จแล้ว ลงไปซะ

step 9 : # ls -l /boot/vmlinuz*
เป็นการ check หลังการติดตั้ง kernel ถ้าไม่มีปัญหา จะเห็นไฟล์ vmlinuz version ใหม่โผล่ขึ้นมา

lrwxrwxrwx 1 root root 14 2005-06-20 11:24 /boot/vmlinuz -> vmlinuz-2.6.18
-rw-r--r-- 1 root root 812691 2004-09-03 13:43 /boot/vmlinuz-2.4.27-1-386
-rw-r--r-- 1 root root 1154908 2005-06-20 11:24 /boot/vmlinuz-2.6.18

step 10 : # apt-get install module-init-tools initrd-tools procps
ขั้นต่อมา คือการสร้าง image ของ kernel ตัวใหม่ แต่ก่อนสร้าง image ได้ ก็ต้องมีเครื่องมือก่อน ก็เลย apt เครื่องมือมาซะ

step 11 :
# cd /lib/modules

step 12 : # mkinitrd -o /boot/initrd.img-2.6.18 2.6.18
สร้าง image สิจ๊ะ จะช้าทำไม

step 13 : # gedit /boot/grub/menu.lst
เปิด file ที่เป็นตัว boot ระบบ (grub) ขึ้นมาแก้ ว่าจะให้ boot เข้า OS ด้วย image ตัวไหน
ข้างล่าง copy มาจาก http://thaiopensource.org/content/view/178/202/lang,/ ซึ่งเป็น boot menu ของ debian (linux ทุกตัวก็แบบเดียวกัน เอามาดูเป็นตัวอย่างแทนกันได้)

default 2

timeout 5

title Debian GNU/Linux, kernel 2.4.27-1-386
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-1-386 root=/dev/cciss/c0d0p1 ro
initrd /boot/initrd.img-2.4.27-1-386
savedefault
boot

title Debian GNU/Linux, kernel 2.4.27-1-386 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.4.27-1-386 root=/dev/cciss/c0d0p1 ro single
initrd /boot/initrd.img-2.4.27-1-386
savedefault
boot

title Debian GNU/Linux, kernel 2.6.11 ----> ลำดับที่ 2
root (hd0,0)
kernel /boot/vmlinuz-2.6.11 root=/dev/cciss/c0d0p1 ro
initrd /boot/initrd.img-2.6.11
savedefault
boot

* default ที่เท่ากับ 2 คือให้ boot เข้า image file ลำดับที่ 2 โดยการนับลำดับ จะเริ่มนับจาก 0 คือ image ตัวบนสุดจะเป็น image ตัวที่ 0 ส่วน timeout ที่เป็น 5 หมายความว่าตอน show menu ตอนจะ boot เข้า OS ให้มี delay สัก 5 วิ ก่อนจะ boot เข้า image ที่ได้ตั้งไว้

** ไอ้ image อันดับที่ 2 (image ที่เราสร้างเอง) ตอนเข้ามาใหม่ๆ ใน file นี้ จะไม่มีเขียนไว้ให้นะ จะมีแค่ลำดับที่ 0 กับ 1 ส่วนไอ้ลำดับที่ 2 เนี่ย ต้องมานั่งพิมพ์เอง ทั้งหมด อย่างไอ้ตรง title เนี่ย (จะตั้งว่า Ubuntu 2.6.18 หรือ I love you , season change ก็ตามสะดวก เพราะเป็นแค่ title ที่จะ show ตรง boot menu ) ส่วน ข้างหลัง root จะเป็นอะไร ก็ให้ copy จากไอ้ตัวบนๆเอา ส่วน kernel ก็ copy เอาจากตัวบนๆ แล้วก็เปลี่ยนแค่เลขเป็น 2.6.18 ที่เหลือก็แนวๆนี้แหละ copy แล้วก็แก้เลข


step 14 : # init 6
reboot คับ

step 15 :
# หลังจาก reboot จะพบ menu ตัวใหม่ ก็ให้ boot เข้า kernel ตัวใหม่ ที่เพิ่ง compile เสร็จมาหมาดๆ

step 16 : # uname -a
linux ns1 2.6.18 #4 SMP Sun Sep 24 11:08:27 ICT 2006 i686 GNU/Linux --> จะเห็น แนวๆนี้ ว่าเป็น kernel เวอร์ชันใหม่