1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
(1) 為硬盤新建兩個主分區;并為其安裝grub;
(2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
(4) 為grub提供配置文件;
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
~]# fdisk /dev/sdb ~]# mke2fs -t ext4 /dev/sdb{1,2} ~]# mount /dev/sdb1 /mnt ~]# grub-install --root-directory=/mnt /dev/sdb ~]# cp /boot/initramfs-2.6.32-504.el6.i686.img /mnt/initramfs ~]# cp /boot/vmlinuz-2.6.32-504.el6.i686 /mnt/vmlinuz ~]# vim /mnt/boot/grub/grub.conf default=0 timeout=5 title CentOS6(test) root (hd0,0) kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash initrd /initramfs ~]# umount /dev/sdb1 ~]# mount /dev/sdb2 /mnt ~]# mkdir -p /mnt/{bin,sbin,lib,lib64,etc,home,root,media,mnt,dev,tmp} ~]# mkdir -p /mnt/{usr/{bin,sbin,lib,lib64},var{lib,lib64,log,local,cache},proc,sys,selinux} ~]# cp /bin/{bash,ls,cat} /mnt/bin ~]# cp `ldd /bin/{bash,ls,cat}|grep -eo "/lib.*[[:space:]]"| sort -u` /mnt/lib ~]# sync ~]# init 6 重啟后進入BIOS設置 調整硬盤啟動順序后保存退出。
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
可以直接手動編輯或使用創建工具在桌面模式下用system-config-kickstart (CentOS 6)來創建ks.cfg#命令段firewall --disabled //禁用防火墻install //執行新安裝cdrom //用光盤安裝rootpw --iscrypted $1$TxkJ7T6B$obLELgEGcn0uzgA3QTAPl/ //管理員加密密碼auth --useshadow --passalgo=sha512 //屏蔽密碼算法graphical //安裝圖形環境firstboot --disable //首次引導禁用代理keyboard us //安裝鍵盤類型lang en_US //默認語言selinux --enforcing //激活selinuxlogging --level=info //信息等級timezone Asia/Hong_Kong //系統時區bootloader --location=mbr //在MBR上安裝引導程序clearpart --all //刪除所有現存分區 part /boot --fstype="ext4" --size=500 //分區掛載part / --fstype="ext4" --size=10000#腳本段%pre //安裝前腳本echo "start"%end%post //安裝后腳本echo "end"%end#程序包段%packages@chinese-support //中文支持@development //開發工具@graphical-admin-tools //圖形化工具@remote-desktop-clients //遠程桌面客戶端git-ibus-table-cangjie-ibus-table-erbi-ibus-table-wubi%end
4、寫一個腳本
(1) 能接受四個參數:start, stop, restart, status
start: 輸出“starting 腳本名 finished.”
…
(2) 其它任意參數,均報錯退出;
#!/bin/bash # cat << EOF Please make a choice! start stop restart status ====================== EOF read -p "Your choice: " choice case $choice in start) echo "starting script $choice finished." ;; stop) echo "starting script $choice finished." ;; restart) echo "starting script $choice finished." ;; status) echo "starting script $choice finished." ;; *) exit 1 esac
5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
(1) 如果登錄了,則顯示用戶登錄,腳本終止;
(2) 每3秒鐘,查看一次用戶是否登錄;
#!/bin/bash # read -p "Give a username: " username while true; do if who | grep "^$username\>" &> /dev/null; then break fi sleep 3 done echo "$username logged on"
6、寫一個腳本,顯示用戶選定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
#!/bin/bash # cat << EOF cpu) display cpu information mem) display memory infomation disk) display disks information quit) quit =============================== EOF read -p "Enter your option: " option while [ "$option" != "cpu" -a "$option" != "mem" -a "$option" != "disk" -a "$option" != "quit" ]; do echo "cpu, mem, disk, quit" read -p "Enter your option again: " option done if [ "$option" == "cpu" ]; then lscpu elif [ "$option" == "mem" ]; then free -m elif [ "$option" == "disk" ]; then fdisk -l /dev/[hs]d[a-z] else echo "quit" exit 0 fi
7、寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
#!/bin/bash # userinfo() { local user=$1 awk -F: '/^'"$user"'/{printf "%s:%s:%s\n",$1,$3,$NF}' /etc/passwd } while true; do read -p "Please enter a username or "quit": " choice if [[ "$choice" == "quit" ]]; then break else userinfo $choice fi done exit 0
原創文章,作者:浙江-咲,如若轉載,請注明出處:http://www.www58058.com/72894
總結的比較不錯~繼續加油~