天天看點

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

轉載位址:http://wowking.blog.51cto.com/1638252/960338

相關不錯的文章:http://wgkgood.blog.51cto.com/1192594/530304  

                                http://blog.chinaunix.net/uid-20330385-id-1965396.html

原理和概念:

1.1 什麼是PXE

嚴格來說,PXE 并不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支援的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協定使計算機可以通過網絡啟動。協定分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入記憶體執行,由 PXE client 将放置在遠端的檔案通過網絡下載下傳到本地運作。運作 PXE 協定需要設定 DHCP 伺服器和 TFTP 伺服器。DHCP 伺服器用來給 PXE client(将要安裝系統的主機)配置設定一個 IP 位址,由于是給 PXE client 配置設定 IP 位址,是以在配置 DHCP 伺服器時需要增加相應的 PXE 設定。此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協定到 TFTP Server 上下載下傳所需的檔案。

1.2 什麼是KickStart

KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工幹預填寫的各種參數,并生成一個名為ks.cfg的檔案;在其後的安裝過程中(不隻局限于生成KickStart安裝檔案的機器)當出現要求填寫參數的情況時,安裝程式會首先去查找KickStart生成的檔案,當找到合适的參數時,就采用找到的參數,當沒有找到合适的參數時,才需要安裝者手工幹預。這樣,如果KickStart檔案涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以隻告訴安裝程式從何處取ks.cfg檔案,然後去忙自己的事情。等安裝完畢,安裝程式會根據ks.cfg中設定的重新開機選項來重新開機系統,并結束安裝。

1.3 PXE + KickStart安裝的條件

執行 PXE + KickStart安裝需要的裝置為:

• DHCP 伺服器;

• TFTP 伺服器;

• KickStart所生成的ks.cfg配置檔案

• 一台存放系統安裝檔案的伺服器,如 NFS、HTTP 或 FTP 伺服器。

• 帶有一個 PXE 支援網卡的将安裝的主機;

工作過程圖  

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

安裝步驟

環境:

OS:CentOS 5.5 x86_64

ip adress:192.168.20.20

兩台VM:一台做Server,一台來裝系統

  (如果你的系統是CentOS 5.5 32位或者其它版本的Linux,請自行适合的修改)

1.mount CentOS DVD

mount /dev/cdrom /mnt     [挂載光驅]

2.install tftp-server

yum -y install tftp-server.x86_64

vim /etc/xinetd.d/tftp

  1. service tftp 
  2.         socket_type             = dgram 
  3.         protocol                = udp 
  4.         wait                    = yes 
  5.         user                    = root 
  6.         server                  = /usr/sbin/in.tftpd 
  7.         server_args             = -s /tftpboot 
  8.         disable                 = no                  #[将'yes'改為'no'] 
  9.         per_source              = 11 
  10.         cps                     = 100 2 
  11.         flags                   = IPv4 

 service xinetd start             [啟動tftp服務]

3.configuration PXE

mkdir /tftpboot    [如果沒有這個檔案夾就建立]

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ 

cp /mnt/images/pxeboot/initrd.img /tftpboot/

cp /mnt/images/pxeboot/vmlinuz /tftpboot/

cp /mnt/isolinux/*.msg /tftpboot/    [複制linux開機引導檔案]

mkdir /tftpboot/pxelinux.cfg

cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

4.install DHCP

yum -y install dhcp.x86_64

cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

vim /etc/dhcpd.conf

  1. ignore client-updates; 
  2. next-server 192.168.20.20;     #[添加,next-server 是tftp server] 
  3. filename "/pxelinux.0";        #[添加] 
  4. subnet 192.168.20.0 netmask 255.255.255.0 {               #[網段申明] 
  5. # --- default gateway 
  6.         option routers                  192.168.20.254;     #[網關] 
  7.         option subnet-mask              255.255.255.0;      #[子網俺碼] 
  8.         option nis-domain               "domain.org"; 
  9.         option domain-name              "domain.org"; 
  10.         option domain-name-servers      8.8.8.8;             #[DNS] 
  11.         option time-offset              -18000; # Eastern Standard Time 
  12. #       option ntp-servers              192.168.1.1; 
  13. #       option netbios-name-servers     192.168.1.1; 
  14. # --- Selects point-to-point node (default is hybrid). Don't change this unless 
  15. # -- you understand Netbios very well 
  16. #       option netbios-node-type 2; 
  17.         range dynamic-bootp 192.168.20.20 192.168.20.254;    #[ip pools]   
  18.         default-lease-time 21600; 
  19.         max-lease-time 43200; 
  20.         # we want the nameserver to appear at a fixed address 
  21. #       host ns { 
  22. #               next-server marvin.redhat.com; 
  23. #               hardware ethernet 12:34:56:78:AB:CD; 
  24. #               fixed-address 207.175.42.254; 
  25. #       }    #[由于本次實驗中DHCP Server隻用于安裝無人值守安裝,這些都用不着,注釋最後幾行。實際環境中,視情況而定] 

service dhcpd start

5.install NFS

yum -y install nfs-*      [CentOS預設是安裝的]

mkdir /tftpboot/ks        [先在tftpboot目錄下建立ks檔案,一會存放ks.cfg時用]

vim /etc/exports 

  1. /mnt    *(ro)  #[添加這兩個共享檔案夾,'*'任何人可以通路,'(ro)'即read only]
  2. /tftpboot/ks/    *(ro) 

service portmap start     [首先啟動這個服務,這是nfs的依賴服務]

service nfs start

6.install KickStart

yum -y install system-config-kickstart.noarch    [install kickstart]

yum -y groupinstall "X Window System"     [如果GNOME環境,請執行本行及下行指令。如果你不希望安裝GNOME環境,KickStart也可以不安裝,直接複制我這的ks.cfg代碼合适的修改便可。當然其它版本的linux的ks.cfg代碼不一樣]

yum -y groupinstall "GNOME Desktop Environment"

startx                                     [進入desktop,kickstart必須在desktop環境下配置]

system-config-kickstart    [start kickstart]

定制KickStart              [下圖隻是例子,實際根據各自需求而定]

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

因為CentOS安裝盤挂載在/mnt,是以這裡的目錄是/mnt

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

記得最少安裝一個包,不然在安裝系統的時候,會彈出一個對話框,讓你手動選擇需要安裝的包

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

下面是利用KickStart生成的ks.cfg,也可以直接在這裡适當修改參數

  1. lang en_US 
  2. # Installation logging level 
  3. logging --level=info 
  4. # Use NFS installation media 
  5. nfs --server=192.168.20.20 --dir=/mnt 
  6. # Network information 
  7. network --bootproto=dhcp --device=eth0 --onboot=on 
  8. # Reboot after installation 
  9. reboot 
  10. #Root password 
  11. rootpw --iscrypted $1$SjnCI7rG$4JhDvTrZ4Xo4fdpjOriBU/ 
  12. # SELinux configuration 
  13. selinux --enforcing 
  14. # Do not configure the X Window System 
  15. skipx 
  16. # System timezone 
  17. timezone  Asia/Shanghai 
  18. # Install OS instead of upgrade 
  19. install 
  20. # Disk partitioning information 
  21. part swap --bytes-per-inode=4096 --fstype="swap" --size=2048 
  22. part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 
  23. part / --bytes-per-inode=4096 --fstype="ext3" --size=10240 
  24. part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1 
  25. %packages 
  26. @editors 

cp /root/ks.cfg /tftpboot/ks/

chmod 777 /tftpboot/pxelinux.cfg/default

vim /tftpboot/pxelinux.cfg/default

  1. default ks  #[修改為'ks']
  2. prompt 1 
  3. timeout 3 
  4. display boot.msg 
  5. F1 boot.msg 
  6. F2 options.msg 
  7. F3 general.msg 
  8. F4 param.msg 
  9. F5 rescue.msg 
  10. label linux 
  11.   kernel vmlinuz 
  12.   append initrd=initrd.img 
  13. label text 
  14.   kernel vmlinuz 
  15.   append initrd=initrd.img text 
  16. label ks 
  17.   kernel vmlinuz 
  18.   append ks=nfs:192.168.20.20:/tftpboot/ks/ks.cfg initrd=initrd.img  #[這裡是ks的路徑] 
  19. label local 
  20.   localboot 1 
  21. label memtest86 
  22.   kernel memtest 
  23.   append - 

7.closed Firewall and SElinux

setup

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

8.驗證奇迹的時刻來啦

開啟需要安裝的電腦,倒杯COFFEE,看它自動安裝喽。。。。

預設情況下不需要任何設定,如果電腦自動不能找到PXE啟動或叫Network boot from XX開機啟動模式,就手動選擇吧。

一般臨時選擇是按Esc或F12或F11再或者其它,因電腦品牌而異。。

如果在boot裡将設定PXE設定成第一啟動選項,記得安裝完系統後,改回硬碟啟動,否則電腦會一直裝系統,,,

9.總結

VM安裝需注意幾點:

關閉網卡自帶的DHCP;

網卡模式用橋接;

最後貼幾張PC安裝時的圖吧

pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]
pxe+dhcp+nfs+tftp自動安裝linux[kickstart]

繼續閱讀