系統啟動和內核管理(一)

系統啟動和內核管理(一)

 

(以CentOS5/6為例)

一、Linux的組成:

1、Linuxkernel+rootfs

kernel:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能。

rootfs:程序和glibc

庫:函數集合,function,調用接口(頭文件負責描述);

過程調用,procedure,無返回值;

函數調用,function

程序,二進制執行文件

2、內核設計流派:單內核,把所有的功能集成于同一個程序;微內核,每種功能使用一個單獨子系統實現。

3、Linux的內核:

   1)內核特點:支持模塊化(.ko,內核對象);支持內核模塊的動態裝載和卸載

   2)組成部分:核心文件,/boot/vmlinuz-3.10.0-327.el7.x86_64  CentOS7

 blob.png                                            

ramdisk:輔助的偽根系統

CentOS 5: /boot/initrd-VERSION-release.img

CentOS6,7: /boot/initramfs-VERSION-release.img

   3)模塊文件:/lib/modules/3.10.0-327.el7.x86_64/  CentOS6

    blob.png

二、Linux的啟動流程及功能模塊講解:

1、CentOS6的啟動流程:

blob.png

MBR:446: bootloader,64 分區表, 2: 55AA  (破壞其中的一個字節都啟動不了,命令#dd if=/dev/zero of=/dev/sda bs=1 count=1,請謹慎操作該命令)

GRUB:primary boot loader 1st stage1.5 stage;secondary boot loader 2nd stage,分區文件

blob.png

kernel:自身初始化;探測可識別到的所有硬件設備;加載硬件驅動程序(可能借助于ramdisk加載驅動);以只讀方式掛載根文件系統;運行用戶空間的第一個應用程序:/sbin/init

blob.png

由下圖中的紅色框標示的程序解決加載啟動時跟文件系統的格式模塊問題:

blob.png

initramfs-2.6.32-642.el6.x86_64.img重命名成initramfs-2.6.32-642.el6.x86_64.img.gz后,使用gunzip命令解壓,得到還initramfs-2.6.32-642.el6.x86_64.img,使用命令file可以看出該文件是cpio壓縮文件,使用命令cpio -id 解壓可以得到

如下圖的解壓文件,相當于一個根(虛擬根)結構文件:

blob.png

blob.png

啟動流程步驟說明:(1)加載BIOS的硬件信息,獲取第一個啟動設備。

  (2)讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息

  (3)加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。

  (4)核型執行init程序并獲取運行信息。

  (5Init執行/etc/rc.d/rc.sysinit文件。

  (6)啟動核心的外掛模塊(/etc/modprobe.conf)。

  (7Init執行運行的各個批處理文件(scripts).

  (8Init執行/etc/rc.d/rc.local.

  (9)執行/bin/login程序,等待用戶登錄。

  (10)登錄之后開始以Shell控制主機。

2、POST:加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、CD-ROM光驅等硬件情況的檢測。

ROMBIOSBasic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。

RAMCMOS互補金屬氧化物半導體,保存各項參數的設定

按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

3、bootloader:引導加載器,引導程序

   Windowsntloader,僅是啟動OS

   Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核

4、init程序的類型:

  SysVinit, CentOS 5之前;配置文件:/etc/inittab

  Upstartinit,CentOS6;配置文件:/etc/inittab, /etc/init/*.conf

  Systemdsystemd, CentOS 7;配置文件:/usr/lib/systemd/system/etc/systemd/system

5、ramdisk

 內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問

ramdisk–> ramfs提高速度

CentOS 5: initrd, 工具程序:mkinitrd(修復工具)

CentOS 6: initramfs,工具程序:mkinitrd, dracut

注:修復initramfs-2.6.32-642.el6.x86_64.img,先掛載光盤,進入救援模式;執行命令#mkinitrd /boot/initramfs-`uname -r`.img `uname -r` 即可(CentOS5,將initramfs改成initrd

6、運行級別:(/sbin/init CentOS6之前)

運行級別:為系統運行或維護等目的而設定;0-67個級別

0:關機

1:單用戶模式(root自動登錄), single, 維護模式

2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式

3:多用戶模式,正常模式;文本界面

4:預留級別;可同3級別

5:多用戶模式,正常模式;圖形界面

6:重啟

           默認級別:3, 5

          切換級別:init #

          查看級別:runlevel; who -r

7、init初始化:

init讀取其初始化文件:/etc/inittab

初始運行級別(RUN LEVEL)

系統初始化腳本

對應運行級別的腳本目錄

捕獲某個關鍵字順序

定義UPS電源終端/恢復腳本

在虛擬控制臺生成getty

在運行級別5初始化X

8、CentOS5inittab文件

1)配置文件:/etc/inittab,每一行定義一種action以及與之對應的process

2)格式:id:runlevel:action:process

         級別格式定義如下:

         id:3:initdefault:     默認級別模式為3,字符界面

si::sysinit:/etc/rc.d/rc.sysinit    無論是任何級別模式,系統都需要讀取初始化文件

l0:0:wait:/etc/rc.d/rc0

l1:1:wait:/etc/rc.d/rc1…

……………………

l6:6:wait:/etc/rc.d/rc6         

3action選項:wait: 切換至此級別運行一次

respawn:此process終止,就重新啟動之

initdefault:設定默認運行級別;process省略

4sysinit:設定系統初始化方式(腳本),此處一般為指定/etc/rc.d/rc.sysinit

     A 設置主機名;B、設置歡迎信息;C、激活udevselinux

   D、掛載/etc/fstab文件中定義的文件系統

   E、檢測根文件系統,并以讀寫方式重新掛載根文件系統

  F、設置系統時鐘;G、激活swap設備;H、根據/etc/sysctl.conf文件設置內核參數

    I、激活lvmsoftware raid設備;K、加載額外設備的驅動程序;L、清理操作

5)快捷鍵關機(Ctrl+Alt+Delete):ca::ctrlaltdel:/sbin/shutdown -t3 -r now   (建議注銷掉該項)

9、CentOS6 /etc/inittab和相關文件

/etc/inittab:設置系統默認的運行級別

id:3:initdefault:

/etc/init/control-alt-delete.conf

/etc/init/tty.conf

/etc/init/start-ttys.conf

/etc/init/rc.conf

/etc/init/prefdm.conf

三、服務啟動流程:

1、當系統默認啟動的級別是3的時候,會讀取/etc/rc.d/rc3.d;該目錄下存放的都是服務程序。

blob.png

無論是任何的一種啟動模式,其對應目錄下的服務都是軟鏈接指向:

blob.png

K開頭的服務的關閉的;S開頭的是開啟運行的)

K*: K##*##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務

S*: S##*##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務

# cat /etc/rc.d/rc

blob.png

2、chkconfig命令:

1)查看服務在所有級別的啟動或關閉設定情形:chkconfig [–list] [name]

2)添加/刪除服務命令:chkconfig –add namechkconfig –del name(移除服務后,原文件不會被刪除,需要到/etc/init.d目錄下手動刪除相應的文件)

3)服務腳本的頂頭格式設置:

     #!/bin/bash

     #

     #chkconfig– 91 35

     #description:服務名稱 script

  #LLLL 表示初始在哪個級別下啟動,表示都不啟動。(eg# chkconfig: LLLL nn mm,nn表示的是以S開頭的數字,mm表示的是以K開頭的數字)

4ntsysv命令:字符界面修改當前模式下的服務啟動與停止;命令修改當前模式下指定的服務啟動與停止,命令#chkconfig[–level levels] name <on|off|reset>;字符界面指定修改那個模式下的服務,命令#ntsysv –level=#

blob.png

四、xinetd管理的服務:

blob.png

#chkconfig telnet on  其實修改的是下圖的文件:

blob.png

1service 命令:手動管理服務

service 服務start|stop|restart

service –status-all

2、瞬態(Transient)服務被xinetd進程所管理

進入的請求首先被xinetd代理

配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service>

libwrap.so文件鏈接

chkconfig控制的服務:chkconfig tftp on

注意:

正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d這個服務腳本,而是指向了/etc/rc.d/rc.local腳本

不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local在指定運行級別腳本后運行

可以根據情況,進行自定義修改

五、tty終端設置:

1:2345:respawn:/usr/sbin/mingettytty1

2:2345:respawn:/usr/sbin/mingettytty2

 …

6:2345:respawn:/usr/sbin/mingettytty6

mingetty會自動調用login程序

x:5:respawn:/etc/X11/prefdm –nodaemon (圖形界面)

  

總結:/sbin/init–> (/etc/inittab) –> 設置默認運行級別–> 運行系統初始腳本、完成系統初始化–> (關閉對應下需要關閉的服務)啟動需要啟動服務–> 設置登錄終端

CentOS 6 init程序為: upstart, 其配置文件:

/etc/inittab, /etc/init/*.conf,配置文件的語法遵循upstart配置文件語法格式,和CentOS5不同

 

破解root密碼:將機器重啟(前提是在機器面前),啟動界面開始時按任意鍵,輸入“a”,然后再輸入1(選擇1模式)或者s或者S或者single

 

演示服務添加與刪除:

1)在/etc/init.d目錄下新建個腳本testscript,并賦予執行權限

blob.png

2)添加腳本到服務中:

blob.png

3)測試添加的服務:

blob.png

4)刪除添加的服務:

blob.png

blob.png

原創文章,作者:Aaron_wang,如若轉載,請注明出處:http://www.www58058.com/44677

(0)
Aaron_wangAaron_wang
上一篇 2016-09-10
下一篇 2016-09-10

相關推薦

  • Homework Week-8 網絡及腳本編程

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 設備 功能 使用場景 網橋 用于連接不同網段,將相似的網絡連接起來,隔離信息。 連接不同部門間的局域網;連接地理位置分散并且相距較遠的局域網,可以增加工作的物理距離;采用由網橋連接的多個局域網調節負載;網橋可以設置在局域網的關鍵部位,防止單點失常而破壞整個系統等。 集線器 對接收…

    Linux干貨 2016-10-09
  • grep,find等相關命令

    Q1:顯示當前系統上root、fedora或user1用戶的默認shell; ~]# grep -E "^root|^fedora|^user1" /etc/passwd | awk -F: '{print $1,$NF}' ro…

    Linux干貨 2016-11-27
  • find命令詳解

    find命令是用來在給定的目錄下查找符合給定條件的文件   find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]   一、OPTIONS參數     -P、-L、-H:控制軟連接的對待方式,用的不多。不介紹了   二、查找路徑     就是個目錄路徑,相對和絕對都可以。   三、查找條件    ?。ㄒ唬?、根據名稱查找       -na…

    Linux干貨 2016-09-19
  • 操作系統文件管理

      在現代計算機系統中,要用到大量的程序和數據,因內存容量有限,且不能長期保存,故而平時總是把它們以文件的形式存放在外存中,需要時再隨時將它們調入內存。如果由用戶直接管理外存上的文件,不僅要求用戶熟悉外存特性,了解各種文件的屬性,以及它們在外存上的位置,而且在多用戶環境下,還必須能保持數據的安全性和一致性。顯然,這是用戶所不能勝任、也不愿…

    Linux干貨 2015-04-13
  • N25第一周作業

    1、描述計算機的組成及其功能。 硬件部分: 軟件(系統)組成部分 功能模塊劃分: 進程管理:系統資源的分配單位(線程是CPU分配單位) 存儲管理:內存分配,存儲保護,虛擬存儲 設備管理:管理外設接口 文件管理:保存程序和數據等軟件信息 程序接口:提供指令或函數的調用方式,使程序能夠調用系統的資源 用戶界面:為用戶提供操作環境    &nb…

    Linux干貨 2016-12-12
  • 正則表達式基礎知識及grep、egrep詳解

    什么是正則表達式     在計算機科學中,正則表達式是這樣解釋的:它是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。許多程序設計語言都支持利用正則表達式進行字符串操作。對于系統管理員來講,正則表達式貫穿在我們…

    Linux干貨 2016-08-08

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-10 08:40

    總結的很好,但對于一些關鍵詞,希望能通過一些通俗易懂的話描述出來,這會讓文章更具有可讀性。

欧美性久久久久