Linux系統(tǒng)原理&特性你知道嗎? 初學(xué)者如何修煉
Linux系統(tǒng)安裝完畢扛芽,需要對(duì)Linux系統(tǒng)進(jìn)行管理和維護(hù)骂蓖,讓Linux服務(wù)器能真正應(yīng)用于企業(yè)中。
本章向讀者介紹Linux系統(tǒng)引導(dǎo)原理川尖、啟動(dòng)流程登下、系統(tǒng)目錄、權(quán)限叮喳、命令及CentOS7和CentOS6在系統(tǒng)管理庐船、命令方面有什么區(qū)別,讓我們一起來遨游在Linux的海洋里嘲更。
01
操作系統(tǒng)啟動(dòng)概念
不管是Windows還是Linux操作系統(tǒng),底層設(shè)備一般均為物理硬件揩瞪,操作系統(tǒng)啟動(dòng)之前會(huì)對(duì)硬件進(jìn)行檢測(cè)赋朦,然后硬盤引導(dǎo)啟動(dòng)操作系統(tǒng),如下為操作系統(tǒng)啟動(dòng)相關(guān)的各個(gè)概念:
BIOS
基本輸入輸出系統(tǒng)(Basic Input Output System李破,BIOS)是一組固化到計(jì)算機(jī)主板上的只讀內(nèi)存鏡像(Read Only Memory image宠哄,ROM)芯片上的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序嗤攻、系統(tǒng)設(shè)置信息毛嫉、開機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序。主要功能是為計(jì)算機(jī)提供最底層的妇菱、最直接的硬件設(shè)置和控制承粤。
MBR
全新硬盤在使用之前必須進(jìn)行分區(qū)格式化,硬盤分區(qū)初始化的格式主要由兩種闯团,分別是:MBR格式和GPT格式辛臊。
如果使用MBR格式,操作系統(tǒng)將創(chuàng)建主引導(dǎo)記錄扇區(qū)(Main Boot Record房交,MBR)彻舰,MBR位于整塊硬盤的0磁道0柱面1扇區(qū),主要功能是操作系統(tǒng)對(duì)磁盤進(jìn)行讀寫時(shí)候味,判斷分區(qū)的合法性以及分區(qū)引導(dǎo)信息的定位刃唤。
主引導(dǎo)扇區(qū)總共為512字節(jié),MBR只占用了其中的446個(gè)字節(jié)白群,另外的64個(gè)字節(jié)為硬盤分區(qū)表 (Disk Partition Table尚胞,DPT),最后兩個(gè)字節(jié)“55川抡,AA”是分區(qū)的結(jié)束標(biāo)志辐真。
在MBR硬盤中须尚,硬盤分區(qū)信息直接存儲(chǔ)于主引導(dǎo)記錄(MBR)中,同時(shí)主引導(dǎo)記錄還存儲(chǔ)著系統(tǒng)的引導(dǎo)程序侍咱,如圖3-1所示:
MBR是計(jì)算機(jī)啟動(dòng)最先執(zhí)行的硬盤上的程序耐床,只有512字節(jié)大小,所以不能載入操作系統(tǒng)的核心楔脯,只能先載入一個(gè)可以載入計(jì)算機(jī)核心的程序撩轰,我們稱之為引導(dǎo)程序。
因?yàn)镸BR分區(qū)標(biāo)準(zhǔn)決定了MBR只支持在2TB以下的硬盤昧廷,對(duì)于后面的多余空間只能浪費(fèi)堪嫂。為了支持能使用大于2T硬盤空間,微軟和英特爾公司在可擴(kuò)展固件接口(Extensible Firmware Interface木柬,EFI)方案中開發(fā)了全局唯一的標(biāo)識(shí)符(Globally unique identifier皆串,GUID),進(jìn)而全面支持大于2T硬盤空間在企業(yè)中使用眉枕。
GPT
全局唯一的標(biāo)識(shí)符(Globally unique identifier恶复,GUID),正逐漸取代MBR成為新標(biāo)準(zhǔn)速挑。它和統(tǒng)一的可擴(kuò)展固件接口 (Unified Extensible Firmware Interface,UEFI)相輔相成谤牡。
UEFI用于取代老舊的BIOS,而GPT則取代老舊的MBR姥宝。之所以稱為“GUID分區(qū)表”翅萤,是因?yàn)轵?qū)動(dòng)器上的每個(gè)分區(qū)都有一個(gè)全局唯一的標(biāo)識(shí)符。
在GPT硬盤中腊满,分區(qū)表的位置信息儲(chǔ)存在GPT頭中套么。出于兼容性考慮,第一個(gè)扇區(qū)同樣有一個(gè)與MBR類似的標(biāo)記碳蛋,叫做受保護(hù)的主引導(dǎo)記錄(Protected Main Boot Record违诗,PMBR)。
PMBR的作用是當(dāng)使用不支持GPT的分區(qū)工具時(shí)疮蹦,整個(gè)硬盤將顯示為一個(gè)受保護(hù)的分區(qū)诸迟,以防止分區(qū)表及硬盤數(shù)據(jù)遭到破壞,而其中存儲(chǔ)的內(nèi)容和MBR一樣愕乎,之后才是GPT頭阵苇。
GPT優(yōu)點(diǎn)支持2T以上磁盤,如果使用Fdisk分區(qū)感论,最大只能建立2TB大小的分區(qū)绅项,創(chuàng)建大于2TB的分區(qū),需使用parted比肄,同時(shí)必須使用64位操作系統(tǒng)快耿,Mac囊陡、Linux系統(tǒng)都能支持GPT分區(qū)格式,Windows 7/8 64bit掀亥、Windows Server 2008 64bit支持GPT撞反。圖3-2所示,為GPT硬盤分區(qū)表內(nèi)容:
GRUB
GNU項(xiàng)目的多操作系統(tǒng)啟動(dòng)程序(GRand Unified Bootloader搪花,GRUB)遏片,可以支持多操作系統(tǒng)的引導(dǎo),它允許用戶可以在計(jì)算機(jī)內(nèi)同時(shí)擁有多個(gè)操作系統(tǒng)撮竿,并在計(jì)算機(jī)啟動(dòng)時(shí)選擇希望運(yùn)行的操作系統(tǒng)吮便。
GRUB可用于選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可用于向這些內(nèi)核傳遞啟動(dòng)參數(shù)。它是一個(gè)多重操作系統(tǒng)啟動(dòng)管理器。用來引導(dǎo)不同系統(tǒng)件缸,如Windows,Linux授账。Linux常見的引導(dǎo)程序包括:LILO、GRUB惨驶、GRUB2,CentOS 7 Linux默認(rèn)使用GRUB2引導(dǎo)程序敛助,引導(dǎo)系統(tǒng)啟動(dòng)粗卜。如圖3-3所示為GRUB加載引導(dǎo)流程:
GRUB2是基于GRUB開發(fā)成更加安全強(qiáng)大的多系統(tǒng)引導(dǎo)程序,最新Linux發(fā)行版都是使用GRUB2作為引導(dǎo)程序纳击。同時(shí)GRUB2采用了模塊化設(shè)計(jì)续扔,使得GRUB2核心更加精煉,使用更加靈活焕数,同時(shí)也就不需要像GRUB分為stage1,stage1.5,stage2三個(gè)階段纱昧。
02
Linux操作系統(tǒng)啟動(dòng)流程
初學(xué)者對(duì)Linux操作系統(tǒng)啟動(dòng)流程的理解,能有助于后期在企業(yè)中更好的維護(hù)Linux服務(wù)器堡赔,能快速定位系統(tǒng)問題识脆,進(jìn)而解決問題。Linux操作系統(tǒng)啟動(dòng)流程如圖3-4所示:
加載BIOS
計(jì)算機(jī)電源加電質(zhì)檢善已,首先加載基本輸入輸出系統(tǒng)(Basic Input Output System灼捂,BIOS),BIOS中包含硬件CPU换团、內(nèi)存悉稠、硬盤等相關(guān)信息,包含設(shè)備啟動(dòng)順序信息艘包、硬盤信息的猛、內(nèi)存信息耀盗、時(shí)鐘信息、即插即用(Plug-and-Play卦尊,PNP)特性等叛拷。加載完BIOS信息,計(jì)算機(jī)將根據(jù)順序進(jìn)行啟動(dòng)猫牡。
讀取MBR
讀取完BIOS信息胡诗,計(jì)算機(jī)將會(huì)查找BIOS所指定的硬盤MBR引導(dǎo)扇區(qū),將其內(nèi)容復(fù)制到0x7c00地址所在的物理內(nèi)存中淌友。被復(fù)制到物理內(nèi)存的內(nèi)容是Boot Loader煌恢,然后進(jìn)行引導(dǎo)。
GRUB引導(dǎo)
GRUB啟動(dòng)引導(dǎo)器是計(jì)算機(jī)啟動(dòng)過程中運(yùn)行的第一個(gè)軟件程序震庭,當(dāng)計(jì)算機(jī)讀取內(nèi)存中的GRUB配置信息后瑰抵,會(huì)根據(jù)其配置信息來啟動(dòng)硬盤中不同的操作系統(tǒng)。
加載Kernel
計(jì)算機(jī)讀取內(nèi)存映像器联,并進(jìn)行解壓縮操作二汛,屏幕一般會(huì)輸出“Uncompressing Linux”的提示,當(dāng)解壓縮內(nèi)核完成后拨拓,屏幕輸出“OK, booting the kernel”肴颊。系統(tǒng)將解壓后的內(nèi)核放置在內(nèi)存之中,并調(diào)用start_kernel函數(shù)來啟動(dòng)一系列的初始化函數(shù)并初始化各種設(shè)備渣磷,完成Linux核心環(huán)境的建立婿着。
設(shè)定Inittab運(yùn)行等級(jí)
內(nèi)核加載完畢,會(huì)啟動(dòng)Linux操作系統(tǒng)第一個(gè)守護(hù)進(jìn)程init醋界,然后通過該進(jìn)程讀取/etc/inittab文件竟宋,/etc/inittab文件的作用是設(shè)定Linux的運(yùn)行等級(jí),Linux常見運(yùn)行級(jí)別如下:
0:關(guān)機(jī)模式形纺;
1:?jiǎn)斡脩裟J剑?br>
2:無網(wǎng)絡(luò)支持的多用戶模式丘侠;
3:字符界面多用戶模式;
4:保留逐样,未使用模式蜗字;
5:圖像界面多用戶模式;
6:重新引導(dǎo)系統(tǒng)脂新,重啟模式秽澳。
加載rc.sysinit
讀取完運(yùn)行級(jí)別,Linux系統(tǒng)執(zhí)行的第一個(gè)用戶層文件/etc/rc.d/rc.sysinit戏羽,該文件功能包括:設(shè)定PATH運(yùn)行變量担神、設(shè)定網(wǎng)絡(luò)配置、啟動(dòng)swap分區(qū)始花、設(shè)定/proc妄讯、系統(tǒng)函數(shù)孩锡、配置Selinux等。
加載內(nèi)核模塊
讀取/etc/modules.conf文件及/etc/modules.d目錄下的文件來加載系統(tǒng)內(nèi)核模塊亥贸。該模塊文件躬窜,可以后期添加或者修改及刪除。
啟動(dòng)運(yùn)行級(jí)別程序
根據(jù)之前讀取的運(yùn)行級(jí)別炕置,操作系統(tǒng)會(huì)運(yùn)行rc0.d到rc6.d中的相應(yīng)的腳本程序荣挨,來完成相應(yīng)的初始化工作和啟動(dòng)相應(yīng)的服務(wù)。其中以S開頭表示系統(tǒng)即將啟動(dòng)的程序朴摊,如果以K開頭默垄,則代表停止該服務(wù)。S和K后緊跟的數(shù)字為啟動(dòng)順序編號(hào)甚纲。如圖3-5所示:
讀取rc.local文件
操作系統(tǒng)啟動(dòng)完相應(yīng)服務(wù)之后口锭,會(huì)讀取執(zhí)行/etc/rc.d/rc.local文件,可以將需要開機(jī)啟動(dòng)的任務(wù)加入到該文件末尾介杆,系統(tǒng)會(huì)逐行去執(zhí)行并啟動(dòng)相應(yīng)命令鹃操,如圖3-6所示:
執(zhí)行/bin/login程序
執(zhí)行/bin/login程序,啟動(dòng)到系統(tǒng)登錄界面春哨,操作系統(tǒng)等待用戶輸入用戶名和密碼荆隘,即可登錄到Shell終端,如圖3-7所示赴背,輸入用戶名椰拒、密碼即可登錄Linux操作系統(tǒng),至此Linux操作系統(tǒng)完整流程啟動(dòng)完畢癞尚。
03
CentOS6與CentOS7區(qū)別
CentOS6默認(rèn)采用Sysvinit風(fēng)格,Sysvinit就是system V風(fēng)格的init系統(tǒng)乱陡,Sysvinit用術(shù)語(yǔ)runlevel 來定義”預(yù)訂的運(yùn)行模式”浇揩。Sysvinit 檢查 ‘/etc/inittab’ 文件中是否含有’initdefault’ 項(xiàng),該選項(xiàng)指定init的默認(rèn)運(yùn)行模式憨颠。Sysvinit 使用腳本胳徽,文件命名規(guī)則和軟鏈接來實(shí)現(xiàn)不同的Runlevel,串行啟動(dòng)各個(gè)進(jìn)程及服務(wù)。
CentOS7默認(rèn)采用Systemd風(fēng)格爽彤,Systemd是Linux系統(tǒng)中最新的初始化系統(tǒng)(init)养盗,它主要的設(shè)計(jì)目標(biāo)是克服 Sysvinit 固有的缺點(diǎn),提高系統(tǒng)的啟動(dòng)速度适篙。
Systemd 和 Ubuntu 的 Upstart 是競(jìng)爭(zhēng)對(duì)手往核,預(yù)計(jì)會(huì)取代 UpStart。Systemd的目標(biāo)是盡可能啟動(dòng)更少的進(jìn)程嚷节,盡可能將更多進(jìn)程并行啟動(dòng)聂儒。如圖3-8所示為CentOS6與CentOS7操作系統(tǒng)的區(qū)別:
Linux操作系統(tǒng)文件系統(tǒng)類型主要由EXT3虎锚、EXT4、XFS等,其中CentOS6普遍采用EXT3和EXT4文件系統(tǒng)格式衩婚,而CentOS7默認(rèn)采用XFS格式窜护。如下為EXT3、EXT4非春、XFS區(qū)別:
EXT4是第四代擴(kuò)展文件系統(tǒng)(Fourth EXtended filesystem柱徙,EXT4)是Linux系統(tǒng)下的日志文件系統(tǒng),是EXT3文件系統(tǒng)的后繼版本奇昙;
EXT3類型文件系統(tǒng)支持最大16TB文件系統(tǒng)和最大2TB文件护侮;
EXT4分別支持1EB(1EB=1024PB,1PB=1024TB)的文件系統(tǒng)敬矩,以及16TB的單個(gè)文件概行;
EXT3只支持32,000個(gè)子目錄,而EXT4支持無限數(shù)量的子目錄弧岳;
EXT4磁盤結(jié)構(gòu)的inode個(gè)數(shù)支持40億凳忙,而且EXT4的單個(gè)文件大小支持到16T(4K block size) ;
XFS是一個(gè)64位文件系統(tǒng)禽炬,最大支持8EB減1字節(jié)的單個(gè)文件系統(tǒng)涧卵,實(shí)際部署時(shí)取決于宿主操作系統(tǒng)的最大塊限制,常用語(yǔ)64位操作系統(tǒng)腹尖,發(fā)揮更好的性能柳恐;
XFS一種高性能的日志文件系統(tǒng),最早于1993年热幔,由Silicon Graphics為他們的IRIX操作系統(tǒng)而開發(fā)乐设,是IRIX 5.3版的默認(rèn)文件系統(tǒng);
XFS于2000年5月绎巨,Silicon Graphics以GPL發(fā)布這套系統(tǒng)的源代碼近尚,之后被移植到Linux內(nèi)核上,XFS特別擅長(zhǎng)處理大文件场勤,同時(shí)提供平滑的數(shù)據(jù)傳輸戈锻。