1. 程式人生 > >Linux開機啟動順序小結

Linux開機啟動順序小結

  開機過程指的是從開啟計算機電源直到LINUX顯示使用者登入畫面的全過程。分析LINUX開機過程也是深入瞭解LINUX核心工作原理的一個很好的途徑。

  啟動第一步--載入BIOS

  當你開啟計算機電源,計算機會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊、時鐘資訊、PnP特性等等。在此之後,計算機心裡就有譜了,知道應該去讀取哪個硬體裝置了。在BIOS將系統的控制權交給硬碟第一個扇區之後,就開始由Linux來控制系統了。

  啟動第二步--讀取MBR

  硬碟上第0磁軌第一個扇區被稱為MBR,也就是Master

 Boot Record,即主引導記錄,它的大小是512位元組,可裡面卻存放了預啟動資訊、分割槽表資訊。可分為兩部分:第一部分為引導(PRE-BOOT)區,佔了446個位元組;第二部分為分割槽表(PARTITION PABLE),共有66個位元組,記錄硬碟的分割槽資訊。預引導區的作用之一是找到標記為活動(ACTIVE)的分割槽,並將活動分割槽的引導區讀入記憶體。

  系統找到BIOS所指定的硬碟的MBR後,就會將其複製到0×7c00地址所在的實體記憶體中。其實被複制到實體記憶體的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

  啟動第三步--Boot Loader

  Boot Loader 就是在作業系統核心執行之前執行的一段小程式。通過這段小程式,我們可以初始化硬體裝置、建立記憶體空間的對映圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終呼叫作業系統核心做好一切準備。通常,BootL oade:是嚴重地依賴於硬體而實現的,不同體系結構的系統存在著不同的Boot Loader。

  Linux的引導扇區內容是採用組合語言編寫的程式,其原始碼在arch/i386/boot中(不同體系的CPU有其各自的boot目錄),有4個程式檔案:

  ◎bootsect.S,引導扇區的主程式,彙編後的程式碼不超過512位元組,即一個扇區的 大 小

  ◎setup.S, 引導輔助程式

  ◎edd.S,輔助程式的一部分,用於支援BIOS增強磁碟裝置服務

  ◎video.S,輔助程式的另一部分,用於引導時的螢幕顯示

  Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader,這裡以Grub為例來講解吧。

  系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),並依照此配置資訊來啟動不同的作業系統。

  啟動第四步--載入核心

  根據grub設定的核心映像所在路徑,系統讀取記憶體映像,並進行解壓縮操作。此時,螢幕一般會輸出“Uncompressing Linux”的提示。當解壓縮核心完成後,螢幕輸出“OK, booting the kernel”。

  系統將解壓後的核心放置在記憶體之中,並呼叫start_kernel()函式來啟動一系列的初始化函式並初始化各種裝置,完成Linux核心環境的建立。至此,Linux核心已經建立起來了,基於Linux的程式應該可以正常運行了。

  start_kenrel()定義在init/main.c中,它就類似於一般可執行程式中的main()函式,系統在此之前所做的僅僅是一些能讓核心程式最低限度執行的初始化操作,真正的核心初始化過程是從這裡才開始。函式start_kerenl()將會呼叫一系列的初始化函式,用來完成核心本身的各方面設定,目的是最終建立起基本完整的Linux核心環境。

  start_kernel()中主要執行了以下操作:

  (1) 在螢幕上打印出當前的核心版本資訊。

  (2) 執行setup_arch(),對系統結構進行設定。

  (3)執行sched_init(),對系統的排程機制進行初始化。先是對每個可用CPU上的runqueque進行初始化;然後初始化0號程序(其task struct和系統空M堆疊在startup_32()中己經被分配)為系統idle程序,即系統空閒時佔據CPU的程序。

  (4)執行parse_early_param()和parsees_args()解析系統啟動引數。

  (5)執行trap_in itQ,先設定了系統中斷向量表。0-19號的陷阱門用於CPU異常處理;然後初始化系統呼叫向量;最後呼叫cpu_init()完善對CPU的初始化,用於支援程序排程機制,包括設定標誌位暫存器、任務暫存器、初始化程式除錯相關暫存器等等。

  (6)執行rcu_init(),初始化系統中的Read-Copy Update互斥機制。

  (7)執行init_IRQ()函式,初始化用於外設的中斷,完成對IDT的最終初始化過程。

  (8)執行init_timers(), softirq_init()和time_init()函式,分別初始系統的定時器機制,軟中斷機制以及系統日期和時間。

  (9)執行mem_init()函式,初始化實體記憶體頁面的page資料結構描述符,完成對實體記憶體管理機制的建立。

  (10)執行kmem_cache_init(),完成對通用slab緩衝區管理機制的初始化工作。

  (11)執行fork_init(),計算出當前系統的實體記憶體容量能夠允許建立的程序(執行緒)數量。

  (12)執行proc_caches_init() , bufer_init(), unnamed_dev_init() ,vfs_caches_init(), signals_init()等函式對各種管理機制建立起專用的slab緩衝區佇列。

  (13 )執行proc_root_init()Wl數,對虛擬檔案系統/proc進行初始化。

  在 start_kenrel()的結尾,核心通過kenrel_thread()創建出第一個系統核心執行緒(即1號程序),該執行緒執行的是核心中的init()函式,負責的是下一階段的啟動任務。最後呼叫cpues_idle()函式:進入了系統主迴圈體口預設將一直執行default_idle()函式中的指令,即CPU的halt指令,直到就緒佇列中存在其他程序需要被排程時才會轉向執行其他函式。此時,系統中唯一存在就緒狀態的程序就是由kerne_hread()建立的init程序(核心執行緒),所以核心並不進入default_idle()函式,而是轉向init()函式繼續啟動過程。

  啟動第五步--使用者層init依據inittab檔案來設定執行等級

  核心被載入後,第一個執行的程式便是/sbin/init,該檔案會讀取/etc/inittab檔案,並依據此檔案來進行初始化工作。

  其實/etc/inittab檔案最主要的作用就是設定Linux的執行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要執行在等級5上。Linux的執行等級設定如下:

  0:關機

  1:單使用者模式

  2:無網路支援的多使用者模式

  3:有網路支援的多使用者模式

  4:保留,未使用

  5:有網路支援有X-Window支援的多使用者模式

  6:重新引導系統,即重啟

  啟動第六步--init程序執行rc.sysinit

  在設定了執行等級後,Linux系統執行的第一個使用者層檔案就是/etc/rc.d/rc.sysinit指令碼程式,它做的工作非常多,包括設定PATH、設定網路配置(/etc/sysconfig/network)、啟動swap分割槽、設定/proc等等。如果你有興趣,可以到/etc/rc.d中檢視一下rc.sysinit檔案。

  執行緒init的最終完成狀態是能夠使得一般的使用者程式可以正常地被執行,從而真正完成可供應用程式執行的系統環境。它主要進行的操作有:

  (1) 執行函式do_basic_setup(),它會對外部裝置進行全面地初始化。

  (2) 構建系統的虛擬檔案系統目錄樹,掛接系統中作為根目錄的裝置(其具體的文 件系統已經在上一步驟中註冊)。

  (3) 開啟裝置/dev/console,並通過函式sys_dup()開啟的連線複製兩次,使得檔案號0,1 ,2 全部指向控制檯。這三個檔案連線就是通常所說的“標準輸入”stdin,“標準輸出”stdout和“標準出錯資訊”stderr這三個標準I/O通道。

  (4) 準備好以上一切之後,系統開始進入使用者層的初始化階段。核心通過系統呼叫execve()載入執T子相應的使用者層初始化程式,依次嘗試載入程式"/sbin/initl"," /etc/init"," /bin/init',和“/bin/sh。只要其中有一個程式載入獲得成功,那麼系統就將開始使用者層的初始化,而不會再回到init()函式段中。至此,init()函式結束,Linux核心的引導 部分也到此結束。

  啟動第七步--啟動核心模組

  具體是依據/etc/modules.conf檔案或/etc/modules.d目錄下的檔案來裝載核心模組

  啟動第八步--執行不同執行級別的指令碼程式

  根據執行級別的不同,系統會執行rc0.d到rc6.d中的相應的指令碼程式,來完成相應的初始化工作和啟動相應的服務。

  啟動第九步--執行/etc/rc.d/rc.local

  你如果打開了此檔案,裡面有一句話,讀過之後,你就會對此命令的作用一目瞭然:

  # This script will be executed *after* all the other init scripts.

  # You can put your own initialization stuff in here if you don’t

  # want to do the full Sys V style init stuff.

  rc.local就是在一切初始化工作後,Linux留給使用者進行個性化的地方。你可以把你想設定和啟動的東西放到這裡。

  啟動第十步--執行/bin/login程式,進入登入狀態

  此時,系統已經進入到了等待使用者輸入username和password的時候了,你已經可以用自己的帳號登入系統了。

  1: 啟動電源後,主機第一步先做的就是查詢BIOS(全稱:basic input/output system 基本輸入輸出系統)資訊。瞭解整個系統的硬體狀態,如CPU,記憶體,顯示卡,網絡卡等。嗯,這一步windows算和它是一家。不分彼此。

  2: 接下來,就是主機讀取MBR(硬碟的第一個扇區)裡的boot loader了。這個可是重點哦,據說troubleshooting裡就會考這點,給個壞了的loader,叫你修正。windows不支援linux的分割槽格式。所以,用windows的boot。ini是查不到linux的系統的。一般我裝系統都是先裝 windows再裝linux,然後用grub來做boot loader。兩個字:省心!因為linux不像windows那麼小氣。grub可是支援windows分割槽格式的哦。

  3: 接上一步,主機讀取boot loader後,會讀取裡面的資訊,知道誰跟誰是待在哪,假如主機想進入linux系統,讀取到linux核心是在/boot檔案目錄中後,將此核心載入到記憶體中。開始了接下來的分析啟動之旅。

  4: OK,第一個執行程式是誰?就是/sbin/init程式。不信,就用top程式看下,是不是PID為1的就是這個東東,它,可是萬物之祖啊,我簡稱它是女媧娘娘(不喜歡亞當夏娃)。

  · 5: init首先查詢啟動等級(run-level)。因為啟動等級不同,其執行指令碼(也就是服務)會不同。預設的等級有以下幾項:

  0 - halt (系統直接關機)

  1 - single user mode (單人模式,用於系統維護時使用)

  2 - Multi-user, without NFS (類似3模式,不過少了NFS服務)

  3 - Full multi-user mode (完整模式,不過,是文字模式)

  4 - unused (系統保留功能)

  5 - X11 (與3模式類似,不過,是X終端顯示)

  6 - reboot (重新開機)

  (不要選擇0或4,6 否則,進步了系統的)

  · 6: OK。系統知道自己的啟動等級後,接下來,不是去啟動服務,而是,先設定好主機執行環境。讀取的檔案是/etc/rc。d/rc。sysinit檔案。那究竟要設定哪些環境呢?

  · 設定網路環境/etc/sysconfig/network,如主機名,閘道器,IP,DNS等。

  · 掛載/proc。此檔案是個特殊檔案,大小為0,因為它是在記憶體當中。裡面東東最好別刪。

  · 根據核心在開機時的結果/proc/sys/kernel/modprobe。開始進行周邊裝置的偵測。

  · 載入使用者自定義的模組/etc/sysconfig/modules/*。modules

  · 讀取/etc/sysctl。conf檔案對核心進行設定。

  · 設定時間,終端字型,硬碟LVM或RAID功能,以fsck進行磁碟檢測。

  · 將開機狀況記錄到/var/log/dmesg中。(可以用命令dmesg檢視結果)

  · 7: OK,接下來,就是啟動系統服務了,不同的run-level會有不同的服務啟動。到/etc/rc。d目錄中,不同的level會有不同的目錄。如啟動 3模式,會有個rc3。d目錄,裡面就儲存著服務。其中,S(start)開頭的表明開機啟動,K(kill)開頭的表明開機不啟動。數字表示啟動順序。數字越小,啟動越早。

  注意,他們都是連線到etc/rc。d/init。d/目錄中的相關檔案。所以,想手工啟動某一服務,可以用"/etc/rc。d/init。 d/某個服務 start"啟動哦。相反,我們也可以把某個服務ln(連結命令)到不同run-level的目錄中。記得打上S或者K+數字哦。

  · 8: 讀取服務後,主機會讀取/etc/rc。d/rc。local檔案。所以,如果需要什麼開機啟動的話,可以寫個指令碼或命令到這裡面來。就不用像上面那麼麻煩。以後刪除也方便。

  OK,經過一番長途跋涉後,系統終於可以安心的開啟shell了。



每次系統開機的時候,都會根據不同的runlevel級別啟動不同的服務。

開機按[CTRL]+[ALT]+[F7]/[F8]可檢視系統啟動時正在啟動的服務!!!!

  眾所周知Linux給我們提供了7中不同的啟動級別0~6,那麼不同的啟動級別都會啟動那些服務哪。可以使用chkconfig ——list 檢視,可以使用chkconfig 服務名 ——level 3 {on|of}修改是否要再某個級別啟動或停止。

  1. 例如:要把sshd服務在第3種啟動級別中停止。

[[email protected] rc3.d]# chkconfig sshd --level 3 off 
中國網管聯盟www.bitscn.com

  2. 還可以手工修改,在/etc/rc.d/這個目錄裡有很多不同runlevel對應的目錄,裡面表明進入某個啟動級別時要啟動和停止那些服務。

  例如: 中國網管聯盟www、bitsCN、com

[[email protected] etc]# ls /etc/rc.d
init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit
rc      rc1.d  rc3.d  rc5.d  rc.local
我們用rc3.d這個目錄為例,這個目錄裡面記錄的是進入init 3時需要停止和啟動那些服務。
下面為rc3.d目錄的內容:

[[email protected] etc]# ls /etc/rc.d/rc3.d/
K02avahi-dnsconfd            K89pand             S25bluetooth
K02dhcdbd                    K89rdisc            S25netfs
K02NetworkManager            K91capi             S25pcscd
K02NetworkManagerDispatcher  K99readahead_later  S26apmd
K05conman                    S04readahead_early  S26hidd

  K開頭代表這個啟動級別需要停止的服務,編號是停止的時候執行的順序,再後面就是服務明瞭。

  S開頭則是要啟動那些服務。 網管網bitsCN_com

  注意:先執行K開頭的,後執行S開頭的。所以S開頭的服務會覆蓋K開頭的服務。

Linux設定程式的開機自啟動與Linux服務

這裡只說我所知道的,舉例如下
需求是我要用Windows下的VNC Viewer連線到Linux Server. 我在Linux下面輸入
#vncserver
設定好密碼,好現在我就可以在Windows下面使用VNC連線到Linux桌面了,這個時候如果我的Linux Server系統重啟了,那麼我還得再敲一次vncserver這個命令,所以我現在要讓Linux Server在開機時自動啟動vncserver
有哪些方法呢?
1. 我可以把vncserver設定成系統的服務,並啟動起來,使用如下命令檢視vncserver是否已經是系統的服務
#chkconfig --list|grep vnc
vncserver    0:off 1:off 2:off 3:off 4:off 5:off 6:off
現在我們要設定vncserver開機自啟動,使用如下命令
#chkconfig --level 5 vncserver on#chkconfig --list|grep vnc
vncserver    0:off 1:off 2:off 3:off 4:off 5:on 6:off
這個時候重啟系統,那麼vncserver就會以服務的方式自動起來,但是現在如果想立即使用vnc則直接敲命令 vncserver即可
2. 我們可以把vncserver這條命令寫在Linux開機要執行的腳本里面,那些指令碼是Linux開機時要執行的呢?
我知道的有以下這些:
/etc/rc.local
/etc/rc.sysinit
/etc/inittab
/etc/profile
這裡記住Linux服務於Linux開機自啟動之間的區別和聯絡


linux開機啟動指令碼的順序
來源: ChinaUnix部落格  日期: 2008.07.16 13:37 (共有條評論) 我要評論

如果伺服器重啟之後需要手工開啟許多服務、工作及以後的維護相對比較繁瑣、特地總結了下linux下開機自動啟動指令碼所涉及的知識和方法、如下:
1、相關基礎知識點
   1)redhat的啟動方式和執行次序是: 
      載入核心 
      執行init程式 
      /etc/rc.d/rc.sysinit # 由init執行的第一個指令碼 
      /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL為預設的執行模式 
      /etc/rc.d/rc.local     #相應級別服務啟動之後、在執行該檔案(其實也可以把需要執行的命令寫到該檔案中)
      /sbin/mingetty # 等待使用者登入 
      
      在Redhat中,/etc/rc.d/rc.sysinit主要做在各個執行模式中相同的初始化工作,包括: 
      調入keymap以及系統字型 
      啟動swapping 
      設定主機名 
      設定NIS域名 
      檢查(fsck)並mount檔案系統 
      開啟quota 
      裝載音效卡模組 
      設定系統時鐘 
      等等。 
      /etc/rc.d/rc則根據其引數指定的執行模式(執行級別,你在inittab檔案中可以設定)來執行相應目錄下的指令碼。凡是以Kxx開頭的 
      ,都以stop為引數來呼叫;凡是以Sxx開頭的,都以start為引數來呼叫。呼叫的順序按xx 
      從小到大來執行。(其中xx是數字、表示的是啟動順序)例如,假設預設的執行模式是3,/etc/rc.d/rc就會按上述方式呼叫 
      /etc/rc.d/rc3.d/下的指令碼。 
      值得一提的是,Redhat中的執行模式2、3、5都把/etc/rc.d/rc.local做為初始化指令碼中 
      的最後一個,所以使用者可以自己在這個檔案中新增一些需要在其他初始化工作之後,登入之前執行的命令。 
      
      init在等待/etc/rc.d/rc執行完畢之後(因為在/etc/inittab中/etc/rc.d/rc的 
      action是wait),將在指定的各個虛擬終端上執行/sbin/mingetty,等待使用者的登入。 
      至此,LINUX的啟動結束。
    2)init執行級別及指令
    一、什麼是INIT: 
  init是Linux系統操作中不可缺少的程式之一。 
  所謂的init程序,它是一個由核心啟動的使用者級程序。 
  核心自行啟動(已經被載入記憶體,開始執行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動一個使用者級程式init的方式,完成引導程序。所以,init始終是第一個程序(其程序編號始終為1)。
  核心會在過去曾使用過init的幾個地方查詢它,它的正確位置(對Linux系統來說)是/sbin/init。如果核心找不到init,它就會試著執行/bin/sh,如果執行失敗,系統的啟動也會失敗。 
  二、執行級別 
  那麼,到底什麼是執行級呢? 
  簡單的說,執行級就是作業系統當前正在執行的功能級別。這個級別從1到6 ,具有不同的功能。 
  不同的執行級定義如下 
  # 0 - 停機(千萬不能把initdefault 設定為0 ) 
  # 1 - 單使用者模式                                     # s   init s = init 1
  # 2 - 多使用者,沒有 NFS 
  # 3 - 完全多使用者模式(標準的執行級) 
  # 4 - 沒有用到 
  # 5 - X11 多使用者圖形模式(xwindow) 
  # 6 - 重新啟動 (千萬不要把initdefault 設定為6 ) 
  這些級別在/etc/inittab 檔案裡指定。這個檔案是init 程式尋找的主要檔案,最先執行的服務是放在/etc/rc.d 目錄下的檔案。在大多數的Linux 發行版本中,啟動指令碼都是位於 /etc/rc.d/init.d中的。這些指令碼被用ln 命令連線到 /etc/rc.d/rcn.d 目錄。(這裡的n 就是執行級0-6) 
     3):chkconfig 命令(redhat 作業系統下)
     不像DOS 或者 Windows,Linux 可以有多種執行級。常見的就是多使用者的2,3,4,5 ,很多人知道 5 是執行 X-Windows 的級別,而 0 就      是關機了。執行級的改變可以通過 init 命令來切換。例如,假設你要維護系統進入單使用者狀態,那麼,可以使用 init 1 來切換。在       Linux 的執行級的切換過程中,系統會自動尋找對應執行級的目錄/etc/rc[0-6].d下的K 和 S 開頭的檔案,按後面的數字順序,執行這      些指令碼。對這些指令碼的維護,是很繁瑣的一件事情,Linux 提供了chkconfig 命令用來更新和查詢不同執行級上的系統服務。 
     語法為: 
     
     chkconfig --list [name] 
     chkconfig --add name 
     chkconfig --del name 
     chkconfig [--level levels] name 
     chkconfig [--level levels] name 
     
     chkconfig 有五項功能:新增服務,刪除服務,列表服務,改變啟動資訊以及檢查特定服務的啟動狀態。 
     
     chkconfig 沒有引數執行時,顯示用法。如果加上服務名,那麼就檢查這個服務是否在當前執行級啟動。如果是,返回 true,否則返回      false。 --level 選項可以指定要檢視的執行級而不一定是當前執行級。 
     
     如果在服務名後面指定了on,off 或者 reset,那麼 chkconfig 會改變指定服務的啟動資訊。on 和 off 分別指服務在改變執行級時的      啟動和停止。reset 指初始化服務資訊,無論有問題的初始化指令碼指定了什麼。 
     
     對於 on 和 off 開關,系統預設只對執行級 3,4, 5有效,但是 reset 可以對所有執行級有效。指定 --level 選項時,可以選擇特       定的執行級。 
     
     需要說明的是,對於每個執行級,只能有一個啟動指令碼或者停止指令碼。當切換執行級時,init 不會重新啟動已經啟動的服務,也不會再      次去停止已經停止的服務。 
     
     選項介紹: 
     
     --level levels 
     指定執行級,由數字 0 到 7 構成的字串,如: 
     
     --level 35 表示指定執行級3 和5。 
     要在執行級別3、4、5中停運 nfs 服務,使用下面的命令:chkconfig --level 345 nfs off
     
     --add name 
     這個選項增加一項新的服務,chkconfig 確保每個執行級有一項 啟動(S) 或者 殺死(K) 入口。如有缺少,則會從預設的init 指令碼自動      建立。 
     
     --del name 
     用來刪除服務,並把相關符號連線從 /etc/rc[0-6].d 刪除。 
     
     --list name 
     列表,如果指定了name 那麼只是顯示指定的服務名,否則,列出全部服務在不同執行級的狀態。 
     
     執行級檔案 
     
     每個被chkconfig 管理的服務需要在對應的init.d 下的指令碼加上兩行或者更多行的註釋。 
     第一行告訴 chkconfig 預設啟動的執行級以及啟動和停止的優先順序。如果某服務預設不在任何執行級啟動,那麼使用 - 代替執行級。 
     第二行對服務進行描述,可以用 跨行註釋。 
     
     例如,random.init 包含三行: 
     # chkconfig: 2345 20 80 
     # description: Saves and restores system entropy pool for 
     # higher quality random number generation. 
     表明 random 指令碼應該在執行級 2, 3, 4, 5 啟動,啟動優先權為20,停止優先權為 80。 
     
     好了,介紹就到這裡了,去看看自己目錄下的/etc/rc.d/init.d 下的指令碼吧。  
     
     設定自啟動服務:chkconfig --level 345 nfs on
     
2. 例項介紹:
   1、在linux下安裝了apache 服務(通過下載二進位制檔案經濟編譯安裝、而非rpm包)、apache 服務啟動命令:            /server/apache/bin/apachectl start    。讓apache服務執行在執行級別3下面。  命令如下:
   
   1)touch /etc/rc.d/init.d/apache
      vi /etc/rc.d/init.d/apache
      chown -R root /etc/rc.d/init.d/apache
      chmod 700 /etc/rc.d/init.d/apache
      ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache   #S 是start的簡寫、代表啟動、K是kill的簡寫、代表關閉。60數字        代表啟動的順序。(對於iptv系統而言、許多服務都是建立在資料庫啟動的前提下才能夠正常啟動的、可以通過該數字就行調整指令碼的       啟動順序))
      
      apache的內容:
      #!/bin/bash
      #Start httpd service
      /server/apache/bin/apachectl start
      
      至此 apache服務就可以在執行級別3下 隨機自動啟動了。(可以結合chkconfig 對啟動服務進行相應的調整)。
由於相關變數定義不同, 所以以下啟動順序僅供參考
在Redhat Redflag centos fc linux系統裡面指令碼的啟動

先後:
第一步:通過/boot/vm進行啟動 vmlinuz
第二步:init /etc/inittab
第三步:啟動相應的指令碼,並且開啟終端
rc.sysinit
rc.d(裡面的指令碼)
rc.local
第四步:啟動login登入介面 login
第五步:在使用者登入的時候執行sh指令碼的順序:每次登入的時候都會完全執行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile

相關推薦

Linux開機啟動順序小結

  開機過程指的是從開啟計算機電源直到LINUX顯示使用者登入畫面的全過程。分析LINUX開機過程也是深入瞭解LINUX核心工作原理的一個很好的途徑。   啟動第一步--載入BIOS   當你開啟計算機電源,計算機會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於計算機必須在最開始就找到它。這

Linux 開機啟動順序及一些常見無法開機情況排錯(centos6)

Linux系統排錯 Linux系統啟動流程 boot目錄的恢復 分區表信息的恢復 主扇區的恢復 Linux開機啟動順序 這個圖就很完整的介紹了Linux的開機啟動順序下面我就跟大家詳細介紹下開機的一個啟動流程第一步,加載BIOS當你打開計算機電源的時候,計算機就會首先加載BIOS信息,也就

Linux 開機啟動程序的順序

kernel 順序 run 開始 開機 bin 加載 iso linux 1.加載BISO的硬件信息,並取得第一個開機代號 2.讀取第一個開機裝置的mbr的boot loader的信息 3.加載kernel操作系統核心信息,開始解壓縮,並驅動所有硬件裝置 4.kernel執

linux開機啟動載入順序

由於我日常開發使用的是fedora9,所以,就已fedora9為例。 [[email protected] rc.d]# pwd  /etc/rc.d  [[email protected] rc.d]# ls  init.d  rc0.d  rc2.d  rc4.d  rc6.d 

Linux啟動過程(開機啟動順序

啟動第一步--載入BIOS 當你開啟計算機電源,計算機會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊、時鐘資訊、PnP特性等等。在此之後,計算機心裡就有譜了,知道應該去讀取哪個硬體裝置了。啟動

linux修改啟動順序,登錄後提示,啟動級別

當前 height adding 啟動級別 級別 motd linu 選項 sco 修改啟動順序 # vim /etc/inittab 。。。。。。。 d:3:initdefault: #找到這一行,d:3:initdefault:最小化啟動 d:5:initdefau

Linux 系統啟動順序 待細化

linux 啟動過程Linux 系統啟動順序 待細化用戶打開PC的電源,BIOS開機自檢,按BIOS中設置的啟動設備(通常是硬盤)啟動啟動設備上安裝的引導程序lilo或grub開始引導Linux首先進行內核的引導,接下來執行init程序,init程序調用了rc.sysinit和rc等程序,rc.sysinit

Linux開機啟動過程分析

物理內存 登錄 page thread 陷阱門 execute 啟動過程 font 定義 Linux開機啟動過程分析 開機過程指的是從打開計算機電源直到LINUX顯示用戶登錄畫面的全過程。分析LINUX開機過程也是深入了解LINUX核心工作原理的一個很好的途徑。 啟動第一

2017-9-11-Linux開機啟動腳本

ges margin pla png linux發行版 com mar image height 還是先開門見山的說,Linux需要添加開機啟動程序有兩種方法:1、修改/etc/rc.d/rc.local腳本。2、在/etc/rc.d/init.d目錄下添加一個shell

linux開機啟動過程、PATH、過濾一級目錄、cd的參數、ls -lrt、命令切割日誌

linux 開機啟動過程 cd ls 第二波命令正向我方來襲 :開機啟動過程、PATH、過濾一級目錄、cd的參數、ls -lrt、命令切割日誌 1.1 linux開機啟動過程1.1.1 開機自檢(BIOS)-- MBR引導 -- GRUB菜單 -- 加載內核(kernel)-- 運

Linux開機啟動文件rc.local無法執行怎麽辦?

關系 cal 刪除 ring 但是 怎麽辦 post 重啟 img rc.local是Linux系統中的一個重要的開機啟動文件,每次開機都要執行這個文件。但是有一些用戶的Linux系統無法執行這個文件,並導致了一系列的問題。遇到這個問題我們應該怎麽辦呢?   在L

Linux開機啟動過程

ref com top 加載 otto image process run pro 1.BIOS開機自檢2.讀取MBR:主引導記錄(Master Boot Record)3.GRUB:(Grand Unified BootLoader)多系統啟動程序4.Kernel:加載內

linux驅動啟動順序

tin core 除了 實現 initial makefile ril amp 2.4 首先,我們可以查看Linux內核編譯完成後的System.map文件,在這個文件中我們可以看到macb(dm9161驅動模塊)鏈接到了dm9000驅動之前,如下所示: c03b6d40

linux開機啟動自動執行某個指令碼

有時候我們需要在開機的拉起一個服務或程序。 比較方便的改法是在檔案/etc/rc.local,編輯這個檔案,在末尾新增 source 指令碼名稱.sh 指令碼run_httpd_server.sh的內容 #!/bin/bash export BASE_DIR=$(p

Linux開機啟動項詳解

  Linux啟動順序中決定程式啟動項的在init這裡,分為兩大步驟:按級別載入/etc/rc(0-6).d目錄下的啟動指令碼;載入/etc/rc.local檔案。所以設定啟動項的方案按原理就分為這兩種方式。        

Linux 開機啟動 php socket

信息 gateway 腳本 test target 沒有 bus pat class 問題 php socket 服務在服務器重啟後無法自動啟動,需要添加開機啟動腳本。有以下問題 開機延遲3分鐘後,再啟動socket服務 socket服務有3個模塊需要按照先後順

linux 開機啟動指令碼 fusuma

對於一些服務可以systemctl enable xxx 但是使用者想要自己的任務開機啟動怎麼辦的比如fusuma fusuma是 一個支援多指觸控板的程式 想要其開機自啟動可以新增到tweak 的start application中但我要 放到指令碼中 如下 #! /bin/b

設定自己的linux開機啟動畫面

先來給大家展示一下我的,開機及登入介面: 其中紅色框部分,在我們預設的開機介面中是沒有的哦,這就是本文要介紹的,新增的部分。 通過下邊的步驟,你可以自由畫屬於你自己的畫面,還可以多顯示一些關於本機資訊。 現在開始吧: 1.當我們開機的時候,會顯示一些字串 那

Linux開機啟動、網路、雙屏顯示

1、之前電腦是windows和Linux的雙系統,後來重灌過了windows系統,當初意味原來的Linux系統已經沒了,但是發現硬碟的分割槽還在,上網搜了下,發現原來的Linux 系統仍然存在,接下來就上網搜到東西和大家分享。 (1)Linux的分割槽在哪裡? 點選桌面“計

Ubuntu 14.04修改grub開機啟動順序

  當我們安裝windows和ubuntu雙系統以後,預設啟動變成ubuntu了,這對於使用ubuntu作為系統的使用者來說沒什麼,但對那些經常要進 windows的使用者,每次開機都得按幾次向下的箭頭,再敲回車,非常不方便,有沒有方法,讓電腦開機時預設啟動window