1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
看到同學的圖不錯拿來用用 ~ ~
2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
(1) 為硬盤新建兩個主分區;并為其安裝grub;
(2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
(4) 為grub提供配置文件;
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
--創建兩個分區--
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa59bf598
Device Boot Start End Blocks Id System
/dev/sdb1 1 65 522081 83 Linux
/dev/sdb2 66 1371 10490445 83 Linux
--格式化分區--
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
[root@localhost ~]# mkfs -t ext4 /dev/sdb2
--創建掛載目錄并掛載-- [root@localhost ~]# mkdir /mnt/{boot,sysroot}
[root@localhost ~]# mount /dev/sdb1 /mnt/boot/
[root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/
--復制內核文件和ramdisk文件--
[root@localhost ~]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/vmlinux_new
[root@localhost ~]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/initramfs_new.img
--創建根下需要的目錄--
[root@localhost ~]# mkdir /mnt/sysroot/{bin,dev,etc,home,lib,lib64,media,mnt,opt,proc,root,sbin,selinux,srv,sys,tmp,usr,var}
--復制bash、cat、ls程序文件和庫文件--
[root@localhost ~]# cp `which --skip-alias bash` /mnt/sysroot/$(which --skip-alias bash)[root@localhost ~]# cp `which --skip-alias cat` /mnt/sysroot/$(which --skip-alias cat)[root@localhost ~]# cp `which --skip-alias ls` /mnt/sysroot/$(which --skip-alias ls)
[root@localhost ~]# cp -u $(ldd `which --skip-alias ls` | grep -o "/.*\.[0-9]") /mnt/sysroot/lib64/[root@localhost ~]# cp -u $(ldd `which --skip-alias cat` | grep -o "/.*\.[0-9]") /mnt/sysroot/lib64/
[root@localhost ~]# cp -u $(ldd `which --skip-alias bash` | grep -o "/.*\.[0-9]") /mnt/sysroot/lib64/
--創建grub文件夾并創建grub.conf文件--
[root@localhost ~]# mkdir /mnt/boot/grub
[root@localhost ~]# vim /mnt/boot/grub/grub.conf
default=0timeout=5title little system root (hd0,0) kernel /vmlinuz_new root=/dev/sdb2 init=/bin/bash initrd /initramfs_new.img
--安裝grub到第二塊硬盤--[root@localhost ~]# grub-install --root-directory=/mnt/ /dev/sdb
重啟進入bios調整啟動硬盤
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
1、centos系統安裝基于anaconda程序進行的,在系統安裝完畢后會自動生成一個anaconda-ks.cfg的文件,該文件可直接或編輯后作為kickstart的腳本文件。
2、安裝system-config-kickstart命令(該命令需要運行在圖形模式下)并使用該命令生成或修改kickstart的腳本文件
#命令行段 filewall --disabled #禁用防火墻 install #執行新安裝 cdrom #使用光盤進行安裝 lang en_US.UTF-8 #設置安裝語言 keyboard us #設置鍵盤格式 network --onboot no --device eth0 --bootproto dhcp --noipv6 #設置網絡 rootpw --iscrypted $6$tRmCwYXf5Nt/frJK$6lnrag1bLng6xqhvvL.BVdK/jFJo4l4q6J3mcbchVmWCcQH6T45O8yd406pb3/1Ins2YiDAePvM/YmVZ41uFR. #設置root密碼 authconfig --enableshadow --passalgo=sha512 #認證方式 selinux --disabled #關閉selinux timezone --utc Asia/Shanghai #設置時區 bootloader --location=mbr --driveorder=sda,sdb --append="crashkernel=auto rhgb quiet" #bootloader設置 repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 #設置軟件倉庫 clearpart --all//刪除所有現在分區 part /boot --fstype=ext4 --size=200//分區掛載 part / --fstype=ext4 --size=40960 part swap --size=4096 #腳本段 %pre//安裝前腳本 echo "start install" %end %post # 安裝后腳本 echo "install end" #程序包段 %packages @chinese-support #中文支持 @development #開發工具 @graphical-desktop-clients #圖形化工具 @remote-desktop-clients #遠程桌面客戶端 %end
制作centos6.X 引導鏡像文件
--創建文件夾存放啟動文件-- [root@localhost /]# mkdir /myboot --復制光盤中的文件-- [root@localhost /]# cp -r /media/isolinux/* /myboot --復制制作好的ks文件-- [root@localhost /]# cp /root/ks.cfg /myboot/ks.cfg --修改solinux.cfg文件-- [root@localhost /]#echo "append initrd=initrd.img ks=cdrom:/ks.cfg" > /myboot/solinux.cfg --生成iso文件-- [root@localhost /]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c boot.cat -b isolinux.bin -o /root/boot.iso /myboot
4、寫一個腳本
(1) 能接受四個參數:start, stop, restart, status
start: 輸出“starting 腳本名 finished.”
…
(2) 其它任意參數,均報錯退出;
#!/bin/bash # # # case $1 in start) echo "starting $0 finished" ;; stop) echo "stoping $0 finished" ;; restart) echo "restartting $0 finished" ;; status) echo "status $0 finished" ;; *) echo "error" ;; esac
5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
(1) 如果登錄了,則顯示用戶登錄,腳本終止;
(2) 每3秒鐘,查看一次用戶是否登錄;
#!/bin/bash # # # USER=`who |cut -d " " -f1 ` [ $# -ne 1 ] && echo "use $0 username " && exit 1 if ! id $1 &>/dev/null ;then echo "$1 is not a username" exit 2 fi while true; do if echo $USER| grep $1 &>/dev/null ;then echo "$1 is loggin" break fi sleep 3 done
6、寫一個腳本,顯示用戶選定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
#!/bin/bash # # # cat <<EOF cpu) display cpu info mem) display memory info disk) display disk info quit) quit EOF read -p "input your choice " option while true;do case $option in cpu) cat /proc/cpuinfo break ;; mem) cat /proc/meminfo break ;; disk) fdisk -l break ;; quit) break ;; *) echo "syntax error;use $0 cpu|mem|disk|quit" read -p "input your choice again " option ;; esac done
7、寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
#!/bin/bash # # # USERINFO() { grep "^$1" /etc/passwd | awk -F: '{print $3i" "$7}' } read -p "input a username " USERNAME while true ;do case $USERNAME in quit) break ;; *) if id $USERNAME &>/dev/null ;then USERINFO $USERNAME read -p "input another user name or quit " USERNAME else echo "$USERNAME is not a username " read -p "please input a username again or quit " USERNAME fi ;; esac done
原創文章,作者:胡安慧,如若轉載,請注明出處:http://www.www58058.com/71494
可以看出腳本運用的已經比較熟練了,繼續加油。