N22-第十周作業

第十周    
1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
    POST–>BootSequence(BOIS)–>BootLoader(MBR)–>Kernel(ramfs或者ramdisk)–>rootfs–>rootfsswitch–>/sbin/init–>/etc/inittab,/etc/init/*.conf–>設定默認運行的級別–>系統初始化腳本–>關閉和開啟對應級別下的服務–>啟動終端
    POST:檢測硬件設備,包括硬盤內存等等
    BootSequence:主要是設定BIOS的啟動順序。
    BootLoader:根據BIOS設定的啟動順序去加載啟動文件,位于磁盤中的MBR部分
    Kernel:把ram空間當成磁盤空間使用,形成一個小的rootfs,然后去加載內核文件
    rootfs:加載真正的根文件系統
    rootswitch:完成兩個根的轉換。
    /sbin/init:執行第一個用戶空間程序,這個程序會引導以后的用戶空間的初始化過程
    /etc/inittab,/etc/init/*.conf:加載init級別加載/etc/init/*.conf 這些配置文件。
    設定默認運行的級別:根據加載的inittab文件設定的init級別去定義init級別
    系統初始化腳本:
    關閉和開啟對應級別下的服務:開啟和關閉當前init級別下的服務信息
    啟動終端:啟動終端
    
2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
  (1) 為硬盤新建兩個主分區;并為其安裝grub;
  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
  (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
  (4) 為grub提供配置文件;
  (5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
  # fdisk /dev/sdb
  # partx -a /dev/sdb
  # mount /dev/sdb1 /mnt/boot
  # mount /dev/sdb2 /mnt/sysroot
  # grub-install –root-directory=/mnt/sysroot /dev/sdb
  # cp /boot/vmlinuz-2.6.32-504.el6.x86_64 /mnt/boot/vmlinuz
  # cp /boot/initramfs-2.6.32-504.el6.x86_64.img /mnt/boot/initramfs.img
  # cp /boot/grub/grub.conf /mnt/boot/grub/grub.conf
  # vim /mnt/boot/grub/grub.conf
            default=0
            timeout=5
            hiddenmenu
            title CentOS 6 (test new)
            root (hd0,0)
            kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
            initrd /initramfs.img
  # mkdir -pv /mnt/sysroot/{bin,sbin,lib,lib64,etc,home,root,media,mnt,dev,tmp}
  # cp /bin/{bash,ls,cat} /mnt/bin
  # cp `ldd /bin/{bash,ls,cat}|grep -eo "/lib.*[[:space:]]"| sort -u` /mnt/lib
  # sync
  # init 6
  創建一個新的虛擬機掛載掛載新的硬盤然后啟動。
3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
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 "restarting $0 finished."
            ;;
    status)
            echo "show $0 status."
            ;;
    *)
            echo "The para error"
            exit
    esac

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
  (1) 如果登錄了,則顯示用戶登錄,腳本終止;
  (2) 每3秒鐘,查看一次用戶是否登錄;
    #!/bin/bash
    #
    while [ 0 -eq 0 ];do
            if who|grep "magedu" &>/dev/null;then
                    echo "The user magedu login already"
                    exit 44
            fi
            sleep 3
            echo "wait user magedu login"
    done
    或者
    #!/bin/bash
    #
    until [ 1 -eq 2 ];do
            if who|grep "magedu" &> /dev/null;then
                    exit 22
            fi
            sleep 3

    done

6、寫一個腳本,顯示用戶選定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
    #!/bin/bash
    #
    echo -e "cpu) display cpu info\nmem) display memory info\ndisk) display disk info\nquit) quit\n"
    while [ 0 -eq 0 ];do
    read -p "please input you choice: " i
    case $i in
    "cpu")
            lscpu
            break
            ;;
    "mem")
            free -m
            break
            ;;
    "disk")
            df -lh
            break
            ;;
    "quit")
            echo "quit"
            break
            ;;
    *)
            echo "Eror choice,please input again"           
            ;;
    esac
    done

7、寫一個腳本
  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;
    當輸入的是用戶名,則調用函數顯示用戶信息;
    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
    #!/bin/bash
    #
    function User {
            echo "UID=`id -u $yonghu`"
            SHELL=`grep $yonghu /etc/passwd|awk -F: '{printf $7}'`
            echo "SHELL=$SHELL"
    }
    while [ 0 -eq 0 ];do
    read -p "please input a para(A user or quit): " yonghu
    if id $yonghu&>/dev/null;then
            User
    elif [ $yonghu == "quit" ];then
            break
    else
            echo -e "no such this user\n"
    fi
    done
    echo "End"

8、寫一個腳本,完成如下功能(使用函數)
   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;
    #!/bin/bash
    #
    sys=/mnt/sysroot
    read -p "Input a command: " comd
    path=`whereis $comd|awk '{print $2}'`
    if [ -d `dirname ${sys}${path}` ];then
            cp $path ${sys}${path}
    else
            mkdir -p ${sys}${path}
            cp $path ${sys}${path}
    fi
    for i in $(ldd $path|grep -o "/.*lib.*\.so.*\.[^[:space:]]");do
            if [ -d `dirname ${sys}$i` ];then
                    cp -r $i `dirname ${sys}$i`
            else
                    mkdir -p ${sys}`dirname ${sys}$i`
                    cp -r $i `dirname ${sys}$i`
            fi
    done

   

原創文章,作者:N22-北京-喜歡就好,如若轉載,請注明出處:http://www.www58058.com/56922

(0)
N22-北京-喜歡就好N22-北京-喜歡就好
上一篇 2016-11-07
下一篇 2016-11-07

相關推薦

  • mysqld_multi 多實例部署

    序言:多實例?Why?   隨著硬件層面的發展,linux系統多核已經是普通趨勢,而mysql是單進程多線程,所以先天上對多進程的利用不是很高,雖然5.6版本已經在這方面改進很多,但是也沒有達到100%,所以為了充分的利用系統資源,mysql有自己的補充,那就是可以部署多實例,一個實例一個端口。     1,準備好mysql環境…

    2017-11-16
  • Linux命令小總結

                     隨著對Linux學習的深入,Linux命令也越來越多的。雖然我們可以通過man等幫助查詢我 忘記的命令,但寫腳本本質是由命令有序的堆砌而運行的。下面讓我來總結一番我們學習過的命令 &nb…

    2017-07-30
  • 第三周作業

      1. who |cut -d ” ” -f1|uniq 2.who |head -1 3.cat /etc/passwd | cut -d: -f7|uniq -c |sort -n|tail -1|grep -o “/[[:alnum:]].*” 4. cat /etc/passwd |sort…

    2017-12-16
  • 網絡基礎

    1、OSI模型七層結構 應用層   為應用程序進程提供網絡服務   提供用戶身份驗證   表示層     確保接收系統可以讀出該數據     格式化數據     構建數據 &nbs…

    Linux干貨 2016-09-06
  • linux終端類型

    人機交互界面:GUI、CLI GUI: gnome:c,gtk kde:c++,qt CLI: bash,zsh,sh,csh,ksh 不同CLI間跳轉:alt+f1\f2\f3\f4   終端類型: 物理終端、控制臺終端:/dev/console,控制臺console 計算機顯示器通常被稱為控制臺終端(Console) 虛擬終端:/dev/tty…

    Linux干貨 2016-10-14
  • shuc之學習目標

    1,每天學習二小時 2,半年熟悉數據中心LINUX技術

    Linux干貨 2016-10-23

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-10 13:23

    寫的還是比較詳細的,有個地方 需要注意下 while [ 0 -eq 0 ] 其實就是 while true 做循環. 還有那個until 的用法也需要看下。加油~

欧美性久久久久