เคล็ดไม่ลับกับอูบุนตู

(เปลี่ยนทางจาก ระบบปฏิบัติการอูบุนตู)

การขยาย virtual memory

แก้ไข

บางท่านอาจประสบปัญหา, เมื่อมีการเพิ่มแรม แล้ว ต้องการขยายขนาดของ swap partition หรือ virtual memory ให้สอดคล้องกับขนาดของแรมที่เพิ่มขึ้นไม่ได้, เนื่องจากได้แบ่ง partition ไว้เต็มหมดแล้ว, ไม่มีที่ว่างให้สร้าง partition ใหม่ หรือ ขยาย swap partition ได้อีก.

ปัญหานี้มีทางออกได้ โดยการสร้าง swap file ไว้บน file system ที่มีอยู่แล้ว. เช่น คุณอาจสร้าง swap file ขนาด 256MiB ไว้บน /home,

$ sudo dd if=/dev/zero bs=1M count=256 of=/home/linux.swap
$ sudo mkswap /home/linux.swap
$ sudo swapon /home/linux.swap

เพิ่มบรรทัดต่อไปนี้ ลงใน /etc/fstab เพื่อให้ใช้ swap file นี้ทุกครั้งที่ boot,

/home/linux.swap    none     swap    sw          0       0

อย่าลืมปิด permission ของ swap file ให้ secure ที่สุด.

$ sudo chmod 000 /home/linux.swap

การเปิดหนัง DVD ลิขสิทธิ์ ด้วย อูบุนตู

แก้ไข

จากการใช้โปรแกรม xine บน ubuntu 4.10 (warty) เพื่อ เปิดดู dvd หนังลิขสิทธิ์ บางเรื่อง ที่ ได้มีการเข้ารหัส ป้องกัน การ copy ไว้, พบว่า ไม่สามารถ เปิดดูได้, ถึงแม้ว่า ตัวหนังกับตัวเครื่องเล่น dvd จะมีโซนตรงกันแล้ว ก็ตาม. โดย จะมีการแสดงข้อความ ดังนี้,

$ xine
This is xine (X11 gui) - a free video player v0.99.1.
(c) 2000-2003 The xine Team.
libdvdnav: Using dvdnav version 1-rc5 from http://xine.sf.net
libdvdread: Encrypted DVD support unavailable.
libdvdnav: DVD Title: TROY
libdvdnav: DVD Serial Number: 31116899
libdvdnav: DVD Title (Alternative): TROY
libdvdnav: Unable to find map file '/home/sysadmin/.dvdnav/TROY.map'
libdvdnav: DVD disk reports itself with Region mask 0x00fb0000. Regions: 3

พร้อม กัน นั้น ก็ จะ มี message box pop up ขึ้น มา, มี ข้อความ ว่า,

(Media stream scrambled/encrypted)

นี้ เป็น เพราะ dvd เรื่อง นั้น ได้ มี การ เข้ารหัส ที่ เรียก ว่า CSS (Content Scrambling System) เอา ไว้. ปัญหา นี้ สามารถ แก้ไข ได้ โดย การ หา โปรแกรม ถอดรหัส ที่ ชื่อ DeCSS มา ลง เพิ่ม.

สังเกตข้อความว่า,

libdvdread: Encrypted DVD support unavailable.

การจะถอดรหัสนี้น่าจะเกี่ยวข้องกับ libdvdread. จาก ที่ อ่าน ใน /usr/share/doc/libdvdread3/README.Debian, จะ มี คำแนะนำ บอก ไว้ ว่า ให้ รัน script /usr/share/doc/libdvdread3/examples/install-css.sh เพื่อ download และ ติดตั้ง โปรแกรม ที่ จะ มา ใช้ ถอดรหัส CSS นี้. จาก ที่ ไล่ ดู ใน script, พบ ว่า script นี้ จะ ไป load package โปรแกรม มา จาก http://www.dtek.chalmers.se/groups/dvd/deb/, ต่อ จาก นั้น script ก็ จะ ใช้ คำสั่ง dpkg เพื่อ ติดตั้ง package เป็น อัน จบ.

ใน ที่นี้ จะ download package มา และ ติดตั้ง เอง ดังนี้ (สำหรับ cpu ตระกูล intel 386),

$ wget -c http://www.dtek.chalmers.se/groups/dvd/deb/libdvdcss2_1.2.5-1_i386.deb
$ sudo dpkg -i libdvdcss2_1.2.5-1_i386.deb
Password:
Selecting previously deselected package libdvdcss2.
(Reading database ... 120298 files and directories currently installed.)
Unpacking libdvdcss2 (from .../libdvdcss2_1.2.5-1_i386.deb) ...
Setting up libdvdcss2 (1.2.5-1) ...

ทีนี้ ก็ เปิด xine เพื่อ ลอง เล่น dvd ดู อีก ครั้ง,

$ xine
This is xine (X11 gui) - a free video player v0.99.1.
(c) 2000-2003 The xine Team.
libdvdnav: Using dvdnav version 1-rc5 from http://xine.sf.net
libdvdread: Using libdvdcss version 1.2.5 for DVD access
libdvdnav: DVD Title: TROY
libdvdnav: DVD Serial Number: 31116899
libdvdnav: DVD Title (Alternative): TROY
libdvdnav: Unable to find map file '/home/sysadmin/.dvdnav/TROY.map'
libdvdnav: DVD disk reports itself with Region mask 0x00fb0000. Regions: 3

libdvdread: Attempting to retrieve all CSS keys
libdvdread: This can take a _long_ time, please be patient

libdvdread: Get key for /VIDEO_TS/VTS_01_0.VOB at 0x00000163
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_01_1.VOB at 0x0001200b
libdvdread: Elapsed time 0
libdvdread: Get key for /VIDEO_TS/VTS_02_1.VOB at 0x0037fce1
libdvdread: Elapsed time 0
libdvdread: Found 2 VTS's
libdvdread: Elapsed time 0

สังเกต เห็น ว่า จะ มี ข้อความ แสดง การ ประมวลผล เพื่อ ถอดรหัส CSS นี้ ออก มา. ต่อจากนี้ ก็จะสามารถ ดูหนังลิขสิทธิ์ ได้อย่าง สมบูรณ์แบบ.

หมายเหตุ: วิธีการนี้ ไม่ได้เป็นการ ปลดล็อคโซน. กรณีที่มีการ ล็อคโซนหนัง ไว้ที่ตัวเครื่องเล่น dvd, ก็จะสามารถเล่นได้เฉพาะโซนนั้นเท่านั้น.

เกี่ยวกับ boot options

แก้ไข

กล่าวถึง option ที่ส่งผ่านให้ linux kernel ผ่านทาง boot loader,

  • สำหรับ ubuntu เวอร์ชันเก่าๆ ที่ยังใช้ init แบบเก่า คือ System-V init (ubuntu package ชื่อ sysvinit), ถ้าใส่ "-b" ใน kernel boot parameter จะทำให้ กระบวนการ boot มาหยุดลง (โดย จะเข้า shell prompt) ก่อนที่จะมีการรัน init script ใดๆ ใน /etc/rcS.d และ /etc/rc2.d. ข้อมูลเกี่ยวกับ option "-b" นี้, จะพบได้ใน manpage init(8).
  • ตั้งแต่ ubuntu 5.10 เป็นต้นมา, สามารถใส่ option "break" (ubuntu 6.06 เป็นต้นมาสามารถใช้ "break=premount", หรือ "break=mount", หรือ "break=init" หรือ ค่าอื่นใด), โดยใส่ลงใน kernel boot parameter, เพื่อให้กระบวนการทำงานของ initrd มาหยุดลง (ด้วยการเข้า shell prompt) ก่อนที่จะมีการ mount และ/หรือ chroot เข้าสู่ root partition จริงๆ. ค่าต่างๆ ที่ใช้กับ option break ได้ ใน ubuntu 6.06 เป็นต้นมานั้น, จะกำหนดไว้ใน /usr/share/initramfs-tools/init ($ grep maybe_break /usr/share/initramfs-tools/init) ซึ่งเป็นส่วนหนึ่งของ package ชื่อ initramfs-tools, โดย package นี้จะเริ่มปรากฏ ใน ubuntu 5.10 เป็นต้นมา.

scp แบบ resume หรือ ต่อไฟล์

แก้ไข

หลายท่านอาจประสบปัญหาใช้ scp copy file ไปแล้ว, มีการหลุด, ทำให้ต้องมาเริ่ม copy ใหม่ ตั้งแต่ต้น. ปัญหานี้มีทางออกโดยการใช้ rsync ดังนี้,

$ rsync -e 'ssh -C' -avzP <src> <dest>

โดย รูปแบบของค่า <src> และ <dest> จะใช้เหมือนกับที่ใช้ใน scp ทุกประการ, และ option "-P" จะเป็น key หลัก ที่สั่งให้ rsync resume ในการ รับ-ส่ง ไฟล์. จากตัวอย่างนี้, rsync จะใช้คำสั่ง "ssh -C" ในการ รับ-ส่ง ข้อมูลระหว่างเครื่อง. ทั้งนี้ ถ้าไม่ได้ระบุ option "-e" เอาไว้, โปรแกรม rsync ก็มักจะกำหนดค่า default ไว้เป็น "ssh" อยู่แล้ว. ในตัวอย่างนี้ จะใส่ "-C" ให้กับ ssh เพื่อให้มีการบีบอัดข้อมูลในการ รับ-ส่ง ไปในตัวด้วย. อย่างไรก็ตาม, การใช้ option "-z" ของ rsync ก็เป็นการสั่งให้มีการบีบอัดข้อมูลอยู่แล้ว, การสั่ง "-C" ใน ssh ก็ไม่จำเป็นอีกต่อไป.

re-read partition table on-the-fly

แก้ไข

บางครั้ง หลังจาก แก้ไข และ save partition table ด้วยคำสั่ง fdisk แล้ว จะพบข้อความเตือนว่า,

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.

จากกรณีดังกล่าว, ถ้าต้องการให้ kernel อ่านค่า partition table ใหม่ แบบ on-the-fly โดยไม่ต้อง reboot หรือ unmount filesystem บน disk ลูกนั้น, ให้ run คำสั่ง

$ partprobe

.

managing service

แก้ไข

ถ้าต้องการใช้ gui tool เพื่อจัดการ ปิด/เปิด service สามารถใช้โปรแกรมชื่อ rcconf หรือ sysvconfig (ต้องติดตั้ง package ชื่อ rcconf หรือ sysvconfig)

ubuntu repository

แก้ไข
  • สามารถ download ubuntu เวอร์ชันเก่าๆ ที่เลิก support ไปแล้ว ได้ที่ http://old-releases.ubuntu.com/.

โปรแกรมแจกฟรี (Freeware)

แก้ไข
  • คุณสามารถลง VMWare player ได้จาก multiverse repository (ตั้งแต่ ubuntu 6.06 ขึ้นไป), โดยลง package ชื่อ vmware-player.
  • คุณสามารถลง flash player plugin ได้โดยตรงด้วยการลง package ชื่อ flashplayer-mozilla จาก multiverse repository (เฉพาะ ubuntu 4.10-5.10, ส่วน เวอร์ชันหลังจากนี้จะมีแต่ package ชื่อ flashplugin-nonfree ซึ่งเป็นเพียง dummy package ที่จะไป download plugin มาจาก website ของ adobe อีกที).
  • มี package opera, realplay (Real Player), และ vmware-server ใน ubuntu commercial repository ที่ http://archive.canonical.com/ubuntu/
  • โปรแกรม pine มีเฉพาะ source package ใน debian repository, ต้อง "apt-get source pine" มา build binary package เอง, เนื่องจากติดปัญหา license ที่ไม่สามารถ redistribute binary ที่มีการปรับปรุงแก้ไขแล้ว (โดย debian patch) ได้.
  • คุณสามารถ download hsfmodem driver ได้ที่ http://ftp.us.dell.com/comm/hsfmodem_7.60.00.06oem_i386.deb[1]. driver ตัวนี้เป็นตัวเต็ม ที่สามารถเชื่อมต่อ modem ได้เต็ม speed (56 Kbps), นอกจากนี้ตัว license ยังอนุญาตให้ redistribute (without modification) ได้อีกด้วย. ตัว package นี้จะไม่ strict อยู่กับ version ของ linux kernel, เนื่องจาก distribute มาในรูปของ source code.

ปัญหาที่พบบ่อย

แก้ไข
  • บางครั้งหลังจากขึ้นหน้าจอ screensaver แล้ว, พอกลับมาใช้อีกครั้งกลับไม่สามารถใช้ mouse ได้. ในบางกรณี mouse pointer อาจหายไปจากหน้าจอด้วย.
    • วิธีแก้ไข ให้พยายามหาทาง run screensaver ขึ้นมาอีกครั้งหนึ่ง, จะทำให้ mouse กลับมาใช้งานได้อีกครั้ง. โดยสามารถ run screensaver ได้ง่ายๆ ดังขั้นตอนต่อไปนี้,
      1. switch ออกไปหน้าจอ text console โดยกด alt-ctrl-F1
      2. login ด้วย user เดียวกันกับหน้าที่เป็น graphic (X windows)
      3. run คำสั่ง
        $ DISPLAY=:0 xscreensaver-demo
      4. switch กลับไปที่หน้าจอ graphic โดยกด alt-ctrl-F7
      5. ที่หน้าจอ graphic จะเห็นหน้าต่าง "Screensaver Preferences" โผล่ขึ้นมา, ให้สั่ง preview screensaver โดยกด alt-P
      6. จากนี้ mouse ก็จะกลับมาใช้งานได้อีกครั้งหนึ่ง
    • อาจมี ubuntu บางรุ่น (เช่น 6.06) ที่ไม่ได้ติดตั้งคำสั่ง xscreensaver-demo มาให้. ในกรณีนี้, ให้ใช้คำสั่ง "gnome-screensaver-command --activate" เพื่อ activate screensaver แทน. ทั้งนี้ การ run คำสั่ง gnome-screensaver-command ในหน้าจออื่น ที่ไม่ใช่หน้าจอ graphic, จำเป็นต้อง set ค่า environment DBUS_SESSION_BUS_ADDRESS จึงจะสามารถสั่ง activate screensaver ด้วยคำสั่งดังกล่าวได้, ดังนี้,
      $ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-xxxxxxxxxx gnome-screensaver-command --activate
      โดยที่ค่า /tmp/dbus-xxxxxxxxxx นั้น จะต้องถูกแทนที่ด้วยค่า socket ที่ระบบของคุณใช้อยู่. การดูค่า socket นี้ สามารถดูได้ด้วยคำสั่ง,
      $ netstat -na | grep tmp/dbus
      ซึ่งจะทำให้ได้ผลลัพธ์ในลักษณะ ดังต่อไปนี้,
      unix  2      [ ACC ]     STREAM     LISTENING     14761    @/tmp/dbus-okpOeMIVpu
      จากผลลัพธ์ดังกล่าว จะพบค่า @/tmp/dbus-okpOeMIVpu อยู่ท้ายบรรทัด. ให้แทนที่ /tmp/dbus-xxxxxxxxxx ด้วยค่า /tmp/dbus-okpOeMIVpu ดังกล่าว (อย่าลืมตัดตัวอักษร @ ออก), ดังนี้,
      $ DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-okpOeMIVpu gnome-screensaver-command --activate
      ข้อสังเกต: คำสั่ง gnome-screensaver-command ไม่จำเป็นต้องตั้งค่า DISPLAY=:0 ก็ได้
    • ถ้ามีข้อติดขัดบางประการ ที่ทำให้ไม่สามารถแก้ปัญหาด้วยคำสั่งต่างๆ ข้างต้นได้, และ ยังไม่พบวิธีอื่นที่จะแก้ไขปัญหานี้ได้, ก็ยังมีหนทางสุดท้าย ที่จะแก้ไขได้คือ รอให้ screensaver ทำงานขึ้นมาเองอีกครั้งหนึ่ง, mouse pointer ก็จะกลับมาใช้งานได้อีกครั้งหนึ่ง.
    • มีโปรแกรมบางตัว เช่น rdesktop ที่มี bug ที่ทำให้บางครั้ง ทั้ง mouse และ hotkey บางตัว เช่น alt-tab, ไม่สามารถใช้งานได้, ก็สามารถแก้ไขปัญหาได้ด้วยวิธีเดียวกับวิธีข้างบนนี้.

อ้างอิง

แก้ไข
  1. http://forum.ubuntuclub.com/index.php?topic=1918.msg9938