第七周作業

1、簡述linux操作系統啟動流程

inux系統啟動流程大致是這樣的:

BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab)

BIOS

主板在接通電源后,BIOS會第一個獲得系統的控制權。BIOS首先會對系統硬件進行檢測(POST, Power On Self Test, 上電自檢),自檢測過程大致為:加電-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-顯卡等。如果關鍵部件有問題,計算機會發出報警聲。

自檢一切正常后BIOS會調用一些設備自身ROM中的初始化代碼,對這些設備進行初始化,比如顯卡。這時可以看到一些初始化信息,介紹生產廠商、芯片類型等內容。

最后,BIOS會根據COMS中設置的啟動順序(Boot Sequence),依次嘗試啟動。當啟動設備是硬盤時,BIOS會把系統控制權交給硬盤MBR中的bootloader。

MBR

MBR是Master Boot Record的簡寫, 即主引導記錄。MBR記錄一般在磁盤 0 磁道 1 扇區,共512個字節。前446個字節是BootLoader(引導程序),后 4*16 的 64 個字節是存放分區信息的,最后 2 個字節是校驗信息,一般是 55AA。

大多數Linux系統使用GRUB作為BootLoader。GRUB可以引導多種操作系統,它可以識別磁盤文件系統的格式,所以只需要內核文件名和內核所在分區就可以加載內核,通過/boot/grub/grub.conf文體來配置這些信息。

GRUB分為3個階段:

bootloader:1階段
     Stage1 的代碼保存在MBR中前446字節。

partition:filesystem driver 1.5階段
     Stage1_5的代碼允許GRUB識別多種類型的文件系統,識別每個文件系統的代碼的代碼保存在/boot/grub/*stage1_5 的文件中。

partition:/boot/grub,2階段
    Stage 2 代碼讀取/boot/grub/grub.conf文件,決定如何加載內核

Kernel

GRUB的最后階段stage2會根據/boot/grub/grub.conf文件中的配置加載kernel到內存中,并將系統控制權交給kernel。

initrd是”initial RAM disk”的縮寫,隨kernel一起被GRUB加載進內存,在系統引導過程中掛載的一個臨時根文件系統。因為Kernel為了精簡,只保留了最基本的模塊,因此,Kernel上并沒有各種硬件的驅動程序,也就無法識rootfs所在的設備,故產生了initrd這個文件,該文件裝載了必要的驅動模塊。

rootfs

真正的根文件系統,作為接手initrd的。

/sbin/init

/sbin/init進程是Linux啟動的第一個進程,PID=1。是所有傳統的 centos 5 中sysvinit 已經淡出歷史舞臺,新系統普遍采用 UpStart 和 systemd 。

運行級別

運行級別:為了系統的運行或維護等目的而設定的機制;
                 0-6 :7個級別;
                     0:關機 shutdown
                     1:單用戶模式,root用戶,無須認證,維護模式;
                     2:多用戶模式,會啟動網絡功能,但不會啟動NFS,維護模式;
                     3:多用戶模式,完全功能模式,文本界面,
                     4:預留級別,
                     5:多用戶級別,完全功能模式,圖形界面
                     6:重啟,reboot

2、簡述grub啟動引導程序配置及命令行接口詳解

grub的版本:

grub的版本分為:

grub 0.X (grub legacy)

grub 1.X (grub 2)

目前centos 5和centos 6使用的就是 grub legacy 版本 centos 7使用的是 grub2 版本的啟動引導程序

grub的三個階段

bootloader:Stage1
     Stage1 的代碼保存在MBR中前446字節。

partition:filesystem driver  : Stage1_5
     Stage1_5的代碼允許GRUB識別多種類型的文件系統,識別每個文件系統的代碼的代碼保存在/boot/grub/*stage1_5 的文件中。

partition:/boot/grub,Stage 2
    Stage 2 代碼讀取/boot/grub/grub.conf文件,決定如何加載內核

相關配置文件:

與grub相關的配置文件包括:/etc/grub.conf和/boot/grub/grub.conf

/etc/grub.conf是指向/boot/grub/grub.conf的軟連接,grub程序在引導啟動時會讀取這個配置文件,并按照這個文件的配置參數引導啟動系統

Centos 6 內容如下:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=9e52c88a-8b61-444c-a78a-ac642700cf99 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-431.el6.x86_64.img

default=0 :表示默認選擇第一個選項進行配置 timeout: 表示選擇菜單的時間,如果過了這個時間沒有選擇則表示使用默認選項 splashimage: 指定引導菜單中的背景圖片的路徑 titile: 指定選項的名稱 root: 表示kernel和initrd文件所在的分區路徑,而不是”根分區”;格式為:

 root(hd#,#)  第一個 # 表示第幾塊硬盤,第二個 # 表示同一個硬盤上的分區,都是從0開始

kernel: 通常是用于指定要運行的內核文件路徑,另外也可在其后設置相關的內核參數,如:ro表示只讀,root表示指定根分區所在路徑;

initrd: 為內核運行指定其可用的ramdisk文件,其版本須和內核版本一致;

passwd –md5 STRING :設置啟動密碼

GRUB的功能

1、提供引導菜單;

2、加載用戶選擇的內核或操作系統,并允許傳遞相應的內核參數給內核

3、提供命令行接口

命令行接口

在菜單頁面按c即可進入命令行接口,在此命令行接口,我們可以配置相關的grub設置。

grub常用的命令有:

 root(DEVICE):指定系統或內核文件所在的分區路徑
 kernel :指定要運行的內核文件路徑
 initrd :指定要運行的ramdisk文件
 find  /path/to/file:查找指定文件
 help :幫助

3、實現kickstart文件制作與光盤鏡像制作、

首先kickstart文件制作需要借助一款圖形化程序:system-config-kickstart

[root@dns ~]# yum -y install system-config-kickstart

啟動圖形化界面:

[root@dns ~]#init 5

在打開的圖形界面中通過file菜單選項選擇安裝過程中生成的/root目錄下的anaconda-ks.cfg作為默認配置,在此基礎上進行修改,以免去很多需要自己添加的過程;

1

主要內容有:

  基本配置
        安裝過程中的默認語言
        鍵盤類型
        時區
        root用戶密碼
  安裝方法
        安裝或升級
        配置安裝源(CD-ROM、FTP、HTTP、NFS、Hard Drive)
  引導裝載程序選項
        是否需要安裝boot loader
        給內核傳遞的參數(auto rhgb quite)
  分區信息
        是否清楚MBR
        是否清除現有分區
        是否需要初始化磁盤標簽
        設定分區布局
  網絡配置
        配置網絡接口
        IP地址
        子網掩碼
        網關
        DNS
  驗證
        用戶登錄的認證方式
  防火墻配置
        是否啟用
        安全級別
  顯示配置
        是否啟用圖形界面
  軟件包選項
        需要安裝哪些軟件包
  安裝前腳本
  安裝后腳本

光盤鏡像制作

1、將制作好的kickstart文件改名;

2、將光盤掛載上:

  [root@dns ~]# mkdir /media/cdrom
  [root@dns ~]# mount /dev/cdrom /media/cdrom

3、新建myboot文件夾,將kickstart文件和isolinux文件一起放入;

  [root@dns ~]# mkdir myboot
  [root@dns ~]# cp -r /media/cdrom/isolinux/ myboot/
  [root@dns ~]# cp ks.cfg ./myboot/isolinux/
  [root@dns ~]# rm -f ./myboot/isolinux/isolinux.cfg 
  [root@dns ~]# cd ./myboot/isolinux/
  [root@dns isolinux]# chmod +w *

4、最后執行光盤鏡像制作命令:

 [root@dns ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "centos 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage 1.1.9 (Linux)
Scanning myboot/
Scanning myboot/isolinux
Excluded by match: myboot/isolinux/boot.cat
Excluded: myboot/isolinux/TRANS.TBL
Writing:   Initial Padblock                        Start Block 0
Done with: Initial Padblock                        Block(s)    16
Writing:   Primary Volume Descriptor               Start Block 16
Done with: Primary Volume Descriptor               Block(s)    1
Writing:   Eltorito Volume Descriptor              Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor              Block(s)    1
Writing:   Joliet Volume Descriptor                Start Block 18
Done with: Joliet Volume Descriptor                Block(s)    1
Writing:   End Volume Descriptor                   Start Block 19
Done with: End Volume Descriptor                   Block(s)    1
Writing:   Version block                           Start Block 20
Done with: Version block                           Block(s)    1
Writing:   Path table                              Start Block 21
Done with: Path table                              Block(s)    4
Writing:   Joliet path table                       Start Block 25
Done with: Joliet path table                       Block(s)    4
Writing:   Directory tree                          Start Block 29
Done with: Directory tree                          Block(s)    2
Writing:   Joliet directory tree                   Start Block 31
Done with: Joliet directory tree                   Block(s)    2
Writing:   Directory tree cleanup                  Start Block 33
Done with: Directory tree cleanup                  Block(s)    0
Writing:   Extension record                        Start Block 33
Done with: Extension record                        Block(s)    1
Writing:   The File(s)                             Start Block 34
 26.71% done, estimate finish Mon May 14 16:30:03 2018
 53.32% done, estimate finish Mon May 14 16:30:03 2018
 80.01% done, estimate finish Mon May 14 16:30:03 2018
Total translation table size: 4477
Total rockridge attributes bytes: 1354
Total directory bytes: 2534
Path table size(bytes): 26
Done with: The File(s)                             Block(s)    18576
Writing:   Ending Padblock                         Start Block 18610
Done with: Ending Padblock                         Block(s)    150
Max brk space used 0
18760 extents written (36 MB)

 

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

(0)
nininini
上一篇 2018-06-29 21:09
下一篇 2018-06-29 23:56

相關推薦

欧美性久久久久