grub的reboot 命令實現

2021-08-02 16:35:03 字數 868 閱讀 7281

grub的reboot 命令如下:其路徑在grub-core/commands/reboot.c 中

static grub_err_t __attribute__ ((noreturn))

grub_cmd_reboot (grub_command_t cmd __attribute__ ((unused)),

int argc __attribute__ ((unused)),

char **args __attribute__ ((unused)))

static grub_command_t cmd;

grub_mod_init(reboot)

grub_mod_fini(reboot)

可以看到如果在grub.cfg 中呼叫reboot 命令最終呼叫grub_cmd_reboot->grub_reboot

如果這個系統是通過uefi+grub方式啟動的話,則grub_reboot 在grub-core/lib/efi 中實現

void

grub_reboot (void)

這個函式首先呼叫grub_machine_fini

enum

;這裡的grub_loader_flag_noreturn為1

void

grub_machine_fini (int flags)

在grub_machine_fini 中if 條件不成立,所以會呼叫grub_efi_fini

void

grub_efi_fini (void)

來釋放disk和console

回到grub_reboot 中,釋放disk和console占用的資源後,就通過efi_call_4呼叫runtime_services來reboot的系統

每天回顧linux命令(reboot)

reboot命令用來重新啟動正在執行的linux作業系統 語法 reboot 選項 選項 d 重新開機時不把資料寫入記錄檔案 var tmp wtmp。本引數具有 n 參效果。f 強制重新開機,不呼叫shutdown指令的功能。i 在重新開機前,先關閉所有的網路介面。n 重新開機前不檢查是否有未結束...

Linux之重啟reboot命令

reboot 用來重啟linux系統和windows系統中的restart一樣。但是機器重啟必須要root使用者才有許可權。命令語法 sbin reboot n w d f i 或reboot n w d f i 命令引數 引數長引數 描敘 d 重新啟動時不把資料寫入記錄檔案 var tmp wtm...

AIX系統謹慎使用reboot命令

在客戶一次停機維護中,發現了這個問題。環境是oracle 10g rac for aix6,使用了hacmp管理共享磁碟。在停機維護時間段內需要重啟主機,當關閉了資料庫和cluster後,節點1使用reboot命令重啟作業系統,等了很長時間,系統仍然沒有啟動的跡象,不得以到機房中檢查,發現伺服器處於...