搭建PXE全自動centos系統安裝環境

要安裝一個操作系統,首先要理解系統的啓動引導過程。要有這麼幾項,引導文件-比如硬盤的MBR,引導菜單-grub,虛擬系統鏡像文件,操作系統內核文件,最後是各種安裝包。那麼怎麼通過pxe來引導操作系統實現安裝呢?其實支持pxe安裝的網卡,內置了tftp客戶端及dhcp客戶端。首先從dhcp獲取ip地址,同時dhcp服務器會告訴來訪者通過pxe啓動需要的引導文件名稱及tftp服務器的IP。繼而主機找到tftp服務器獲取pxelinux.0引導文件,menu.c32菜單樣式文件及default菜單配置文件。到這一步就可以看到啓動菜單項了,接下來需要根據用戶選擇來加載相對應的虛擬系統鏡像加載啓動內核。所以tftp服務器還要有對應的initrd.img及vmlinuz內核文件。由於tftp不支持大文件,所以各種安裝包及驅動要從http服務器獲取。因此還要配置http服務器,掛載對應的系統iso鏡像文件。那麼下面來詳細說明實現步驟。

1 前置條件,關閉防火牆,關閉selinu,時間同步。在此基礎上安裝dhcp服務

1.1 配置其中個網卡爲規劃的網段地址

```

[root@main html]#cat /etc/sysconfig/network-scripts/ifcfg-ens37 

DEVICE=ens37

NAME=ens37

PREFIX=24

IPADDR=10.10.10.254

BOOTPROTO=none

ONBOOT=yes

```

1.1.2 運行安裝腳本,配置dhcpd配置文件,並啓動dhcpd服務

```

#!/bin/bash

##DHCP ------------------------------------

##install dhcp,before start this service,be sure you have this subnet ip

yum install dhcp -y

Subnet="10.10.10.0"

NetMask="255.255.255.0"

Range="10.10.10.2 10.10.10.200"

Router="10.10.10.1"

Search="ruitais.com"

NameServer="114.114.114.114,180.76.76.76"

cat /dev/null > /etc/dhcp/dhcpd.conf

cat > /etc/dhcp/dhcpd.conf << EOF

#day=86400s

default-lease-time 86400;

max-lease-time 864000;

option domain-name "$Search";

option domain-name-servers $name-servers;



subnet $Subnet netmask $NetMask {

  range $Range;

  option routers $Router;

   filename "pxelinux.0";            ##配置pxe引導的文件名,告訴每個來獲取ip的主機

   next-server 10.10.10.254;         ##配置pxe引導的tftp地址,告訴每個來訪的主機

}



EOF

systemctl start dhcpd.service

systemctl enable dhcpd.service

```

 

2 配置http服務器,yum源,及應該文件

 2.1 安裝yum install httpd -y 

 2.2 複製安裝光盤鏡像至指定目錄,並掛載至http服務根下對應目錄。

 ```

[root@main data]#ls

CentOS-6.10-x86_64-bin-DVD1.iso  CentOS-7-x86_64-Everything-1810.iso  //鏡像文件複製到/data下。

[root@main data]#vim /etc/fstab  //編輯,在後追加兩行

/data/CentOS-7-x86_64-Everything-1810.iso  /var/www/html/centos/7/ox/x86_64  iso9660 defaults 0 0 

/data/CentOS-6.10-x86_64-bin-DVD1.iso      /var/www/html/centos/6/ox/x86_64 iso9660 defaults 0 0 

[root@main data]#mount -a     //掛載iso文件

```

3 製作應答文件,放置在http服務器對應的目錄,

3.1 參考安裝好的系統的ks文件

[root@localhost ~]# cat /root/anaconda-ks.cfg

3.2 用system-config-kickstart生成應答文件.

yum install  system-config-kickstart -y

3.3 centos7 最小化安裝應答文件參考。

```

[root@localhost ~]#cp /root/centos7_ks.cfg /var/www/html/centos/7/      //複製應答文件到對應的版本目錄

[root@main html]#cat /var/www/html/centos/7/centos7_ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'

# Root password

rootpw --iscrypted $1$qOLmFLxc$13.2FhiY5XL5omse2kX9y.

# Use network installation

url --url="http://10.10.10.254/centos/7/ox/x86_64/"

# System language

lang en_US

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use text mode install

text

# SELinux configuration

selinux --disabled

# Do not configure the X Window System

skipx



# Firewall configuration

firewall --disabled

# Network information

network  --bootproto=dhcp --device=eth0

# Reboot after installation

reboot

# System timezone

timezone Asia/Shanghai

# System bootloader configuration

bootloader --append="net.ifnames=0" --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all

# Disk partitioning information

part / --fstype="xfs" --size=10240

part /home --fstype="xfs" --size=20480

part /boot --fstype="xfs" --size=1024

part swap --fstype="swap" --size=4096

part /data --fstype="xfs" --size=40960



%post

mkdir /root/.ssh

cd /root/.ssh

cat > authorized_keys <<EOF

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoVMMkxrUCx8iKCdZsJOKNjJp2VG5D+KkXwS+/d4H+oQH0dYS2fSZMcsgNxzXhgxz915/2pnMx/XHPlONEkzzCmrRwdO0DIoKPEvfIeA99G4+AIha2Hjg6ilosNZ0GqOBdXuCjKJxyraEgRMdmoyUX0DYuhZNfSvUUMseKtHlBVPgWna9PscxOZUsnQAoBcGTewZaOTKEqzuK3Ug0cPyfID4vtN4thh+09TJqoc85TFPhrR3CMBml2zYnFfavP23Oga2bfW2bbG20z70enEKuV0JqgTCmZ5OsYzHtKOEhrJ2KfzqKAc2mbJGmCTg0oywOZL7N9vLynohNXzIb7vOc/ [email protected]

EOF

chmod 700 /root/.ssh

chmod 600 /root/.ssh/authorized_keys

%end

```

3.4 centos6最小化安裝參考

```

[root@localhost ~]#cp /root/ks6_mini.cfg /var/www/html/centos/6/      ##複製應答文件到對應的版本目錄

[root@main html]#cat /var/www/html/centos/6/ks6_mini.cfg

#version=DEVEL

install

url --url=http://10.10.10.254/centos/6/ox/x86_64/

lang en_US.UTF-8

keyboard us

network --onboot yes --device eth0 --bootproto dhcp --noipv6

rootpw --iscrypted $1$qOLmFLxc$13.2FhiY5XL5omse2kX9y.

firewall --disabled

authconfig --enableshadow --passalgo=sha512

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

clearpart --all

zerombr

reboot

text

part /boot --fstype=ext4 --size=1024

part / --fstype=ext4 --size=50000

part /data --fstype=ext4 --size=30000

part swap --size=2048



%packages

@base

@core

autofs

%end


%post

mkdir /root/.ssh

cd /root/.ssh

cat > authorized_keys <<EOF

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoVMMkxrUCx8iKCdZsJOKNjJp2VG5D+KkXwS+/d4H+oQH0dYS2fSZMcsgNxzXhgxz915/2pnMx/XHPlONEkzzCmrRwdO0DIoKPEvfIeA99G4+AIha2Hjg6ilosNZ0GqOBdXuCjKJxyraEgRMdmoyUX0DYuhZNfSvUUMseKtHlBVPgWna9PscxOZUsnQAoBcGTewZaOTKEqzuK3Ug0cPyfID4vtN4thh+09TJqoc85TFPhrR3CMBml2zYnFfavP23Oga2bfW2bbG20z70enEKuV0JqgTCmZ5OsYzHtKOEhrJ2KfzqKAc2mbJGmCTg0oywOZL7N9vLynohNXzIb7vOc/ [email protected]

EOF

chmod 700 /root/.ssh

chmod 600 /root/.ssh/authorized_keys


%end

```

上述應答文件密碼爲"centos7",並且執行了安裝後腳本,把root公鑰文件配好,系統安裝後可以直接ssh方式連接,免密登錄,注意使用時替換成自己的公鑰

4 製作啓動引導文件,及引導菜單(包括樣式及內容)

 4.1 安裝tftp製作啓動菜單,採用menu.c20,pexlinux.0 文件,放置在tfpt目錄中.

```

[root@main 7]#yum install syslinux     //生成menu.c32及pexlinux.0文件

[root@main 7]#yum install tftp-server

[root@main 7]#systemctl start tftp.service     //啓動fttp服務

[root@main 7]#cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/       //拷貝menu.c32以及pexlinux.0引導文件到tftp根目錄下

[root@main 7]#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@main tftpboot]#pwd   

/var/lib/tftpboot

[root@main tftpboot]#ls

menu.c32  pxelinux.0

```

4.2 根據安裝盤的菜單文件修改現有菜單。

```

[root@main tftpboot]# mkdir pxelinux.cfg

[root@main tftpboot]#cat pxelinux.cfg/default 
default menu.c32
timeout 600
menu title Auto Install CentOS for Ruitais
label linux7
  menu label Install ^Mini CentOS 7
  kernel centos7/vmlinuz                                                                                                                                                    
  append initrd=centos7/initrd.img ks=http://10.10.10.254/centos/7/centos7_ks.cfg

label linux6
  menu label Install  CentOS ^6 Mini
  kernel centos6/vmlinuz
  append initrd=centos6/initrd.img ks=http://10.10.10.254/centos/6/ks6_mini.cfg


label local

  menu label Boot from ^local drive

  menu default

  localboot 0xffff

```

//注意事項:

kernel 字段指明內核的相對路徑,路徑參考點是pxelinux.0引導文件所在的目錄。

append initrd 指明引導系統的虛擬鏡像文件

ks 表示應答文件所在的位置,支持http路徑,與http配置的ks文件路徑對應

最後memu default 指明默認的選中項。



 

5.1  tftp服務器文件目錄明細

```

[root@main tftpboot]#tree 

.

├── centos6

│   ├── initrd.img  //centos6的啓動虛擬鏡像

│   └── vmlinuz     //centos6的內核文件

├── centos7

│   ├── initrd.img  //centos7的啓動虛擬鏡像

│   └── vmlinuz     //centos7的內核文件

├── menu.c32        //pxe引導的菜單樣式文件

├── pxelinux.0      //pxe引導文件

└── pxelinux.cfg

    └── default     //pxe菜單的配置文件

```

5.2 http服務器文件目錄明細

```

[root@main html]#tree -L 5                            //根目錄html
.
└── centos
    ├── 6
    │   ├── ks6_mini.cfg                              //centos6的應答文件
    │   └── ox
    │       └── x86_64                                //此目錄掛載centos6的iso鏡像
    │           ├── CentOS_BuildTag
    │           ├── EFI
    │           ├── EULA
    │           ├── GPL
    │           ├── images
    │           ├── isolinux
    │           ├── Packages
    │           ├── RELEASE-NOTES-en-US.html
    │           ├── repodata
    │           ├── RPM-GPG-KEY-CentOS-6
    │           ├── RPM-GPG-KEY-CentOS-Debug-6
    │           ├── RPM-GPG-KEY-CentOS-Security-6
    │           ├── RPM-GPG-KEY-CentOS-Testing-6
    │           └── TRANS.TBL
    └── 7
        ├── centos7_ks.cfg                          //centos7的應答文件
        └── ox
            └── x86_64                              //此目錄掛載centos7的ios鏡像
                ├── CentOS_BuildTag
                ├── EFI
                ├── EULA
                ├── GPL
                ├── images
                ├── isolinux
                ├── LiveOS
                ├── Packages
                ├── repodata
                ├── RPM-GPG-KEY-CentOS-7
                ├── RPM-GPG-KEY-CentOS-Testing-7
                └── TRANS.TBL
18 directories, 17 files

```

至此,一個自動安裝系統服務就搭建完畢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章