2016-03-15 56 views
2

我在Ubuntu的虛擬硬盤上學習init。 在scripts/init-bottom/udev我看到這個代碼片段:'scripts/init-top/all_generic_ide`中的hooker腳本實際上是什麼?

PREREQ="" 
prereqs() 
{ 
    echo "$PREREQ" 
} 
case $1 in 
# get pre-requisites 
prereqs) 
    prereqs 
    exit 0 
    ;; 
esac 

它出現在scripts/**腳本幾乎每一個腳本(如scripts/init-top/all_generic_ide,scripts/local-bottom/ntfs_3g,scripts/local-premount/fixrtc,等等)。雖然它們可能有一些細微的差異,但其中大部分只是在身體代碼的頂部具有相同的片段。

我從Ubuntu的閱讀維基:initramfs-tools

我完全不知道它的目的。我想我可以實現它的流程,但是不知道它會做什麼?

回答

1

當使用參數prereqs調用腳本,然後以零退出時,此樣板代碼僅輸出PREREQ的值。

initramfs-tools手冊頁說,在鉤子腳本 - >啓動腳本:

沒有任何保證,以作爲對於不同的腳本,除非prereqs執行順序是在腳本的設置。

因此,scripts/init-bottom中的腳本將在引導時以任意順序執行(如果它們未指定prereq)。如果這些腳本相互依賴,則腳本必須定義prereq以確保正確的執行順序。

例如,一個腳本可能會掛載/ home(稱爲mount_home),一個腳本會創建新的用戶帳戶(稱爲create_users)。然後第二個腳本需要通過改變樣板代碼申報的第一個(調用create_user prereqs應該返回mount_home)的依賴性:

PREREQ="mount_home" 
prereqs() 
{ 
    echo "$PREREQ" 
} 
case $1 in 
# get pre-requisites 
prereqs) 
    prereqs 
    exit 0 
    ;; 
esac 

如果你的腳本不依賴於其他腳本相同的目錄裏面,可以只需複製樣板代碼。

相關問題