วันพุธที่ 9 พฤษภาคม พ.ศ. 2550

TLE-Live

ช่วงนี้กระแส Live กำลังมาแรง ประกอบกับราคา usb drive ถูกลงมากๆ ล่าสุด ซื้อ 4 GB มาในราคา 1,1xx บาท เท่านั้น แม้ว่าจะไม่ใช่รุ่นที่อ่านเขียนได้เร็วนักก็เหอะ ได้มาวันแรกๆ ก็ลองกับ LinuxTLE 8.0 บนนั้นดู ก็ติดตั้งได้ บูตได้เหมือนฮาร์ดดิสก์ปกติ ติดที่ช้าหน่อยเท่านั้น โดยรวม ก็ยังไม่น่าประทับใจนัก

ทางแก้ก็คือ ใช้เทคโนโลยีของ embeded ช่วย คือการบีบอัด file system เพื่อให้ขนาดรวมเล็กลง ทำให้อัตราการอ่านข้อมูลดีขึ้น ก็เลยค้นหาดูว่ามีใครใช้เทคนิคอะไรใหม่ๆ บ้าง ก็ไปเจอ http://www.linux-live.org/ ซึ่งเค้าทำเพื่อใช้กับ slax โดยเฉพาะ แต่ก็มีความเป็นไปได้ที่จะใช้ได้กับดิสโตรใดๆ ด้วย เลยเอาสคริปต์นี้เป็นจุดเริ่มต้น

จุดเด่นของ linux-live คือ เค้าใช้ squashfs ที่แพตช์ให้ใช้การบีบอัดแบบ lzma (เทคนิคการบีบอัดที่ใช้ใน 7zip ซึ่งถือว่าบีบอัดได้มากเป็นอันดับต้นๆ) ซึ่งเค้าอ้างว่า ทำให้บีบอัดได้มากขึ้นอีก 20% โดยแม้ว่า lzma จะใช้เวลาบีบอัดค่อนข้างนาน (มาก) แต่เวลาที่ใช้คลายก็ไม่มากไปกว่าตัวบีบอัดอื่นๆ เท่าไหร่นัก เครื่องมืออีกตัวที่ใช้คือ aufs (another union file system) สำหรับใช้ทำ union file system คือการนำ file system ชนิด read-only (เช่น squashfs) มา union กับ file-system ที่ read-write ได้ ทำให้ระบบมองเห็นเป็น file system ที่อ่านเขียนได้ แต่จริงๆ แล้วเวลาอ่าน จะอ่านจาก file system ที่อ่านได้อย่างเดียว แต่เวลาเขียน จะเขียนลง file sytem ที่อ่าน-เขียนได้ อ่อ ถ้าไฟล์ที่ใน file system ที่อ่าน-เขียนได้ ใหม่กว่าใน file system ที่อ่านได้อย่างเดียว มันก็จะอ่านจากตัวที่ใหม่กว่าเอง ซึ่งตัว aufs จะดีกว่า union fs หลายประการ ดูเพิ่มเติมได้ที่ http://aufs.sf.net/

เนื่องจากว่ามอดูลเหล่านี้ จำเป็นต้อง patch kernel และต้องใช้กับ kernel ที่ใหม่กว่า 2.6.17 ซึ่งใช้ในทะเล 8 ด้วย เลยคอมไพล์เคอร์เนลใหม่ไปเลย

ส่วนต้นฉบับที่จะนำมาใช้ทำ live นั้น ใช้วิธีติดตั้งใหม่บน qemu โดยสร้าง qemu image แบบ raw ขนาด 2G แล้วติดตั้งลินุกซ์ทะเลลงไป ปรับแต่งระบบให้เรียบร้อยตามต้องการ จากนั้นก็ shutdown ระบบใน qemu ปัญหาคือ จะเอาไฟล์ใน image ของ qemu ออกมาได้อย่างไร image ของ qemu แบบ raw ก็จะคล้ายๆ loop file system แต่มันไม่ได้มีแค่ file system มันเป็นทั้ง harddisk เลย แต่น่าจะมีวิธี mount "เฉพาะส่วนที่เป็น file system" ลองค้น google ดูพบว่า มัน mount แบบ loop ได้จริงๆ ด้วยคำสั่งนี้ครับ
# mount -o loop,offset=32256  /path/to/image.img /mnt/tle

ที่ใช้วิธีติดตั้งบน qemu เพราะมันจะได้ระบบที่ "บริสุทธิ์" มากๆ ไม่มีการติดตั้งไฟล์ที่ไม่จำเป็นลงไป และยังเก็บไว้ปรับแต่งในอนาคตได้อีก แต่หลังจากปรับแต่งในระดับเดสก์ท็อปเสร็จ ก็ใช้วิธี คัดลอกออกมาจาก image เลย เก็บใน directory หนึ่ง แล้ว chroot ไปปรับแต่งเอา

ที่เหลือก็มีการปรับให้รันโปรแกรมคอนฟิก xorg.conf ทุกครั้งที่บูต เพื่อให้แน่ใจว่าเมื่อนำไปใช้กับเครื่องอื่น ระบบจะคอนฟิก X ใหม่ทุกครั้ง ซึ่งตอนนี้ก็พบว่าบางเครื่องยังคอนฟิกไม่ถูกต้อง ด้วยสองสาเหตุคือ 1 ตัวคอนฟิกไม่รู้จักการ์ดแสดงผลนั้นๆ เพราะใหม่เกินไป (แต่จริงๆ ใช้ได้) และ 2 จอภาพ บางครั้งก็ตรวจสอบความละเอียดสูงสุดไม่ได้ เช่นกรณีต่อผ่าน kvm ทางออก คงต้องปรับให้มีตัวเลือกในเมนูตอนบูต สำหรับบูตเข้า vesa ในโหมดที่กำหนดได้เลย อีกอันคือปรับใหม่มีการตรวจหา swap ในเครื่องอัตโนมัติ ซึ่งหาได้ง่ายๆ โดย
# blkid -t TYPE=swap


ระบบแบบนี้ชอบอย่างนึงที่มันมีความเป็นมอดูลาร์ สามารถเพิ่มมอดูลได้ เช่นจะติดตั้งโปรแกรมเพิ่ม ก็ทำ squashfs ของโปรแกรมนั้นๆ มาวางใส่ใน directory modules ในยูเอสบีไดรฟ์ได้เลย เมื่อบูตมา ระบบก็จะเห็นโปรแกรมนั้นๆ เลย ซึ่งตอนนี้ก็ทดลองทำกับไดรเวอร์ของ nvidia + nvidia-glx ก็ได้ผลดี แต่มารู้ทีหลังว่าไดรเวอร์ที่เราใช้ มันเป็นไดรเวอร์ใหม่ ที่ไม่สนับสนุน nvidia geforce 2 ลงไปแล้ว

รายละเอียดเรื่องดาวน์โหลดที่ไหน และวิธีติดตั้งใช้งาน เชิญอ่านได้ที่ http://wiki.opentle.org/TLE-Live ตอนนี้ยังสั้นๆ อยู่ เดี๋ยวอัพเดทเพิ่มครับ

4 ความคิดเห็น :

  1. USB 2 G พอไหมครับ? (ซื้อมาก่อน 4G จะวางตลาด อาทิตย์เดียวเอง โฮ~~)

    ตอบลบ
  2. 1G ก็พริ้วแล้วครับ



    ถ้าเป็นรุ่นที่อ่านเขียนเร็วๆ จะพริ้วยิ่งขึ้น บอกไม่ถูกว่ารุ่นไหนเร็วหรือช้า แต่สังเกตจากที่ลองด้วยตนเองรู้สึกว่า Kingston จะเร็วกว่ายี่ห้ออื่นๆ แต่ก็ไม่แน่เสมอไป



    เรื่องเสียดายผมก็เป็น แบบตอนแรกซื้อ 1G ผ่านมา 3 เดือน ราคาที่ซื้อ 1G ซื้อ 2G ได้แล้ว ผ่านมาอีก 2 เดือน ก็เพิ่มเงินอีกนิดหน่อย ซื้อ 4G คุ้มกว่า เลยไม่ค่อยแปลกใจที่มีข่าวว่าต่อไปแล็ปท็อปจะใช้ flash เก็บข้อมูลแทนฮาร์ดดิสก์

    ตอบลบ
  3. อ่อ confirm ครับ ที่มีอยู่นี่คือ Data Traveller II จริงๆ ด้วย เร็วกว่ามาก อย่างเห็นได้ชัด ลองวัดความเร็วการอ่านดูอยู่ที่ประมาณ 20 MB/sec ตัวอื่นๆ รวมทั้ง Kingston รุ่นอื่น ก็จะอยู่ที่ราวๆ 10 MB/sec

    ตอบลบ
  4. ของ Kingston ต้องเป็นรุ่น Data Traveller II ครับ จะอ่านเขียนเร็วปรี๊ด ถ้าเป็น Data I จะธรรมดาอะ :)

    ตอบลบ