馬哥教育網絡19期+第十周課程練習

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

a).POST加電自檢;
b).讀取BIOS來識別啟動系統的存儲設備
c).設備中的MBR,bootloader的前446字節,是選擇啟動的grub,后面的4*16個字節是存放分區信息的,最后兩個字節是校驗信息的;
d).啟動init進程:
    讀取/etc/inittab,選擇默認級別;
    執行初始化系統腳本,/etc/rc.d/rc.sysinit;
    執行/etc/rc.d/rcX.d/下的腳本,我選擇的默認級別是3,所以讀取rc5.d下的所有腳本,來控制系統啟動的時候啟動或關閉那些服務。

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

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

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

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

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

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

[root@Hao ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7d5160c9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (655-2610, default 655): 
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@Hao ~]# mke2fs -t ext4 /dev/sdb1
[root@Hao ~]# mke2fs -t ext4 /dev/sdb2
[root@Hao ~]# mkdir /newdir
[root@Hao ~]# mount /dev/sdb1 /newdir/
[root@Hao ~]# grub-install --root-directory=/newdir/ /dev/sdb1
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 /newdir//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@Hao ~]# cp /boot/initramfs-2.6.32-431.el6.x86_64.img /newdir/initramfs
[root@Hao ~]# cp /boot/vmlinuz-2.6.32-431.el6.x86_64 /newdir/vmlinuz
[root@Hao ~]# mkdir -pv /newdir/boot/grub/
[root@Hao ~]# vim /newdir/boot/grub//grub.conf
        default=0
        timeout=3
        title CentOS6.5
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
        initrd /initramfs
[root@Hao ~]# umount /dev/sdb1
[root@Hao ~]# mount /dev/sdb2 /newdir/
[root@Hao ~]# mkdir -p /newdir/{bin,sbin,lib,lib64,etc,home,root,media,mnt,dev,tmp}
[root@Hao ~]# mkdir -p /newdir/{usr/{bin,sbin,lib,lib64},var{lib,lib64,log,local,cache},proc,sys,selinux}
[root@Hao ~]# cp /bin/{bash,ls,cat} /mnt/bin
[root@Hao ~]# cp `ldd /bin/{bash,ls,cat}| grep -eo "/lib.*[[:space:]]"  sort -u` /newdir/lib                                             
[root@Hao ~]# sync

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

1.anaconda應用程序支持通過讀取配置文件的內容來完成安裝過程的配置,配置文件稱kickstart文件(在centos或紅帽系列),文件在/root目錄下,這種方法批量部署時需要用到。       
2.kickstart文件的組成:
  命令段
  程序包段:%packages, %end      #表示要安裝的程序包
       @group                                   #安裝包組
       package                                   #要裝的包
       -package                                  #不安裝package包
  腳本段:
       %pre                                    #安裝前腳本:安裝過程開始之前要執行的腳本;
       %post                                    # 安裝后腳本:安裝過程完成之后要執行的腳本;             
3.kickstart命令段,分為兩類:必備命令 和 可選命令(輔助完成一些功能) 
   1.配置kickstart的方式:
       (1) 手動編輯配置文件;       
       (2) system-config-kickstart,GUI工具;安裝命令system-config-kickstart的程序包名與命令名相同;                          
   2.安裝過程如何獲取并使用kickstart文件:
       (1)放置于安裝程序能夠獲取到的位置;
         a.放置于光盤鏡像;
         b.網絡文件服務器;   
   3.安裝過程過程中的安裝引導選項
       (1).boot:
         linux     #啟動默認安裝模式
           linux text     #啟動文本安裝模式
                   
       (2).與網絡相關的引導選項:
         ip=IPADDR
         netmask=MASK
         gateway=GW
         dns=DNS_SERVER_IP
         ifname=NAME:MAC_ADDR     #網卡名                              
       (3).指明獲取 kickstart 文件的路徑
         DVD drive  ks=cdrom:/path/to/kickstart_file
         HTTP Server  ks=http://server_ip:port/path/to/kickstart_file
         HTTPS Server ks=https://server_ip:port/path/to/kickstart_file
          FTP Server   ks=ftp://serverip:port/path/to/kickstart_file
         NFS Server   ks=nfs:server_ip:/path/to/kickstart_file
下面演示怎樣創建一個引導光盤:
  (1) 首先準備工作目錄,例如這里使用/tmp/cdrom;
      <span style="font-size:16px;font-family:'微軟雅黑', 'Microsoft YaHei';">#mkdir /tmp/cdrom<br></span>    
               
  (2) 掛載系統發行光盤,復制isolinux目錄至/tmp/cdrom;
     #mount /dev/sr0 /media/Centos-VERSION    
     #cp /media/Centos-VERSION  /tmp/cdrom/    
  (3)用命令system-config-keckstart制作kickstart文件, 復制制作好的kickstart文件ks.cfg至/tmp/cdrom某位置; 
      #system-config-kickstart#cp ks.cfg /tmp/cdrom    
  (4) 如果需要,可以編輯/tmp/cdrom/isolinux/isolinux.cfg,在某label后的append指令后附加ks=信息,從而實現自動調用光盤上提供的ks文件;
  (5) 創建iso鏡像,采用命令mkios創建好之后會生成一個boot.iso文件,boot.iso文件就是我們的引導鏡像,到這兒我們的鏡像就制作完畢了 
    # mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/    
  (6)如果需要的話,可以用sftp將制作好的boot.iso鏡像復制到windows上面,然后新建一個虛擬機,在虛擬機中調整啟動次序為光盤啟動,即我們的boot.iso,引導啟動即可

4、寫一個腳本

  (1) 能接受四個參數:start, stop, restart, status

   start: 輸出“starting 腳本名 finished.”

   …

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

#!/bin/bash

if [ $# -eq 1 ];then
case $1 in
start)
echo "starting $0 finished."
;;
stop)
echo "stopping $0 finished."
;;
restart)
echo "restart $0 finished."
;;
status)
echo "status $0 finished."
;;
*)
echo "Wrong input"
exit 1
;;
esac
else
echo "Can not be empty!"
fi

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

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

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

#!/bin/bash
#
read -p "input username: " username
while true; do
    if who | grep "^$username" &> /dev/null; then
        break
    fi
    sleep 3
done
 
echo "$username already logged in."

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

   cpu) display cpu info

   mem) display memory info

   disk) display disk info

   quit) quit

#!/bin/bash
#
cat << EOF
cpu) show cpu information;
mem) show memory information;
disk) show disk information;
quit) quit
============================
EOF
 
read -p "Enter a option: " option
while [ "$option" != 'cpu' -a "$option" != 'mem' -a "$option" != 'disk' -a "$option" != 'quit' ]; do
    read -p "Wrong option, Enter again: " 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: 

#!/bin/bash
#
function getinfo {
 
if id $op &> /dev/null;then
    grep -E '^('$op')\>' /etc/passwd | cut -d: -f1,3,7;read -p "Enter a username or quit:" op
else 
    read -p  "wrong argument,plsease enter a username or quit:" op
fi
}
 
read -p "Enter a username or quit:" op
while [[ $op != "quit" ]];do
    getinfo $op
done

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

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

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

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

#!/bin/bash
read -p "Enter a commond:" cmd
path() {
     whereis $cmd | cut -d' ' -f2
}
ldd $(path $1)| sed '1d'| grep -Eo "/.*[0-9] " > path.txt
cp $(path $1) /mnt/sysroot$(path $1)
while read line;do
    cp $line /mnt/sysroot$line
done < ./path.txt

原創文章,作者:Net19_口香糖,如若轉載,請注明出處:http://www.www58058.com/23910

(0)
Net19_口香糖Net19_口香糖
上一篇 2016-07-16 22:26
下一篇 2016-07-16 22:26

相關推薦

  • 特殊權限

    特殊權限 文件特殊權限 一、SUID(4) SUID:當s這個標志出現在文件所有者的x權限上時,就被稱作SUID。 SUID的功能和限制:1、僅僅對二進制程序有效; 2、執行者對程序需要X的執行權限; 3、本權限僅僅在執行該程序的過程中有效; 4、執行者將具有該程序所有者的權限。 5、SUID僅僅可以用在二進制程序上,…

    Linux干貨 2016-08-05
  • 【社招】【小米-北京】運維開發工程師

    【社招】【小米-北京】運維開發工程師 【工作地點】北京市海淀區安寧莊東路72號科利源大廈 【薪酬福利】15k-30k 期權獎勵、六險一金、水果花茶、班車、健身房、食堂 【投遞方式】郵件主題“崗位+姓名”發送至lipengcheng3@xiaomi.com   崗位職責: 提高系統運維的自動化,主要包括運維平臺、PaaS、監控系統,自動化部…

    Linux職位 2017-07-28
  • Linux發行版之間的聯系與區別及其哲學思想。

    一、Linux發行版之間的聯系與區別。 隨著Linux不斷發展,Linux所支持的文件系統類型也在迅速擴充。很多的數據中心服務器上都運行著Linux,可以節省大量的許可證費用及維護費用。但伴隨著Linux新版本的發行,其中每一個不同版本的Linux所支持的文件系統類型都有所不同。Linux的發行版有數百種之多。 1、Debian:是指一個致力于創建自由操作系…

    Linux干貨 2016-10-30
  • 馬哥教育網絡班20期+第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -r /etc/skel/ /home/tuser1 chmod o-rwx /home/tuser1/.* 2、編輯/etc/group文件,添加組hadoop。 e…

    Linux干貨 2016-06-26
  • 文件權限

    文件權限 文件屬性       rw-r–r–表示文件權限     Root 表示文件所有者     Root 表示文件所屬組     0 表示文件的大小 …

    Linux干貨 2016-08-11
  • linux磁盤分區格式化基本操作

    磁盤分區 分區格式的兩種選擇:MBR和GPT 分區命令: parted的操作都是實時生效的,小心使用,主要是用于大于2T硬盤,支持MBR和GPT兩種格式。 用法:parted [選項]… [設備[命令[參數]…]…] parted /dev/sdb mklabelgpt|msdos //選擇分區格式 parted…

    Linux干貨 2017-04-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-07-17 20:24

    寫的很好,排版也很漂亮,加油,第六題的lscpu是什么意思那?

欧美性久久久久