N21沉舟第十周作業

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

linux啟動流程.jpg

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/sd
~]# grub-install --root-directory=/mnt/sd /dev/sdb
~]# cp /boot/vmlinuz-2.6.32-504.el6.x86_64 /mnt/sd/vmlinuz
~]# cp /boot/initramfs-2.6.32-504.el6.x86_64.img /mnt/sd/initramfs.img
~]# cp /boot/grub/grub.conf /mnt/sd/boot/grub/grub.conf
~]# cat /sdb1/boot/grub/grub.conf
            default=0
            timeout=5
            hiddenmenu
            title CentOS 6 (test new)
            root (hd0,0)
            kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
            initrd /initramfs.img
~]# umount /dev/sdb1                                             #卸載分區1
~]# mount /dev/sdb2 /mnt                                          #掛載分區2
~]# mkdir -p /mnt/{bin,sbin,lib,lib64,etc,home,root,media,mnt,dev,tmp}
~]# mkdir -p /mnt/{usr/{bin,sbin,lib,lib64},var{lib,lib64,log,local,cache},proc,sys,selinux}
~]# cp /bin/{bash,ls,cat} /mnt/bin
~]# cp `ldd /bin/{bash,ls,cat}|grep -eo "/lib.*[[:space:]]"| sort -u` /mnt/lib      #復制lib文件
~]# sync                                                     #同步
~]# init 6           #重啟 
     #進入bios,設置硬盤啟動順序

  

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

#命令段
firewall --disabled                                    //禁用防火墻
install                                                //執行新安裝
cdrom                                                  //用光盤安裝
rootpw --iscrypted $1$TxkJ7T6B$obLELgEGcn0uzgA3QTAPl/  //管理員加密密碼
auth  --useshadow  --passalgo=sha512                   //屏蔽密碼算法
graphical                                              //安裝圖形環境
firstboot --disable                                    //首次引導禁用代理
keyboard us                                            //安裝鍵盤類型
lang en_US                                             //默認語言
selinux --enforcing                                    //激活selinux
logging --level=info                                   //信息等級
timezone  Asia/Hong_Kong                               //系統時區
bootloader --location=mbr                              //在MBR上安裝引導程序
clearpart --all                                        //刪除所有現存分區  
part /boot --fstype="ext4" --size=500                  //分區掛載
part / --fstype="ext4" --size=10000
#腳本段
%pre                                                   //安裝前腳本
echo "start"
%end
%post                                                  //安裝后腳本
echo "end"
%end
#程序包段
%packages
@chinese-support                                       //中文支持
@development                                           //開發工具
@graphical-admin-tools                                 //圖形化工具
@remote-desktop-clients                                //遠程桌面客戶端
git
-ibus-table-cangjie
-ibus-table-erbi
-ibus-table-wubi
%end

 簡單引導鏡像光盤制作:

 
    (1)復制系統安裝光盤/Packages /repodata外的所有目錄下的所有文件到一自制目錄中(/tmp/myiso/)
    (2)創建引導光盤:把myiso目錄創建為光盤鏡像boot.iso
 
    ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table 
        -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin 
        -c isolinux/boot.cat -o /root/boot.iso /tmp/myiso/

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 "$0 is running."
                ;;
            *)
                echo "wrong input."
                exit 1
               ;;
            ssac

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;

  (1) 如果登錄了,則顯示用戶登錄,腳本終止;

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

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

6、寫一個腳本,顯示用戶選定要查看的信息;

   cpu) display cpu info

   mem) display memory info

   disk) display disk info

   quit) quit

   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

                #!/bin/bash
        #
        
        while [ 1 -eq 1 ];do
        
        echo "please input a option:"
        echo "mem: display memory info."
        echo "disk: display disk info."
        echo "quit: quit mean."
        read -p ":" test
        
        case $test in
        cpu)
            cat /proc/cpuinfo
            ;;
        mem)
            free -m
            ;;
        disk)
           fdisk -l
           ;;
        quit)
           exit 0
           ;;
        *)
           echo "you have wrong choose."
           continue
            ;;
        esac
        
        done

7、寫一個腳本

  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;

  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;

    當輸入的是用戶名,則調用函數顯示用戶信息;

    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit: 

            #!/bin/bash            
            #
            function userid {
               while [ 1 -eq 1 ];do
               read -p "please input a username:" uname
                  if id $uname&>/dev/null;then
                      uuid=$(grep "^$uname" /etc/passwd|cut -d: -f3 )
                      ushell=`grep "^$uname" /etc/passwd|cut -d: -f7`
                      echo "user $uname UUID is $uuid."
                      echo "user $uname shell is $ushell"
                  else
                        if [ $uname == "quit" ];then
                               exit 1
                        else
                            echo "please input a right username."
                             continue
                        fi
                   fi
               done
            }
            userid

8、寫一個腳本,完成如下功能(使用函數)

   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;

   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;

   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;

            #!/bin/bash            
            #
            function comdso {
            read -p "input a command:" comd
              dirname=`dirname $(which $comd)`
              if [ -d /mnt/sysroot`which $comd` ];then
                cp -r `which $comd` /mnt/sysroot`which $comd`
              else
                mkdir -p /mnt/sysroot$dirname
                cp -r `which $comd` /mnt/sysroot`which $comd`
              fi
                for i in `ldd $(which $comd) |grep -o "/lib.*[[:space:]]"`;do
                    dirname=`dirname $i`
                    if [ -d /mnt/sysroot$dirname ];then
                    cp -r $i  /mnt/sysroot$i
                  else
                  mkdir -p /mnt/sysroot$dirname
                    cp -r $i  /mnt/sysroot/usr$i
                    fi
                 done
            }
            comdso

原創文章,作者:N21-沉舟,如若轉載,請注明出處:http://www.www58058.com/44809

(0)
N21-沉舟N21-沉舟
上一篇 2016-09-10
下一篇 2016-09-10

相關推薦

  • linux計劃任務

    任務計劃的分類: 一次性的任務計劃:只執行一次 周期性的任務計劃:每隔一定的周期去做相同的事情 設置任務計劃功能的工具:at和crontab at:專門處理一次性的計劃任務 crontab:根據定義的周期信息,循環做一些事情 batch:系統自行選擇空閑時間去執行此處指定的任務 At命令: 查看atd狀態和啟動atd服務及其配置文件路徑: centos6:s…

    2017-09-09
  • linux發展史

    Linux 發展史 說明 此前對linux認識模糊一知半解,近期通過學習將自己對于linux的發展總結一下方便大家日后的學習。那Linux是目前一款非常火熱的開源操作系統,可是linux是什么時候出現的,又是因為什么樣的原因被開發出來的呢。以下將對linux的發展歷程進行詳細的講解。    目錄 一、Linux發展背景 二、UINIX的誕…

    Linux干貨 2016-10-14
  • Linux的硬鏈接與軟鏈接

    Linux 的硬鏈接與軟鏈接 文件由文件名與數據組成,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode…

    Linux干貨 2016-10-25
  • Kickstart實現CentOS 6.5的網絡自動安裝

    1.KickStart KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,并生成一個名為ks.cfg的文件;在其后的安裝過程中(不只局限于生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找KickStart生成的文件,當找到合適的參數時,就采用找到的…

    Linux干貨 2016-10-24
  • 文本三劍客之sed

      文本處理三劍客:    grep,egrep,fgrep:文本過濾器    sed:stream  editor,流編輯器,是一行一行處理的    awk :文本格式化工具,報告生成器     sed工作方式:它是讀一行的文本…

    Linux干貨 2016-08-15
  • 計算機基礎知識點

    說明:(僅僅記錄個人認為重要的內容) CPU的相關概念 主頻:主頻是cpu的時鐘頻率(cpu clock speed),是cpu運算時的工作頻率(1秒內發生的同步脈沖數) 的簡稱。單位是HZ,一般 來說,主頻越高,cpu的速度越快。由于內部結構的不同,并非所有的時鐘頻率 相同的cpu的性能都一樣  外頻:系統…

    Linux干貨 2017-02-14
欧美性久久久久