菜鸟学Linux 第033篇笔记 bootloader,inittab
菜鳥學(xué)Linux 第033篇筆記 bootloader,inittab
Linux 系統(tǒng)自啟動流程
PC OS (Linux)
POST-->BIOS(Boot Sequence)-->MBR(bootloader,446byte),GPT-->Kernel
-->initrd-->ROOTFS /sbin/init(/etc/inittab)
運(yùn)行級別 (啟動的服務(wù)不同)
運(yùn)行級別:0-6
0 halt
1 single user mode 直接以管理員身份切入 s,S,single
2 multi user mode, no NFS
3 multi user mode, text mode
4 reserved
5 multi user mode, graphic mode
6 reboot
詳解啟動過程
bootloader(MBR)
LILO LInux LOader(早期,適合嵌入式系統(tǒng))
GRUB GRand Unified Bootloader
stage1 MBR
stage1_5 識別文件系統(tǒng)
stage2 /boot/grub/
bootloader 有446字節(jié)最多
/etc/grub.conf 文件格式
default=0 默認(rèn)啟動title
timeout=5 等待用戶選擇的超時時長
splashp_w_picpath= 背景圖片
hiddenmenu 隱藏菜單
password myroot
password --md5 此處為進(jìn)入編輯grub時輸入密碼
title 內(nèi)核標(biāo)題,或操作系統(tǒng)名稱字符串,可自由修改
root (hd0,0) 內(nèi)核文件所在的設(shè)備:對grub而言,所有類型硬盤一律hd?
第一個0 表示第幾個磁盤,第二個對應(yīng)硬盤分區(qū)
kernel 內(nèi)核路徑和傳遞給內(nèi)核的參數(shù) /proc/cmdline
initrd ramdisk文件路徑
password --md5 放在此處則進(jìn)入內(nèi)核需要輸入密碼
內(nèi)核設(shè)計風(fēng)格
RedHat, SUSE
核心 動態(tài)加載 內(nèi)核模塊
內(nèi)核 /lib/modules/"內(nèi)核版本號命名的目錄"/?
vmlinuz-2.6.32
/lib/modules/2.6.32/
RedHat5 ramdisk-->initrd
RedHat6 ramfs-->initramfs
單內(nèi)核 Linux (LWP)
核心 KO (kernel object)
微內(nèi)核 windows Solaris(多線程)
Jail
chroot (run command or interactive shell with special root directory)
chroot /test/vrroot or /test/vrrot/bin/bash
ldd /path/Binary_file 顯示二進(jìn)制文件所依賴的共享庫
Command
yum install gimp 一個圖形編輯軟件
使用Xshell遠(yuǎn)程軟件可以啟動遠(yuǎn)程的圖形界面gimp &?
grub-md5-crypt 使用md5給生成grub密文
runlevel Print previous and current SysV runlevel
who -r display runlevel
uname ( print system information)
-r, --kernel-release
? ? ? ? ? ? ? print the kernel release
dd if=/dev/zero of=/dev/sda count=1 bs=400 破壞硬盤的bootloader
修復(fù)grub
第一種:
#grub
grub>root (hd0,0)
grub> set (hd0)
第二種:
#grub-install --root-directory=/path/boot's parent /dev/hda
給其它硬盤安裝grub
1.將硬盤格式化好之后,掛載到一個以/mnt/boot目錄下該硬盤的你目錄必須是boot
2.使用命令grub-install --root-directory=/mnt /dev/sd(a,b,c...) ?
前邊的root-directory 必須選用boot的父目錄
3.完成后會在該硬盤下生成一個grub的文件夾,打開后里邊有文件
4.手動生成一個grub.conf配置文件在grub目錄下vim /mnt/boot/grub/grub.conf
編輯該配置文件
default=0
timeout=5
title mylinux(name)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5
initrd /initrd-2.6.18-308.el5.img
注意以上兩個的版本是一樣的,,這樣grub就制作完成了
如果grub.conf配置文件丟失,系統(tǒng)啟動時會進(jìn)入grub模式,只要知道內(nèi)核在哪里就可以啟動
如果硬盤多可以在grub模式下輸入find (hd0,0)/按Tab來查看此硬盤下所有的內(nèi)核文件
查找到后執(zhí)行?
grub> root (hd#,#)
grub> kernel /vmlinuz-2.6.18-308.el5
grub> initrd /initrd-2.6.18-308.el5.img
grub> boot
即可啟動該Linux系統(tǒng)#號表示要對應(yīng)具體的第幾塊硬盤,第幾個分區(qū)
Kernel初始化的過程:
1、設(shè)備探測
2、驅(qū)動初始化(可能會從initrd (initramfs)文件中裝載驅(qū)動模塊)
3、以只讀掛載根文件系統(tǒng)
4、裝載第一個進(jìn)程init (PID:1)
/sbin/init: (/etc/inittab) (古老)
RedHat6 upstart ubuntu, d-bus, event-driven
systemd 并行
/etc/inittab文件下的定義
# Default runlevel. The runlevels used by RHS are:
id:5:initdefault: 格式含義
id 標(biāo)識符
runlevels 在哪個級別運(yùn)行此行
action 在什么情況下執(zhí)行此行
initdefault 設(shè)定默認(rèn)運(yùn)行級別
sysinit 系統(tǒng)初始化
wait 等待級別切換至此級別時執(zhí)行
respawn 一旦程序終止,會重新啟動該程序
process 要運(yùn)行程序
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
/etc/rc.d/rc.sysinit完成的任務(wù)
1、激活udev和selinux
2、根據(jù)/etc/sysctl.conf文件,來設(shè)定內(nèi)核參數(shù)
3、設(shè)定時鐘
4、裝載鍵盤映射
5、啟用交換分區(qū)
6、設(shè)置主機(jī)名
7、根文件系統(tǒng)檢測,并在沒有錯誤之后,以讀寫方式重新掛載
8、激活RAID和LVM設(shè)備
9、啟用磁盤配額
10、根據(jù)/etc/fstab,檢查并其它文件系統(tǒng)
11、清理過期的鎖和PID文件
/etc/rc.d/init.d /etc/init.d
服務(wù)類腳本
start
stop
SysV: /etc/rc.d/init.d
start|stop|restart|status
reload|configtest
腳本中的
# chkconfig: 345 26 74
第一組 runlevels?
第二SS ? start 優(yōu)先次序
第三KK kill 次序
當(dāng)chkconfig命令來為此腳本在rc#.d目錄創(chuàng)建鏈接時,
runlevels表示默認(rèn)創(chuàng)建為S*開頭的鏈接如果為-則表示所有級別,
除此之外的級別默認(rèn)創(chuàng)建為K*開關(guān)的鏈接
S后面的啟動優(yōu)先級為SS所表示的數(shù)字,K后面的優(yōu)級為KK所表示的數(shù)字
# description:
用于說明此腳本的簡單功能\,續(xù)行
chkconfig命令 updates and queries runlevel information for system services
--list 列出所有獨(dú)立守護(hù)服務(wù)的啟動設(shè)定
先將服務(wù)腳本cp到/etc/rc.d/init.d/目錄下
chkconfig --add SERVICE_NAME 添加服務(wù)鏈接到/etc/rc.d/rc#.d目錄下
chkconfig --add SERVICE_NAME 刪除/etc/rc.d/rc#.d目錄下的服務(wù)鏈接
chkconfig --level RUNLEVEL SERVICE_NAME {on|off}
如果省略級別指定,默認(rèn)為2345級別
/etc/rc.local /etc/rc.d/rc.local?
系統(tǒng)最后啟動的一個服務(wù),準(zhǔn)確說,應(yīng)該執(zhí)行的最后一個腳本
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
啟動終端
/etc/inittab的任務(wù)
1.設(shè)定默認(rèn)運(yùn)行級別
2.運(yùn)行系統(tǒng)初始化腳本
3.運(yùn)行指定運(yùn)行級別對應(yīng)的目錄下的腳本
4.設(shè)定Ctrl+Alt+Del組合鍵的操作
5.定義UPS電源在電源故障、恢復(fù)時執(zhí)行的操作
6.啟動虛擬終端(2345)
7.啟動圖形終端(5)
守護(hù)進(jìn)程的類型
獨(dú)立守護(hù)進(jìn)程xinetd默認(rèn)可能未安裝,需自行安裝 yum install xinetd
xinetd 超級守護(hù)進(jìn)程代理人 需要關(guān)聯(lián)至運(yùn)行級別
瞬時守護(hù)進(jìn)程:不需要關(guān)聯(lián)至運(yùn)行級別
轉(zhuǎn)載于:https://blog.51cto.com/winthcloud/1877226
總結(jié)
以上是生活随笔為你收集整理的菜鸟学Linux 第033篇笔记 bootloader,inittab的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [教程] [承風雅傳HSU]用ES4封裝
- 下一篇: android 上传文件到服务器