g-v-m again

อย่างที่บอกไปวันก่อนเรื่อง gnome-volume-manager ว่ามันอาศัยการทำงานของโปรแกรมอื่นๆ อีกหลายตัว ซึ่งยุ่งๆ อยู่ประมาณนึงเหมือนกัน .. สมมติ ว่าเสียบ USB drive เข้ากับ USB port การทำงานจะประมาณนี้

usb -> kernel -> /sbin/hotplug -> udev -[dbus] -> hald – [dbus] -> g-v-m

เมื่อมีอุปกรณ์ใหม่ปรากฏในระบบ hotplug ในเคอร์เนลจะได้รับสัญญาณจากฮาร์ดแวร์ เคอร์เนลจะแจ้งเตือน userspace ผ่านทาง /sbin/hotplug .. สคริปต์ของ hotplug จะเรียกใช้ udev ซึ่งทำหน้าทีสร้างไฟล์ใน /dev เพื่อใช้ในการอ้างอิง USB drive จากนั้น HAL (daemon/agent) จะได้รับสัญญาณผ่านทาง D-BUS ว่ามีอุปกรณ์เพิ่มเข้ามาในระบบ .. HAL จะเป็นตัวแจ้งผ่านทาง D-BUS ไปยัง applications ต่างๆ เพื่อให้รู้ว่ามี USB drive ต่อพ่วงเข้ามา (สำหรับกรณีนี้ HAL จะทำหน้าที่ update /etc/fstab ด้วย) .. g-v-m ก็จะได้รับแจ้ง และทำงานตามคอนฟิกที่ผู้ใช้กำหนดไว้ (e.g., load kernel modules & mount USB drive)

สำหรับการติดตั้งใช้งาน จะวุ่นวายหน่อยก็ตรง udev ซึ่งจะควรจะทำงานเป็นอันดับแรกๆ ใน init scripts ตามหลัง sysfs ติดๆ (udev ต้องใช้ข้อมูลจาก sysfs ในการทำงาน) แปลว่า udev ต้องสามารถสร้างไฟล์ใน /dev ได้ก่อนที่จะ remount / เป็น read/write หลายๆ ดิสโตรจึงเลือกให้ udev ทำงานบน tmpfs แทนสตอเรจจริงๆ .. ใครที่คอมไพล์เคอร์เนลเองก็อย่าลืม enable tmpfs ไว้ด้วยเน้อะ