Linux的初始化流程
POST:ROM+RAM
BIOS:Boot Sequence
MBR:
446:bootloader,還要能識別檔案系統
64:分割槽表,16個位元組一個分割槽
2:5A
kernel檔案:基本磁碟分割槽,無法放在LVM上
vmlinuz 壓縮存放,有兩段程式碼組成,一個解壓程式碼,一個為核心程式碼
/sbin/init
/lib/
initrd:
rd:ram disk
/sbin/init:
/etc/inittab
/etc/rc.d/rc.sysinit指令碼
init:
CentOS 5: SysV格式的系統初始化程式
序列化:
CentOS 6:Upstart
dbus
A
B
C
SystemD:參考OS X中並行初始化過程
執行級別:
0-6:7個級別
0:關機
1:單使用者模式,直接以root使用者登入
2:多使用者模式,不支援NFS檔案系統
3:完全多使用者模式,文字模式,不啟動圖形介面
4:預留級別
5:完全多使用者模式,圖形模式
6:重啟
/sbin/init的配置檔案:
每行定義一種操作:
id:操作的id
執行級別:runlevels:在那些級別下執行此操作
action:動作
initdefault:設定預設執行級別,無需定義操作
sysinit:指定系統初始化指令碼
si::sysinit:/etc/rc.d/rc.sysinit
wait:等待系統切換至此級別時執行一次;
ctrlaltdel:定義組合鍵被按下時要執行的命令:
respawn:當指定的操作程式被關閉時立即在重啟一次
tty1:2345:respawn:/sbin/mingetty tty1
process:操作
/etc/inittab中定義的操作(init要完成的任務)
指定預設執行級別
指定系統執行的初始指令碼
啟動指定級別下的要啟動的服務,關閉要停止的服務
/etc/init.d
/etc/rc.d/rc.N.d(0-6)
s##
k##
定義ctrlaltdel組合的動作
初始化字元終端
終端:對應的是裝置
/dev/tty#,/dev/ttyS#,/dev/console,/dev/pts/#
呼叫:login-->/etc/issue
啟動圖形終端
cmdline:核心啟動時傳遞給核心的引數
系統初始化指令碼:/etc/rc.d/rcinit
設定主機名:
列印文字歡迎資訊
啟用SELinux和udev
啟用swap
掛載/etc/fstab定義的本地檔案系統
實現檢查根檔案系統並對其以讀寫重新掛載
設定系統時鐘
裝載鍵盤對映
根據/etc/sysctl.conf設定核心引數
啟用RAID和LVM裝置
清理操作
MBR:
bootloader:引導載入器,是一個程式
LILO:LInux LOader
不能引導位於1024 Cylinder(柱面)以後的分割槽中的os;
GRUB:GRand Unified Bootloader
1st stage:位於MBR中,為了引導2nd stage
1.5 stage:位於boot基本磁碟分割槽中,為識別核心檔案所在的檔案系統提供檔案識別擴充套件
2nd stage:位於boot基本磁碟分割槽中,GRUB的引導成勳
boot分割槽大小
Centos5:100M
Centos6:200M
/boot/grub/
stage2:讀取配置檔案grub.conf
Grub的功能:
1.選擇要啟動的核心或系統
隱藏互動式介面
2.互動式介面
e: 編輯模式
3.基於密碼保護
啟用核心映像
定義在響應title下
傳遞引數(進入編輯模式)
在配置檔案中 輸入 password --md5 密碼
定義在全域性段中
grub介面
title:作業系統或核心的標題
root:設定核心檔案所在的分割槽為grub的根
kernel:定義要使用的檔案,後面可以附加傳遞給核心的啟動引數
initrd:指定為核心提供額外驅動等功能的ram disk或ram fs檔案
init的級別1的表示方法:
1,s single S
單使用者模式幾乎不會啟動任何服務,且不需要使用者登入;單是會執行/etc/rc.d/rc.sysinit指令碼
如果連/etc/rc.d/rc.sysinit檔案也不載入,則傳遞emergency
執行級別的切換
#init [0-6]
檢視執行級別:
runlevel
who -r
grub.conf配置檔案語法:
default=#:指定預設啟動的核心或os
timeout=#:等待使用者選擇要啟動的核心或os的時長,單位為秒鐘
splashimage= :指定使用的背景圖片
hiddenmenu:隱藏選單
title
root(hd0,0)
(Device Part)
Device(磁碟)表示方式:在grub中,統統以hd開頭,並緊跟一個數字做各磁碟裝置的標記,從0開始
part表示方式:代表分割槽,從0開始編號
kernel
指定核心檔案及傳遞給核心的引數
引數:ro root=裝置檔案,quiet 靜默模式輸出
initrd
檔案:通常為cpio歸檔,並使用gzip壓縮,通常以.img作為檔案字尾名
grub的安裝:
第一種方式
#grub
grub root(hd0,0)
grub setup(hd0)
grub quit
第二種方式:
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda
sync 將記憶體檔案載入到硬碟上
啟動流程:POST-->BIOS(boot sequence) --> GRUB(bootloader(stage1:mbr;stage2:grub目錄中)) --> kernel(initrd) --> SHELL
HOST:宿主機
Target:目標機
基於HOST只做一個簡單的可啟動的Linux
1.給目標磁碟分割槽
兩個:
宿主機上:/dev/sdb1 /dev/sdb2
/dev/sdb1 掛載至 /mnt/boot
/dev/sdb2 掛載至 /mnt/sysroot
2.安裝grub至目標磁碟
# grub-install --root-directory=/mnt /dev/sdb
3、複製核心和initrd檔案
cp /boot/vmlinuz-Version /mnt/boot/vmlinuz
cp /boot/initramfs-Version.img /mnt/boot/iniyramfs.img
4.建立目標檔案的根系統檔案
mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}
接著去移植bash等至目標主機的根檔案系統
5.為grub提供配置檔案
vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title
root(hd0,0)
kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
initramfs /initramfs
Linux的核心,單核心,支援動態裝載和解除安裝
模組:/lib/modules/Kernel_version/
檢視pci裝置的命令
lspci -v
檢視當前核心裝載的所有模組
lsmod
檢視某模組的詳細資訊
modinfo 模組
動態解除安裝某模組
modprobe -r 模組
rmmod 模組
動態裝載某模組
modprobe 模組
insmod 路徑檔案
/sbin/init
/etc/inittab
/etc/rc.d/rc.sysinit
啟動對應級別的需要啟動的服務。停止需要關閉的服務
/etc/rc.d/rcN.d/
S##
K##
符號連結:/etc/init.d
##:表示優先順序(0-99),數字越小,優先順序越大
BIOS:Boot Sequence
MBR:
446:bootloader,還要能識別檔案系統
64:分割槽表,16個位元組一個分割槽
2:5A
kernel檔案:基本磁碟分割槽,無法放在LVM上
vmlinuz 壓縮存放,有兩段程式碼組成,一個解壓程式碼,一個為核心程式碼
/sbin/init
/lib/
initrd:
rd:ram disk
/sbin/init:
/etc/inittab
/etc/rc.d/rc.sysinit指令碼
init:
CentOS 5: SysV格式的系統初始化程式
序列化:
CentOS 6:Upstart
dbus
A
B
C
SystemD:參考OS X中並行初始化過程
執行級別:
0-6:7個級別
0:關機
1:單使用者模式,直接以root使用者登入
2:多使用者模式,不支援NFS檔案系統
3:完全多使用者模式,文字模式,不啟動圖形介面
4:預留級別
5:完全多使用者模式,圖形模式
6:重啟
/sbin/init的配置檔案:
每行定義一種操作:
id:操作的id
執行級別:runlevels:在那些級別下執行此操作
action:動作
initdefault:設定預設執行級別,無需定義操作
sysinit:指定系統初始化指令碼
si::sysinit:/etc/rc.d/rc.sysinit
wait:等待系統切換至此級別時執行一次;
ctrlaltdel:定義組合鍵被按下時要執行的命令:
respawn:當指定的操作程式被關閉時立即在重啟一次
tty1:2345:respawn:/sbin/mingetty tty1
process:操作
/etc/inittab中定義的操作(init要完成的任務)
指定預設執行級別
指定系統執行的初始指令碼
啟動指定級別下的要啟動的服務,關閉要停止的服務
/etc/init.d
/etc/rc.d/rc.N.d(0-6)
s##
k##
定義ctrlaltdel組合的動作
初始化字元終端
終端:對應的是裝置
/dev/tty#,/dev/ttyS#,/dev/console,/dev/pts/#
呼叫:login-->/etc/issue
啟動圖形終端
cmdline:核心啟動時傳遞給核心的引數
系統初始化指令碼:/etc/rc.d/rcinit
設定主機名:
列印文字歡迎資訊
啟用SELinux和udev
啟用swap
掛載/etc/fstab定義的本地檔案系統
實現檢查根檔案系統並對其以讀寫重新掛載
設定系統時鐘
裝載鍵盤對映
根據/etc/sysctl.conf設定核心引數
啟用RAID和LVM裝置
清理操作
MBR:
bootloader:引導載入器,是一個程式
LILO:LInux LOader
不能引導位於1024 Cylinder(柱面)以後的分割槽中的os;
GRUB:GRand Unified Bootloader
1st stage:位於MBR中,為了引導2nd stage
1.5 stage:位於boot基本磁碟分割槽中,為識別核心檔案所在的檔案系統提供檔案識別擴充套件
2nd stage:位於boot基本磁碟分割槽中,GRUB的引導成勳
boot分割槽大小
Centos5:100M
Centos6:200M
/boot/grub/
stage2:讀取配置檔案grub.conf
Grub的功能:
1.選擇要啟動的核心或系統
隱藏互動式介面
2.互動式介面
e: 編輯模式
3.基於密碼保護
啟用核心映像
定義在響應title下
傳遞引數(進入編輯模式)
在配置檔案中 輸入 password --md5 密碼
定義在全域性段中
grub介面
title:作業系統或核心的標題
root:設定核心檔案所在的分割槽為grub的根
kernel:定義要使用的檔案,後面可以附加傳遞給核心的啟動引數
initrd:指定為核心提供額外驅動等功能的ram disk或ram fs檔案
init的級別1的表示方法:
1,s single S
單使用者模式幾乎不會啟動任何服務,且不需要使用者登入;單是會執行/etc/rc.d/rc.sysinit指令碼
如果連/etc/rc.d/rc.sysinit檔案也不載入,則傳遞emergency
執行級別的切換
#init [0-6]
檢視執行級別:
runlevel
who -r
grub.conf配置檔案語法:
default=#:指定預設啟動的核心或os
timeout=#:等待使用者選擇要啟動的核心或os的時長,單位為秒鐘
splashimage= :指定使用的背景圖片
hiddenmenu:隱藏選單
title
root(hd0,0)
(Device Part)
Device(磁碟)表示方式:在grub中,統統以hd開頭,並緊跟一個數字做各磁碟裝置的標記,從0開始
part表示方式:代表分割槽,從0開始編號
kernel
指定核心檔案及傳遞給核心的引數
引數:ro root=裝置檔案,quiet 靜默模式輸出
initrd
檔案:通常為cpio歸檔,並使用gzip壓縮,通常以.img作為檔案字尾名
grub的安裝:
第一種方式
#grub
grub root(hd0,0)
grub setup(hd0)
grub quit
第二種方式:
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda
sync 將記憶體檔案載入到硬碟上
啟動流程:POST-->BIOS(boot sequence) --> GRUB(bootloader(stage1:mbr;stage2:grub目錄中)) --> kernel(initrd) --> SHELL
HOST:宿主機
Target:目標機
基於HOST只做一個簡單的可啟動的Linux
1.給目標磁碟分割槽
兩個:
宿主機上:/dev/sdb1 /dev/sdb2
/dev/sdb1 掛載至 /mnt/boot
/dev/sdb2 掛載至 /mnt/sysroot
2.安裝grub至目標磁碟
# grub-install --root-directory=/mnt /dev/sdb
3、複製核心和initrd檔案
cp /boot/vmlinuz-Version /mnt/boot/vmlinuz
cp /boot/initramfs-Version.img /mnt/boot/iniyramfs.img
4.建立目標檔案的根系統檔案
mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}
接著去移植bash等至目標主機的根檔案系統
5.為grub提供配置檔案
vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title
root(hd0,0)
kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
initramfs /initramfs
Linux的核心,單核心,支援動態裝載和解除安裝
模組:/lib/modules/Kernel_version/
檢視pci裝置的命令
lspci -v
檢視當前核心裝載的所有模組
lsmod
檢視某模組的詳細資訊
modinfo 模組
動態解除安裝某模組
modprobe -r 模組
rmmod 模組
動態裝載某模組
modprobe 模組
insmod 路徑檔案
/sbin/init
/etc/inittab
/etc/rc.d/rc.sysinit
啟動對應級別的需要啟動的服務。停止需要關閉的服務
/etc/rc.d/rcN.d/
S##
K##
符號連結:/etc/init.d
##:表示優先順序(0-99),數字越小,優先順序越大
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29620572/viewspace-1796329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- main之前初始化流程AI
- webrtc PeerConnectionFactory 的初始化流程分析Web
- RILD及qcril初始化流程
- 著色器初始化流程圖流程圖
- Java類初始化執行流程Java
- 深入分析 Flutter 初始化流程Flutter
- 類載入器及類的初始化流程
- spring ioc原理-容器初始化的大致流程Spring
- hive初始化、處理流程詳解Hive
- SpringMVC原始碼剖析(三)- DispatcherServlet的初始化流程SpringMVC原始碼Servlet
- webpack 流程解析(2):引數初始化完成Web
- Linux磁碟初始化Linux
- Linux開機的流程Linux
- Linux 的啟動流程Linux
- Vue.js原始碼解析-Vue初始化流程Vue.js原始碼
- Spring啟動流程(九)——初始化主題Spring
- RequestMappingHandlerMapping請求地址對映的初始化流程!APP
- Linux系統初始化*引數初始化(指令碼)Linux指令碼
- Redhat(03):Linux 初始化配置RedhatLinux
- SpringBoot啟動流程分析(四):IoC容器的初始化過程Spring Boot
- 深度學習 Caffe 初始化流程理解(資料流建立)深度學習
- 深度學習 Caffe 初始化流程理解(資料流建立)深度學習
- 開發日記(一)JAVA中變數初始化流程Java變數
- Linux啟動流程Linux
- 從核心原始碼看 slab 記憶體池的建立初始化流程原始碼記憶體
- Linux下面初始化GitHub設定LinuxGithub
- Linux伺服器的初步配置流程Linux伺服器
- spring-IOC容器原始碼分析(一)bean初始化流程Spring原始碼Bean
- ogg不停業務重新初始化目標資料庫流程資料庫
- ogg停止業務重新初始化目標資料庫流程資料庫
- Debian Linux的init程式初始化工作原理(轉)Linux
- Linux初始化系統V的Init過程(轉)Linux
- Linux部署專案流程Linux
- Linux效能分析流程圖Linux流程圖
- Linux安裝JDK流程LinuxJDK
- Linux 核心啟動流程Linux
- 新建linux伺服器初始化操作Linux伺服器
- 初始化linux系統指令碼薦Linux指令碼