馬哥教育網絡21期+第十周練習博客

馬哥教育網絡21期+第十周練習博客

1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)
CentOS啟動流程:1,加電自檢->Boot Sequence-->加載內核文件
BOOT Sequence中包含了MBR和GRUB
    MBR:記錄磁盤扇區,共512字節,前446個字節BootLoader 后4*16的64個字節是存放分區信息
    grub:MBR中的前446個字節,她的左右要選擇啟動的內核。
加載內核啟動文件:
    kernel初始化,探測可識別的所有硬件設備,記載硬件驅動,以只讀方式掛載根文件系統,運行用戶控件的下的第一個啟動程序/sbin/init程序;


2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;
  (1) 為硬盤新建兩個主分區;并為其安裝grub;
  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;
  (3) 為rootfs提供bash、ls、cat程序及所依賴的庫文件;
  (4) 為grub提供配置文件;
  (5) 將新的硬盤設置為第一啟動項并能夠正常啟動目標主機;
    1,加載新的磁盤使用fdisk修改新的磁盤分區:
    [root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x79c69071

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  83  Linux
/dev/sdb2             263        2610    18860310   83  Linux
然后將指定磁盤掛載至指定文件系統上
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
[root@localhost mnt]# ls
boot  sysroot
將指定的磁盤掛載至文件系統上:
    [root@localhost mnt]# mount /dev/sdb1 /mnt/boot/
    [root@localhost mnt]# mount /dev/sdb2 /mnt/sysroot/
將原來的grub文件中的內核文件,grub文件以及rootfs文件復制到新的grub文件中!
    [root@localhost ~]# cp -a /boot/vmlinuz-2.6.32-642.4.2.el6.x86_64 /mnt/boot/vmlinuz
    [root@localhost ~]# cp -a /boot/initramfs-2.6.32-642.4.2.el6.x86_64.img /mnt/boot/initramfs.img
安裝grub到指定的grub中:
    [root@localhost boot]# grub-install --root-directory=/mnt /dev/sdb
    Probing devices to guess BIOS drives. This may take a long time.
    Installation finished. No error reported.
    This is the contents of the device map /mnt/boot/grub/device.map.
    Check if this is correct or not. If any of the lines is incorrect,
    fix it and re-run the script `grub-install'.

    (fd0)   /dev/fd0
    (hd0)   /dev/sda
    (hd1)   /dev/sdb
    [root@localhost boot]# cd /mnt/sysroot/
    [root@localhost sysroot]# mkdir -pv etc bin sbin lib lib64 dev proc sys tmp var usr home root mnt media
復制bash;ls;cat;所依賴的庫文件
[root@localhost sysroot]# cp /bin/bash /bin/ls /bin/cat /mnt/sysroot/bin/
使用ldd查看所需要的軟件的依賴的庫文件:
[root@localhost sysroot]# cp `ldd /bin/bash | sed '1d'| grep -Eo "/.*[0-9] "` /mnt/sysroot/lib64/
[root@localhost sysroot]# cp `ldd /bin/ls | sed '1d'| grep -Eo "/.*[0-9] "` /mnt/sysroot/lib64/
[root@localhost sysroot]# cp `ldd /bin/cat | sed '1d'| grep -Eo "/.*[0-9] "` /mnt/sysroot/lib64/
在grub中記得修改配置文件:
     timeout=5
     title CentOS (Expres)
     root (hd0,0)
     kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
     initrd /initramfs.img



3、制作一個kickstart文件以及一個引導鏡像。描述其過程。
1、anaconda的配置方式:
(1) 交互式配置方式;
(2) 通過讀取事先給定的配置文件自動完成配置;
a)按特定語法給出的配置選項;
   kickstart文件;
  b)安裝引導選項:
    text: 文本安裝方式
    method: 手動指定使用的安裝方法
  c)與網絡相關的引導選項:
    ip=IPADDR
    netmask=MASK
    gateway=GW
    dns=DNS_SERVER_IP
    ifname=NAME:MAC_ADDR
          d)與遠程訪問功能相關的引導選項:
    vnc
    vncpassword='PASSWORD'
          e)指明kickstart文件的位置
    ks=
    DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
    Hard drive: ks=hd:/device/drectory/KICKSTART_FILE
    HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
    FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
    HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
  f)啟動緊急救援模式:
    rescue

2、 kickstart文件的格式:
  a)命令段:指明各種安裝前配置,如鍵盤類型等;
  b)程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
        %packages
        @group_name
        package
        -package
        %end
  c)腳本段:
        %pre: 安裝前腳本
            d)運行環境:運行于安裝介質上的微型Linux環境
       %post: 安裝后腳本
   運行環境:安裝完成的系統;

命令段中的命令: 必備命令 authconfig: 認證方式配置 authconfig –useshadow –passalgo=sha512 bootloader:bootloader的安裝位置及相關配置 bootloader –location=mbr –driveorder=sda –append="crashkernel=auto crashkernel=auto rhgb rhgb quiet quiet" keyboard: 設定鍵盤類型 lang: 語言類型 part: 創建分區 rootpw: 指明root的密碼 timezone: 時區 可選命令 install OR upgrade text: 文本安裝界面 network firewall selinux halt poweroff reboot repo user:安裝完成后為系統創建新用戶 url: 指明安裝源 3、創建kickstart文件的方式: (1) 直接手動編輯; 依據某模板修改; (2) 可使用創建工具:system-config-kickstart (CentOS 6) 依據某模板修改并生成新配置; 4、檢查ks文件的語法錯誤:ksvalidator # ksvalidator /PATH/TO/KICKSTARTFILE 5、創建引導光盤: # mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 – boot-info-table -V “CentOS 6.8 x8664 boot” -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/ [root@localhost ~]# yum install system-config-kickstart [root@localhost ~]# system-config-kickstart # 進入圖形界面 4、寫一個腳本 4、寫一個腳本 (1) 能接受四個參數:start, stop, restart, status start: 輸出“starting 腳本名 finished.” … (2) 其它任意參數,均報錯退出; [root@localhost bin]# cat 12.sh #!/bin/bash # read -p "Please input parameters such as (start,stop,restart,status) :" option # if [ "$option" = 'start' ];then echo "starting $option finished" elif [ "$option" = 'stop' ];then echo "stop $option finished" elif [ "$option" = 'restart' ];then echo "restart $option finished" elif [ "$option" = 'status' ];then echo "status $option finished" elif [ "$option" != 'start' -a "$option" != 'stop' -a "$option" != 'restart' -a "$option" != 'status' ];then echo "please enter start|stop|restart|status." fi

5、寫一個腳本,判斷給定的用戶是否登錄了當前系統;
  (1) 如果登錄了,則顯示用戶登錄,腳本終止;
  (2) 每3秒鐘,查看一次用戶是否登錄;
    [root@localhost bin]# cat user1.sh 
    #!/bin/bash
    #
    read -p "Please enter your user name:" username
    while true ;do
       if who | grep "^$username" &> /dev/null ;then
          break
       fi
       sleep 3
    done
    echo "$username logging."

6、寫一個腳本,顯示用戶選定要查看的信息;
   cpu) display cpu info
   mem) display memory info
   disk) display disk info
   quit) quit
   非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;
    [root@localhost bin]# cat canshu2.sh 
    #!/bin/bash
    #
    cat << EOF
    cpu ) show cpu information;
    mem ) show memory information;
    disk) show disk information;
    quit) quit
    ============================
    EOF
    read -p "Please enter the above parameters:" option
    while [ "$option" != 'cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ];do
       read -p "Please input parameters again, must give the prompt characters:" option
    done
    case "$option" in
    cpu)
      lscpu
       ;;
    mem)
      cat /proc/meminfo
      ;;
    disk)
      fdisk -l
      ;;
    *)
     echo "Quit..."
     exit 0
      ;;
    esac

7、寫一個腳本
  (1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;
  (2) 提示用戶輸入一個用戶名或輸入“quit”退出;
    當輸入的是用戶名,則調用函數顯示用戶信息;
    當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:
    [root@localhost bin]# cat user4.sh 
    #!/bin/bash
    info() {
            id $username &> /dev/null
            if [ $? -ne 0 ];then
                    echo "the user is not exist!"
            else
                    grep "^$username" /etc/passwd |awk -F: '{printf "USER ID:%u\nUSER SHELL:%s\n" ,$3,$NF}'
            fi
    }
    read -p "please input a username or quit:" username
    while true;do
            if [ $username == "quit" ];then
                    exit 0
            else
                    info
                    read -p "please input a username or quit:" username
            fi
    done

8、寫一個腳本,完成如下功能(使用函數)
   (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;
   (2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;
   (3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;
    [root@localhost bin]# cat 13.sh 
    #!/bin/bash
    #
    read -p "Please enter a command parameter:" option
    #
    i=`which $option | grep "bin"`
    j () {
       cp $option /mnt/sysroot/$option
       echo "copy $option path to /mnt/sysroot$option over."
    }
    u () {
       lib=`ldd $option | grep -o "\[^[:space:]\{1,\}"`
       for i in $lib ;do
           cp $lib /mnt/sysroot/$option
           echo "copy $option lib to /mnt/sysroot/$option over."
       done
    }
    j
    u

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

(0)
wostopwostop
上一篇 2016-09-19 12:03
下一篇 2016-09-19 13:47

相關推薦

  • thinkpad e420編譯安裝thinkfan控制風扇

    我的筆記本是win7+linuxmint雙系統,在進入linuxmint長時間運行后會明顯感覺發熱,我發現筆記本風扇的轉數過低,導致熱量不能發散出去,解決方法就是安裝thinkfan風扇控制軟件。 1、下載軟件包 https://sourceforge.net/projects/thinkfan/ 最新版本是1.0beta2 2、編譯安裝 編譯前確保安裝過c…

    Linux干貨 2017-03-09
  • ?RAID使用手冊

    RAID使用手冊 RAID演示

    Linux干貨 2016-09-02
  • 優云automation實踐技巧:簡單4步完成自動化構建發布

    前言:本文介紹了優云是如何將運維自動化產品應用到日常工作實踐中,并通過內部用戶的大量使用來不斷改進產品的用戶體驗。 各位看官,這不是一個揭發單身有為青年因同事們天天秀恩愛而受到一萬點暴擊傷害的故事。這里指的狗糧,不是真正的“狗糧”——當然,也不是你們認為的狗糧。 事實上,現在很多涉足產品開發的互聯網公司,都會提到“吃狗糧”這一概念(出自“Eating you…

    系統運維 2017-01-09
  • 配置路由實例

    路由的分類和管理 路由:跨網絡通信; 路由分類:     主機路由     網絡路由     默認路由 路由管理命令: route 命令是在本地 IP 路由表中顯示和修改條目網絡命令; 查看:route -n 添加:route add ro…

    Linux干貨 2016-09-12
  • 馬哥教育網絡班21期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@itop ~]# fdisk /dev/sda&nbsp…

    Linux干貨 2016-08-30
  • iptables/netfilter入門

      iptables是Linux中的重要組件,它是對報文進行過濾,在2001年的1月Linux 2.4內核發布以來,就已經是Linux的一部分了。     現在的iptbales已經成為了功能很大的防火墻,具備了專有的商業防火墻的大多數的功能了。 1、防火墻簡介 2、iptables/netfilter簡介 …

    Linux干貨 2017-01-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-19 17:36

    格式是怎么搞的?。縿e的都非常棒

欧美性久久久久