Which keyword is used in the /etc/inittab file to define the SysV-init default system runlevel?



Answer: initdefault

題解

SysV init的設定檔是「/etc/inittab」,格式如下:

id:runlevels:action:process

「id」為1到4個連續的字元,用來辨識該行用的,可以自行決定。「procee」為要執行的指令。

而其中的「action」可能會有以下幾種:

  • respawn:行程結束後會重新執行。(例如:getty)
  • wait:行程會在指定的runlevel下啟動一次,且init會等待這個行程的結束。
  • once:行程會在指定的runlevel下啟動一次。
  • boot:行程在開機的時候被執行。
  • bootwait:行程在開機的時候被執行,且init會等待這個行程的結束。
  • off:不做任何事。
  • ondemand:行程會在runlevel為「A」、「B」或「C」時被執行。
  • initdefault:開機後預設要進入的runlevel。
  • sysinit:開機時最先要被執行的行程。
  • powerwait:當進入電源消失,進入UPS供電狀態時,init會執行指定的行程,並且會等待該行程的結束。
  • powerfail:類似powerwait,但是這個「action」是等待行程的回傳錯誤發生的類型。
  • powerokwait:當電源回復時會執行的行程。
  • powerfailnow:當UPS的電力也快撐不住時會執行的行程。
  • ctrlaltdel:當使用者因為按下Ctrl + Alt + Del,而使init接到「SIGINT」信號時會執行的行程。
  • kbdrequest:當init接到「KeyboardSignal」(通常是按下鍵盤快速鍵來發送)時會執行的行程。這個快速鍵可以在「defkeymap.map」檔案內進行設定。至於「defkeymap.map」檔案的路徑在不同Linux發行版會不太一樣,可以查看「loadkeys」指令的手冊。Fedora 29的「defkeymap.map」檔案路徑為「/lib/kbd/keymaps/legacy/i386/qwerty/defkeymap.map.gz」(雖然這是gzip檔案,但可以直接被大部分的GNU文字編輯器來直接編輯)。若要將「KeyboardSignal」設為Alt + ↑,要在設定檔內撰寫「alt keycode 103 = KeyboardSignal」。修改完後使用「sudo loadkeys -d」指令就可以套用設定。

若要將預設的runlevel改為2的話,要寫成:

id:2:initdefault: