1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
加電-MBR-GRUB-/sysinit-init X 對應的服務-/etc/rc.d
MBR
讀取分區表
GRUB
加載GRUB STAGE1 1.5 2 階段,讀取/boot/grub.conf 裝載kernel和initrd到內存
內核階段
運行內核參數 initrd和必要驅動 掛載根文件系統
init用戶空間初始化
啟動/sbin/init
運行rc.sysinit 系統環境 swap分區
讀取/etc/inittab
/etc/rc.d/rcX/d運行級別下的S 和 K開頭的文件
打開終端,顯示允許登陸
2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
(1) 為硬盤新建兩個主分區;并為其安裝grub;
(2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
(4) 為grub提供配置文件;
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
grub-install --root-directory=ROOT /dev/disk mkinitrd cp -r `which bash` /dev/sdb2 cp -r `which cat` /dev/sdb2 ldd bash ldd cat cat grub.conf title TITLE:定義菜單項的標題,可出現多次, root(hd0,0) kernel bzImage root=/dev/sda2
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
1、anaconda的配置方式:
(1) 交互式配置方式;
(2) 通過讀取事先給定的配置文件自動完成配置;
a)按特定語法給出的配置選項;
kickstart文件;
b)安裝引導選項:
text: 文本安裝方式
method: 手動指定使用的安裝方法
c)與網絡相關的引導選項:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
d)與遠程訪問功能相關的引導選項:
vnc
vncpassword='PASSWORD'
e)指明kickstart文件的位置
ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard drive: ks=hd:/device/drectory/KICKSTART_FILE
HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
f)啟動緊急救援模式:
rescue
2、 kickstart文件的格式:
a)命令段:指明各種安裝前配置,如鍵盤類型等;
b)程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
%packages
@group_name
package
-package
%end
c)腳本段:
%pre: 安裝前腳本
d)運行環境:運行于安裝介質上的微型Linux環境
%post: 安裝后腳本
運行環境:安裝完成的系統;
命令段中的命令:
必備命令
authconfig: 認證方式配置
authconfig –useshadow –passalgo=sha512
bootloader:bootloader的安裝位置及相關配置
bootloader –location=mbr –driveorder=sda
–append="crashkernel=auto
crashkernel=auto rhgb rhgb quiet quiet"
keyboard: 設定鍵盤類型
lang: 語言類型
part: 創建分區
rootpw: 指明root的密碼
timezone: 時區
可選命令
install OR upgrade
text: 文本安裝界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安裝完成后為系統創建新用戶
url: 指明安裝源
創建kickstart文件的方式:
(1) 直接手動編輯;
依據某模板修改;
(2) 可使用創建工具:system-config-kickstart (CentOS 6)
依據某模板修改并生成新配置;
檢查ks文件的語法錯誤:ksvalidator
# ksvalidator /PATH/TO/KICKSTART_FILE
創建引導光盤:
# mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 – boot-info-table -V “CentOS 6.8 x86_64 boot”
-b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
[root@localhost ~]# yum install system-config-kickstart
[root@localhost ~]# system-config-kickstart # 進入圖形界面
4、寫一個腳本
(1) 能接受四個參數:start, stop, restart, status
start: 輸出“starting 腳本名 finished.”
…
(2) 其它任意參數,均報錯退出;
#/bin/bash usage(){ echo "usage: $prog {start | restart | stop | status}" } if [ $1 -lt 1 ];then usage exit 2 fi case $1 in start) start;; stop) stop;; restart) stop start;; status) status;; *) usage esac
5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
(1) 如果登錄了,則顯示用戶登錄,腳本終止;
(2) 每3秒鐘,查看一次用戶是否登錄;
#!/bin/bash read -p "give me a username and i will check whether it logged" $username until false if who | grep $username &>/dev/null;then break fi sleep 3 done echo "$username already logged"
6、寫一個腳本,顯示用戶選定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
#/bin/bash hehe () {echo "$hehe: $dd {cpu|mem|disk|quit} if [$1 -lt 1];then hehe && exit 3 fi case $1 in cpu) cat /proc/cpuinfo mem) free -m disk) fdisk -l /dev/sd[a-z][1-9] quit) exit 10 *) hehe esac
7、寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
#/bin/bash 666(){ read -p : " plz int a username or "quit" to exit " $username case $username in UID) echo "`id $username`" && 666;; SHELL) echo "cat /etc/passwd | egrep "^$username" | cut -d: -f7" && 666 quit) exit 5;; }
8、寫一個腳本,完成如下功能(使用函數)
(1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
(2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
(3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;
#!/bin/bash read -p "int a cmd" cmd path=`which $cmd` lib=`ldd $path | egrep -o "/[^[:space:]]+"` cppath(){ cp $path /mnt/sysroot$path echo "copy $cmd completed." } cplib(){ for i in $lib;do cp $i /mnt/sysroot$path echo "copy $i_lib completed." done } cppath cplib #感謝人至賤則無敵的 志建 班長提供的幫助和解答
原創文章,作者:N21-總有刁民想害朕,如若轉載,請注明出處:http://www.www58058.com/47797
寫的很好,注意一下排版,寫腳本的時候可以多寫一些判斷條件