馬哥教育網絡第21期-第十周課程練習

1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)

1.post加電自檢,bios檢測基礎硬件設備
2.boot sequence:按次序查找各引導設備,第一個有引導程序的設備即為本次啟動用到設備;讀取啟動設備MBR中
的bootloader,啟動GRUB,選擇內核加載到內存中。
3.kernel:自身初始化:探測可識別到的所有硬件設備;加載硬件驅動程序;(有可能會借助于ramdisk加載驅動)
以只讀方式掛載根文件系統;運行用戶空間的第一個應用程序:/sbin/init
4.運行/sbin/init:設置默認運行級別/etc/inittab 運行系統初始腳本/etc/rc.d/rc.sysinit完成系統初始化,
關閉對應下需要關閉的服務,啟動需要啟動服務/etc/rc.d/init.d,設置登錄終端 
系統初始化:
POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只讀) --> init

2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
  (1) 為硬盤新建兩個主分區;并為其安裝grub;
  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
  (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
  (4) 為grub提供配置文件;
  (5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
(1)
    [root@node1 ~]# 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: 0xf34d70c0
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1000     8032468+  83  Linux
    /dev/sdb2            1001        2610    12932325   83  Linux
    [root@node1 ~]# partx -a /dev/sdb
    [root@node1 ~]# mkfs.ext4 /dev/sdb1
    [root@node1 ~]# mkfs.ext4 /dev/sdb2
    [root@node1 /]# mkdir -p /mnt/{ramdisk,rootfs}
    [root@node1 /]# mount /dev/sdb1 /mnt/ramdisk/
    [root@node1 /]# mount /dev/sdb1 /mnt/rootfs/
    [root@node1 /]# grub-install --root-directory=/mnt /dev/sdb
(2)
        [root@node1 boot]# cp /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64 /mnt/ramdisk/
        [root@node1 boot]# cp /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img /mnt/rootfs/
(3)
        [root@node1 boot]# mkdir -p /mnt/rootfs/{bin,lib,lib64}
        [root@node1 boot]# cp -r /bin/bash /mnt/rootfs/bin
        [root@node1 boot]# cp $(ldd /bin/bash | awk '$3~/^\lib64/{printf $3}') /mnt/rootfs/
(4)
        default=0
        timeout=5
        splashimage=(hd0,0)/grub/splash.xpm.gz
        hiddenmenu
        title CentOS (2.6.32-642.6.2.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.6.2.el6.x86_64 ro root=/dev/sdb1 selinux=0 init=/bin/bash
        initrd /initramfs-2.6.32-642.6.2.el6.x86_64.img
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
yum -y install system-config-kickstart
[root@centos6 ~]# cat ks.cfg 
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=192.168.1.114 --dir=/mnt
key 123456
# Root password
rootpw --iscrypted $1$lYPG.hOy$UL8JxMVjmQeMp4018XIPn1
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us

[root@centos6 ~]# mkdir -p /tmp/myiso/isolinux
[root@centos6 ~]# cp /media/isolinux/* /tmp/myiso/isolinux/
[root@centos6 ~]# mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS
 6.8 x86_64 boo-b /tmp/myiso/isolinux/isolinux.bin -c /tmp/myiso/isolinux/boot.cat -o /root/boot.iso 
 myiso


4、寫一個腳本
  (1) 能接受四個參數:start, stop, restart, status
   start: 輸出“starting 腳本名 finished.”
   ...
  (2) 其它任意參數,均報錯退出;
  
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
case $1 in
	start)
		echo "starting finished";;
	stop)
		echo "stoping finished";;
	restart)
		echo "restart finished";;
	*)
		exit 2
esac
  
5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
  (1) 如果登錄了,則顯示用戶登錄,腳本終止;
  (2) 每3秒鐘,查看一次用戶是否登錄;

#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
while [ 0 ];do
    if `w | grep "^$1\>" &> /dev/null`;then
        echo  "$1 is login"
        exit 2
    else
        sleep 3
    fi
done

6、寫一個腳本,顯示用戶選定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
   
#!/bin/bash
if [ $# -eq 0 ];then
	echo "input argu"
	exit 1
fi
while [ 0 ];do
	case $1 in
		cpu)
			lscpu;;
		mem)
			cat /proc/meminfo;;
		disk)
			fidsk -l;;
		*)
			echo "error"
			continue;;
		quit)
			exit 1;;
	esac
done

7、寫一個腳本
  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;
    當輸入的是用戶名,則調用函數顯示用戶信息;
    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit: 
 
#!/bin/bash
while [ 0 ];do
	read -p " input user:" username
	if [ $username == "quit" ];then
		exit 2
	else
		userinfo $username 
	fi
done

userinfo {
	if `id $username &> /dev/null`;then
		echo "uid: `id -u $username`"
		echo "shell: `grep '^$username' /etc/passwd | cut -d: -f7`"
	else
		echo "error"
	fi	
		 
}

8、寫一個腳本,完成如下功能(使用函數)
   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;
   
#!/bin/bash
read -p " input argu: " comd
path=$(which $comd)
lib=$(ldd $path | egrep -o "[^[:space:]]+")

comcp $comd
libcp $comd

comcp {
	cp $path /mnt/sysroot$path	
}

libcp {
	for i in $lib;do
		cp $i /mnt/sysroot$path
	done
}

以上

原創文章,作者:N21_619463772,如若轉載,請注明出處:http://www.www58058.com/48552

(0)
N21_619463772N21_619463772
上一篇 2016-11-14 08:28
下一篇 2016-11-14 08:29

相關推薦

  • linux學習第三天

            Linux學習第三天 Bash特性及文件系統介紹 cat /etc/shells cat命令進入/etc/shells/下面查看有幾種shell FHS (文件系統遵循FHS定義)     /bin  供所有用戶使用基本的用戶命令程序文件   …

    Linux干貨 2016-10-18
  • 第八周作業腳本練習

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;      在線的主機使用綠色顯示;      不在線的主使用紅色顯示;          &…

    Linux干貨 2017-02-01
  • Linux之bash shell腳本編程入門篇(二)以及文件查找和壓縮的使用

    bash shell腳本編程入門篇(二) read命令的使用 作用:     使用read來把輸入值分配給一個或多個shell變量:         -p指定要顯示的提示      &nbs…

    Linux干貨 2016-08-18
  • Linux命令格式及常用命令詳解

    Linux命令格式及常用命令詳解 Linux的命令格式 COMMAND OPTIONS ARGUMENTS COMMAND 表示要執行的命令 OPTIONS 表示命令的運行特性 RGUMENTS 命令的作用對象,有時可以包含多個對象,空格隔開 常用命令詳解 ifconfig 功能描述:獲取網絡接口配置信息或配置網絡接口 命令格式: ifconfig [-a]…

    Linux干貨 2017-07-02
  • 任務計劃管理

    一:單一工作調度:at命令       列出在指定的時間和日期在計算機上運行的已計劃命令或計劃命令和程序。必須正在運行“計劃”服務才能使用 at 命令。 示例: [root@CentOS 6 ~]#/etc/init.d/atd restart   啟動服務 …

    Linux干貨 2016-09-12
  • Linux 2.6.39-rc3的一個插曲

    2011年4月12日,Linux 2.6.39-rc3發布了,Linus Torvalds寫了一個發布郵件,其中包含了一個長長的為這個版本做過貢獻的人員名單,這個名單中有很多看上去應該是中國人的名字,我挺為他們感到驕傲的(不知道你是否還記得以前本站的”Linux是由誰寫的“)。 不過,沒過一會,發現了一個bug,經過大家的調查(2.6.38版沒有發現這個問題…

    Linux干貨 2016-06-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-16 15:54

    寫的很好,就是排版可能需要修改一下,繼續加油

欧美性久久久久