馬哥教育網絡班21期+第10周課程練習

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

    1)開機后會進行POST(開機加電自檢),加載BIOS,之后會根據BIOS上的boot  sequence(引導加載次序)找到第一個有引導程序的設備,找到MBR,bootloader(引導加載器)就安裝在MBR內。MBR組成部分(bootloader--446字節,fat(文件系統分配表)--64字節,有效標記--2字節)
    2)Linux的bootloader是grub。作用是允許用戶選擇內核,將內核加載到內存的特定空間中,解壓,展開之后,把系統控制權交給內核。
    3)內核進行自身初始化工作。探測可識別的所有硬件設備,加載硬件驅動程序(會借助ramdisk(centos 6 ramfs)加載驅動),并以只讀方式掛載根文件系統。運行用戶空間的第一個應用程序(/sbin/init)
    4)/sbin/init 應用程序會根據/etc/inittab里的配置,運行系統初始腳本,完成系統初始化,關閉或啟動對應級別下的服務,啟動終端。

2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;

blob.png

(1) 為硬盤新建兩個主分區;并為其安裝grub;
在 /mnt 下新建目錄boot ,執行以下命令

blob.png

cd /mnt/boot/,查看執行結果

blob.png

(2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /mnt/boot/vmlinuz-2.6.32-431.el6.x86_64cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/boot/vmlinuz-2.6.32-431.el6.x86_64創建rootfs文件夾,掛載/dev/sdc2到此目錄,創建系統所需目錄
mkdir /mnt/rootfs     mount  /dev/sdc2 /mnt/rootfs
cd  /mnt/rootfs
mkdir  bin  boot  dev  etc  home  lib  lib64 media  misc  mnt  opt  proc  root  sbin  srv  sys  users  usr  var
(3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;cp /bin/bash /mnt/roofs/bincp /bin/ls   /mnt/roofs/bincp /bin/ls /mnt/rootfs/binfor i in `ldd /bin/bash | grep -o "[^[:space:]]*/lib[^[:space:]]*"`; do cp $i /mnt/rootfs/lib64/ ; donefor i in `ldd /bin/ls| grep -o "[^[:space:]]*/lib[^[:space:]]*"`; do cp $i /mnt/rootfs/lib64/ ; donefor i in `ldd /bin/cat | grep -o "[^[:space:]]*/lib[^[:space:]]*"`; do cp $i /mnt/rootfs/lib64/ ; done
(4) 為grub提供配置文件;
vim /mnt/boo/grub/grub.confdefault=0timeout=5title CentOS (ljy)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda2 selinux=0 init=/bin/bash
    initrd /initramfs-2.6.32-431.el6.x86_64.img
(5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;

blob.png

blob.png

3、制作一個kickstart文件以及一個引導鏡像。描述其過程。

一、制作ks 文件
安裝system-config-kickstart
yum install -y system-config-kickstart-2.8.6.5-1.el6.noarch.rpm
運行system-config-kickstart

blob.png

打開一個ks文件。

blob.png

根據需要配置相關的內容。配置好后,將文件進行另存操作,起名叫myks.cfg。

二、創建引導鏡像。

在/tmp 目錄下創建目錄myiso ,在myiso 目錄下創建isolinux 目錄。
執行cp /media/isolinux/* isolinux/  將光盤上的isolinux 下的文件都拷貝到新建的目錄下。
將myks.cfg文件復制到/tmp/myiso 目錄下。

blob.png

創建ISO文件系統
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.5 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso
到/root 下查看。

4、寫一個腳本
(1) 能接受四個參數:start, stop, restart, status
start: 輸出“starting 腳本名 finished.”

(2) 其它任意參數,均報錯退出;

    #!/bin/bash
    #
    case $1 in
        start)            echo "starting $0 finished."
    ;;
        stop)            echo "stopping $0 finished"
    ;;
        restart)            echo "restarting $0 finished"
    ;;
        status)            echo "status $0 finished"
    ;;
        *)            echo "error Usage: $0 start|stop|restart|status"
            exit 3
    ;;    esac

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
(1) 如果登錄了,則顯示用戶登錄,腳本終止;
(2) 每3秒鐘,查看一次用戶是否登錄;

#!/bin/bash#declare -a aadeclare -a bb
bb=`awk -F: '{print $1}' /etc/passwd | xargs`if echo ${bb[@]} | grep -w "$1" &>/dev/null ;thenwhile true;doaa=`who | cut -d" " -f1 |sort |uniq | xargs`        if echo ${aa[@]} | grep -w "$1" &>/dev/null ;then
        echo "$1 is longin" 
        exit
        fi
    echo "wait 3 second"
    sleep 3doneelse
    echo "$1 is not a user"fi

6、寫一個腳本,顯示用戶選定要查看的信息;
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

    #!/bin/bash
    #
    select a in "cpu" "mem" "disk" "quit";do
    case $a in
        cpu)
            cat /proc/cpuinfo
    ;;
        mem)
            cat /proc/meminfo
    ;;
        disk)
            df -h
    ;;
        quit)
            exit
    ;;
        *)
            echo "wrong args,select option 1) cpu 2) mem 3) disk 4) quit"   
    ;;
    esac
    done

7、寫一個腳本
(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
(2) 提示用戶輸入一個用戶名或輸入“quit”退出;
當輸入的是用戶名,則調用函數顯示用戶信息;
當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:

    #!/bin/bash
    #
    declare -a aa
    aa=`awk -F: '{print $1}' /etc/passwd | xargs`    
    bb () {
    UId=`id -u $ss`    #SHELL=`awk -F: '$3 ~/\<"$UId"\>/{print $7}' /etc/passwd`
    #SHELL=`grep $UId /etc/passwd |cut -d: -f7`
    SHELL=`cut -d: -f1,3,7 /etc/passwd |grep "^\<$ss\>" |cut -d: -f3`    echo $UId 
    echo $SHELL
    }    while true;do
    read -p "please enter a username or quit:" ss    
    if echo ${aa[@]} | grep -w "$ss" &>/dev/null ;then
    echo $ss
    bb    elif [ $ss == "quit" ];then
        exit
    fi
    done

8、寫一個腳本,完成如下功能(使用函數)
(1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
(2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
(3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;

    #!/bin/bash
    #
    [ -d /mnt/sysroot ] || mkdir /mnt/sysroot 
    [ -d /mnt/sysroot/rootfs ] || mkdir /mnt/sysroot/rootfs
    [ -d /mnt/sysroot/usr/bin ] || mkdir -p /mnt/sysroot/usr/bin
    sysroot=/mnt/sysroot
    rootfs=/mnt/sysroot/rootfs
    sysbin=/mnt/sysroot/usr/bin    read -p "please enter a command:" cmd
    
    cmddir=`which $cmd | tail -1`    cmlib () {    
    echo "依賴庫展示"
    ldd $cmddir
    
    }    cmdcp () {    echo "命令復制,查看路徑:$sysbin,$rootfs"
    if [ "$cmddir" == "/usr/sbin/useradd" ] ;then
    cp $cmddir $sysbin
    else 
    cp $cmddir $rootfs
    fi
    }    cmlibcp () {    echo "庫文件復制"
    ldd $cmddir > /tmp/$$.ldd.txt
    libname=`cat /tmp/$$.ldd.txt |sed 's/(.*)//g'| sed 's/[[:space:]]//g' |sed 's/.*=>//' | sed '1d' |xargs`    for i in $libname;do
        if [ "$cmddir" == "/usr/sbin/useradd" ] ;then
        cp $i $sysbin
        else
        cp $i $rootfs
        fi
    done
    }    
    #cmlib
    #cmdcp
    cmlibcp

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

(0)
hhaa0352hhaa0352
上一篇 2016-09-19 13:47
下一篇 2016-09-19 13:48

相關推薦

  • 計劃任務

    作業管理: Linux的作業控制(job )     前臺作業:通過終端啟動,且啟動后一直占據終端;     后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端) 如何讓作業運行于后臺?     (1) 運行中的…

    Linux干貨 2016-09-08
  • vsftpd+pam+MySQL—->實現虛擬用戶認證

    一、安裝所需要程序 1、安裝vsftpd yum -y install vsftpd 2、安裝MySQL yum -y install  mysql-server mysql-devel pam_mysql 二、創建虛擬用戶賬號 1.準備數據庫及相關表 首先請確保mys…

    Linux干貨 2016-09-19
  • Linux網絡管理

                          Linux網絡管理   本章內容: 網絡概念 OSI七層模型 網絡設備 TCP/IP IP地址 配置網絡 實現網絡組 測試網絡 網絡工具   網絡用戶應用程序: WEB瀏覽器(…

    系統運維 2016-09-12
  • Linux 基礎命令

    一,GNU/LINUX操作系統組成        1.1硬件  計算機硬件資源,CPU,主板,內存,存儲器等 1.2 內核層 包含了硬件控制,設備驅動程序,虛擬文件系統,網絡管理,內存管理,進程管理,程序調度等 ,屬于內核空間 1.3 系統調用 所有的操作系統在其內核里都有一些內建的函數,這些函數可以用來完成…

    2016-10-29
  • samba服務部署WordPress

    簡介 Samba是一個能讓Linux系統應用Microsoft網絡通訊協議的軟件,而SMB是Server Message Block的縮寫,即為服務器消息塊 ,SMB主要是作為Microsoft的網絡通訊協議,后來Samba將SMB通信協議應用到了Linux系統上,就形成了現在的Samba軟件。后來微軟又把 SMB 改名為 CIFS(Common Inter…

    Linux干貨 2017-04-28
  • 第三周 磁盤文件系統進階

    文件系統的使用:     首先要“掛載”:mount 命令和umount命令     根文件系統這完的其他文件系統要想能夠訪問, 都必須通過“關聯”至根文件上的某個目錄來實現,次關聯操作即為“掛載”;此目錄幾位“掛載點”;     掛載點:mount-point,用于做為另一個文件系統的訪問入口; …

    Linux干貨 2016-11-22

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-19 17:27

    寫的很棒,如果腳本在調整一下格式的話,會更好

欧美性久久久久