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 08:15
下一篇 2016-09-10 08:16

相關推薦

  • RPM與YUM安裝工具介紹與初步使用、編譯apache2

      RPM可以對程序 進行安裝、卸載、查詢、校驗和維護     rpm(raedhat package mananger),一以種數據庫記錄的方式將需要的軟件安裝到linux系統的一種機制。     RPM最大的特點是將要安裝的軟件先編譯過,并且打包成為RPM機制的安裝包,通過包…

    Linux干貨 2016-06-01
  • LVM基本應用,擴展以及縮減的實現

    這是一篇馬哥課堂博客作業,這次換個表現方式寫,前面先寫總體的操作過程,后面顯示詳情 其實馬哥視頻講的非常詳盡,聽起來特別容易理解,只是讓我要寫出來那得費九牛二虎之力,估計還得照著視頻寫。如下僅是看過視頻之后的一個操作過程,比較粗糙,僅僅是作業。。。 LVM:logical volume manager version2 邏輯卷管理系統 PV:physical…

    Linux干貨 2016-06-28
  • 小白易患錯誤之絕對路徑和相對路徑的操作錯誤

    小白易患錯誤之絕對路徑和相對路徑的操作錯誤 作為一個不安穩的小白,一天都在那路亂折騰,恰巧,老師課程題目中有一題將/etc/skel 這個目錄的文件除了..和. 復制到/home/USRNAEM 的家目錄下。然后自以為是不按照老師的方法,自己折騰用了這樣一條命令 [root@local skel]# ls -A .bash_lo…

    Linux干貨 2016-08-05
  • 加深對grep命令和find命令的熟悉

    1、顯示當前系統上root、fedora或user1用戶的默認shell。 grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f7 [root@localhost ~]# grep -E “^(root|fedora|user1)\>” /etc/passwd …

    Linux干貨 2017-07-30
  • 馬哥教育網絡班21期-第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1.復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加# [root@junfeng ~]# cp /etc/rc.d/rc.sysinit /tmp [root@junfeng&nbs…

    Linux干貨 2016-08-15
  • linux學習記錄

    vm使用記錄 1、安裝vm程序; 2、下載Cenos—6.4*86_64_bin-DVD1.iso 安裝: 1、新建一個虛擬機; 2、選擇自定義安裝(高級); 3、兼容性選擇默認方式; 4、安裝客戶機操作系統(選擇稍后安裝操作系統方式); 5、選擇客戶機操作系統(選擇Linux系統,版本號(選擇自己下載的Linux系統版本,例如centos等)); 6、命名…

    Linux干貨 2015-12-10
欧美性久久久久