Tag Archives: linux

Logitech Quickcam® Orbit

ได้ webcam ของ Logitech รุ่น Quickcam® Orbit มาลอง ..

Quickcam® Orbit และ webcam ของ Logitech อีกหลายรุ่น ใช้ไดรเวอร์ PWC ที่สร้างปัญหากับเคอร์เนลเมื่อปีก่อนโน้น .. ตอนนี้ปัญหาก็ผ่านไปแล้ว อย่างน้อยที่สุด PWC ก็โผล่มาให้เห็นตั้งแต่ เคอร์เนล 2.6.12(.2) .. มีไดรเวอร์ในเคอร์เนลแล้วก็จริงแต่ที่ลองดูปรากฏว่ามันทำงานเพี้ยนๆ เลยลองเอา ไดรเวอร์ใหม่ มาคอมไพล์แยกดู ผลคือใช้งานได้ดีเกินคาด .. ขนาด grabdisplay ก็ยังได้ 320×240 ที่ 30 fps หรือ 640×480 ที่ 15 fps :D … เรื่องรับภาพมาแสดงผลก็ผ่านไปได้

ทีนี้เจ้า Quickcam® Orbit มันสั่งให้กล้องหมุน ซ้าย-ขวา-ก้ม-เงย ได้ บนวินโดว์สก็คงสบายไปเพราะมีโปรแกรมแถม … สำหรับบนลินุกซ์ลองกูเกิ้ลก็เจอว่ามีคนทำโปรแกรมควบคุมกล้องบนลินุกซ์ให้แล้วเหมือนกัน .. โปรแกรมที่ว่าคือ OrbitView คอมไพล์ แล้วรัน ก็ควบคุมกล้องได้โดยใช้เมาส์คลิ้ก :D

สงสัยจะได้ถอยมาใช้สักตัว … :P

Updated: Quickcam® Orbit ใช้กับเคอร์เนลของ ubuntu ได้เลยแฮะ แต่ทำงานช้ากว่าไดรเวอร์ตัวใหม่ของ PWC … hmm (- -‘)

Linux Kernel 2.5.15

blog ช้าไปหน่อย .. better late than never :P

stable kernel ตัวแรกของปี ออกเมื่อวันที่ 3 มกราคม 2549 ที่น่าสนใจสุดคงเป็นเรื่อง shared subtree ที่จับรวมเข้าไปอยู่ใน VFS เรียบร้อย แรงผลักของ shared subtree อย่างแรก มาจาก files-as-directories ซึ่งเป็นฟีเจอร์นึงใน Reiser FS สำหรับสร้าง hardlink ไปยังไดเรกทอรี่ได้ แต่เอาเข้าจริงๆ การใช้งานของ Reiser FS เกือบทั้งหมด disable ฟีเจอร์นี้ ไว้เพราะมีปัญหาใหญ่เรื่อง deadlock ก็เลยต้องหา solution กันอยู่ แรงผลักอย่างที่สองคือ per-user namespace ซึ่งเป็นฟีเจอร์ที่ทำให้ผู้ใช้แต่ละคนเสมือนกับมี namespace บนระบบไฟล์ของตัวเอง ออกจะคล้ายๆ mount -o bind แต่เรื่องสิทธิของไฟล์หรือไดเรกทอรี่ที่แชร์อยู่ด้วยกันจะซับซ้อนกว่า shared subtree สนับสนุนการ mount ได้หลายแบบ เช่น แบบ shared slave private และ unbindable กำหนดได้ว่า mount จะ forward / receive propagation หรือไม่ก็ได้ ฯลฯ รายละเอียดค่อนข้างยาว ไว้ว่างๆ ค่อยมาเล่าให้ฟังเพิ่ม

เปรียบเทียบกับ 2.6.14

  • Optimize for size (CC_OPTIMIZE_FOR_SIZE) ใช้ -Os แทน -O2 .. คอมไพเลอร์บางตัวอาจจะได้ broken code (- -‘)
  • เลือก default I/O scheduler ได้สี่แบบ Anticipatory (DEFAULT_AS), Deadline (DEFAULT_DEADLINE), CFQ (DEFAULT_CFG), No-op (DEFAULT_NOOP)
  • Legacy Power Management API (PM_LEGACY) สำหรับ pm_register()
  • Connector unified userspace – kernelspace linker (CONNECTOR)
  • สนับสนุน Resident Flash Disk ในระดับ Flash Translation Layers (RFD_FTL) อยู่ใน embedded system บางระบบ
  • สนับสนุน OneNAND flash devices (MTD_ONENAMD)
  • สนับสนุนการทำ (U)DMA บนชิปเซ็ต AMD CS5535 (BLK_DEV_CS5535)
  • ไดรเวอร์ iSCSI สำหรับทำงานบน IP network (ISCSI_TCP)
  • ไดรเวอร์ SCSI สำหรับ Pacific Digital ADMA (SCSI_PDC_ADMA)
  • ไดรเวอร์ SATA สำหรับ Silicon Image 3124/3132 (SCSI_SATA_SIL24)
  • ไดรเวอร์ Dummy ATM (ATM_DUMMY) เอาไว้ทดสอบ หรือพัฒนา
  • ไดรเวอร์ปุ่มพิเศษของ x86 Wistron laptop, e.g., Acer, Fujitsu, ..(INPUT_WISTRON_BTNS)
  • สนับสนุน compression/encryption สำหรับ Microsoft Point-to-Point Tunneling Protocol (PPP_MPPE)
  • ไดรเวอร์สำหรับ Omnikey Cardman 4000 (CARDMAN_4000) และ 4040 (CARDMAN_4040)
  • ไดรเวอร์สำหรับ telecom clock ของ MBPL0010 ATCA SBC
  • ไดรเวอร์ real-time clock สำหรับ Xicor X1205
  • ไดรเวอร์ Digital Broadcast Video/ATSC ที่ใช้ชิพ Brooktree/Conexant BT878 (VIDEO_BT878_DVB)
  • ไดรเวอร์ Digital Broadcast Video ที่ใช้ชิพ Philips SAA7134_DVB (VIDEO_SAA7134_DVB_ALL_FRONTENDS)
  • ไดรเวอร์ระบบเสียงของ Philips SAA7134 สำหรับ ALSA (VIDEO_SAA7134_ALSA) และ OSS (VIDEO_SAA7134_OSS)
  • ไดรเวอร์ Digital Broadcast Video ที่ใช้ชิพ CX2388x (VIDEO_CX88_DVB_ALL_FRONTENDS)
  • ไดรเวอร์ USB video capture สำหรับ Empia EM2800/2820/2840 (VIDEO_EM28XX)
  • สนับสนุน console rotation สำหรับ Framebuffer (FRAMEBUFFER_CONSOLE_ROTATION)
  • ไดรเวอร์ CDMA Wireless สำหรับ USB AnyData devices (USB_SERIAL_ANYDATA)
  • สนับสนุน RDMA SCSI protocol บน Infiniband (INFINIBAND_SRP)
  • สนับสนุน JFFS2 summary (JFFS2_SUMMARY)
  • สนับสนุนการเก็บสถิติเพิ่มเติมสำหรับ CIFS (CIFS_STATS2)
  • สนับสนุนกลไก upcall สำหรับ CIFS ติดต่อ userspace helper utilities (CIFS_UPCALL)
  • trap address และ callback ภายในเคอร์เนล สำหรับ kernel debugging (KPROBES)
  • ออปชันสำหรับ debug ระบบ virtual memory (DEBUG_VM)

นอกเหนือจากนี้ก็มี CPU hotplug เดิม enable/disable ได้ ตอนนี้เพิ่มจำนวนได้ .. page table จัดการใหม่ช่วยให้ระบบ multiprocessor มี scalability ดีขึ้น ค่าปริยายคือ enable เมื่อ CPU >= 4 ตัว แพตช์นี้ข้อดีคือใช้งานกับ CPU จำนวนมากๆ ได้ดีขึ้น แต่อาจจะทำให้มี latency มากขึ้นอีกนิด .. ที่ต้องพิจารณาอีกอย่างคือ 2.6.15 re-structure ของ driver core ใหม่ทำให้ทำ nested structure ได้ ผลกระทบคือต้องใช้กับ udev >= 071 .. เท่าที่ใช้กับ udev 062 ก็ยังปกติดี YMMV

Linux Kernel 2.6.14

ออกเมื่อ 27 ต.ค. 48 ที่ผ่านมา ช้ากว่าที่กะไว้ประมาณ 10 วัน จาก ChangeLog มีการเปลี่ยนแปลงประมาณสามพันกว่าจุด ตามแผนของ 2.6.14 มีการเพิ่มเติมและเปลี่ยนแปลงมากพอสมควร .. เที่ยวนี้ลอง make allyesconfig จาก 2.6.13.4 แล้วมา make oldconfig ใน 2.6.14 ได้ออกมาดังนี้

  • General setup
    • Automatically append version information to the version string (LOCALVERSION_AUTO) เติม local version อัตโนมัติ e.g. 2.6.14-kitty
  • Processor type and feature
    • BIOS update support for DELL systems via sysfs (DELL_RBU) สำหรับ DELL
    • Dell Systems Management Base Driver (DCDBAS) นี่ก็สำหรับเครื่อง DELL เหมือนกัน เป็นออปชันสำหรับให้ใช้ Service Management Interrupt (SMI) และ Host Control Action ได้
  • Power management
    • Encrypt suspend image (SWSUSP_ENCRYPT) เข้ารหัสลับอิมเมจของ software suspend .. กุญแจเข้า/ถอดรหัสเก็บเป็น cleartext ตอน suspend และจะลบทิ้งเมื่อ resume
  • Networking
    • INET: socket monitoring interface (INET_DIAG) สนับสนุน socket monitoring interface เอาไปใช้กับ ss ใน iproute2
    • Netfilter netlink interface (NETFILTER_NETLINK) สนับสนุน netfilter netlink interface
    • Netfilter สนับสนุนการติดตามและแจ้งสถานะของโพรโตคอลใหม่ๆ ดังนี้
    • Connection tracking events (IP_NF_CONNTRACK_EVENTS)
    • NetBIOS name service protocol support (IP_NF_NETBIOS_NS)
    • PPTP protocol support (IP_NF_PPTP) – Point to Point Tunnelling Protocol
    • DCCP protocol match support (IP_NF_MATCH_DCCP) – Datagram Congestion Control Protocol
  • Netfilter matching เพิ่มมาอีกสองอันคือ
    • String match support (IP_NF_MATCH_STRING) match ข้อมูลใน packet ได้ :O
    • Connection byte/packet counter match support (IP_NF_MATCH_CONNBYTES) match byte/packet counter
  • Target สำหรับ IPv4 เพิ่มเติมอีกสองอย่าง
    • NFQUEUE Target Support (IP_NF_TARGET_NFQUEUE) ใช้แทน QUEUE target ที่ obsolete ไปแล้ว อันนี้สนับสนุน 65535 queue แทนที่จะเป็นแค่ queue เดียวเหมือนแต่ก่อน
    • TTL target support (IP_NF_TARGET_TTL) ปรับตั้งค่า TTL เป็นเท่าไหร่ก็ได้ :O .. โปรดใช้ด้วยความระมัดระวัง :P
  • Target สำหรับ IPv6 เพิ่มมาอีกสามอย่าง
    • REJECT target support (IP6_NF_TARGET_REJECT) สำหรับ IPv6 .. target นี้จะส่ง ICMPv6 กลับไปที่ source ให้ด้วย
    • NFQUEUE Target Support (IP6_NF_TARGET_NFQUEUE) NFQUEUE สำหรับ IPv6 ล้อมาจากของ IPv4
    • HL (hoplimit) target support (IP6_NF_TARGET_HL) ปรับตั้งค่า Hop limit ของ IPv6 ได้ เหมือนกับ TTL ของ IPv4
  • The DCCP Protocol (IP_DCCP) สนับสนุน Datagram Congestion Control Protocol .. :D
  • Serial port KISS driver (MKISS) สนับสนุนโพรโตคอล KISS ในการเชื่อม AX.25 ผ่านเครือข่ายวิทยุสมัครเล่น
  • Generic IEEE 802.11 Networking Stack (IEEE80211) แยก IEEE 802.11 network stack ออกจากฮาร์ดแวร์ bluetooth
  • Unified userspace kernelspace linker (CONNECTOR) จุดเชื่อมระหว่าง userspace application กับ netlink socket protocol ใน kernelspace
  • Device drivers
    • SCSI
    • RAID Transport Class (RAID_ATTRS) export ข้อมูลของระบบ RAID ผ่าน sysfs
    • SAS Transport Attributes (SCSI_SAS_ATTRS) export ข้อมูลของอุปกรณ์ Serial Attached SCSI (SAS) ผ่าน sysfs
    • LSI Logic MegaRAID SAS RAID Module (MEGARAID_SAS) ไดรเวอร์ SAS สำหรับ LSI Logic MegaRAID
    • Fusion MPT ScsiHost drivers for SAS (FUSION_SAS) ไดรเวอร์ SAS ของ Fusion MPT
    • Marvell SATA support (SCSI_SATA_MV) ไดรเวอร์ SATA สำหรับ ชิป 88SX[56]0[48][01] ของ Marvell
  • NICs
    • PHY Device support and infrastructure (PHYLIB) สนับสนุนโครงสร้างการเชื่อมต่อและจัดการกับอุปกรณ์ PHY (Physical Layer devices)
    • Sun Cassini support (CASSINI) ไดรเวอร์สำหรับ Sun Cassini / Sun GigaSwift Ethernet
    • ULi M526x controller support (ULI526X) ไดรเวอร์สำหรับ ULi M5261/M5263 10/100M Ethernet Controller
    • SiS190/SiS191 gigabit ethernet support (SIS190) ไดรเวอร์สำหรับ SiS 190 Fast/Gigabit Ethernet adapter รวมถึง on-board controller ใน SiS 965/966 south bridge
    • Chelsio 10Gb Ethernet support (CHELSIO_T1) ไดรเวอร์สำหรับ Chelsio N110/N210 10Gb Ethernet
    • Nortel emobility PCI adaptor support (NORTEL_HERMES) ไดรเวอร์สำหรับ Hermes/Orinoco PCMCIA ที่เสียบกับ Nortel emobility PCI adaptors
    • Symbol Spectrum24 Trilogy PCMCIA card support (PCMCIA_SPECTRUM) ไดรเวอร์สำหรับ 802.11b cards ที่ใช้ RAM-loadable Symbol firmware เช่น Symbol Wireless Networker
    • LA4100, CompactFlash cards ของ Socket Communications และ Intel PRO/Wireless 2011B ไดรเวอร์นี้ต้องโหลด firmware ตอนเริ่มใช้งาน
    • IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) (HOSTAP) สนับสนุนการทำงานเป็น Access Point (Host AP) สำหรับชิปตระกูล Intersil Prism2/2.5/3
  • Char Dev
    • Digiboard Intelligent Async Support (DIGIEPCA) ไดรเวอร์ serial สำหรับ Digiboard รุ่น Xx Xeve และ Xem
    • Savage video cards (DRM_SAVAGE) ไดรเวอร์ DRM สำหรับ Savage3D/4/SuperSavage/Pro/Twister
    • IBM Automatic Server Restart (IBMASR) ไดรเวอร์ watchdog สำหรับ IBM Automatic Server Restart watchdog ใน IBM eServer xSeries
    • Intel 6300ESB Timer/Watchdog (I6300ESB_WDT) ไดรเวอร์ watchdog สำหรับ Intel 6300ESB controller
    • SBC8360 Watchdog Timer (SBC8360_WDT) ไดรเวอร์ watchdog สำหรับ SBC8360 ของบริษัท Axiomtek
    • W83977F (PCM-5335) Watchdog Timer (W83977F_WDT) ไดรเวอร์ watchdog สำหรับ W83977F I/O chip
  • 1-wire bus
    • 4kb EEPROM family support (DS2433) (W1_DS2433) ไดรเวอร์ 1-wire bus สำหรับ 4kb EEPROM ตระกูล DS2433
  • Hardware monitor
    • Winbond W83792D (SENSORS_W83792D) ไดรเวอร์สำหรับชิป Winbond W83792D
    • IBM Hard Drive Active Protection System (hdaps) (SENSORS_HDAPS)ไดรเวอร์สำหรับ IBM Hard Drive Active Protection เริ่มใช้งานตั้งแต่ ThinkPad R50 T41 และ X40 กลไกของ HDAP คือตัววัดอัตราเร่ง (accelerometer) และเซ็นเซอร์อื่นๆ ที่ช่วยตรวจสอบการเคลื่อนไหวของโน้ตบุ๊ค ข้อมูลเหล่านี้จะส่งผ่านซอฟต์แวร์ไปควบคุมฮาร์ดดิสก์อีกที ไดรเวอร์ตัวนี้บนลินุกซ์เอา accelerometer มาใช้งานเป็น input device ได้ด้วย :D
  • Graphics
    • (i810/i815) Enable DDC Support (FB_I810_I2C) สนับสนุน VESA/DDC (Display Data Channel) สำหรับ i810/i815 Frame Buffer
    • Cyberblade/i1 support (FB_CYBLA) ไดรเวอร์ Frame Buffer สำหรับ Trident Cyberblade/i1, VIA VT8601A North Bridge, VIA Apollo PLE133
  • Multimedia
    • SAA6588 Radio Chip RDS decoder support on BT848 cards (VIDEO_SAA6588) ไดรเวอร์สำหรับ SAA6588 Radio Chip RDS decoder บน BT8x8
    • TwinhanDTV StarBox and clones DVB-S USB2.0 support (DVB_USB_VP702X) ไดรเวอร์ USB สำหรับ TwinhanDTV StarBox
    • Analog Devices AD1889 (SND_AD1889) ไดรเวอร์สำหรับ Analog Devices AD1889
  • Sound
    • Use RTC as default sequencer timer (SND_SEQ_RTCTIMER_DEFAULT) ใช้ RTC เป็น sequencer timer
    • Obsolete OSS USB drivers (OBSOLETE_OSS_USB_DRIVER) ไดรเวอร์ OSS สำหรับ USB sound devices
  • USB
    • Support OneTouch Button on Maxtor Hard Drives (USB_STORAGE_ONETOUCH) ไดรเวอร์สำหรับฮาร์ดดิสก์ Maxtor OneTouch ตั้งปุ่ม bind กับคีย์บอร์ดได้
    • Yealink usb-p1k voip phone (USB_YEALINK) ไดรเวอร์สำหรับ Yealink usb-p1k
    • Apple USB Touchpad support (USB_APPLETOUCH) ไดรเวอร์สำหรับ Apple USB Touchpad
    • ASIX AX88xxx Based USB 2.0 Ethernet Adapters (USB_NET_AX8817X) ไดรเวอร์สำหรับ ASIX AX88xxx based USB 2.0 10/100 Ethernet adapters หลายยี่ห้อเลย
  • Aten UC210T
    • ASIX AX88172
    • Billionton Systems, USB2AR
    • Buffalo LUA-U2-KTX
    • Corega FEther USB2-TX
    • D-Link DUB-E100
    • Hawking UF200
    • Linksys USB200M
    • Netgear FA120
    • Sitecom LN-029
    • Intellinet USB 2.0 Ethernet
    • ST Lab USB 2.0 Ethernet
    • TrendNet TU2-ET100
  • GeneSys GL620USB-A based cables (USB_NET_GL620A) ไดรเวอร์ host-to-host สำหรับ GeneSys GL620USB
  • NetChip 1080 based cables (Laplink, …) (USB_NET_NET1080) ไดรเวอร์ host-to-host สำหรับ NetChip 1080
  • Prolific PL-2301/2302 based cables (USB_NET_PLUSB) ไดรเวอร์ host-to-host สำหรับ Prolific PL-2301/2302
  • Host for RNDIS devices (USB_NET_RNDIS_HOST) สนับสนุน Remote NDIS USB networking (ของ Microsoft :P)
  • Simple USB Network Links (CDC Ethernet subset) (USB_NET_CDC_SUBSET) สนับสนุน USB networking ผ่าน (subset ของ) มาตรฐาน Class Definition for Communication Device (CDC)
  • Sharp Zaurus (stock ROMs) and compatible (USB_NET_ZAURUS) สนับสนุน USB networking สำหรับ Zaurus SL-5000D, SL-5500, SL-5600, A-300, B-500
    • (sisusb) Text console and mode switching support (USB_SISUSBVGA_CON) สนับสนุน mode switching สำหรับ SIS USB VGA
  • InfiniBand
    • InfiniBand userspace MAD support (INFINIBAND_USER_MAD) สนับสนุน userspace InfiniBand MAD
    • InfiniBand userspace access (verbs and CM) (INFINIBAND_USER_ACCESS) userspace applications เชื่อมต่อกับ InfiniBand ได้โดยตรง
  • File systems
    • Filesystem in Userspace support (FUSE_FS) สนับสนุนระบบไฟล์ใน userspace :O
    • Relayfs file system support (RELAYFS_FS) สนับสนุนการ relay ข้อมูลระหว่างระบบไฟล์ใน kernelspace และ userspace
    • Plan 9 Resource Sharing Support (9P2000) (9P_FS) สนับสนุนโพรโตคอล 9P2000 สำหรับระบบไฟล์ Plan 9
  • Kernel hacking
    • Detect Soft Lockups (DETECT_SOFTLOCKUP) ตรวจสอบ soft lockups ที่เกิดจากบั๊กในเคอร์เนล ส่งผลให้ระบบค้างนานกว่า 10 วินาที ถ้าพบว่าเกิด soft lockup เคอร์เนลจะพิมพ์ stack trace เพื่อช่วยในการดีบั๊ก แต่ระบบจะยังค้างไปจนกว่าเคอร์เนลจะหลุดจากลูปและปลด soft lockup เอง
  • Libraries
    • CRC16 functions (CRC16) ไลบรารี CRC-16 สำหรับมอดูลนอกเคอร์เนล

Breezin’ Breezy

เพิ่งจะได้ลง Ubuntu 5.10 Breezy Badger วันนี้ โดยรวมก็น่าใช้ดี.. GNOME/GTK+ ที่ย้ายมาใช้ Cairo นี่ไม่ได้รู้สึกว่าช้าลงอย่างที่หลายคนกลัว .. Evolution 2.4 สนับสนุน inline pgp signature/encryption แล้ว :D … อื่นๆ ก็ไม่ค่อยรู้สึกว่ามีอะไรเปลี่ยนแปลงอะไรมาก เพราะที่ใช้ Hoary อยู่ก็ backport จาก Breezy มาซะหลายตัวแล้ว :P แต่สำหรับคนที่ใช้ Hoary เดิมๆ อัปเกรดมาเป็น Breezy ก็คงจะเห็นความแตกต่างอยู่บ้างกับซอฟต์แวร์เวอร์ชันใหม่ๆ รวมถึงการใช้งานที่อยู่กะร่องกะรอย เป็นระเบียบมากขึ้น

พอติดตั้งใช้งานแล้วก็เลยถือโอกาส build package + จัดระเบียบ repository ซะเลย .. คาดว่าจะคงโครงสร้างนี้ไปอีกนาน .. สำหรับ repository ของ ubuntu ที่ kitty.in.th maintain จะแยกเป็นสอง dists คือ ‘hoary’ กับ ‘breezy’:

ใครยังใช้ Hoary Hedgehog อยู่ให้ใช้

deb ftp://ftp.kitty.in.th/pub/ubuntu/kitty hoary unstable

ส่วนใครที่ใช้ Breezy Badger แล้วก็

deb ftp://ftp.kitty.in.th/pub/ubuntu/kitty breezy unstable

นับจากวันนี้ kitty.in.th จะไม่ update package ของ Hoary แล้วนะครับ .. ส่วน Breezy คงจะ update ไปเรื่อยๆ จนกว่าจะอัปเกรดเป็น Ubuntu 6.04 The Dapper Drake ในเดือนเมษายนปีหน้า :) ..

อ่อ .. GPG Key สำหรับ kitty.in.th โหลดได้ที่ ftp://ftp.kitty.in.th/pub/ubuntu/kitty/kitty.in.th.gpg ใช้ได้ทั้ง hoary และ breezy ครับ

A Seagate Momentus

หลังจากเอา Seagate Momentus 60 GB 5400.2 มาใช้บนลินุกซ์ สักพักก็เห็นอาการแปลกๆ ตั้งแต่วันแรกๆ คือไฟฮาร์ดดิสก์จะติดเกือบตลอดเวลาแม้ว่าไม่ได้อ่านหรือเขียนอะไร .. หาสาเหตุอยู่นานเหมือนกัน ตอนแรกนึกว่า gam ทำงาน แต่ก็ไม่ใช่ ลอง kill process ทิ้งทีละตัวก็ไม่หาย จนนึกว่าเป็นที่ฮาร์ดแวร์เองหรือเปล่า ก็ไม่ใช่อีก เพราะบนวินโดว์สมันไม่เป็น มันเกิดเฉพาะกับลินุกซ์ และเป็นกับเคอร์เนลทุกตัวที่มีอยู่ในเครื่อง .. เลยค่อยๆ ทดสอบ combination ของ hdparm ดู แล้วก็เจอว่า ถ้า disable APM (-B 255) ตามด้วย check IDE power status (-C) แล้วอาการจะหายเป็นปลิดทิ้ง (- -‘) … สาเหตุมาจากอะไรก็ไม่แน่ใจเท่าไหร่ แต่ disable APM ไปก็ไม่เดือดร้อนอะไร ค่าที่เซ็ตก็ไม่ได้อันตรายกับข้อมูลหรือดิสก์ ไฟสถานะก็ติดเฉพาะตอนอ่านเขียนจริงๆ เหมือนปกติิ .. อืมม .. ปล่อยเลยตามเลยไปละกัน ยังไงก็ประกันห้าปี… ลอล

HDD & ADSL

เอาข่าวร้ายก่อน ประมาณต้นปีที่แล้ว HDD 20 GB ของ peorth เจ๊งไป .. เลยได้ซื้อ HDD 40 GB มาใช้แทน ช่วงที่ส่งเคลม มันดูไม่งอแงจนกระทั่งเมื่อวานมันก็เริ่มมีอาการอ่านไม่ค่อยได้ อาการใกล้เคียงกับเมื่อครั้งที่ 20 GB เจ๊ง .. เลยสำรองข้อมูลไว้สองสำเนา แล้วเอา 20 GB ที่เคลมมาใช้แทนไปก่อนเพราะต้องรีบทำงาน .. ส่วน 40 GB เสียไว้มีโอกาสเข้า กทม. ค่อยไปเคลม (โตชิบ้า ประกันสามปี) .. ยังดีที่สำรองข้อมูลไว้ที่เครื่อง belldandy บ้าง เลยไม่เสียหายมากเหมือนครั้งก่อนๆ … เที่ยวนี้จะซื้อซีเกทประกันห้าปีมาใช้ดูมั่ง มันคงไม่ได้รักษาข้อมูลได้ดีกว่าเท่าไหร่ แต่อย่างน้อยก็ได้ประกันยาวๆ

ข่าวดี – ADSL ที่มีปัญหามาตั้งแต่ติดตั้ง เพื่อนฝูงที่ call center ช่วยตามเรื่องให้ แล้วก็พบว่าที่ขอติดตั้งไปตั้งแต่เดือนก่อนมันยังไม่ active (- -‘) วันนี้ทดสอบกะทาง call center อยู่สิบนาทีก็ออนไลน์ได้สำเร็จ :D .. โหะๆ ต่อไปก็ไม่ต้องแช่อยู่ที่ทำงานดึกๆ ดื่นๆ แล้ว .. ต้องขอบคุณเพื่อน และน้องๆ ที่ช่วยจัดการให้

ตอนนี้ที่บ้านใช้ Wireless ADSL Router ของ Surecom รุ่น 9410SX-g = ADSL 2/2+ กับ 4-port 10/100 + 802.11b/g มี web-based config .. อืมม ดูแล้วข้างในน่าจะเป็นลินุกซ์ เลยลอง ssh เข้าไป ก็เข้าได้ แถม CLI สั่งออกไปเชลล์ได้เลย ประเดิมกันที่

# cat /proc/version
Linux version 2.4.17_mvl21-malta-mips_fp_le ([email protected]) (gcc ve
rsion 2.95.3 20010315 (release/MontaVista)) #1 Fri Mar 18 11:00:12 EST 2005

ฮา .. 2.4.17 MontaVista เจ้าเดียวกับที่ทำให้ Motorola นี่เอง .. ต่อๆๆ

# cat /proc/cpuinfo
processor               : 0
cpu model               : MIPS 4KEc V4.8
BogoMIPS                : 149.91
wait instruction        : no
microsecond timers      : yes
extra interrupt vector  : yes
hardware watchpoint     : yes
VCED exceptions         : not available
VCEI exceptions         : not available

โหะ …CPU เป็น MIPS R4000 Series … หน่วยความจำก็

# free
              total         used         free       shared      buffers
  Mem:        14432        13680          752            0         1756
 Swap:            0            0            0
Total:        14432        13680          752

Linux Kernel 2.6.13

เพิ่งจะรีลีสเมื่อ 2005-08-29 00:03 UTC … make oldconfig จาก 2.6.12.5 ที่ใช้อยู่ มีอะไรใหม่ๆ (เมื่อเทียบกับคอนฟิกเคอร์เนลที่ผมใช้นะ ไม่ใช่ทั้งหมด) ที่น่าสนใจหลายอย่างเลย ..

  • Preemption Model – มีให้เลือกสามอย่างคือ
    • No Force Preemption (PREEMPT_NONE): ไม่มี Kernel Preemption เหมาะสำหรับเซิร์ฟเวอร์
    • Voluntary Preemption (PREEPMT_VOLUNTARY): Ingo Molnar เสนอโมเดลนี้มาพักนึงแล้ว ไอเดียคือเป็น preemtible kernel ที่ยอมให้โค้ดแต่ละส่วนในเคอร์เนลเลือกได้ว่าจะยอมให้ preempt หรือไม่ ซึ่งน่าจะมีผลดีกับเคอร์เนลมากกว่า แต่เพราะโค้ดบางส่วน preempt ไม่ได้ จะทำให้มี latency มากกว่า preemtible kernel ด้วย
    • Preemptible Kernel (PREEMPT): เหมาะกับเดสก์ท็อปที่ต้องการให้มีการตอบสนองที่ดี
  • Timer Frequency: ความถี่สำหรับ Timer Interrupt มีให้เลือกสามความถี่ คือ 100 Hz (HZ_100) 250 Hz (HZ_250) และ 1000 Hz (HZ_1000) ..ยิ่งความถี่สูงก็ยิ่งตอบสนองต่อ interrupt ได้ดี
  • kexec system call (KEXEC): ทำงานคล้ายๆ กับ exec system call แต่ kexec นี้สำหรับเคอร์เนล โดยที่เคอร์เนลที่ทำงานอยู่สามารถโหลดเคอร์เนลใหม่แล้วบูตมาใช้งานได้ทันที (ไม่จำเป็นต้องเป็นเคอร์เนลของลินุกซ์) .. kexec จึงทำให้ระบบบูตเคอร์เนลใหม่ได้โดยไม่ต้องรีเซ็ตฮาร์ดแวร์และเริ่มการทำงานตามรูทีนของ BIOS .. วิธีนี้คาดว่าจะทำให้บูตได้เร็วขึ้นและ (หวังว่าจะ) มีเสถียรภาพที่ดีกว่า
  • /proc/acpi/sleep (ACPI_SLEEP_PROC_SLEEP): อินเทอร์เฟซนี้ deprecated ไปแล้วและถูกแทนที่ด้วย /sys/power/state
  • Load CIS updates from userspace (PCMCIA_LOAD_CIS): โหลด Card Information Structure จากโปรแกรมใน userspace ฟีเจอร์นี้ทำให้เคอร์เนลโหลด firmware ได้อัตโนมัติโดยทำงานร่วมกับ Hotplug แทนที่จะต้องใช้ cardmgr เป็นตัวจัดการ
  • PCMCIA control ioctl (PCMCIA_IOCTL): obsolete ไปแล้วแต่โปรแกรมหลายโปรแกรม e.g. cardmgr, cardctl ยังจำเป็นต้องใช้อยู่ .. อนาคตต้องย้ายไปใช้ pcmciautils ตัวใหม่
  • TCP: advanced congestion control (TCP_CONG_ADVANCED): ลอยไปลอยมาหลายเดือนแล้วเหมือนกัน ทีนี้ก็จะมี TCP Congestion Control ให้เลือกหลายตัวเลย ถ้าไม่เลือก Advanced Congestion Control ก็จะใช้อัลกอริทึม BIC-TCP + Reno
    • TCP Westwood+
    • H-TCP
    • Highspeed TCP
    • TCP Hybla
    • TCP Vegas
  • SCSI media changer support (CHR_DEV_SCH): e.g. SCSI Jukebox CDROM
  • Export all symbols of ieee1394’s API (IEEE1394_EXPORT_FULL_API): เผื่อให้ใช้ไดรเวอร์อื่นนอกเคอร์เนลทรีได้
  • Hardware Monitoring support (HWMON): ย้ายออกมาจาก I2C
  • Hardware Monitoring Chip debugging messages (HWMON_DEBUG_CHIP): สำหรับดีบั๊ก HWMON
  • USB Monitor (USB_MON): สำหรับ monitor USB traffic
  • Ext2 execute in place support (EXT2_FS_XIP): สนับสนุน memory-backed block device ให้ทำงานได้โดยไม่ต้องใช้ page cache (don’t ask !)
  • Inotify file change notification support (INOTIFY): ระบบแจ้งเตือนการเปลี่ยนแปลงของไฟล์ (ใช้กะ Beagle ได้ :D)
  • ไดรเวอร์ใหม่
    • Generic Hotkey (ACPI_HOTKEY)
    • IT821X IDE Controller (BLK_DEV_IT821X)
    • QLogic ISP24xx host adapter family (SCSI_QLA24XX)
    • Fusion MPT ScsiHost drivers for SPI (FUSION_SPI)
    • Fusion MPT ScsiHost drivers for FC (FUSION_FC)
    • SysKonnect GigaEthernet (SKGE)
    • Via unichrome video cards (DRM_VIA)
    • Arc Monochrome LCD board (FB_ARC)
    • RME Hammerfall DSP MADI (SND_HDSPM)
    • ISP116X HCD (USB_ISP116X_HCD)
    • Acecad Flair tablet (USB_ACECAD)
    • TM Touch USB Touchscreen (USB_ITMTOUCH)
    • Keyspan DMR USB remote control (USB_KEYSPAN_REMOTE)
    • USB LD (USB_LD)

อื่นๆ เท่าที่รู้ก็มี orinoco driver เพิ่ม monitor mode แล้ว :D .. ต่อไป WLAN card ที่ใช้ชิพ Hermes/Orinoco ก็จะเข้าโหมด monitor ได้โดยสั่ง iwconfig mode monitor … ฮุๆๆ ทีนี้ก็ wardrive ได้สบาย :P

ลง MS Windows 2000/XP บน QEMU

มีเหตุต้องใช้ Windows 2000/XP สำหรับเดโมในห้องเรียนพร้อมๆ กับลินุกซ์เลยเอา QEMU มาใช้ .. QEMU เป็นโปรแกรมที่จำลองการทำงานของซีพียูและระบบ ปัจจุบัน QEMU จำลองการทำงานของคอมพิวเตอร์ x86 กับ PowerPC ได้ทั้งระบบ และจำลองซีพียูได้สารพัด ทั้ง x86, x86-64, PowerPC, ARM และ SPARC .. เพราะเป็นการจำลองการทำงานย่อมช้ากว่าระบบจริงๆ อยู่แล้ว แม้จะจำลอง x86 บน x86 จริงๆ ก็ตาม แต่ก็ทนๆ เอา เพราะใช้เป็นครั้งคราวเท่านั้น

ติดตั้ง QEMU

Debian/Ubuntu ติดตั้งผ่าน APT ได้เลย ..

# apt-get install qemu

การทำงานของ QEMU นับถึงเวอร์ชัน 0.7.0 จะใช้ดิสก์อิมเมจในการจำลองเป็นฮาร์ดดิสก์ของระบบ ดังนั้นขอให้มีที่ว่างๆ ในพาร์ทิชันมากพอที่จะใช้เป็นดิสก์อิมเมจก็ใช้งานได้ โดยไม่ต้องแบ่งพาร์ทิชันกันใหม่ .. หาพื้นที่ว่างๆ ให้มากพอจะติดตั้ง Windows 2000 … Windows 2000 ติดตั้ง default ใช้พื้นที่ราวๆ 600-700 MB + เผื่อติดตั้งซอฟต์แวร์อื่นๆ อีกนิดหน่อย ก็สัก 1.5 – 2 GB น่าจะพอ สั่งสร้างดิสก์อิมเมจโดยสั่ง

$ qemu-img create disk.img 2G

คำสั่งนี้จะสร้างดิสก์อิมเมจสำหรับทำงานเสมือนเป็นฮาร์ดดิสก์ขนาด 2 GB .. ทีนี้เริ่มติดตั้ง Windows 2000 ได้โดยใส่แผ่นติดตั้งของ Windows 2000 ไว้ใน CDROM แล้วสั่ง

$ qemu -hda disk.img -cdrom /dev/cdrom -boot d

คำสั่งนี้เป็นการสั่ง qemu ให้จำลองคอมพิวเตอร์ x86 ทั้งระบบโดย

-hda disk.img เป็นการบอกให้ QEMU ใช้ไฟล์ disk.img เป็น Primary Master IDE disk หรือ ไดรว์ C:

-cdrom /dev/cdrom เป็นการบอกให้ QEMU จำลอง CDROM โดยใช้ /dev/cdrom CDROM จะเป็น Secondary Master หรือ ไดรว์ D: เสมอ

-boot d เป็นการสั่งให้ boot จาก CDROM

ทีนี้ QEMU ก็จะเริ่มต้นจำลองระบบ x86 แล้วก็ boot จาก CDROM ขั้นตอนที่เหลือก็จะเหมือนกับการติดตั้ง Windows 2000 ทั่วๆ ไป

First Boot !

หลังจากติดตั้งเสร็จแล้ว ทีนี้เราก็สามารถสั่ง

$ qemu -hda disk.img -cdrom /dev/cdrom -boot c

เพื่อบูต Windows 2000 ที่ติดตั้งไปตะกี้ .. ถ้าไม่จำเป็นต้องใช้ CDROM ก็ไม่จำเป็นต้องใส่ออปชัน -cdrom /dev/cdrom ก็ได้

ลองดู System Properties/Hardware กับ Device Manager ก็ได้รายละเอียดออกมาประมาณนี้

CPU: x86 Family 6 Model 3 Stepping 3 ~ Pentium II 233 MHz
Chipset: Intel 441FX
Bus: PCI
Display: Cirrus Logic 5446
Disk: IDE
CDROM: IDE
NIC: RealTek 8029 Ethernet NE2000 Compatible

มี NICs ก็ย่อมจะใช้งานเครือข่ายได้ :)

Networking

QEMU จำลองการเชื่อมต่อเครือข่ายโดยใช้ Tunnel Inteface เชื่อมเข้ากับ NICs ที่จำลองขึ้นมา ถ้าจะให้ Windows 2000 หรือ OS อะไรก็ตามบน QEMU ใช้งานเครือข่ายได้ ก็ต้องทำให้ลินุกซ์สนับสนุน TUN/TAP ก่อน เคอร์เนลส่วนใหญ่จะคอมไพล์ให้ TUN/TAP เป็น modules ไว้อยู่แล้ว ก็จะสามารถสั่ง

# modprobe tun

แล้วลอง

$ ifconfig tun0

ถ้า ifconfig แสดงข้อมูลของอินเทอร์เฟซ tun0 ขึ้นมาก็ถือว่าใช้งาน tunnel ได้แล้ว อย่างไรก็ตาม ถ้าต้องการใช้ QEMU ด้วย non-root accout อาจจะต้องแก้ group / permission ของ /dev/net/tun สักหน่อย เพื่อให้ผู้ใช้ใน group users สามารถอ่านเขียนผ่าน TUN ได้

# chgrp users /dev/net/tun
# chmod 660 /dev/net/tun

อาจจะมีบางกรณีที่ ifconfig tun0 แล้วได้ error ขึ้นมา แม้จะเป็น root แล้วก็ไม่สามารถใช้งาน /dev/net/tun ได้ แบบนี้ก็มีทางแก้โดยใช้โปรแกรม tunctl ซึ่งเป็นหนึ่งในชุด utilities ของ UML (User-Mode Linux นะ ไม่ใช่ Unified Modeling Language) ..

# apt-get install uml-utilities

ทุกครั้งที่จะใช้ tunnel ก็ใช้ tunctl ในการควบคุมการใช้งาน เช่น

# tunctl -u 'user' -t tun

คำสั่งนี้จะสร้างอินเทอร์เฟซ tun0 และกำหนด owner เป็นให้เป็น username ‘user’ ลอง ifconfig tun0 อีกที หนนี้ไม่ควรจะเกิด error แล้ว (ถ้ายังเกิดอีกก็ตัวใครตัวมัน)

หลังจากมีอินเทอร์เฟซ tun0 แล้วทีนี้ก็ลองรัน QEMU อีกที QEMU มันควรจะรายงานว่า Connected to host network interface: tun0 ถ้าได้ตามนี้ก็เป็นอันว่า OS ใน QEMU จะพร้อมเชื่อมออกอินเทอร์เน็ตได้แล้ว ให้ตั้ง IP ของ OS ใน QEMU ให้อยู่ในเครือข่ายเดียวกับ tun0, e.g. 172.20.0.2 และตั้ง gateway ไปที่ IP ของ tun0

ขั้นสุดท้ายก็คือทำ NAT โดยใช้สี่คาถาหากิน

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
# iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP
# echo 1 > /proc/sys/net/ipv4/ip_forward

OS ใน QEMU ก็จะใช้งานอินเทอร์เน็ตได้ :)

เร่งการทำงานด้วย KQEMU

การทำงานของ QEMU ทำงานช้าเอาเรื่องอยู่เหมือนกัน ส่วนนึงเป็นเพราะต้องจำลองการทำงานส่วนการจัดการหน่วยความจำ .. ถ้าถ้าสามารถใช้ชุดคำสั่ง native ในการจัดการหน่วยความจำได้ ก็จะทำให้ QEMU ทำงานได้เร็วขึ้นพอสมควรทีเดียว .. ด้วยเหตุนี้ผู้่พัฒนา QEMU เลยพัฒนา KQEMU เพิ่มขึ้นมาเป็น accelerator สำหรับ QEMU .. KQEMU เป็นเคอร์เนลโมดูลที่ช่วยให้ QEMU ใช้จัดการหน่วยความจำโดยใช้คำสั่ง native ของ x86 จริงๆ โดยไม่ต้องจำลองชุดคำสั่งบน QEMU ผลที่ได้จึงทำให้การจำลองระบบ x86 บนซีพียู x86 ทำงานได้เร็วขึ้น .. ข้อเสียของ KQEMU คือ 1. ต้อง compile QEMU + KQEMU เอง และ 2. ใช้งานกับ x86 ได้เท่านั้น .. วิธีการคือ ดาวน์โหลด ซอร์ส ของ QEMU และ KQEMU มา จากนั้นแตก src ของ QEMU ก่อน แล้วค่อยแตก src ของ KQEMU ภายในไดเรคทอรีของ QEMU

$ tar xzf qemu-0.7.1.tar.gz
$ cd qemu-0.7.1
$ tar xzf ../kqemu-0.7.1.tar.gz

แล้วค่อย

$ ./configure
$ make
$ sudo make install

QEMU จะติดตั้งลงใน /usr/local/* และติดตั้ง kernel modules ลงใน /lib/modules//misc/

การใช้งาน kqemu ก่อนอื่น ต้องสั่งโหลดเคอร์เนลโมดูล as root :

# modprobe kqemu major=0

จะได้ /dev/kqemu โผล่ขึ้นมา .. แก้ permission เป็น 666

# chmod 666 /dev/kqemu

ก็เป็นอันเรียบร้อย ทีนี้ก็เรียกใช้ qemu ตามปกติ โปรแกรมจะเรียกใช้งาน KQEMU ซึ่งควรจะทำงานได้เร็วขึ้น

ถ้าไม่อยากมานั่งแก้ permission ทุกครั้งที่สั่ง modprobe ก็ใช้ udev ช่วยได้ สำหรับ Ubuntu ให้สร้างไฟล์ /etc/udev/permission.d/kqemu.permissions ตามนี้

# kqemu
kqemu:root:root:0666

จะทำให้เวลา modprobe kqemu แล้ว udev จะสร้าง dev เป็น permission 666 อัตโนมัติ

Conclusions

สรุปแล้ว QEMU ก็ช่วยให้ติดตั้ง Windows 2000/XP ได้ตามที่ต้องการ .. บนเครื่อง Athlon XP 2000+ ตอบสนองการสั่งงานได้เร็วใช้ได้ ส่วนบน P-III 1 GHz ช้าไปหน่อย ช้าจนเซอร์วิสบางตัวของ Windows 2000 บางตัวไม่สามารถ startup ได้ในเวลาที่กำหนด ..ในกลุ่มซอฟต์แวร์ที่ใช้วิธี emulation นี้ถือว่า QEMU นี่เร็วสุดแล้วแหละ .. ถ้าต้องการเร็วกว่านี้ก็คงต้องเลือกใช้พวกที่เป็น virtualization อย่าง Win4Lin หรือ VMWare ซึ่งเป็น commercial .. หรือไม่ก็ xen ซึ่งทดสอบกันมาแล้วว่าทำงานแบบ virtualization ได้เร็วกว่า Win4Lin/VMWare ซะอีก แถมยังเป็นโอเพ่นซอร์สด้วย เท่าที่ลองดูก็น่าสนใจทีเดียว จะติดก็ตรงที่มันต้องทำอะไรกับเคอร์เนลเยอะไปหน่อย เลยไม่ค่อยอยากใช้ .. เห็นผ่านๆ ตาแวบๆ ว่า Ubuntu จะเอา Xen เข้าไปรวมด้วย คาดว่าคงได้เห็น stable ประมาณเวอร์ชัน 6.04 (เป็นอย่างเร็ว).. ถึงเวลานั้นค่อยว่ากันอีกที :P

Packages for Hoary

เพิ่งอัปเดต leafpad กับ backport inkscape มาจาก breezy … 3-4 เดือนที่ผ่านมา backport มาจาก breezy หลายตัวเหมือนกัน เหตุผลก็เพราะ hoary มันไม่ยอมอัปเดตซักที ขี้เกียจรอก็เลย port มา build เองซะ .. ถึงเดือนสิบนี้ พอ 5.10 ออกก็คงไม่จำเป็นต้อง backport ซักระยะนึงล่ะนะ :)

ระยะนี้ network มีปัญหาบ่อยมาก sync ข้อมูลไปไว้ที่ ftp.kitty.in.th ไม่ค่อยได้ … ถ้าจะดาวน์โหลดไฟล์ล่าสุด จะอยู่ที่ ftp://skuld.kitty.in.th นะครับ

Kitty Repository (Ubuntu 5.04 Hoary)

  1. celestia celestia-common celestia-glut celestia-gnome
  2. dcraw
  3. dict-lexitron dict-lexitron-doc
  4. dillo
  5. djview djvulibre-bin djvulibre-plugin djvuserve libdjvulibre-dev libdjvulibre1c2
  6. em-panel-applet
  7. evince
  8. evolution evolution-dev
  9. ffmpeg
  10. figment
  11. gaim gaim-data gaim-dev
  12. gaim-guifications
  13. gaimnosd
  14. gimp gimp-data gimp-helpbrowser gimp-python gimp-svg gimp-ufraw libgimp2.0 libgimp2.0-dev libgimp2.0-doc
  15. gnome-outliner
  16. gruler
  17. image-exiftool-perl
  18. inkscape
  19. launchpad-integration liblaunchpad-integration-dev liblaunchpad-integration0 liblpint-bonobo-dev liblpint-bonobo0 python-launchpad-integration
  20. lcd4linux
  21. leafpad
  22. libavcodeccvs libavcodeccvs-dev
  23. libcairo1 libcairo1-dev
  24. libgc1c2 libgc-dev
  25. libpixman1 libpixman1-dev
  26. libpoppler-dev libpoppler-glib-dev libpoppler-qt-dev libpoppler0c2 libpoppler0c2-glib libpoppler0c2-qt
  27. libpostproc-dev libpostproc0
  28. mencoder-586 mencoder-k6 mencoder-k7 mplayer-386 mplayer-586 mplayer-686 mplayer-doc mplayer-k6 mplayer-k7 mplayer-nogui
  29. nmap nmapfe
  30. pftp
  31. qemu
  32. quarry
  33. rrs
  34. scummvm
  35. stellarium
  36. vym
  37. w3m w3m-img
  38. zsnes

VYM

เห็น พี่เทพเอา vym มาอวด น่าสนใจดี ที่ผ่านมาได้ลองแต่ Freemind ไม่ชอบตรงที่มันเป็น Java แล้วภาษาไทยเละๆ .. ลอง apt-get install vym ดู .. ปรากฏว่าบน Ubuntu ไม่มีแฮะ .. เลยเอา src + diff ของ Debian มา rebuild บน Hoary ซะ แล้วก็ลากเข้า repository ของ kitty ไปแล้วเรียบร้อย .. ภาษาไทยก็ ok นะผมว่า :)

พวก mind-mapping กับ outliner นี่ดูจะคล้ายๆ กันอยู่ น่าจะบันทึกเป็น OPML (or from wikipedia) กันซะให้รู้แล้วรู้รอด จะได้ import/export กันได้ง่ายๆ :P