1. 程式人生 > >linux開機啟動載入順序

linux開機啟動載入順序

由於我日常開發使用的是fedora9,所以,就已fedora9為例。

  1. [[email protected] rc.d]# pwd  
  2. /etc/rc.d  
  3. [[email protected] rc.d]# ls  
  4. init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit  
  5. rc      rc1.d  rc3.d  rc5.d  rc.local  

其中,x.d為目錄,其他的均為指令碼可執行檔案。

在講述這幾個目錄以及檔案的作用及關係之前,我們需要了解linux(RedHat系列)的啟動順序。

系統上電之後,會進行硬體自檢,然後初始化啟動bootloader,載入核心,核心被載入到記憶體中之後,就開始執行啟動。一旦核心啟動,就可以初始化硬體裝置,載入根檔案系統。核心轉載根檔案系統,初始化裝置驅動以及相關資料結構之後,就會啟動一個init使用者級程式,完成引導程序。那麼,這個init程序就回去讀取/etc/inittab檔案中的系統執行級別。

  1. [[email protected] rc.d]# cat  /etc/inittab  
  2. # inittab is only used by upstart for the default runlevel.
  3. #
  4. # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
  5. #
  6. # System initialization is started by /etc/event.d/rcS
  7. #
  8. # Individual runlevels are started by /etc/event.d/rc[0-6]
  9. #
  10. # Ctrl-Alt-Delete is handled by /etc/event.d/control-alt-delete
  11. #
  12. # Terminal gettys (tty[1-6]) are handled by /etc/event.d/tty[1-6] and
  13. # /etc/event.d/serial
  14. #
  15. # For information on how to write upstart event handlers, or how
  16. # upstart works, see init(8), initctl(8), and events(5).
  17. #
  18. # Default runlevel. The runlevels used are:
  19. #   0 - halt (Do NOT set initdefault to this)
  20. #   1 - Single user mode
  21. #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
  22. #   3 - Full multiuser mode
  23. #   4 - unused
  24. #   5 - X11
  25. #   6 - reboot (Do NOT set initdefault to this)
  26. id:5:initdefault:  

系統執行級別有0~6共7個執行級別:

  1. # Default runlevel. The runlevels used are:
  2. #   0 - halt (Do NOT set initdefault to this)
  3. #   1 - Single user mode
  4. #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
  5. #   3 - Full multiuser mode
  6. #   4 - unused
  7. #   5 - X11
  8. #   6 - reboot (Do NOT set initdefault to this)
  9. id:5:initdefault:  

#0 ——停機(不能使用)

#1——單使用者模式

#2——多使用者模式,但是沒有NFS

#3——完全多使用者模式

#4——沒有使用

#5——圖形介面模式

#6——重啟模式(不能使用)

id:5:initdefault(執行模式設定)。那麼,init程序就會讀取這個系統執行級別設定,然後執行/etc/rc.d/rc指令碼。通過這個指令碼,然後進入rcx.d。啟動相應的程式。其中rcx.d為/etc/rc.d/rcx.d(x為對應的系統執行級別)/etc/rc.d/rcx.d/下的檔案均為符號連結,最終絕大部分都是都是連結到/etc/rc.d/init.d下面。到這裡,我們可以知道,/etc/rc.d/init.d目錄下面的都是開啟啟動指令碼檔案,用來啟動相應的程式。


POST加電自檢-->BIOS(Boot Sequence)-->載入對應引導上的MBR(bootloader) -->主引導設定載入其BootLoader-->Kernel初始化-->initrd—>/etc/init程序載入/etc/inittab從載入BootLoader(RHEL下為Grub)開始,會發生以下事情.
1. 藉由Grub的管理,讀取Kernel核心檔案(/boot/vmlinuz),解壓至主記憶體,利用核心的功能,進行第二次硬體檢測(第一次發生在POST開機自檢時)
2. 載入Initial RAM Disk(/boot/initrd),使之在記憶體中解壓縮為根目錄,kernel藉此完成驅動程式的載入,,最終釋放虛擬檔案系統,並掛載實際的根目錄檔案系統.
3. 在核心載入完畢,進行完硬體偵測與驅動程式載入後,核心會啟動第一個程序/sbin/init, init程序將會讀取/etc/inittab,在/etc/inittab中,大致規定了以下動作:
  1. 取得 runlevel 亦即預設執行等級的相關等級.
  2. 使用 /etc/rc.d/rc.sysinit 進行系統初始化
  3. 根據runlevel呼叫相關啟動指令碼,以啟動相應的系統服務
  4. 其他一些系統設定,最終完成系統啟動.

/sbin/init 最主要的功能就是準備軟體執行的環境,包括系統的主機名稱、網路配置、語系處理、檔案系統格式及其他服務的啟動等,而所有的動作都根據在/etc/inittab中的配置.

/etc/rc.d, 裡面存放了rc.local, rc.sysinit, init.d, rcX.d (X包括0-6對應相對runlevel)

/etc/rc.d/init.d, 存放了各種系統服務的啟動關閉的管理指令碼,/etc/init.d是他的一個目錄連結.

/etc/rc.d/rcX.d, 裡面存放了一些指令碼,指令碼名字以K開頭的,表示STOP動作,名字以S開頭,表示Start動作,名稱中的數字表示執行次序,數字越小表示越先執行.
/etc/rcX.d是他的目錄連結,但事實上rcX.d下檔案本身就是指向/etc/rc.d/init.d下指令碼的連結檔案.

/etc/rc.d/rc.local, 有一個連結檔案,路徑在/etc/rc.local,
系統根據runlevel啟動完rcX.d中的指令碼之後,會呼叫rc.local指令碼,如果你有一個指令碼命令不論在3和5都想開機啟動,那麼就新增與此,免去rc3.d和rc5.d分別增加啟動指令碼工作量.

並請聯絡譚海燕本人或者前往譚海燕個人主頁留言

相關推薦

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 開機啟動程序的順序

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

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

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

Linux開機啟動順序小結

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

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開機啟動自動執行某個指令碼

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

Linux開機自動載入的幾種方法

linux 新增開機啟動項的三種方法。 (1)編輯檔案 /etc/rc.local 輸入命令:vim /etc/rc.local 將出現類似如下的文字片段: #!/bin/sh #This script will be executed after all the other init scripts

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的分割槽在哪裡? 點選桌面“計

Linux開機啟動管理---systemd使用

常用命令 使某服務自動啟動 systemctl enable httpd.service 使某服務不自動啟動 systemctl disable httpd.service 檢查服務狀態 systemctl status httpd.servic

Ubuntu16.04與windows10雙系統修改開機啟動順序

        在windows下直接安裝ubuntu的話,預設的grub啟動順序是直接進入ubuntu,但是我暫時還是經常用windows,所以便有了修改啟動順序的想法,以後可以直接進入windows。 這裡我總結了一下網上最簡單的方法,直接在獲取系統root許可權的情況

linux 開機啟動指令碼或者服務

準備工作: 1. 先編寫shell,將需要啟動的服務都放在此指令碼中,取名restart.sh 2. 在restart.sh 中將環境變數 執行一下 : .  /etc/profile 3. chmod +x restart.sh 將指令碼可正確執行 以下是我滴例子:

如何修改Linux開機啟動logo並使其全屏顯示?

1、製作開機啟動logo的圖片(my_image.png  ==>  logo_linux_clut224.ppm),要求圖片的解析度要和螢幕大小一致。 使用如下命令: pngtopnm m