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