บูตเงียบแบบกราฟิกส์ด้วย splashy

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

แต่ถ้ามองว่าเขาคือ end-user จริง ๆ ยังไงก็ไม่สนใจจะดูขั้นตอนการบูตแน่ ๆ ก็ตั้งฉากกั้นให้เขาสบายใจขึ้นได้ หรือจะตั้งเล่น ๆ เพื่อความสวยงามเฉย ๆ ก็ไม่ว่ากัน ใน debian มี 3 วิธี คือใช้ bootsplash หรือใช้ usplash ของ ubuntu หรือ splashy ที่พัฒนาโดย debian เอง

bootsplash นั้น ดูจะใช้กันหลาย distro แต่ต้อง patch kernel ด้วย ส่วน usplash และ splashy จะใช้การดัดแปลง sysvinit ล้วน ๆ ไม่ต้อง patch kernel เลย โดย usplash ของ debian จะต่างจาก usplash ของ ubuntu ตรงที่ไม่ได้ไปไล่ patch init script ของแพกเกจต่าง ๆ แต่ใช้วิธีสร้าง hook คล้ายกับที่ splashy ทำ ซึ่งผมคิดว่าเนียนกว่าในแง่เทคนิค อย่างน้อยก็ไม่มีการหักดิบให้ใช้ usplash อย่างเดียว และสามารถเพิ่ม service ได้ไม่จำกัด โดยไม่ต้องห่วงว่าได้ patch ให้ใช้ usplash หรือยัง แต่ทั้งนี้ทั้งนั้น ต้องให้เครดิต ubuntu เต็มที่ในฐานะผู้ริเริ่มทำ usplash

ในที่นี้ขอแนะนำ splashy ก่อน

# aptitude install splashy splashy-themes

แล้วก็ไปเพิ่ม boot parameter "splash vga=791 quiet" ในบูตโหลดเดอร์ ในกรณีที่เป็น grub ก็แก้ /boot/grub/menu.lst ที่บรรทัด "# kopt" (ไม่ต้องเอาคอมเมนต์ออก) โดยเพิ่มค่าต่อท้ายเข้าไป เช่น

# vi /boot/grub/menu.lst
...
# kopt=root=/dev/hda1 ro splash vga=791 quiet
...

แล้วสั่ง

# update-grub

(หรือจะแก้แบบเร็วโดยไปเพิ่ม boot parameter ต่อท้ายบรรทัด kernel เลยก็ได้ แต่ระวังว่าจะถูกเขียนทับเมื่อคุณสั่ง update-grub ครั้งต่อไป)

ส่วนถ้าเป็น lilo ก็แก้ /etc/lilo.conf

# vi /etc/lilo.conf

โดยเพิ่ม/แก้บรรทัด:

vga=791
append="quiet splash"

แล้วสั่ง

# lilo

ตรวจความเรียบร้อยแล้วรีบูต ก็จะเข้าระบบใหม่ด้วยหน้าจอรูปเพนกวิน (หลังจากมีข้อความขั้นแรกๆ นิดหน่อยไม่กี่บรรทัด)

splashy screenshot

ส่วนแพกเกจ splashy-themes ที่เราลงไปนั้น จะเพิ่มธีมอื่นให้เราใช้ได้นอกจากธีมปริยาย โดยดูธีมทั้งหมดได้โดยสั่ง:

# splashy_config --info

และกำหนดธีมได้โดยสั่ง:

# splashy_config -s theme-name

แอบดูรายละเอียดของธีมก่อนเลือกได้ที่ /etc/splashy/themes/

Topic: 

Comments

แฮ่ ๆ ... ที่สำคัญคือ ตอนนี้ splashy เข้ามาแทนที่ bootsplash เรียบร้อยแล้วครับผม
ด้วยเหตุผลที่ splashy ง่ายในการ config กว่า และไม่ต้องยุ่งยากกับการ patch kernel ใด ๆ ทั้งสิ้น

แต่ยังไงก็ตาม... ต้องขอบคุณทีม bootsplash ที่สร้างสรรค์งานดี ๆ ให้พวกเราได้ใช้ และหวังว่า idea ดี ๆ
ที่ bootsplash พัฒนาสั่งสมมา จะถูกนำไปใช้ต่อยอดเพื่อการพัฒนา project อื่น ๆ ต่อไปในอนาคต :)
___
Neutron: Linux Addict!

จริงๆ ผมก็ชอบดูข้อความเวลาบูตนะ อุ่นใจดี :)

ผมชอบ text message นะครับ. แต่ว่าผมก็จะลง splashy คนเดินผ่านไปผ่านมา จะได้รู้สึกว่า gnu/linux ง่าย (สร้างภาพนั่นเอง แต่ก็ไม่ใช่ภาพหลอกลวงนะ). ส่วนตัวแล้วผมไม่ค่อยชอบรูป tux เท่าไหร่ อยากได้ได้ก้นหอยของ Debian มากกว่า.

เปลี่ยน theme ได้จ้า.. ก้นหอยน่ะ ไม่มีพลาดอยู่แล้ว :)

ผมชอบ theme "debian3" นะ สวยดี คนอื่นอาจชอบ theme อื่นก็มีให้เลือกพอสมควรอยู่

แต่ว่าอยู่ใน sid ซะนี่ -_-!

อ้าว ซวยไป.. มันยังติด RC bug อยู่สองตัวน่ะครับ

  • #405532: ติดตั้งฟอนต์ใน /etc ละเมิด FHS policy
  • #383060: ยังมีปัญหากับคอนฟิกที่ใช้ initramfs เขาเลย file critical bug ไว้ตั้งแต่ก่อน etch ออก เพื่อกันไม่ให้เข้า etch จนถึงตอนนี้ก็ยังไม่มีใครแก้บั๊กนี้ได้

ทั้งสองบั๊ก ไม่เป็นอุปสรรคสำหรับการใช้งาน บั๊กแรกไม่มีผลกับผู้ใช้ปกติ แต่ร้ายแรงเพราะละเมิด policy แต่ไม่น่าจะแก้ยาก อยู่ที่ว่า maintainer จะสนใจหรือเปล่าแค่นั้น ส่วนบั๊กที่สอง แก้ยาก แต่ไม่น่ามีผลกับผู้ใช้ที่ไม่ได้คอนฟิกให้ใช้ initrd (เช่นผม)

ผมก็รอไปครับ ...

อืม ทุกวันนี้ตอ้งมาคอยเอา quiet กับ splash ใน grub ออกประจำ

พอดีเพิ่งมีโอกาสรีบูตเครื่อง (ปกติใช้ suspend/resume) เลยเพิ่งเข้าใจอาการที่คุณ tee บอก..

ปัญหาเกิดจาก splashy 0.3.7-1 ใช้ initramfs ทั้ง ๆ ที่ยังมีปัญหาอยู่ และถึงแม้จะ up เป็น 0.3.8-1 ก็ยังบูตไม่ขึ้นอยู่ดี

ผมแก้ด้วยการไม่ใช้ initramfs:

  1. กำหนด ENABLE_INITRAMFS=0 ใน /etc/default/splashy
  2. เรียกคำสั่ง
    # update-initramfs -u -t -k `uname -r`

    เพื่อสร้าง initrd image ใหม่

ทำเสร็จ ทำให้สามารถบูตเครื่องเข้ามาได้ แต่ปรากฏว่ายังติดปัญหาการโหลด module ต่าง ๆ (เช่น wireless, ALSA) และ start X ไม่ได้ เพราะโหลดไดรเวอร์ของฮาร์ดแวร์บางอย่างไม่ได้

สรุป:

# apt-get remove splashy

:-P

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้