系統與內核管理

系統與內核管理

1.Linux組成

Linux: kernel+rootfs

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

rootfs:程序和glibc

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

過程調用:procedure,無返回值

函數調用:function

程序:二進制執行文件

內核設計流派:

單內核(monolithic kernel):Linux?? 把所有功能集成于同一個程序

微內核(micro kernel):Windows, Solaris?? 每種功能使用一個單獨子系統實現

 

2.內核

Linux內核特點:

支持模塊化:.ko(內核對象)

如:文件系統,硬件驅動,網絡協議等

支持內核模塊的動態裝載和卸載

組成部分:

核心文件:/boot/vmlinuz-VERSION-release

ramdisk:輔助的偽根系統

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

CentOS 6,7: /boot/initramfs-VERSION-release.img

模塊文件:/lib/modules/VERSION-release

 

3.CentOS6啟動流程

(1).加載BIOS的硬件信息,獲取第一個啟動設備

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

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

(4).核心執行init程序,并獲取默認的運行信息

(5).init程序執行/etc/rc.d/rc.sysinit文件

(6).啟動核心的外掛模塊

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

(8).init執行/etc/rc.d/rc.local

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

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

 

4.啟動流程詳解

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(第1.5階段)

secondary boot loader :2nd stage(第二階段),分區文件

kernel:

自身初始化:

探測可識別到的所有硬件設備

加載硬件驅動程序(借助于ramdisk加載驅動)

以只讀方式掛載根文件系統

運行用戶空間的第一個應用程序:/sbin/init

ramdisk:

內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問,并加載相應 的硬件驅動 ramdisk –> ramfs 提高速度

CentOS 5: initrd

工具程序:mkinitrd

CentOS 6,7: initramfs

工具程序:mkinitrd, dracut (用來重新生成initramfs-2.6.32-696.el6.x86_64.img文件)

使用方法:mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

系統初始化:

POST –> BootSequence (BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只讀) –> init(systemd)

實驗:誤刪除了initramfs-2.6.32-696.el6(7).x86_64.img文件,解決方法

①未重啟機器:

mkinitrd /boot/initramfs-`uname -r`.img `uname -r`

②已重啟機器,導致機器已無法啟動

啟動時錯誤界面:

解決方法:

esc鍵(虛擬機為此鍵)——>cd-room driver——>rescue installed system——>開啟一個shell——>chroot /mnt/sysimage/ (切根)——>mkinitrd /boot/initramfs-`uname -r`.img `uname -r`——>sync——>exit——>選擇reboot

 

實驗:誤破壞了內核文件vmlinuz-3.10.0-693.el6(7).x86_64,解決方法

啟動時錯誤界面:

解決方法:

①機器已重啟,造成無法啟動

進入救援模式——>將光驅掛載上,并插入CentOS安裝光盤——>

cp?? /run/install/repo/isolinux/vmlinuz?? /mnt/sysimage/boot/vmlinuz-`uname -r`

注:光盤的掛載點以df顯示為準

——>sync——>exit

②機器未重啟

將光驅掛載上,并插入CentOS安裝光盤——>

cp?? /run/install/repo/isolinux/vmlinuz?? /mnt/sysimage/boot/vmlinuz-`uname -r`

注:光盤的掛載點以df顯示為準

ramdisk管理

ramdisk文件的制作:

(1) mkinitrd命令

為當前正在使用的內核重新制作ramdisk文件

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

(2) dracut命令?? 為當前正在使用的內核重新制作ramdisk文件

dracut /boot/initramfs-$(uname -r).img $(uname -r)

5.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

 

/sbin/init CentOS6之前

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

0:關機

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

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

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

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

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

6:重啟

默認級別: 3, 5

切換級別:init #

查看級別:runlevel ; who -r

 

實驗:忘記root密碼,如何破解(CentOS 5(6)版本)

重啟系統——>選擇啟動菜單界面,按a鍵——>輸入1,進入單用戶模式——>passwd鍵入新口令

注:只能在機器面前實現(單用戶模式是沒有網絡的)

 

init初始化

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

初始運行級別(RUN LEVEL)

系統初始化腳本

對應運行級別的腳本目錄

捕獲某個關鍵字順序

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

在虛擬控制臺生成getty

在運行級別5初始化X

 

CentOS 5的inittab文件

配置文件:/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

 

CentOS 6 /etc/inittab和相關文件

/etc/inittab

設置系統默認的運行級別

id:3:initdefault:

示例:

破解CentOS5和6的root口令

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

/etc/init/tty.conf

/etc/init/start-ttys.conf

/etc/init/rc.conf

/etc/init/prefdm.conf

 

6./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/ ???#N:0-6任意級別 如:ls /etc/rc.d/rc5.d :查看5級別下開機啟動或禁止的程序

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

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

for srv in /etc/rc.d/rcN.d/K*; do

$srv stop

done

for srv in /etc/rc.d/rcN.d/S*; do

$srv start

done

 

ntsysv命令 :用來更改某一程序開機啟動或禁止啟動

用法:ntsysv –level=3 更改3級別下開機啟動或禁止的程序

ntsysv –level=5 更改5級別下開機啟動或禁止的程序

……

 

chkconfig命令(比ntsysv命令更便捷)

chkconfig命令

查看服務在所有級別的啟動或關閉設定情形:

chkconfig [–list] [name]

示例:

chkconfig –list atd

添加:

SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)

chkconfig –add name

#!/bin/bash

#LLLL 表示初始在哪個級別下啟動,-表示都不啟動

# chkconfig: LLLL nn nn

示例:將atd程序在3、5級別下設置為禁止啟動

chkconfig –level 35 atd off

刪除:

①chkconfig –del name

②rm -f /etc/init.d/name (如果這個服務腳本 不想保留的情況下)

修改指定的鏈接類型

chkconfig [–level levels] name <on|off|reset>

–level LLLL: 指定要設置的級別;省略時表示2345

 

7.xinetd管理的服務

service 命令:手動管理服務

service 服務 start|stop|restart service –status-all

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

進入的請求首先被xinetd代理

配置文件:/etc/xinetd.conf、/etc/xinetd.d/<service> 與libwrap.so文件鏈接

用chkconfig控制的服務:?? chkconfig tftp on

注:①yum install telnet-server (服務器端)?? (客戶端為yum install telnet)

②telnet必須為開啟狀態:chkconfig telnet on

③service xinetd start

 

注意:正常級別下,最后啟動一個服務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在指定運行級別腳本后運行

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

注:建議將3鍵(Ctrl+alt+del)重啟功能注釋掉

CentOS 5: /etc/inittab 下,找到注釋掉

CentOS 6: /etc/init/control-alt-delete.conf 下,找到注釋掉

1:2345:respawn:/usr/sbin/mingetty tty1 ???#respawn : 再生功能

2:2345:respawn:/usr/sbin/mingetty tty2

6:2345:respawn:/usr/sbin/mingetty tty6

mingetty會自動調用login程序

x:5:respawn:/etc/X11/prefdm -nodaemon

 

8.啟動過程(總結)

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

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

10.grub legacy

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.97: grub legacy

grub 2.x: grub2

grub legacy:

stage1: mbr

stage1_5: mbr之后的扇區,讓stage1中的bootloader能識別stage2所 在的分區上的文件系統

stage2:磁盤分區(/boot/grub/)

 

grub安裝

安裝grub: (推薦使用)

(1) grub-install 安裝grub stage1和stage1_5到/dev/DISK磁盤上,并復制GRUB相關文件 到 DIR/boot目錄下 grub-install –root-directory=DIR /dev/DISK

(2) grub ?(選擇使用)

grub> root (hd#,#) ?#hd表示硬盤(#,#)代表第#塊硬盤,第#個分區 root:這里的root是/boot的意思

如:(hd0,0):第一塊硬盤的第一個分區

grub> setup (hd#)

 

實驗:stage1階段mbr被破壞,解決方法

系統未重啟情況下:

grub-install /dev/sda

系統已重啟情況下:

啟動時錯誤界面:

①進入救援模式,開啟shell

②chroot /mnt/sysimage

③grub-install /dev/sda

④sync

⑤exit

 

配置文件:/boot/grub/grub.conf <– /etc/grub.conf

stage2及內核等通常放置于一個基本磁盤分區

功用:

(1) 提供啟動菜單、并提供交互式接口

a:內核參數

e: 編輯模式,用于編輯菜單

c: 命令模式,交互式接口

(2) 加載用戶選擇的內核或操作系統

允許傳遞參數給內核

可隱藏啟動菜單

(3) 為菜單提供了保護機制

為編輯啟動菜單進行認證

為啟用內核或操作系統進行認證

 

注:可以在/etc/grub.conf配置文件中輸入password(空格)后面輸入密碼,使必須使用密碼才能進入單用戶模式更改密碼,設置密碼后,重啟系統,選擇菜單界面已經沒有了a選項,這時需要使用p選項,會提示輸入密碼,輸入正確密碼后,界面重新出現a選項,即可進入單用戶更改密碼。

另注:配置文件里設置的密碼要通過加密實現,命令:grub-md5-crypt,將生成的加密密碼粘貼至配置文件中

或:grub-crypt 加密算法,配置文件中加密聲明應為 –encrypted

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99078

(0)
煙花兒煙花兒
上一篇 2018-05-21
下一篇 2018-05-21

相關推薦

  • 網線直連線與交叉線之間的區別

    UTP 直通線和交叉線

    Linux筆記 2018-05-05
  • TCP/IP協議詳解

    在前面的網絡基礎內容中我們了解了TCP/IP協議的定義以及TCP/IP模型的分層結構即:應用層,傳輸層,Internet層以及網絡訪問層。今天我來帶大家詳細了解下TCP/IP協議棧中的典型協議:傳輸層的TCP、UDP協議,網絡層的IP協議。

    2018-05-06
  • fstab、init文件創建,內核啟動管理

    /etc/下的fstab文件和/sbin/下的init文件的創建,內核啟動列表管理簡述

    2018-05-15
  • 09 文件管理

    一、 文件的3種權限 -r ? ?read -w ?write -e ? execute      

    Linux筆記 2018-04-05
  • MYSQL數據庫筆記(一)

    二進制格式安裝7.4 1、檢查環境 2、下載對應的二進制包 3、 useradd -r -d /data/mysqldb -s /sbin/nologin mysql 創建賬號 getent passwd mysql 確認 創建軟連接; chown -R root: mysql/ 創建物理卷; 創建邏輯卷;   創建文件系統; mkdir /dat…

    2018-06-07
  • PXE自動化安裝系統相關實驗

    PXE(Preboot Execution Environment):預啟動執行環境,PXE是由Intel設計的協議,它可以使計算機通過網絡而不是從本地硬盤、光驅等設備啟動。本節將帶你學習dhcp,tftp服務器的搭建,以及使用PXE安裝系統

    2018-05-26
欧美性久久久久