天天看點

菜鳥學Linux 第033篇筆記 bootloader,inittab

菜鳥學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

繼續閱讀