ปรับแต่งเครื่องหลังจากติดตั้ง Fedora 9 – แก้ไขคอนโซล (Text Console)

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

หมายเหตุ คอนโซล ในที่นี้หมายถึง text console ที่แสดงผลในรูปแบบตัวอักษร ไม่ใช่ X Window

ยกเลิกการแสดงเวอร์ชั่นของลินุกซ์ผ่านทางหน้าจอคอนโซล (Console)

โดยดีฟอลต์แล้วหลังจากการติดตั้ง หน้าจอคอนโซล (Console) ที่รอรับการ login จะแสดงเวอร์ชั่นของลินุกซ์ที่ติดตั้งด้วย โดยข้อความที่แสดงจะนำมาจากไฟล์ /etc/issue

ตัวอย่างไฟล์ /etc/issue ที่ติดตั้งมากับ Fedora 9

[root@server ~]# cat /etc/issue
Fedora release 9 (Sulphur)
Kernel r on an m (l)

ตัวอย่างหน้าจอคอนโซลของ Fedora 9

Fedora release 9 (Sulphur)
Kernel 2.6.25-14.fc9.i686 on an i686 (tty1)
server login:

เพื่อความปลอดภัย แนะนำให้แก้ไขข้อความที่แสดงเวอร์ชั่น หรือลบออกไปเลยก็ได้ เมื่อแก้ไขไฟล์เสร็จแล้ว ที่หน้าจอคอนโซล กด [Ctrl – L ] เพื่อให้คอนฟิกใหม่มีผล


ยกเลิกการรันหน้าจอคอนโซลที่ 2 – 6

หน้าจอคอนโซลที่ติดตั้งมากับลินุกซ์ตั้งแต่เวอร์ชั่นแรกๆ ตั้งแต่ยังไม่มี X Window จนถึงปัจจุบันนี้ จะมีหน้าจอคอนโซลที่สามารถทำงานพร้อมๆ กันได้ 6 หน้าจอ โดยกดปุ่ม [Alt-Fx] สลับไปมา ระหว่างหน้าจอคอนโซล เช่นต้องการไปหน้าจอที่ 5 ก็กดปุ่ม [Alt-F5]

ในการใช้งานจริงปัจจุบันนี้ ส่วนใหญ่จะทำงานผ่าน X Window ไม่ว่าจะใช้ GNOME หรือ KDE  หรือไม่ก็ใช้การรีโมตเข้าไปเช่นใช้ Secure Shell เป็นต้น ดังนั้นหน้าจอ Console แทบไม่มีความจำเป็นต้องใช้เลย

ดังนั้นแนะนำให้ยกเลิกหน้าจอคอนโซลที่ 2 ถึง 6 ให้เหลือไว้แต่หน้าจอคอนโซลที่ 1 ซึ่งไว้สำหรับการ แก้ไขปัญหา การบู๊ตเครื่องเป็นต้น

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

ตรวจสอบโปรแกรมที่รันสำหรับรองรับการ login ผ่านคอนโซล
โปรแกรมที่ลินุกซ์ส่วนใหญ่ใช้รันเพื่อรองรับการ login ผ่านหน้าจอคอนโซลนั้น คือ /sbin/mingetty ซึ่งโดยดีฟอลต์แล้วจะรันขึ้นมาทั้งหมด 6 หน้าจอ สามารถใช้คำสั่ง ps เพื่อแสดงปริมาณ Memory ที่ใช้ได้ดังนี้

[root@server ~]# ps auxw | egrep "(USER|min)"
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1592  0.0  0.0   1812   428 tty4     Ss+  00:31   0:00 /sbin/mingetty tty4
root      1593  0.0  0.0   1812   424 tty5     Ss+  00:31   0:00 /sbin/mingetty tty5
root      1594  0.0  0.0   1812   428 tty2     Ss+  00:31   0:00 /sbin/mingetty tty2
root      1595  0.0  0.0   1812   424 tty3     Ss+  00:31   0:00 /sbin/mingetty tty3
root      1596  0.0  0.0   1812   424 tty1     Ss+  00:31   0:00 /sbin/mingetty tty1
root      1597  0.0  0.0   1812   424 tty6     Ss+  00:31   0:00 /sbin/mingetty tty6

สำหรับไฟล์คอนฟิกที่ใช้ในการควบคุมโปรแกรม /sbin/mingetty อีกทีนั้น จะมีอยู่สองแบบขึ้นอยู่กับเวอร์ชั่นของลินุกซ์ที่ติดตั้ง สำหรับ Fedora นั้น ก่อน Fedora 9 จะใช้ไฟล์คอนฟิก /etc/inittab ในการควบคุม แต่ถ้าเป็นเวอร์ชั่น 9 เป็นต้นมา จะแยกเป็นคอนฟิกไฟล์ย่อยๆ อยู่ใน /etc/event.d/

การยกเลิกคอนโซล 2-6 สำหรับ Fedora ก่อนเวอร์ชั่น 9

ต้องเข้าไปแก้ไขไฟล์ /etc/inittab

ตัวอย่างไฟล์ /etc/inittab ในส่วนควบคุม /sbin/mingetty ที่ติดตั้งมากับ Fedora ก่อนเวอร์ชั่น 9

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

วิธีการแก้ไขให้ใส่เครื่องหมาย # ก่อนหน้าบรรทัดของโปรแกรม /sbin/mingetty ตั้งแต่เลข 2 ถึงเลข 6 หรือจะลบบรรทัดเหล่านี้ทิ้งไปเลยก็ได้ ให้เหลือแต่บรรทัดที่มีเลข 1 นำหน้า

ตัวอย่างไฟล์ /etc/inittab หลังการแก้ไข

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

เมื่อแก้ไขไฟล์ /etc/inittab เสร็จแล้ว ให้รันคำสั่ง init q เพื่อให้โปรเซส init อ่านไฟล์ /etc/inittab ใหม่ ซึ่งจำทำให้คอนโซลที่ 2 – 6 ใช้งานไม่ได้อีกต่อไป

การยกเลิกคอนโซล 2-6 สำหรับ Fedora 9

ตั้งแต่ Fedora 9 ไฟล์คอนฟิกของโปรเซส init จะถูกควบคุมด้วย /etc/event.d/ โดยจะมีไฟล์ย่อยๆ ออกจากกัน เช่นไฟล์คอนฟิกสำหรับรันหน้าจอคอนโซลที่ 2 คือไฟล์ /etc/event.d/tty2

ตัวอย่างไฟล์คอนฟิกสำหรับรันหน้าจอคอนโซลที่ 2

[root@server event.d]# cat /etc/event.d/tty2
# tty2 - getty
#
# This service maintains a getty on tty2 from the point the system is
# started until it is shut down again.
start on stopped rc2
start on stopped rc3
start on stopped rc4
start on started prefdm
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /sbin/mingetty tty2

วิธีการที่จะยกเลิกหน้าจอคอนโซลได้นั้น ต้องลบไฟล์คอนฟิกเป็นไฟล์ๆ ไป เช่นยกเลิกหน้าจอที่ 2 ก็ลบไฟล์ /etc/event.d/tty2 ออกไป ดังนั้นถ้าต้องการยกเลิกหน้าจอที่ 2 –  6 สามารถทำได้ดังนี้

[root@server ~]# rm -f /etc/event.d/tty2
[root@server ~]# rm -f /etc/event.d/tty3
[root@server ~]# rm -f /etc/event.d/tty4
[root@server ~]# rm -f /etc/event.d/tty5
[root@server ~]# rm -f /etc/event.d/tty6

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

ตัวอย่างการรันคำสั่ง initctl เพื่อหยุดการรันโปรแกรมสำหรับหน้าจอคอนโซลที่ 3

[root@server ~]# initctl stop tty3
tty3 (stop) running, process 1595
tty3 (stop) pre-stop, (main) process 1595
tty3 (stop) stopping, process 1595
tty3 (stop) killed, process 1595
tty3 (stop) post-stop
tty3 (stop) waiting
[root@server ~]# initctl status tty3
initctl: Unknown job: tty3

ใช้คำสั่ง ps ตรวจสอบอีกครั้งหลังจากการยกเลิกหน้าจอที่ 2-6 จะเห็นได้ว่าเหลือแค่โปรเซสเดียวเท่านั้น ไว้รองรับหน้าจอคอนโซลที่ 1 ซึ่งเป็นดีฟอลต์นั่นเอง

คำเตือน ไม่แนะนำให้ลบนะครับหน้าจอคอนโซลที่ 1

[root@server ~]# ps auxw | egrep "(USER|min)"
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     11095  0.0  0.0   1812   428 tty1     Ss+  20:16   0:00 /sbin/mingetty tty1

ยกเลิกการกดปุ่ม [Ctrl-Alt-Del] เพื่อการรีบู๊ตเครื่อง

หลายคนที่ใช้ Windows บ่อยๆ อาจติดนิสัยกดปุ่ม [Ctrl-Alt-Del] เพื่อทำการล๊อคหน้าจอ หรือเพื่อดู Task Manager ซึ่งถ้าพลาดมากดปุ่มนี้บนหน้าจอคอนโซลของลินุกซ์ โดยดีฟอลต์แล้วจะทำให้เครื่องลินุกซ์ถูกรีบู๊ตไป เป็นอันตรายอย่างยิ่ง ดังนั้นแนะนำให้ยกเลิกคุณสมบัตินี้ออกไป

วิธีการยกเลิกการกดปุ่ม [Ctrl-Alt-Del] เพื่อการรีบู๊ตเครื่องนั้น ทำได้สองวิธีขึ้นอยู่กับเวอร์ชั่นของลินุกซ์ที่ใช้ เช่นเดียวกับการยกเลิกการรันหน้าจอคอนโซล

ยกเลิกการกดปุ่ม [Ctrl-Alt-Del] เพื่อการรีบู๊ตเครื่อง สำหรับ Fedora ก่อนเวอร์ชั่น 9

ไฟล์คอนฟิกที่ทำให้เครื่องลินุกซ์ถูกรีบู๊ตเมื่อกดปุ่ม [Ctrl-Alt-Del] จะถูกเก็บอยู่ในไฟล์ /etc/inittab

ตัวอย่างไฟล์คอนฟิก /etc/inittab ในส่วนการกดปุ่ม [Ctrl-Alt-Del]

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

จากคอนฟิกเมื่อมีการกดปุ่ม [Ctrl-Alt-Del] เครื่องจะรันคำสั่ง shutdown เพื่อรีบู๊ตเครื่อง

การยกเลิกไม่ให้รีบู๊ต ให้แก้ไขไฟล์คอนฟิกนี้ โดยใส่เครื่องหมาย # ก่อนหน้าบรรทัดที่มีคำว่า ca หรือจะลบบรรทัดนี้ทิ้งไปเลยก็ได้เช่นกัน แล้วรันคำสั่ง init q เพื่อให้โปรเซส init อ่านไฟล์ /etc/inittab ใหม่ให้มีผลทันที

ตัวอย่างการแก้ไขไฟล์ /etc/inittab เพื่อไม่ให้รีบู๊ต

# Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
ยกเลิกการกดปุ่ม [Ctrl-Alt-Del] เพื่อการรีบู๊ตเครื่อง สำหรับ Fedora 9

ไฟล์คอนฟิกในเวอร์ชั่นนี้จะเก็บแยกเป็นไฟล์ชื่อ /etc/event.d/control-alt-delete

ตัวอย่างไฟล์ /etc/event.d/control-alt-delete

[root@server event.d]# cat control-alt-delete
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed.  Usually used to shut down the machine.
start on control-alt-delete
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

การแก้ไขทำได้โดยลบไฟล์นี้ทิ้งไป และจะมีผลทันที

[root@server ~]# initctl status control-alt-delete
initctl: Unknown job: control-alt-delete

สามารถทดสอบได้โดยการกดปุ่ม [Ctrl-Alt-Delete] อีกครั้ง เครื่องจะไม่รีบู๊ตอีกต่อไป

Leave a Reply

Your email address will not be published.