1、簡述linux操作系統啟動流程
inux系統啟動流程大致是這樣的:
post ->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(boot loader)
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.提供菜單,并提供交互式接口
e:編輯模式,用于編輯菜單:
c:命令模式,交互式接口:
2.加載用戶選擇的內核或操作系統
允許傳遞參數給內核
可隱藏此菜單
3.為菜單提供了保護機制
為編輯菜單進行認證
為啟用內核或操作系統進行認證
如何識別設備:
(hd#,#)
hd#:磁盤編號,用數字標識:從0開始編號
#:分區編號,用數字表示;從0開始編號 ?如:(hd0,0)
grub的命令行接口
help:獲取幫助列表
help keyword:獲得詳細幫助信息
find (hd0,0)/path/to/somefile:
root(hd0,0)
kernel /path/to/kernel_file:設定本次啟動時用到的內核文件:額外還可以添加許多內核支持使用的 ? ? ? ? ? ? ? ? cmdline參數:例如 ? init=/path/to/init,selinux=0
initrd /path/to/initramfs_file:設定為選定的內核提供額外文件的ramdisk;
boot:引導啟動選定的內核
手動在grub命令行幾口啟動系統
grub>root (hd0,0)
grub>kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub>initrd /initramfs-VERSION-RELEASE.img
grub>boot
配置文件:/boot/grub/grub.conf
配置選項:
default=#:設定默認啟動的菜單項:編號從零開始
timeout=#:指定菜單項等待選項選擇的時長
splashimage=(hd0,0)/path/to/xpm_pic_file:指明菜單背景圖片文件路徑
heddenmenu:隱藏菜單
password [–md5] string:慘淡編輯認證
title title:定義菜單標題,可出現多次
root (hd0,0):grub查找stage2及kernel文件所在設備分區:為grub的根
kernel?/vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE:啟動的內核
initrd /initramfs-VERSION-RELEASE.img:內核匹配的ramfs文件
password [–md5] string:啟動選定的內核或操作系統時進行認證
grub-md5-crypt命令用來生成password密碼
進入單用戶模式:
1.編輯grub菜單(選定要編輯的title,而后使用e命令)
2.在選定的kernel后附加 1,s,S或single都可以
3.在kernel所在行,鍵入b命令
安裝grub:
1.grub-install
grub-install –root-directory=ROOT /dev/DISK
2.grub
grub>root (hd0,0)
grub>setup (hd0
3、實現kickstart文件制作與光盤鏡像制作
?安裝引導
??????ks:指明kickstart文件的位置;
???????????ks=
????????????????? ?DVD drive:ks=cdrom:/path/to/kickstart_file
?????????????????????Hard Drive:ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
?????????????????????HTTP Server:ks=http://HOST:[PORT]/PATH/TO/KICKSTART_FILE
?????????????????????FTP Server:ks=ftp://HOST:[PORT]/PATH/to/KICKSTART_FILE
?????????????????????HTTPS Server:ks=https://HOST:[PORT]/PATH/TO/KICKSTART_FILE
??????kickstart文件的格式
???????????? 命令段:
?????????????????????指定各種安裝前配置選項,如鍵盤類型等;
???????????? 1.命令段中的必備命令:
?????????????????????authconfig:認證式配置
??????????????????????????authconfig –enableshadow –passalgo=sha512
?????????????????????bootloader:定義bootloader的裝置位置及相關配置
??????????????????????????bootloader –location=mbr –driveorder=sda -append=”crashkernel=auto rhgb quiet”
?????????????????????keyboadr:設置鍵盤類型
??????????????????????????keyboard us
?????????????????????lang:語言類型
??????????????????????????lang zh_CN.UTF-8
????????????????? ? part:分區布局;
???????????????????????????????part /boot –fstype=ext4 –size=500
???????????????????????????????part pv.008002 –size=51200
????????????????? ? rootpw:管理員密碼
???????????????????????????????rootpw –iscrypted ? ? ??????
???????timezone:時區
???????????????????????????????timezone Asia/Shanghai
?????????????????????補充:分區相關的其他指令
????????????????? ? clearpart:清除分區
??????????????????????????clearpart –none –drives=sda:清空磁盤分區;
?????????????????????volgroup:創建卷組
??????????????????????????? ?volgroup myvg –pesize=4096 pv.008002
?????????????????????logvol:創建邏輯卷
???????????????????????????????logvol /home –fstype=ext4 –name=lv_home –vgname=myvg –size=5120
?????????????????????生成加密密碼的方式:
????????????????????????????????????openssl passwd -1 salt `openssl rand -hex 4`
????????????????? ?2.可選命令:
??????????????????????????install OR upgrade:安裝或升級;
??????????????????????????text:安裝界面類型,text為tui,默認為GUI
??????????????????????????network:配置網絡接口
????????????????????????????????????network –onboot yes –device eth0 –bootproto dhcp –noipv6
??????????????????????????fairwall:防火墻
????????????????????????????????????firewall –disabled
??????????????????????????selinux:SELinux
????????????????????????????????????selinux:disabled
???????????
???????????? 程序包段
?????????????????????指明要安裝程序包,以及包組,也包括不安裝的程序包;
??????????????????????????%packages
??????????????????????????@group_name
??????????????????????????package
??????????????????????????-package
??????????????????????????%end
???????????? 腳本段
?????????????????????%pre:安裝前腳本
????????????????????????????????????運行環境:運行安裝介質上的微型linux系統環境;
?????????????????????%post安裝后腳本
????????????????????????????????????運行環境:安裝完成的系統;
?????????????????????
???????????系統安裝后禁用防火墻:
????????????????CentOS 6
??????????????????????????service iptables stop?????
???????????????????????????chkconfig iptables off
???????????? ? CentOS 7
??????????????????????????systemctl stop firewall
???????????系統安裝完成后禁用SELinux
?????????????????????編輯/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX參數的值為下面其中之一:
??????????????????????????permissive
??????????????????????????disabled
?????????????????????立即生效:
??????????????????????????getenforce
??????????????????????????setenforce 0
???????????定制kickstart文件:
?????????????????????yum install system-config-kickstart
?????????????????????system-config-kickstart ?圖形化的ks配置命令
???????????檢查語法錯誤:
????????????????ksvalidator
????????????光盤鏡像制作
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/
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/102976