天天看點

啟動和核心管理

一、啟動和核心管理

1)CentOS 5和6的啟動流程

2)服務管理 

3)Grub管理 

4)自制Linux

5)啟動排錯 

6)編譯安裝核心

二、linux組成  

Linux:kernel+rootfs  

kernel:程序管理、記憶體管理、網絡管理、驅動程式、檔案系統、安全功能(selinux)

rootfs:程式和glibc    庫:函數集合,無傳回值 函數調用:function 程式:二進制執行檔案

Linux核心特點:支援子產品化:.ko(核心對象)如:檔案系統,硬體驅動,網絡協定等 支援核心子產品的動态裝載和解除安裝

組成部分: 核心檔案:/boot/vmlinuz-VERSION-release 

ramdisk:輔助的僞根系統 

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

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

子產品檔案:/lib/modules/VERSION-release

三、啟動流程

    POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部 分。負責完成對CPU、主機闆、記憶體、硬碟子系統、顯示子系統、串并行接 口、鍵盤、CD-ROM光驅等硬體情況的檢測。 

    ROM:BIOS,Basic Input and Output System,儲存着有關計 算機系統最重要的基本輸入輸出程式,系統資訊設定、開機加電自檢程式和系統啟動自舉程式等。 

    RAM:CMOS互補金屬氧化物半導體,儲存各項參數的設定 按次序查找引導裝置,第一個有引導程式的裝置為本次啟動裝置

    bootloader: 引導加載器,引導程式 windows: ntloader,僅是啟動OS Linux:功能豐富,提供菜單,允許使用者選擇要啟動系統或不同的内 核版本;把使用者標明的核心裝載到記憶體中的特定空間中,解壓、展開,并把系統控制權移交給核心 LILO:LInux LOader GRUB: GRand Unified Bootloader GRUB 0.X: GRUB Legacy, GRUB2

    MBR: 446: bootloader, 64: 分區表, 2: 55AA GRUB: primary boot loader : 1st stage,1.5 stage secondary boot loader :2nd stage,分區檔案 

    kernel: 自身初始化: 探測可識别到的所有硬體裝置 加載硬體驅動程式(可能借助于ramdisk加載驅動) 以隻讀方式挂載根檔案系統 運作使用者空間的第一個應用程式:/sbin/init

init程式的類型:

SysV: init, CentOS 5之前 配置檔案:/etc/inittab 

Upstart: init,CentOS 6 配置檔案:/etc/inittab, /etc/init/*.conf 

Systemd:systemd, CentOS 7 配置檔案:/usr/lib/systemd/system /etc/systemd/system

ramdisk:核心中的特性之一:使用緩沖和緩存來加速對磁盤上的檔案 通路 ramdisk --> ramfs 提高速度 CentOS 5: initrd,  工具程式:mkinitrd CentOS 6: initramfs, 工具程式:mkinitrd, dracut 系統初始化: POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(隻讀) -> init(systemd)

/sbin/init CentOS6之前運作級别:為系統運作或維護等目的而設定;0-6:7個級别 0:關機 1:單使用者模式(root自動登入), single, 維護模式 2: 多使用者模式,啟動網絡功能,但不會啟動NFS;維護模式 3:多使用者模式,正常模式;文本界面 4:預留級别;可同3級别 5:多使用者模式,正常模式;圖形界面 6:重新開機 預設級别: 3, 5 切換級别:init # 檢視級别:runlevel ; who -r

init讀取其初始化檔案:/etc/inittab 初始運作級别(RUN LEVEL) 系統初始化腳本 對應運作級别的腳本目錄 捕獲某個關鍵字順序 定義UPS電源終端/恢複腳本 在虛拟控制台生成getty 在運作級别5初始化X

配置檔案:/etc/inittab 每一行定義一種action以及與之對應的process id:runlevel:action:process action: wait: 切換至此級别運作一次 respawn:此process終止,就重新啟動之 initdefault:設定預設運作級别;process省略 sysinit:設定系統初始化方式,此處一般為指定 /etc/rc.d/rc.sysinit ca::ctrlaltdel:/sbin/shutdown -t3 -r now id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1... l6:6:wait:/etc/rc.d/rc 6

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

/etc/rc.d/rc.sysinit: 系統初始化腳本 (1) 設定主機名 (2) 設定歡迎資訊 (3) 激活udev和selinux (4) 挂載/etc/fstab檔案中定義的檔案系統 (5) 檢測根檔案系統,并以讀寫方式重新挂載根檔案系統 (6) 設定系統時鐘 (7) 激活swap裝置 (8) 根據/etc/sysctl.conf檔案設定核心參數 (9) 激活lvm及software raid裝置 (10) 加載額外裝置的驅動程式 (11) 清理操作

說明:rc N --> 意味着讀取/etc/rc.d/rcN.d/ K*: K##*:##運作次序;數字越小,越先運作;數字 越小的服務,通常為依賴到别的服務 S*: S##*:##運作次序;數字越小,越先運作;數字 越小的服務,通常為被依賴到的服務

chkconfig指令:檢視服務在所有級别的啟動或關閉狀态    

chkconfig --list [name]

1)添加

SysV服務長放置在/etc/rc.d/init.d/下

chkconfig --add name 

2)删除

chkconfig --del name 

3)修改指定的運作級别  

chkconfig --level {levels} name {on|off|reset}  

執行個體:chkconfig --level 2345 sshd on    

CentOS 6 init程式為: upstart, 其配置檔案: /etc/inittab, /etc/init/*.conf,配置檔案的文法 遵循 upstart配置檔案文法格式,和CentOS5不同

 CentOS 6啟動流程: POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init ->(/etc/inittab, /etc/init/*.conf) --> 設定預設運作級别 --> 系統 初始化腳本rc.sysinit --> 關閉或啟動對應級别的服務 --> 啟動終端  grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2 grub legacy: stage1: mbr stage1_5: mbr之後的扇區,讓stage1中的bootloader 能識别stage2所在的分區上的檔案系統 stage2:磁盤分區(/boot/grub/)

配置檔案:/boot/grub/grub.conf <-- /etc/grub.conf  stage2及核心等通常放置于一個基本磁盤分區 功用:

(1) 提供啟動菜單、并提供互動式接口 a:核心參數 e: 編輯模式,用于編輯菜單 c: 指令模式,互動式接口

(2) 加載使用者選擇的核心或作業系統 允許傳遞參數給核心 可隐藏啟動菜單

(3) 為菜單提供了保護機制 為編輯啟動菜單進行認證 為啟用核心或作業系統進行認證

本文轉自chengong1013 51CTO部落格,原文連結:http://blog.51cto.com/purify/1852132,如需轉載請自行聯系原作者

繼續閱讀