N22-妙手-第十周博客作業

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

2016-10-21 14_21_15-演示文稿1 - PowerPoint.png

    (1) POST階段

        加電自檢,確保每個設備能正常工作

    (2) BIOS

        按次序查找跟引導設備,第一個有引導程序的設備即為本次啟動要用到的設備

    (3) Bootloader:引導加載器

        GRUB:提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本;把用戶選擇的系統或內核版本裝載到內存特定的空間中解壓、展開,完成后將控制權交給內核

    (4) Kernel:

        自身初始化:

        探測可識別到的所有硬件設備

        加載硬件驅動設備。

        注意:如果不能識別設備,需要臨時生成ramdisk來動態識別設備的驅動,并加載硬件設備

    (5) roofts:

        只讀的方式掛載跟文件系統

    (6) /sbin/init:開始啟動用戶空間程序

        設置默認運行級別

        運行系統初始化腳本:腳本存放位置:/etc/rc.d/rc.sysinit

        設置主機名

        設置歡迎信息

        激活udev和SELinux

        掛載/etc/fstab文件中定義的所有文件系統

        檢測跟文件系統,如果一切正常,以讀寫方式重新掛載根文件系統

        設置系統時鐘

        根據/etc/sysctl.conf文件的設置,設置內核參數

        激活lvm及raid設備

        激活swap設備

        加載額外的設備的驅動程序

        清理操作

        關閉對應級別需要停止的服務,啟動對應級別需要開啟的服務

        設置登錄終端

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

    (1) 為硬盤新建兩個主分區;并為其安裝grub;

        創建分區:

21.png

        安裝grub

N22-妙手-第十周博客作業22.png

    (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;

        內核和ramdisk文件

N22-妙手-第十周博客作業23.png

        第二個分區上的rootfs

N22-妙手-第十周博客作業24.png

    (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;

N22-妙手-第十周博客作業25.png

    (4) 為grub提供配置文件;

        grub.conf配置文件放置于/tmp/boot/grub

N22-妙手-第十周博客作業26.png

    (5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;

        新建目標主機:Test Installation of Grub

N22-妙手-第十周博客作業27.png

        啟動正常

28.png

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

    (1) 制作kickstart文件

        安裝制作kickstart文件程序

            yum -y install system-config-kickstart

        啟動制作kickstart文件程序

            ksystem-config-kickstart

    

    (2) 制作引導鏡像

        在根用戶家目錄下創建myboot目錄

        掛載光盤鏡像至/media/cdrom

        復制/media/cdrom/isolinux目錄至/root/myboot

        復制制作完成的ks.cfg至/root/myboot目錄下

        創建光盤鏡像:mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/

31.png

        在VMWare中選擇boot.iso作為引導鏡像

32.png

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

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

#!/bin/bash
#
cat << EOF
start)   start the service
stop)    stop the service
restart) restart the service
status)  check the status of the service
*****************************************
*****************************************
EOF

read -p "Please input your selection: " selection

case $selection in
start) 
    echo "starting $0 finished"
    ;;
stop)
    echo "stopping $0 finished"
    ;;
restart)
    echo "restarting $0 finished"
    ;;
status)
    echo "checking the status of $0 finished"
    ;;
*)
    echo "please input valid selection"
    ;;
esac

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

#!/bin/bash
#

while true; do
    if who | grep "^meng\>" >& /dev/null; then
        break
    fi
    sleep 3
done

echo "$(date +"%F %T") meng login" >> /tmp/userinfo.log

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

#!/bin/bash
#
cat << EOF
Display information as following shown selection
cpu) display cpu info
mem) display memory info
disk) display disk info
quit) quit
************************************************
EOF

while true; do
    read -p "Please input your selection: " selection

    case $selection in
    cpu) 
        lscpu
        ;;
    mem)
        free -m
        ;;
    disk) 
        fdisk -l /dev/vd[a-z]
        ;;
    quit)
        echo "Bye Bye"
        exit 0
        ;;
    *)
        echo "Please input valid selection"
        ;;
    esac
done

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

#!/bin/bash
#


userInfo() {
        local userLine=$(grep $1 /etc/passwd)
        local userSHELL=${userLine##*:}
        local userID=$(echo $userLine | cut -f3 -d:)
        echo "$userSHELL and $userID"
        
}

quit() {
    if [ "$1" == "quit" ]; then
        echo "Bye Bye"
        exit 2
    fi
}
 
while true; do
    read -p "Please input your username or input 'quit': " choice

    if [ "$choice" == "quit" ]; then
        quit $choice
        break
    fi

    if id $choice >& /dev/null; then
        userInfo $choice
    fi
done

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

read -p "Please input a command: " cmd

cmdPath=$(which $cmd | grep bin)

cpCmd() {

cp $cmdPath /mnt/sysroot$cmdpath
echo "Copy $cmdPath to path /mnt/sysroot/"

}

cpFile() {

libFile=$(ldd $cmdPath | grep -o "/[^[:space:]]\{1,\}")
for i in $libFile; do

    cp $lib /mnt/sysroot$cmdPath
    echo "Copy $libFile to path/mnt/sysroot/$cmdPath"
done
}

cpCmd

cpFile

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

(0)
mxb93mxb93
上一篇 2016-12-05
下一篇 2016-12-05

相關推薦

  • linux 網路管理路由和team網絡組

    如何實現把linux當路由器來使用,實現不同網段之間的通信訪問,這就是今天所要實現的路由配置   環境準備:4臺虛擬機,兩臺中間兩臺作為路由器來使用(每天主機兩塊網卡),其他兩臺作為終端主機,目的是讓不同網段的兩臺主機之間互相訪問(這里在vmware里面做的實驗,所以網卡的類型都設置為橋接)   拓撲圖:   步驟一:將A、D兩…

    Linux干貨 2017-05-07
  • 磁盤管理

     磁盤管理  1 磁盤的結構  設備文件     I/O Ports: I/O設備地址 ? 一切皆文件: open(), read(), write(), close() ? 設備類型: 塊設備:block,存取單位“塊”,磁盤 字符設備:char,存取單位“字符”,鍵盤 ? 設備文件:關聯至一個設備驅動程序…

    Linux干貨 2016-08-26
  • linux系統啟動流程及內核編譯

    Linux系統啟動流程 initialization [??n???la?'ze??n] 初始化 內核參數: /usr/share/doc/kernel-doc-VERSION/Documentation 系統初始化流程(內核級別): POST –> BootSequence(BIOS) –> BootLoade…

    Linux干貨 2016-09-19
  • Openssl加密解密原理+CA自建實現

     Openssl加密解密原理+CA自建實現     前言 互聯網的驚人發展使企業和消費者都感到非常興奮,它正改變著我們的生活和工作方式。但是,互聯網的安全程度如何——尤其是在通過它發送機密信息時的安全性——已經成為人們關心的主要問題。隨著時代的發展,加密原理也不斷地在更新換代. 數據的加密目前已廣泛地運用于戰爭,商業活…

    Linux干貨 2015-05-25
  • Python高階函數和裝飾器

    高階函數 First Class Object 函數在Python中是一等公民 函數也是對象,可調用(callable)的對象 函數可以作為普通變量、參數、返回值等等 高階函數 數學概念y=g(f(x)) 在Python中,高階函數應該滿足下列至少一個條件 接受一個或者多個函數作為參數 輸出一個函數 計數器 def counter(base): def in…

    Linux干貨 2017-10-23
  • 文件元數據信息詳解

    文件元數據信息詳解 文件的元數據是什么? 文件的數據分為兩類:一類為數據,即文件的實際內容;另一類為元數據,用來描述文件的特征。 元數據內容: 文件名 文件大小 文件所在數據塊 數據塊的大小 文件類型 文件所在的Inode 硬鏈接次數 權限 屬主id 屬組id 最近一次訪問時間戳 最近一次更改文件內容的時間戳 最近一次更改文件元數據的時間戳 查看文件的元數據…

    Linux干貨 2017-07-09
欧美性久久久久