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

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

 

(以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的啟動流程及功能模塊講解:

1CentOS6的啟動流程:

blob.png

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

GRUB:primary boot loader 1st stage,1.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光驅等硬件情況的檢測。

ROMBIOS,Basic 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

8CentOS5inittab文件

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 name;chkconfig –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

1、service 命令:手動管理服務

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 08:14
下一篇 2016-09-10 08:15

相關推薦

  • Linux用戶和組管理類命令以及文本處理工具的各種實例

    列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 取出最后登錄到當前系統的用戶的相關信息。 取出當前系統上被用戶當作其默認shell的最多的那個shell。 將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。 取出當前主機的IP地址,提示:對i…

    2018-03-13
  • CentOS系統啟動

    Linux組成 Linux: kernel+rootfs kernel:  進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs: 程序和glibc 庫:函數集合, function,  調用接口(頭文件負責描述) 過程調用:procedure ,無返回值 函數調用:function 程序:二進制執行文件 內核設計流派…

    2017-05-15
  • 一位老it工程師的忠告,新手進來學習,老手進來體會,收獲很大。

    諸位,咱當電子工程師也是十余年了,不算有出息,環顧四面,也沒有看見幾個有出息的!回顧工程師生涯,感慨萬千,愿意講幾句掏心窩子的話,也算給咱們師弟師妹們提個醒,希望他們比咱們強! [1]好好規劃自己的路,不要跟著感覺走!根據個人的理想決策安排,絕大部分人并不指望成為什么院士或教授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的軌跡。從哪個行業入手,逐…

    Linux干貨 2015-02-26
  • vsdf

    Linux干貨 2017-10-23
  • rpm包管理與yum簡要用法

    linux程序包管理 程序包:源代碼 –> 目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)–> 組織成一個或有限的幾個包文件 程序包管理器:        debian –> dpkg   以“.deb”結尾 &nb…

    Linux干貨 2016-08-22

評論列表(1條)

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

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

欧美性久久久久