TLE-Live

TLE-Live คือลินุกซ์ทะเลที่อยู่บนอุปกรณ์เก็บข้อมูลที่พกพาได้ โดยจุดเริ่มต้นเราทดลองกับ USB Drive ก่อน เพราะปัจจุบันมีราคาไม่แพง สามารถพกพาได้ง่าย และอัปเดท แก้ไขข้อมูลได้ง่าย โดย TLE-Live จะแยกเป็นมอดูล ซึ่งสามารถเพิ่มเติมมอดูลที่ต้องการได้ในภายหลัง ทำให้สามารถเริ่มต้นได้ที่ขนาดเล็กๆ เพียงแค่ 500 MB ก็สามารถเริ่มใช้งาน TLE-Live ได้แล้ว

คุณสมบัติเด่น

  • มีซอฟต์แวร์เทียบเท่ากับ LinuxTLE 8.0.1 โดยสามารถใช้งานได้เหมือน LinuxTLE รุ่นเต็มทุกประการ
  • ติดตั้งบน USB Drive ขนาด 500 MB ขึ้นไป แนะนำให้ใช้ 1000 MB เพื่อที่จะได้มีพื้นที่เก็บข้อมูลที่เปลี่ยนแปลงได้
  • สามารถเพิ่มมอดูล เพื่อให้มีโปรแกรมหรือคุณสมบัติเพิ่มขึ้นได้
  • ดาวน์โหลดแฟ้มสำหรับติดตั้ง เริ่มต้นเพียง 430 MB
  • สามารถติดตั้งจากระบบปฏิบัติการวินโดวส์ได้
  • ไม่ต้องแบ่งพาร์ทิชัน
  • พกพาไปใช้ที่ไหนก็ได้ เพียงแค่บูตจาก USB ได้ ก็ใช้ได้แล้ว

ดาวน์โหลด

  • แฟ้มหลัก [1]
  • มอดูลสำหรับผู้ใช้การ์ดแสดงผล nvidia [2] (GeForce 4 ขึ้นไป)
  • แฟ้มสำหรับเก็บข้อมูลที่เปลี่ยนแปลง [3]

สิ่งที่ต้องใช้

  1. USB Drive ขนาด 500 MB ขึ้นไป
  2. พีซีหรือโน๊ตบุ๊คที่สามารถบูตอุปกรณ์ยูเอสบีได้

การติดตั้ง

  1. ไดรฟ์ยูเอสบีต้องมีที่ว่างอย่างน้อย 450 MB เป็น FAT16 หรือ FAT32 ก็ได้
  2. ดาวน์โหลดแฟ้ม tlelive-base-1.0-1.zip
  3. แตกแฟ้มใส่ไว้ในไดรฟ์ยูเอสบี เมื่อเสร็จแล้ว จะเห็นโฟลเดอร์ boot และ tlelive
  4. ถ้าใช้วินโดวส์ ให้เปิดเข้าไปใน boot จะเห็นแฟ้มชื่อ bootinst.bat ดับเบิ้ลคลิกมัน มันจะรัน batch script ขึ้นมาแจ้งรายละเอียดการติดตั้งบูตโหลดเดอร์ในไดรฟ์ยูเอสบี กดเอนเทอร์ เมื่อติดตั้งแล้ว กดเอนเทอร์อีกครั้ง
  5. ถ้าใช้ลินุกซ์ ให้เปิด shell แล้วเข้าไปในไดเรกทอรี boot แล้วสั่ง
    • sudo ./bootinst.sh
  6. unmount แล้วนำไปลองบูตดู

การสร้างที่เก็บข้อมูลถาวร

โดยปกติ ถ้าไม่มีที่เก็บข้อมูลถาวร ระบบจะสร้าง memory file system ขึ้นมาชั่วคราว เพื่อให้จัดเก็บข้อมูลที่เปลี่ยนแปลงได้ แต่ข้อมูลเหล่านี้จะหายไปเมื่อมีการบูตใหม่ หากต้องการให้มีการเก็บข้อมูลได้ถาวร ก็สามารถทำได้หลายวิธี ดังต่อไปนี้

  • ใช้ file system ที่เตรียมไว้ให้ วิธีนี้เหมาะกับผู้ที่ใช้ระบบปฏิบัติการวินโดวส์ ซึ่งไม่สามารถสร้าง file system สำหรับลินุกซ์ได้เอง ทำได้โดย
    1. ดาวน์โหลด file system ที่เตรียมไว้จาก http://ftp.opentle.org/pub/tlelive/1.0/tlelivedata/ โดยเลือกขนาดที่เหมาะสม เช่น tlelivedata-1.0-1-100M.zip ก็สำหรับ file system ขนาด 100 MB เป็นต้น หรือถ้าต้องการขนาดที่ใหญ่กว่านี้ ก็เลือกดาวน์โหลดแฟ้มอื่นที่เหมาะสมได้
    2. แตกแฟ้มนี้ ใส่ใน root ของยูเอสบีไดรฟ์ จะได้แฟ้ม tlelivedata-1.0-1.img ที่มีขนาดตามที่กำหนดไว้
  • สร้างขึ้นเอง กรณีใช้ระบบปฏิบัติการลินุกซ์ ท่านสามารถสร้าง file system ขึ้นได้เอง ดังนี้ (สมมติว่า /media/usbdrive คือตำแหน่งที่ยูเอสบีไดรฟ์ถูกเมานท์อยู่, 333 คือขนาดของ file system ที่ต้องการใช้เก็บข้อมูล หน่วยเป็น MB)
    1. cd /media/usbdrive
    2. dd if=/dev/zero of=tlelivedata-1.0-1.img bs=1M count=0 seek=333
    3. mkfs.xfs tlelivedata-1.0-1.img หรือ mkfs.ext3 tlelivedata-1.0-1.img

ที่จริงอาจจะนำไปเก็บที่พาร์ทิชันใดๆ ในฮาร์ดดิสก์ ที่มี file system ที่ลินุกซ์อ่านเขียนได้ เช่น fat, ext3 ส่วน ntfs ยังเขียนไม่ได้ครับ อาจจะได้ในรุ่นหน้า โดยสคริปต์จะค้นหาแฟ้มเก็บข้อมูลนี้เอง

เพิ่มมอดูล nvidia

สำหรับคนที่ใช้การ์ดแสดงผล nvidia GeForce 4 ขึ้นไป สามารถใช้ opengl 3D ได้โดย

  1. ดาวน์โหลดแฟ้ม nvidia.lzm จาก #ดาวน์โหลด
  2. เอาแฟ้มนี้ไปใส่ไว้ในยูเอสบีไดรฟ์ ที่ตำแหน่ง tlelive/modules
  3. นำไปบูต ดูว่าเข้ากราฟิกโหมดได้หรือไม่ ถ้าได้ ลองเปิด terminal แล้วรันคำสั่ง glxgears ถ้ามีภาพ 3d แสดงให้ดู และไม่ช้าจนกระตุก แสดงว่าใช้ได้แล้ว ถ้าไม่เข้าโหมดกราฟฟิกอาจจะลองปรับแต่งแฟ้ม /etc/X11/xorg.conf ดู หรืออาจจะเป็นเพราะไดรเวอร์ไม่สนับสนุนการ์ดรุ่นเก่า หรือไม่ตรงรุ่นก็ได้ ก็ให้เอาแฟ้ม nvidia.lzm ออก


Hacking for fun

ล็อกอินในโหมดเท็กซ์

  • กด ctrl-alt-F{1,2,...,6} แล้วล็อกอินด้วยชื่อ tleuser สำหรับผู้ใช้ธรรมดา หรือ root สำหรับผู้ใช้ที่มีสิทธิจัดการระบบ โดยไม่ต้องใช้รหัสผ่าน

ติดตั้ง LinuxTLE 8.0.1 ในพาร์ทิชันของลินุกซ์อื่นๆ ที่ใช้อยู่แล้ว ด้วย TLE-Live

สำหรับแฟนๆ ลินุกซ์ที่ใช้ลินุกซ์ของเจ้าอื่นอยู่แล้ว แต่อยากลองใช้ลินุกซ์ทะเลบ้าง ก็สามารถทำได้โดยไม่ต้องแบ่งพาร์ทิชันใหม่

  • แตกแฟ้ม tlelive-base-1.0-1.zip คัดลอกไดเรกทอรี tlelive ทั้งยวงไปไว้ที่พาร์ทิชันใดพาร์ทิชันหนึ่งในฮาร์ดดิสก์
  • คัดลอกแฟ้ม vmlinuz และ initrd.gz จากไดเรกทอรี boot ที่แตกจากแฟ้ม tlelive-base-1.0-1.zip ไปไว้ที่ /boot โดยเปลี่ยนชื่อใหม่ไม่ให้ซ้ำกับที่มีอยู่ เช่น vmlinuz-tlelive และ initrd-tlelive.gz
  • แก้ไข GRUB menu โดยแก้แฟ้ม /boot/grub/menu.lst เพิ่มบรรทัดนี้เข้าไปล่างสุดของแฟ้ม
title   TLE-Live 1.0
root (hd0,0)
kernel /boot/vmlinuz-tlelive vga=769 max_loop=255 ramdisk_size=4444 root=/dev/ram0 changes=tlelivedata-1.0-1.img rw
initrd /boot/initrd-tlelive.gz
boot

ถ้าแยกพาร์ทิชัน /boot ออกมาต่างหากจากพาร์ทิชัน / (root) ให้ตัด /boot ออก เหลือ /vmlinuz-tlelive และ initrd /initrd-tlelive.gz พอ

TLE-Live remastering

อยากจะดัดแปลง TLE-Live หรือครับ ไม่ยาก ก่อนอื่นต้องทราบก่อนว่าแฟ้ม lzm นั้น คือแฟ้มของ file system แบบ squashfs ซึ่งอาจจะมองเป็นแฟ้มบีบอัดชนิดนึงก็ย่อมได้ เพราะมีเครื่องมือสำหรับสร้าง และแตกแฟ้มนี้มาให้ด้วย นั่นก็คือ mksquashfs และ unsquashfs ซึ่งใช้ได้บนระบบปฏิบัติการลินุกซ์ แต่ squashfs ที่เราใช้ไม่ใช่ squashfs แบบทั่วไป คือเราใช้ patch ของ squashfs-lzma ทำให้บีบอัดได้มากขึ้น แต่ก็ทำให้ไม่สามารถใช้ unsquashfs ทั่วไปอ่านได้เช่นกัน แต่ไม่ต้องเป็นห่วง เพราะเราเตรียม {mk,un}squashfs รุ่นที่สร้าง และแตกแฟ้ม squashfs แบบ lzma ได้มาด้วยแล้ว วิธีการคือ

  • ท่านต้องมีระบบปฏิบัติการลินุกซ์ตัวไหนก็ได้สักตัว ซึ่งติดตั้งในฮาร์ดดิสก์แบบปกติก่อน
  • คัดลอกแฟ้ม mksquashfs และ unsquashfs จากไดเรกทอรี tlelive/tools ซึ่งอยู่ในยูเอสบีไดรฟ์ ไปไว้ที่ /usr/local/bin ของระบบลินุกซ์ในเครื่องท่าน
  • สร้างไดเรกทอรีสำหรับแตกแฟ้ม lzm สมมติเป็น /usr/src/tle
  • แตกแฟ้มไปไว้ด้วยคำสั่ง
    # unsquashfs -d /usr/src/tle /media/disk/tlelive/base/base.lzm

สำหรับแฟ้ม lzm อื่นๆ ก็แตกไปไว้ที่เดียวกัน แล้วทำการปรับแต่งอย่างที่ท่านต้องการ จากนั้นก็รวมกลับเป็น lzm เหมือนเดิม ซึ่งหลักการคือ จะสร้างเป็นแฟ้มใหญ่แฟ้มเดียวเลยก็ได้ ตั้งชื่ออะไรก็ได้ ขอให้นามสกุลเป็น lzm แต่จากประสบการณ์พบว่า เมื่อไม่มีการเพิ่ม-ลบโปรแกรมอะไรแล้ว จะมีหลายไดเรทอรีที่จะไม่เปลี่ยนแปลงอีก ได้แก่ bin sbin usr opt root media ส่วนไดเรกทอรีที่เปลี่ยนแปลงได้บ่อยในระหว่างการพัฒนาคือ etc var home lib จึงได้แยกส่วนที่ไม่เปลี่ยนแปลงอีก สร้างเป็น base.lzm ที่เหลือแยกสร้างเป็นไดเรกทอรีไป เพื่อที่หากแก้ไขบางจุด ก็สร้างไฟล์ lzm ใหม่เฉพาะจุดนั้นๆ ทำให้ประหยัดเวลาได้มาก ซึ่งวิธีการสร้างแฟ้ม lzm คือ

# mksquashfs /usr/src/tle/var /media/disk/tlelive/base/var.lzm -keep-as-directory -noappend
# mksquashfs /usr/src/tle/{bin,sbin,usr,opt,root,media} /media/disk/tlelive/base/base.lzm -keep-as-directory -noappend

ไดเรกทอรีอื่นๆ ก็ทำแบบเดียวกัน อย่าลืมว่า ไม่จำเป็นต้องใช้ชื่อเดิม เพราะสคริปต์ตอนบูตจะสแกนหาแฟ้ม lzm อัตโนมัติ และเอาทุกตัวมา union กันอยู่แล้ว

TODOs

  • เพิ่มเมนูตอนบูตให้เลือก driver การ์ดแสดงผล + ความละเอียดเอง
  • kernel 2.6.20 จาก ubuntu 7.04
  • มอดูลสำหรับ fglrx (ATI Radeon)
  • มอดูลสำหรับ beryl (3D-Effect)
  • มอดูลสำหรับพัฒนาซอฟต์แวร์ (gcc, devel tools, anjuta, ...)
  • มอดูลเกม

Known Bugs

  • พาร์ทิชันที่เมานท์ให้อัตโนมัติ ให้สิทธิเฉพาะ root เขียนได้
  • อุปกรณ์เน็ตเวิร์คอะแดปเตอร์บางตัวใช้งานไม่ได้ (8139too บางตัว, rt2500 เป็นต้น)
  • eth0 ถูกจอง (ลืมลบ /etc/iftab)
  • Network ไม่เริ่มทำงานโดยอัตโนมัติ

โพสต์ยอดนิยมจากบล็อกนี้

ปัญหาและเฉลยธรรม นักธรรมชั้นโท สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันพฤหัสบดี ที่ ๑๖ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวินัยบัญญัติ นักธรรมชั้นเอก สอบในสนามหลวง พ.ศ. ๒๕๔๓ วันเสาร์ ที่ ๑๘ พฤศจิกายน พ.ศ. ๒๕๔๓

ปัญหาและเฉลยวิชาธรรม นักธรรมชั้นโท สอบในสนามหลวง วันเสาร์ ที่ ๑๙ พฤศจิกายน พ.ศ. ๒๕๔๘