歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 小發現:Ubuntu使用kexec重啟系統

小發現:Ubuntu使用kexec重啟系統

日期:2017/2/28 16:40:29   编辑:Linux教程

kexec使用Unix系統調用exec()的覆蓋哲理,它產生一個新的內核覆蓋正在運行的內核。這個過程不用啟動機器上的固件(firmware),所以可以節省一些重啟時間。

因為啟動固件需要走查總線和標識設備,節省了這些時間就會加速系統的啟動。

知道了這些就解決一下我的系統不能重啟的問題吧,如圖:


怎麼會啟動不了呢?

1.grep一下/etc目錄

apple@Ubuntu:~$ sudo grep -r kexec /etc
grep: /etc/alternatives/smbstatus.1.gz: No such file or directory
/etc/rc6.d/K18kexec-load:# Provides: kexec-load
/etc/rc6.d/K18kexec-load:# Required-Stop: $remote_fs kexec
/etc/rc6.d/K18kexec-load:# Short-Description: Load kernel image with kexec
/etc/rc6.d/K18kexec-load:test -r /etc/default/kexec && . /etc/default/kexec
/etc/rc6.d/K18kexec-load: test -x /sbin/kexec || exit 0
/etc/rc6.d/K18kexec-load: test "x`cat /sys/kernel/kexec_loaded`y" = "x1y" && exit 0
/etc/rc6.d/K18kexec-load: kexec -l "$KERNEL_IMAGE" --append="$REAL_APPEND"
/etc/rc6.d/K18kexec-load: kexec -l "$KERNEL_IMAGE" --initrd="$INITRD" --append="$REAL_APPEND"
/etc/rc6.d/S85kexec:# Provides: kexec
/etc/rc6.d/S85kexec:# Short-Description: Execute the kexec -e command to reboot system
/etc/rc6.d/S85kexec:test -r /etc/default/kexec && . /etc/default/kexec
/etc/rc6.d/S85kexec: test "x`cat /sys/kernel/kexec_loaded`y" = "x1y" || exit 0
/etc/rc6.d/S85kexec: test -x /sbin/kexec || exit 0
/etc/rc6.d/S85kexec: log_action_msg "Will now restart with kexec"
/etc/rc6.d/S85kexec: kexec -e
/etc/rc6.d/S85kexec: log_failure_msg "kexec failed"
/etc/rc6.d/S60umountroot:# Should-Stop: halt reboot kexec
/etc/init.d/kexec-load:# Provides: kexec-load
/etc/init.d/kexec-load:# Required-Stop: $remote_fs kexec
/etc/init.d/kexec-load:# Short-Description: Load kernel image with kexec
/etc/init.d/kexec-load:test -r /etc/default/kexec && . /etc/default/kexec
/etc/init.d/kexec-load: test -x /sbin/kexec || exit 0
/etc/init.d/kexec-load: test "x`cat /sys/kernel/kexec_loaded`y" = "x1y" && exit 0
/etc/init.d/kexec-load: kexec -l "$KERNEL_IMAGE" --append="$REAL_APPEND"
/etc/init.d/kexec-load: kexec -l "$KERNEL_IMAGE" --initrd="$INITRD" --append="$REAL_APPEND"
/etc/init.d/kexec:# Provides: kexec
/etc/init.d/kexec:# Short-Description: Execute the kexec -e command to reboot system
/etc/init.d/kexec:test -r /etc/default/kexec && . /etc/default/kexec
/etc/init.d/kexec: test "x`cat /sys/kernel/kexec_loaded`y" = "x1y" || exit 0
/etc/init.d/kexec: test -x /sbin/kexec || exit 0
/etc/init.d/kexec: log_action_msg "Will now restart with kexec"
/etc/init.d/kexec: kexec -e
/etc/init.d/kexec: log_failure_msg "kexec failed"
/etc/init.d/umountroot:# Should-Stop: halt reboot kexec
/etc/init.d/kdump:# Short-Description: Load crashkernel image with kexec
/etc/init.d/kdump: test -x /sbin/kexec || exit 0
/etc/init.d/kdump: kexec -p "$KERNEL_IMAGE" --initrd="$INITRD" --append="$APPEND"
/etc/rc2.d/S00kdump:# Short-Description: Load crashkernel image with kexec
/etc/rc2.d/S00kdump: test -x /sbin/kexec || exit 0
/etc/rc2.d/S00kdump: kexec -p "$KERNEL_IMAGE" --initrd="$INITRD" --append="$APPEND"
/etc/default/kexec:# Defaults for kexec initscript
/etc/default/kexec:# sourced by /etc/init.d/kexec and /etc/init.d/kexec-load
/etc/default/kexec:# Load a kexec kernel (true/false)
/etc/rc0.d/S60umountroot:# Should-Stop: halt reboot kexec
apple@ubuntu:~$

看來系統重啟需要借用/etc/init.d/kexec這個腳本

Copyright © Linux教程網 All Rights Reserved