ป้องกันคอนโซลจากการล้างหน้าจอหรือไม่


11

เมื่อทำการบูทเข้าระบบลีนุกซ์บางครั้งอาจมีหนึ่งหรือสองบรรทัดที่ทำการเคลียร์อย่างรวดเร็ว ฉันคิดว่าบางส่วนของพวกเขาไม่ปรากฏใน dmesg หากไม่มีอะไรอื่นฉันต้องการระงับการเคลียร์ก่อนพร้อมต์ "ล็อกอิน:" มีคำสั่งเคอร์เนลหรือ sysctl ที่ฉันสามารถตั้งค่าเพื่อป้องกันสิ่งนี้เพื่อให้ฉันสามารถอ่านพวกเขาบนหน้าจอคอนโซลหลังจากบูต?


/var/log/kern.log ไม่ช่วยใช่ไหม หรือคุณไม่มีมัน
HUB

คำตอบ:


13

ข้อมูลส่วนใหญ่ที่คุณต้องการจะอยู่ใน/var/log/dmesgและ/var/log/messagesหลังบูทระบบคุณควรตรวจสอบไฟล์เหล่านั้นก่อน

โดยทั่วไปแล้วเครื่อง linux จะเรียกใช้mingettyสำหรับเทอร์มินัลเสมือน หากคุณมีระบบ SysV init /etc/inittabแบบดั้งเดิมเหล่านั้นจะถูกควบคุมโดย คุณสามารถเพิ่ม--noclearตัวเลือกเป็น mingetty เพื่อป้องกันการล้างหน้าจอ หากต้องการทำสิ่งนี้ให้แก้ไข/etc/inittabและเปลี่ยนแปลงบรรทัดนี้:

1:2345:respawn:/sbin/mingetty tty1

ถึง

1:2345:respawn:/sbin/mingetty --noclear tty1

จากนั้นรีบูตเครื่อง

Linux linux รุ่นใหม่บางรุ่นใช้การแทนที่ init เช่น Upstart (ตัวอย่างเช่น Ubuntu) โดยทั่วไปแล้วสิ่งเหล่านี้จะไม่ใช้ / etc / inittab และใช้ไฟล์ config อื่นแทน นี่คือการอภิปรายของวิธีการที่เรียกงาน mingetty บน Ubuntu


ฉันลืมที่จะพูดถึงว่าฉันใส่ใจอูบุนตูจริงๆ ลิงค์ด้านบนชี้ไปที่ข้อมูลที่ล้าสมัยและความพยายามครั้งแรกของฉัน (เพียงแก้ไข /etc/init/tty1.conf ก็ไม่ประสบความสำเร็จเลย
Paul Hoffman

พวกเขาใช้gettyจากutil-linuxไม่ใช่mingettyแต่ใช้ได้กับ Debian เช่นกัน ขอบคุณ!
mirabilos

10

ด้วย systemd สิ่งต่าง ๆ ดูบทความหยุด Clearing My God ไอ้คอนโซล ในระยะสั้น:

mkdir /etc/systemd/system/getty@.service.d
cat >/etc/systemd/system/getty@.service.d/noclear.conf <<EOF
[Service]
TTYVTDisallocate=no
EOF
systemctl daemon-reload

ตรวจสอบผลลัพธ์ด้วย systemctl cat getty@tty1.service


4

หากไม่มีสิ่งใดช่วยคุณสามารถคว้าแล็ปท็อปของคุณและบันทึกเคอร์เนลทั้งหมดผ่านคอนโซลอนุกรมโดยการเพิ่มสิ่งนี้ลงในพารามิเตอร์เคอร์เนล:

console=tty0 console=ttyS0,9600n8 console=tty0

สิ่งนี้จะทำให้เอาต์พุตไปที่ apperar บนซีเรียลคอนโซล (ในโปรแกรมเทอร์มินัลของคุณ) และบน tty มาตรฐาน บางครั้ง SOL (Serial Over LAN) ก็สามารถใช้ได้


3

หลังจากผ่านไปหลายชั่วโมงของ googling ฉันพบวิธีแก้ปัญหาในชุดข้อความนี้และคำถามนี้ ขั้นตอนนี้ใช้งานได้Ubuntu 12.04.1 LTSตามที่อธิบายไว้ที่นี่แต่ไม่ควรแตกต่างกันมากเกินไปสำหรับการแจกแจงแบบอื่น

ก่อนอื่นเพิ่มconsole=tty1ไปยังของคุณGRUB_CMDLINE_LINUX(ฉันขอแนะนำให้เพิ่มnoplymouthการยับยั้งplymouthและ splashscreen ไร้ประโยชน์ของมัน)

#> sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX="console=tty1 noplymouth"

สิ่งนี้บังคับให้ล็อกเคอร์เนลที่จะพิมพ์tty1แทนtty7และหลีกเลี่ยงttyสวิตช์ก่อนพร้อมต์ล็อกอิน

แล้วก็ไปลง/etc/initและแก้ไขหนึ่งหรือมากกว่าtty1.conf, tty2.conf, tty3.conf, tty4.conf, tty5.conf, หรือtty6.conf console.confฉันแก้ไขพวกเขาทั้งหมดเพิ่ม--noclearตัวเลือกในgettyคำสั่ง ตัวอย่างเช่นการแก้ไขtty1.conf:

#> sudo vi /etc/init/tty1.conf

คุณจะต้องแทนที่:

respawn
exec /sbin/getty -8 38400 tty1

ด้วย:

respawn
exec /sbin/getty -8 38400 --noclear tty1

นั่นคือทั้งหมดตอนนี้ระบบของคุณควรบูตในเครื่องเดียวttyโดยไม่ต้องล้างออก


1

dmesg ที่นี่กลับไปที่จุดเริ่มต้นของเคอร์เนลเริ่มต้นด้วย

[    0.000000] Initializing cgroup subsys cpuset

บางทีนี่อาจเป็นข้อความประวัติหรือส่วนหนึ่งของบูตเดอร์ของคุณ? ไม่ว่าจะด้วยวิธีใดมีหลายสิ่งหลายอย่างที่สามารถทำให้หน้าจอว่างเปล่าโดยไม่ทราบว่าในกระบวนการเกิดขึ้นจริง ๆ ยากที่จะบอกว่าต้องทำอะไรกับมัน มีเพียงสิ่งเดียวที่เหลืออยู่บนหน้าจอ "เข้าสู่ระบบ:"? หรือมีสิ่งอื่น ๆ boot-up ข้างต้นมันได้หรือไม่ หากเป็นทันทีก่อนที่จะมีข้อความแจ้งให้ลงชื่อเข้าใช้และไม่มีอะไรอยู่บนหน้าจอแสดงว่าอาจ/etc/issueมีคำสั่ง blank-screening อยู่หรือไม่ มิฉะนั้นคุณอาจใช้บัฟเฟอร์เฟรมคอนโซลบางชนิดที่เปลี่ยนโหมดวิดีโอ บนคอมพิวเตอร์ของฉันหน้าจอจะว่างเปล่าเมื่อโหลดฟอนต์คอนโซล


TL; DR /etc/issueสามารถเป็นผู้ร้ายได้เช่นกัน คำใบ้ที่ดี
Tino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.