1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
POST
BIOS加電自檢,檢查CPU,內存等硬件是否正常,
–>Bootsequence(BIOS)
通過引導次序,找到第一塊有引導程序的設備,即完成。不管失敗與否,
–>Bootloader(MBR)
引導加載器程序,位于MBR前446字節,由操作系統提供,windows為ntloader,linux為grub,
功能:提供菜單,允許用戶選擇要啟動的系統和不同的內核版本,把選定的內核裝載到內存指定的空間解壓展開,并把控制權交給內核。
–>Kernel(ramdisk)
kernel自身初始化,探測所有設備,加載硬盤驅動、以只讀方式掛載根文件系統,運行用戶空間的第一個程序/sbin/init
–>rootfs(readonly)
–>/sbin/init
/sbin/init(/etc/rc.d/rc.sysinit — rc#.d–rc.local–/bin/local)
kernel自身初始化,探測所有設備,加載硬盤驅動、以只讀方式掛載根文件系統,運行用戶空間的第一個程序/sbin/init
Centos 5 SysV風格的啟動方式
1>運行/etc/inittab 設定運行級別
/etc/rc.d/保存rc1~6.d的目錄,每個目錄對應相應級別,目錄腳本全部鏈接到/etc/init.d/下面
相應級別目錄下對應K*和S*開頭的腳本,根據對應級別啟動和停止相應腳本。
2>/etc/rc.d/rc.sysinit 執行該腳本,做以下操作
(1) 設置主機名;
(2) 設置歡迎信息;
(3) 激活udev和selinux;
(4) 掛載/etc/fstab文件中定義的文件系統;
(5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統;(內核是只讀掛載,這里重新掛載完成根切換)
(6) 設置系統時鐘;
(7) 激活swap設備;
(8) 根據/etc/sysctl.conf文件設置內核參數;
(9) 激活lvm及software raid設備;
(10) 加載額外設備的驅動程序;
(11) 清理操作;
Centos 6 upstart啟動風格
/etc/inittab, 運行級別配置文件
/etc/init/*.conf 啟動腳本來決定/etc/init.d/下的哪些服務器啟動與否
/etc/init.d/啟動腳本和/etc/rc.d/init.d/一樣
2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
(1) 為硬盤新建兩個主分區;并為其安裝grub;
添加一塊硬盤,創建2個分區,避免與/boot沖突,/dev/sdb1;/dev/sdb2
格式化并掛載分區/mnt/boot;/mnt/rootfs
grub-install –root-directory=/mnt/ /dev/sdb #安裝grub 指定根路徑和磁盤
(2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
拷貝/boot/目錄下的內核文件和ramdisk文件 至/mnt/boot/下
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
創建和根目錄相同的目錄文件
拷貝/bin/ls /bin/bash /bin/cat 至/mnt/boot 對應的目錄內
ldd 命令查詢ls,bash,cat 對應的庫文件,拷貝至/mnt/boot對應目錄
(4) 為grub提供配置文件;
指定內核root=/dev/sda2根目錄 啟動程序init=/bin/bash
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
新建虛擬機使用現有磁盤
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
kickstart文件的格式:
命令段:指明各種安裝前配置,如鍵盤類型等;
程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
%packages 開始
@group_name
package
-package
%end 結束
腳本段:
%pre: 安裝前腳本
運行環境:運行于安裝介質上的微型Linux環境 isolinux/anaconda
%post: 安裝后腳本
運行環境:安裝完成的系統; 支持所有shell 腳本。
創建引導光盤:無服務器情況下,
# mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
也要自己指定KS文件。在本身光盤上。
boot:linux ks=cdrom:/myks.cfg
可以直接寫道linux.cfg 配置內的
append initrd=initrd.img ks=cdrom:/myks.cfg
4、寫一個腳本
(1) 能接受四個參數:start, stop, restart, status
start: 輸出“starting 腳本名 finished.”
…
(2) 其它任意參數,均報錯退出;
5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
(1) 如果登錄了,則顯示用戶登錄,腳本終止;
(2) 每3秒鐘,查看一次用戶是否登錄;
6、寫一個腳本,顯示用戶選定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
7、寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
8、寫一個腳本,完成如下功能(使用函數)
(1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
(2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
(3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;
原創文章,作者:Net19_Lam,如若轉載,請注明出處:http://www.www58058.com/25146
寫的很好,排版還可以在漂亮一點,4 6 8 在仔細看看,不對。加油