N25第十周博客作業

1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
        (1)post:加電自檢
                主要是bios完成,檢查主機各個組件是否完好,能否達到運行要求;
        (2)Boot Sequence:啟動順序
                這一步是按照bios的預先設置來選擇首選啟動項;
        (3)Boot Loader:引導加載器
                這一步是在選擇啟動介質后,在介質的第一扇區會有一段小程序來引導我們啟動不同的系統或內核版本;
        (4)kernel:加載內核
                 當選定內核或系統,由Bootloader將內核或系統加載到 內存中特定空間中,解壓、展開,而后把系統控制權叫給內核;
        (5)運行/sbin/init
                當內核被喚醒后,它開始完成系統的構建、加載驅動,然后開始運行第一個程序:init;
        (6)選擇默認級別:
                init會根據/etc/inittab等文件的定義來選擇默認啟動級別,完成系統開啟;
        (7)運行系統初始化腳本,完成系統初始化:
                在系統開啟后,init會根據/etc/rc.d/rc.sysinit來初始化系統,包括設置主機名、設置歡迎信息、激活udev和SELinux、掛載/etc/fstab文件中定義的所有文件系統等;
        (8)關閉對應級別下要停止的服務和啟動對應級別下需要開啟的服務:
                根據init配置文件,關閉/etc/rc.d/rc#.d/下K*的所有服務,開啟S*的所有服務,注#代表啟動級別;
        (9)設置登陸終端:
                這一步主要是開啟一個登陸接口,并為之加載環境變量、別名配置等文件,如果是5級別的話,還會開啟圖形界面,加載圖形界面所需的各種插件。

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

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

       ~]#  mkdir /mnt/{sysboot,sysroot}

       ~]#  fdisk /dev/sdb

              n–> p–>1–>+500M

              n–> p–>2–>+2G

              w

        ~]# partprobe /dev/sdb

        ~]# mkfs.ext4 /dev/sdb1

        ~]# mkfs.ext4 /dev/sdb2

        ~]# mount /dev/sdb1 /mnt/sysboot

        ~]# mount /dev/sdb2 /mnt/sysroot

        ~]# grub-install –root-directory=/mnt  /dev/sdb

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

        ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64  /mnt/sysboot/vmlinuz

        ~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /mnt/sysboot/initramfs.img     

        ~]# mkdir /mnt/sysroot/{bin,proc,lib64,mnt,sbin,…}   

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

        [root@localhost sysroot]# ldd /bin/{cat,ls,bash}

/bin/cat:

linux-vdso.so.1 =>  (0x00007fff91dff000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000)

/bin/ls:

linux-vdso.so.1 =>  (0x00007fffc3f22000)

libselinux.so.1 => /lib64/libselinux.so.1 (0x000000354ba00000)

librt.so.1 => /lib64/librt.so.1 (0x000000354b200000)

libcap.so.2 => /lib64/libcap.so.2 (0x000000354de00000)

libacl.so.1 => /lib64/libacl.so.1 (0x0000003555a00000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

libdl.so.2 => /lib64/libdl.so.2 (0x000000354aa00000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000)

libpthread.so.0 => /lib64/libpthread.so.0 (0x000000354a600000)

libattr.so.1 => /lib64/libattr.so.1 (0x0000003558600000)

/bin/bash:

linux-vdso.so.1 =>  (0x00007fff00dff000)

libtinfo.so.5 => /lib64/libtinfo.so.5 (0x000000355b200000)

libdl.so.2 => /lib64/libdl.so.2 (0x000000354aa00000)

libc.so.6 => /lib64/libc.so.6 (0x000000354a200000)

/lib64/ld-linux-x86-64.so.2 (0x0000003549a00000

[root@localhost ~]#cp /bin/{bash,ls,cat}  /mnt/sysroot/bin

[root@localhost ~]# cd /mnt/sysroot/lib64/

[root@localhost lib64]# cp /lib64/libc.so.6 ./

[root@localhost lib64]# cp /lib64/libselinux.so.1 ./

[root@localhost lib64]# cp /lib64/librt.so.1 ./

[root@localhost lib64]# cp /lib64/libcap.so.2 ./

[root@localhost lib64]# cp /lib64/libacl.so.1 ./

[root@localhost lib64]# cp /lib64/libc.so.6 ./

[root@localhost lib64]# cp /lib64/libdl.so.2 ./

[root@localhost lib64]# cp /lib64/ld-linux-x86-64.so.2 ./

[root@localhost lib64]# cp /lib64/libpthread.so.0 ./

[root@localhost lib64]# cp /lib64/libattr.so.1 ./

[root@localhost lib64]# cp /lib64/libtinfo.so.5 ./

[root@localhost lib64]# cp /lib64/libdl.so.2 ./  

[root@localhost lib64]# cp /lib64/libc.so.6 ./

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

        vim /mnt/sysboot/grub/grub.conf

            default=0

            timeout=5

            title Linux test

            root (hd0,0)

            kernel /vmlinuz ro root=/dev/sda2  selinux=0 init=/bin/bash

            initrd /initramfs.img

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

        新建虛擬機,再選擇磁盤時選擇這塊磁盤;


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

        首先安裝system-config-kickstart,然后打開;

            基本配置:主要是語言為中文,鍵盤默認,設置根密碼;

            安裝方法:根據情況選擇,以光盤驅動器為例;

            引導裝載程序選項:默認即可;

            分區信息:清除主引導記錄,然后開始添加磁盤分區,主要是根分區、swap、boot和home四個分區;

            網絡配置:最好配置一塊網卡,設定好ip等信息;

            防火墻配置:建議都先關閉,可在完成后激活;

            顯示配置:默認;            

            軟件包選擇:基本系統;

        配置好以后保存,路徑為/var/ftp/ks.cfg,然后安裝vsftpd服務,并啟動,測試是否可以正常訪問;

        然后新建一個虛擬機,在啟動時加載鏡像,在安裝界面摁esc,出現字符界面:boot::,輸入以下命令:

                linux ip=IP(根據實際情況,必須與有ftp訪問的服務器在同一網段上) netmask=NETMASK ks=ftp://ks.cfg完整路徑

        如果不出意外地話,虛擬機會根據ks.cfg來安裝部署。

             

  

4、寫一個腳本
  (1) 能接受四個參數:start, stop, restart, status
   start: 輸出“starting 腳本名 finished.”
   …
  (2) 其它任意參數,均報錯退出;

#!/bin/sh

case $1 in

start)

      echo “starting $0 finished “;;

stop)

     echo “stop $0 finished”;;

restart)

     echo “restart $0 finished”;;

status)

     echo “status $0 finished”;;

*)

   echo “error!!”

   exit 1

esac


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

  (2) 每3秒鐘,查看一次用戶是否登錄;

         #!/bin/bash

         [ $# -ne 1 ] && echo “need 1 user!!” &&exit 1

usr(){

 if who | grep $1 &>/dev/null;then

  echo “$1 is login..”

  return 0

 else

  echo “$1 is not login..”

  return 2

 fi

}

while true;do

 usr $1

 rt=$?

 [ $rt -eq 0 ] && break || sleep 3

done


6、寫一個腳本,顯示用戶選定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit

#!/bin/sh

cat <<a

=========================

cpu) display cpu info

mem) display memory info

disk) display disk info

quit) quit

=========================

a

ab() {

read -p “Please enter your choice: ”  i

case $i in

cpu)

  lscpu;;

mem)

  free -h;;

disk)

   fdisk -l  /dev/[s,h]d[a-z];;

quit)

   exit 0;;

*)

  echo “Please choose again!!”

  ab

esac

}

ab

   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
7、寫一個腳本
  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;
    當輸入的是用戶名,則調用函數顯示用戶信息;
    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit: 

#!/bin/bash

usr() {

 grep “^$1\>” /etc/passwd|awk  -F: ‘{print $3,$7}’

}

cat <<a

user)  display user info;

quit)  quit

a

ub() {

while true;do

  read -p “please input: ” i

  case $i in

    quit)

       exit 0;;

    $i)

       usr $i

       ub

  esac

done

}

ub

        

原創文章,作者:N25_韓奇洋,如若轉載,請注明出處:http://www.www58058.com/70591

(0)
N25_韓奇洋N25_韓奇洋
上一篇 2017-03-10
下一篇 2017-03-10

相關推薦

  • NFS服務

    NFS服務:       NFS:Network File System 網絡文件系統,基于內核的文件系統。 Sun公司開發,通過使用NFS,用戶和程序可以像訪 問本地文件一樣訪問遠端系統上的文件,基于RPC(Remote Procedure Call Protocol遠程過程調用)實現 。 RPC采用C/S模式??蛻魴C請求程序…

    2017-08-14
  • Linux文本處理三劍客之GNU awk的使用

    awk: Aho, Weinberger, Kernighan,報告生成器,格式化文本輸出 有多種版本:New awk(nawk),GNU awk(gawk) gawk –模式掃描和處理語言 基本用法:     awk[options] ‘program’ var=value file…   &nb…

    Linux干貨 2016-10-06
  • Mariadb數據庫復制系列(二):主主復制

       實驗二:MySQL雙主復制架構的實現 雙主的實現方式與主/從類似,僅是兩個主機即使主節點,又是對方的從節點雙主模型容易造成數據的不一致性,因此要慎用! 1、實驗環境 2、在兩個節點上安裝mariadb-server服務 3、修改兩個節點的服務器配置文件 4、兩個節點上各自啟動服務,各授權一個具有復制權限的用戶 5、查看兩個節點的二進制日志的狀態 6、在…

    Linux干貨 2016-11-24
  • shell腳本2

    使用read命令來接受輸入 使用read來把輸入值分配給一個或多個shell變量 read后面跟變量,回車輸入內容,就可以把輸入的內容賦給變量 -p指定要顯示的提示 -s 靜默輸入,一般用于密碼 輸入的內容不顯示 -n N 指定輸入的字符長度N 當輸入的內容達到了5個字符會直接結束輸入 -d‘字符’ 輸入結束符 把!作為了結束符,在輸入內容時,當輸入!會直接…

    2017-08-11
  • 譯文-Symbolic一個基于func集中式管理平臺[原創]

    Symbolic是一個開源的企業平臺,旨在建立、配置和管理您的龐大分布式數據中心為目的開源框架,代表了目前最先進的數據中心解決方案的集中管理平臺。 特征 屬于RedHat認證協議棧的應用 具于func后端應用 支持 RHEL、Centos及Fedora 先進的拖放標簽管理(Ajax) 提供Cobbler支持 靈活管理操作用戶、主機 組和權限管理標記 先進的基…

    Linux干貨 2015-03-27
  • 位置變量&特殊變量總結

    位置變量 常用的位置變量有 $1, $2, $3 ……,表示命令行傳給腳本的第一個參數,第二個參數,第三個參數。。。 $0 表示腳本的文件名,比如a.sh 位置變量在腳本中的主要作用,是讓腳本通過他們來獲取命令行傳遞給腳本的參數。 變量位置調整 shift [n] 用于調整變量位置 第n+1個位置變量會被重新命名為$1…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-15 00:41

    操作系統的啟動過程能用圖示來說明會更好~~cp的那部分可以使用循環~~繼續加油~

欧美性久久久久