isolinux splash

Mon 1 Jan 0001
ใช้เวลาอ่าน 2 นาที

ช่วงที่ทำแผ่น linux ไม่ว่าจะตัวติดตั้วหรือแผ่น liveCD ผมต้องมานั่งค้นหาวิธีการปรับค่าของ isolinux ซะทุกทีวันนี้เลยบันทึกไว้สักหน่อยกันลืม จริง ๆ แล้วที่ผมลืมและมานั่งหาเมื่อสองวันที่แล้วคือการใช้ vi ในการแก้ไขค่าสีและคำสั่งใน file boot.msg จริง ๆ มันไม่ยากอะไรหรอกครับแต่ผมไม่ใช่ vi user นี่สิ เอาเป็นว่าผมจะพูดรวม ๆ ไปเลยละกันครับถึงวิธีจัดการ isolinux สำหรับแผ่น CD

สิ่งที่เรามักจะเปลี่ยนหรือปรับแต่มีดังนี้ครับ

  1. ภาพ splash (ภาพโหมโรง)
  2. การแก้ไข file boot.msg และ การกำหนดค่าสีให้กับข้อความ

มาดูแต่ละข้อกันเลยครับว่าเรามีวิธีทำกันอย่างไร

  1. ภาพ splash
    ภาพที่จะนำมาทำ splash ให้กับ isolinux เป็นภาพประเภท indexed ไม่เกิน 16 สีเป็น gif jpg bmp หรือ png ก็ได้ครับ แต่ต้องนำมาแปลงก่อนให้เป็นรูปภาพประเภท lss16 ก่อน format ที่ผมใช้คือ png ดูแล้วจะง่ายกว่าแบบอื่นผมจะพูดถึง format นี้นะครับ ภาพที่เตรียมอาจจะใช้ The GIMP หรือ Photoshop ก็ได้ ขนาดไม่เกิน 640×480 ซึ่งเป็นขนาดของจอ VGA ที่สำคัญคือ ต้องเป็น indexed ไม่เกิน 16 สี สียิ่งน้อยยิ่งสวยนะในความคิดผม สำหรับขนาดภาพแนะนำว่าไม่ควรเท่ากับ 640×480 พอดีเพราะมันจะเต็มหน้าเบียดข้อความของเราหมด ถ้าข้อความของเรามากก็ลดความสูงให้น้อยลงอีกแล้วแต่ความเหมาะสมนะครับ หรือถ้าใครเขียนข้อความลงไปในภาพเลยก็สามารถใช้ขนาดเต็มจอได้เช่นกัน สำหรับเรื่องสี มีข้อแนะนำอีกว่าสีในภาพจะมีความสัมพันธ์กับสีของข้อความด้วยดังนั้นเราอยาก ให้ข้อความของเรามีสีอะไรบ้างก็ออกแบบภาพให้มีสีนั้น ๆ มาด้วยซะเลย หรืออาจะไปปรับในถาดสีก็ได้โดยการออกแบบภาพด้วยสีน้อย ๆ อาจจะเป็น 8 สี แล้วตารางที่เหลือก็กำหนดค่าสีสำหรับข้อความก็ได้ครับ เช่นอยากให้ข้อความมีสีแดง แต่ในรูปไม่มีสีแดงเราก็กำหนดสีในถาดสีสักช่องหนึ่งเป็นสีแดง

รูปที่1 เมนู The GIMP สำหรับการเปลี่ยนรูปแบบภาพเป็น Indexed

รูปที่2 กำหนดค่าสีไม่เกิน 16 สี

รูปที่3 แสดงตางรางสี (14 สี) และปุ่มเพิ่มสี

รูปที่4 เพิ่มสี 1 สีเริ่มต้นเป็นสีดำ

รูปที่5 กำหนดค่าสีที่ต้องการเพิ่มใส่ในช่องหรือ double click บนสีนั้น

ข้อแนะนำ ให้จำค่าสีต่าง ๆ ไว้นะครับ (ฐาน 16) เพราะเราจะได้นำไปกำหนดค่าตอนแปลงอีกครั้งหนึ่ง หลังจากทำการเปลี่ยนเป็น Indexed แล้วก็ให้ save เพื่อนำไปใช้ในขั้นตอนต่อไป
การแปลงภาพ png เป็น lss16
ขั้นตอนการแปลงจะมีสองขั้นครับขั้นแรกจะเป็นการแปลงจาก png เป็น ppm โดยใช้คำสั่ง pngtopnm ซึ่งอยู่ในชุดของ netpbm และขั้นที่สองจะเป็นการแปลงจาก pnm เป็น lss16 โดยใช้คำสั่ง ppmtolss16 ซึ่งอยู่ในชุดของ syslinux จะเป็น perl script การใช้คำสั่งสามารถสั่งเพียงบรรทัดเดียวดังนี้ครับ
$ pngtopnm splash.png | ppmtolss16 #000000=0 #00ff00=1 #ff0000=2 > splash.lss

สังเกตตรงคำสั่ง ppmtolss16 จะมีการกำหนดค่าให้กับสีต่าง ๆ ด้วย จากตัวอย่างข้างบนผมกำหนดสีแดงเพิ่มเข้าไปซึ่งมีค่าสีเป็น ff0000 ผมก็กำหนดให้ ff0000=2 หมายความว่าค่าสีแดงเท่ากับเลข 2 เวลานำไปกำหนดให้ข้อความก็ใช้เลข 2 ครับ เท่านี้ก็เรียบร้อยครับเราได้ภาพ splash สำหรับ isolinux เรียบร้อย
2. การแก้ไข file boot.msg และ การกำหนดค่าสีให้กับข้อความ
การแก้ไข file boot.msg และ file อื่น ๆ ที่ใช้จะมีวิธีการเขียนอยู่สามารถอ่านได้ใน /usr/share/doc/syslinux-xxx/ เมื่อ xxx เป็นเลขรุ่น ผมจะพูดถึงเฉพาะที่จำเป็น ๆ เท่านั้นครับ มาดูตัวอย่างกันเลยครับ

^L
^Xsplash.lss
Welcome to ^O02LinuxTLE^O07 ^O017.0.1^O07

จากตัวอย่างจะมีคำสั่งควบคุมสามคำสั่งด้วยกันคือ
^L คือ การสั่งให้ Clear หน้าจอทั้งหมด
^X คือ การกำหนดรูปภาพ splash
^O คือ การกำหนดค่าสีข้อความ และ สีของพื้นหลัง ตัวเลขสองตัว

การพิมพ์คำสั่งโดยใช้ vi มีวิธีการดังนี้ครับ ให้เปลี่ยนเป็น insert mode กด ^V ตามด้วย ^L หรือคำสั่งอื่น ๆ (^ = Ctrl) ผลที่ได้จากตัวอย่างข้างบนจะได้ข้อความว่า
Welcome to LinuxTLE 7.0.1

สำหรับคำสั่ง ^O ตัวหน้าเป็นสีพื้นหลัง ตัวหลังเป็นสีข้อความ ปกติมักจะกำหนด 0=#000000 คือสีดำ เมื่อจะยกเลิกการกำหนดสีนั้น ๆ ก็ให้ใช้ ^O07
ตัวอย่าง
กำหนด #000000=0 #ff0000=1 #00ff00=2 #0000ff=3
0 = ดำ
1 = แดง
2 = เขียว
3 = น้ำเงิน

^O01Hello^O07 ^O02World^O07 จะได้ Hello World
^O31Hello^O07 ^O21World^O07 จะได้ Hello World
ลองไปทำกันดูนะครับ

ก่อนหน้า IOS4.2.1 กับ Ubuntu
ถัดไป Link Exchange