菜鳥學Linux 第033篇筆記 bootloader,inittab
Linux 系統自啟動流程
PC OS (Linux)
POST-->BIOS(Boot Sequence)-->MBR(bootloader,446byte),GPT-->Kernel
-->initrd-->ROOTFS /sbin/init(/etc/inittab)
運作級别 (啟動的服務不同)
運作級别: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(早期,适合嵌入式系統)
GRUB GRand Unified Bootloader
stage1 MBR
stage1_5 識别檔案系統
stage2 /boot/grub/
bootloader 有446位元組最多
/etc/grub.conf 檔案格式
default=0 預設啟動title
timeout=5 等待使用者選擇的逾時時長
splashimage= 背景圖檔
hiddenmenu 隐藏菜單
password myroot
password --md5 此處為進入編輯grub時輸入密碼
title 核心标題,或作業系統名稱字元串,可自由修改
root (hd0,0) 核心檔案所在的裝置:對grub而言,所有類型硬碟一律hd
第一個0 表示第幾個磁盤,第二個對應硬碟分區
kernel 核心路徑和傳遞給核心的參數 /proc/cmdline
initrd ramdisk檔案路徑
password --md5 放在此處則進入核心需要輸入密碼
核心設計風格
RedHat, SUSE
核心 動态加載 核心子產品
核心 /lib/modules/"核心版本号命名的目錄"/
vmlinuz-2.6.32
/lib/modules/2.6.32/
RedHat5 ramdisk-->initrd
RedHat6 ramfs-->initramfs
單核心 Linux (LWP)
核心 KO (kernel object)
微核心 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 顯示二進制檔案所依賴的共享庫
Command
yum install gimp 一個圖形編輯軟體
使用Xshell遠端軟體可以啟動遠端的圖形界面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
修複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配置檔案丢失,系統啟動時會進入grub模式,隻要知道核心在哪裡就可以啟動
如果硬碟多可以在grub模式下輸入find (hd0,0)/按Tab來檢視此硬碟下所有的核心檔案
查找到後執行
grub> root (hd#,#)
grub> kernel /vmlinuz-2.6.18-308.el5
grub> initrd /initrd-2.6.18-308.el5.img
grub> boot
即可啟動該Linux系統#号表示要對應具體的第幾塊硬碟,第幾個分區
Kernel初始化的過程:
1、裝置探測
2、驅動初始化(可能會從initrd (initramfs)檔案中裝載驅動子產品)
3、以隻讀挂載根檔案系統
4、裝載第一個程序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 辨別符
runlevels 在哪個級别運作此行
action 在什麼情況下執行此行
initdefault 設定預設運作級别
sysinit 系統初始化
wait 等待級别切換至此級别時執行
respawn 一旦程式終止,會重新啟動該程式
process 要運作程式
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
/etc/rc.d/rc.sysinit完成的任務
1、激活udev和selinux
2、根據/etc/sysctl.conf檔案,來設定核心參數
3、設定時鐘
4、裝載鍵盤映射
5、啟用交換分區
6、設定主機名
7、根檔案系統檢測,并在沒有錯誤之後,以讀寫方式重新挂載
8、激活RAID和LVM裝置
9、啟用磁盤配額
10、根據/etc/fstab,檢查并其它檔案系統
11、清理過期的鎖和PID檔案
/etc/rc.d/init.d /etc/init.d
服務類腳本
start
stop
SysV: /etc/rc.d/init.d
start|stop|restart|status
reload|configtest
腳本中的
# chkconfig: 345 26 74
第一組 runlevels
第二SS start 優先次序
第三KK kill 次序
當chkconfig指令來為此腳本在rc#.d目錄建立連結時,
runlevels表示預設建立為S*開頭的連結如果為-則表示所有級别,
除此之外的級别預設建立為K*開關的連結
S後面的啟動優先級為SS所表示的數字,K後面的優級為KK所表示的數字
# description:
用于說明此腳本的簡單功能\,續行
chkconfig指令 updates and queries runlevel information for system services
--list 列出所有獨立守護服務的啟動設定
先将服務腳本cp到/etc/rc.d/init.d/目錄下
chkconfig --add SERVICE_NAME 添加服務連結到/etc/rc.d/rc#.d目錄下
chkconfig --add SERVICE_NAME 删除/etc/rc.d/rc#.d目錄下的服務連結
chkconfig --level RUNLEVEL SERVICE_NAME {on|off}
如果省略級别指定,預設為2345級别
/etc/rc.local /etc/rc.d/rc.local
系統最後啟動的一個服務,準确說,應該執行的最後一個腳本
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
啟動終端
/etc/inittab的任務
1.設定預設運作級别
2.運作系統初始化腳本
3.運作指定運作級别對應的目錄下的腳本
4.設定Ctrl+Alt+Del組合鍵的操作
5.定義UPS電源在電源故障、恢複時執行的操作
6.啟動虛拟終端(2345)
7.啟動圖形終端(5)
守護程序的類型
獨立守護程序xinetd預設可能未安裝,需自行安裝 yum install xinetd
xinetd 超級守護程序代理人 需要關聯至運作級别
瞬時守護程序:不需要關聯至運作級别
本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1877226如需轉載請自行聯系原作者
Winthcloud