ดูเหมือนจะไม่มีวิธีการบันทึกข้อมูลนี้ไปยังไฟล์ สำหรับกระบวนการบูทมีbootlogd
แพ็คเกจที่สร้างไฟล์/var/log/boot
แต่ไม่มีอะไรสำหรับกระบวนการปิด / รีบูต เท่าที่ฉันจะเห็นว่าไม่มีทางที่จะเข้าสู่ระบบด้วยrsyslog
เช่นกันและแม้ว่าจะมี แต่ก็มีข้อความที่พิมพ์หลังจากrsyslog
หยุด ส่วนหนึ่งของกระบวนการปิด / รีบูตของฉันคือการติดตั้ง rootfs ใหม่แบบอ่านอย่างเดียวและเพิ่มทุกอย่างอื่นหลังจากการบันทึกนี้ไปยังไฟล์ที่จะยังคงอยู่ในการบู๊ตครั้งถัดไปแทบจะเป็นไปไม่ได้เลย
วิธีที่ง่ายที่สุดที่ฉันสามารถดูเพื่อดูข้อความที่จะแก้ไข/etc/init.d/halt
และ / หรือ/etc/init.d/reboot
สคริปต์เพื่อหยุดการทำงานชั่วคราวก่อนที่จะเกิดขึ้นจริง/halt
reboot
สำหรับhalt
สคริปต์ให้เรียกใช้คำสั่งsudoedit /etc/init.d/halt
(หรือใช้โปรแกรมแก้ไข GUI) และค้นหาบรรทัดที่หยุดทำงานจริง สำหรับฉันนี่คือบรรทัด:
halt -d -f $netdown $poweroff $hddown
มิฉะนั้นควรอยู่ท้ายdo_stop
ฟังก์ชันและบรรทัดเดียวที่เรียกhalt
คำสั่ง เมื่อคุณพบบรรทัดเพียงแค่แทรกบรรทัดใหม่ด้านบนด้วยสิ่งต่อไปนี้:
read -p "Press enter to halt" reply
บันทึกไฟล์และออก ตอนนี้เมื่อคุณปิดระบบจะหยุดจนกว่าคุณจะกด Enter (หรือ CTRL-C, CTRL-D ฯลฯ ) คุณสามารถอ่านข้อความที่พิมพ์บนหน้าจอ หากมีมากกว่าหนึ่งในหน้าจอเดียวของข้อความที่คุณสามารถดูขั้ว scrollback Shift+PgUp
โดยการกด หากยังไม่เพียงพอมีวิธีเพิ่มขนาดของบัฟเฟอร์การเลื่อน (อาจเป็นคำถามที่แตกต่างกัน)
หากต้องการทำเช่นเดียวกันเมื่อระบบรีบูตคุณต้องแก้ไข/etc/init.d/reboot
ไฟล์ คำสั่งที่ใช้ที่นี่เป็นของหลักสูตรreboot
ซึ่งตรงข้ามกับhalt
และควรจะอยู่ที่ท้ายdo_stop
ฟังก์ชั่นอีกครั้ง สำหรับฉันสายคือ:
reboot -d -f -i
อีกครั้งเพียงแค่แทรกสิ่งต่อไปนี้ในบรรทัดใหม่ด้านบน:
read -p "Press enter to reboot" reply
โปรดทราบว่าไฟล์เหล่านี้จะแสดงรายการเป็นชุดคำสั่งสำหรับinitscripts
แพคเกจ การแก้ไขเหล่านี้จะไม่ถูกปิดกั้นโดยค่าเริ่มต้นเมื่อมีการอัพเกรดแพ็คเกจแม้ว่าจะทำให้เกิดข้อขัดแย้ง
การแก้ปัญหาที่สมบูรณ์มากขึ้นคือการใช้สคริปต์ต่อไปนี้:
#! /bin/sh
### BEGIN INIT INFO
# Provides: pause_hook
# Required-Start:
# Required-Stop: halt reboot
# Default-Start:
# Default-Stop: 0 6
# X-Stop-After: umountroot
# X-Interactive: true
# Short-Description: Pause before halt or reboot
# Description:
### END INIT INFO
do_stop () {
[ -r /etc/pause_hook.conf ] && . /etc/pause_hook.conf
[ "$PAUSE_HOOK_ENABLED" = true ] && read -p "Press enter to continue" reply
}
case "$1" in
start)
# No-op
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
do_stop
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
สิ่งนี้ควรอยู่ใน/etc/init.d/pause_hook
และสามารถเปิดใช้งานให้ทำงานเมื่อปิด / รีบูตด้วยคำสั่งต่อไปนี้:
sudo update-rc.d pause_hook defaults
หากต้องการเปิดใช้งาน hook จริงให้สร้างไฟล์/etc/pause_hook.conf
ที่มีบรรทัด:
PAUSE_HOOK_ENABLED=true
ขั้นตอนการปิด / รีบูตตอนนี้ควรหยุดก่อนhalt
หรือreboot
สคริปต์ที่เรียกว่าให้เวลาเพื่อดูข้อความ นอกจากนี้ยังสามารถใช้งานได้อย่างง่ายดาย / ใหม่เปิดใช้งานโดยการแสดงความคิดเห็น / uncommmenting /etc/pause_hook.conf
เปิดใช้งานในสาย จะไม่มีdpkg
ความขัดแย้งระหว่างการอัพเกรดด้วยวิธีนี้