RHEL7下PXE+NFS+Kickstart无人值守安装操作系统

1.配置yum源

vim /etc/yum.repos.d/development.repo

[development]

name=yum server

baseurl=file:///mnt

enabled=1

gpgcheck=0

2.挂载光盘

mount /dev/sr0 /mnt

3.安装相关软件包

yum install dhcp syslinux xinetd tftp-server

4.配置dhcp

vim /etc/dhcp/dhcpd.conf

5.添加内容

subnet 192.168.1.0 netmask 255.255.255.0 {

  range 192.168.1.50 192.168.1.90;

  option domain-name-servers 192.168.1.1;

  option domain-name "internal.example.org";

  option routers 192.168.1.1;

  option broadcast-address 192.168.1.255;

  next-server 192.168.1.30;

  filename "pxelinux.0";

  default-lease-time 600;

  max-lease-time 7200;

}

6.启动服务和开机自启动

systemctl start dhcpd.service  
systemctl enable dhcpd.service

7.复制启动文件

cd /var/lib/tftpboot/                                                                                               #进入/var/lib/tftpboot/  
cp /mnt/isolinux/initrd.img /var/lib/tftpboot                                                           #复制initrd.img到/var/lib/tftpboot目录下    
cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/                                                            #复制vmlinuz到/var/lib/tftpboot目录下    
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/                                              #复制pxelinux.0到/var/lib/tftpboot目录下    
cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/                                                 #复制vesamenu.c32到/var/lib/tftpboot目录下    
cp /mnt/isolinux/boot.msg /var/lib/tftpboot/                                                        #复制boot.msg到/var/lib/tftpboot目录下    
cd /var/lib/tftpboot/                                                                                             #进入/var/lib/tftpboot目录下    
mkdir pxelinux.cfg                                                                                             #在/var/lib/tftpboot目录下创建pxelinux.cfg目录    
cd pxelinux.cfg/                                                                                                 #进入pxelinux.cfg目录下    
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default                     #复制isolinux.cfg到pxelinux.cfg目录下并命名为default    
vim default                                                                                                       #在/var/lib/tftpboot/pxelinux.cfg目录下修改default文件


label PXE-linux

  menu label ^Install System from PXE-RHEL7.0

  kernel vmlinuz

  append initrd=initrd.img ks=nfs://192.168.1.30/rhel7/ks.cfg ksdevice=eno16777736 ip=dhcp quiet

8.配置tftp-server syslinux

vim /etc/xinetd.d/tftp


service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                 = no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

9.启动服务和开机自启动

systemctl start xinetd.service  
systemctl enable xinetd.service

10.安装配置NFS

yum -y install nfs*                           #安装nfs服务

mkdir /rhel7                                    #根下创建安装文件目录

cd /rhel7                                        #进入RHEL7.0目录

cp -rf /mnt/* /rhel7/                       #复制光盘内容到rhel7目录下

vim /etc/exports                           #nfs共享系统文件  

/rhel7 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)

11.启动服务

systemctl start nfs-server  
systemctl enable nfs-server

12.无图形界面配置kickstart一键安装应答文件

vim /rhel7/ks.cfg


#platform=x86, AMD64, 或 Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'# Reboot after installation

reboot

# Root password

rootpw --iscrypted $1$FyasdJen$q2zUDfVq.ln1FmIlP8O/m0                       //root密码为7788521

# System timezone

timezone Asia/Shanghai

# System language

lang en_US

# Firewall configuration

firewall --disabled

# Network information

network  --bootproto=dhcp --device=eno16777736

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# SELinux configuration

selinux --disabled

# Use NFS installation media

nfs --server=192.168.1.30 --dir=/rhel7

# System bootloader configuration

bootloader --location=mbr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part /boot --asprimary --fstype="xfs" --size=500

part swap --asprimary --fstype="swap" --size=2048

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

part /home --fstype="xfs" --grow --size=1

%packages                      

@base

@core

@desktop-debugging

@dial-up

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@input-methods

@internet-browser

@kde-desktop

@multimedia

@print-client

@x11

%end


图形化系统可以安装Kickstart

1.安装Kickstart

yum -y install system-config-kickstart.noarch

2.启动Kickstart软件

system-config-kickstart

13.修改SELinux状态

vim /etc/sysconfig/selinux  
SELINUX=disabled

14.开放防火墙服务和端口

firewall-cmd --permanent --add-service=dhcp

firewall-cmd --permanent --add-service=nfs

firewall-cmd --permanent --add-port=69/udp

firewall-cmd --permanent --add-port=111/tcp

firewall-cmd --permanent --add-port=111/udp

firewall-cmd --permanent --add-port=20048/tcp

firewall-cmd --permanent --add-port=20048/udp

firewall-cmd --reload

配置文件详细内容

1.dhcpd.conf文件内容

[root@localhost tftpboot]# cat /etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {

  range 192.168.1.50 192.168.1.90;

  option domain-name-servers 192.168.1.1;

  option domain-name "internal.example.org";

  option routers 192.168.1.1;

  option broadcast-address 192.168.1.255;

  next-server 192.168.1.30;

  filename "pxelinux.0";

  default-lease-time 600;

  max-lease-time 7200;

}

2.tftp文件内容

[root@localhost tftpboot]# cat /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files using the trivial file transfer \

#       protocol.  The tftp protocol is often used to boot diskless \

#       workstations, download configuration files to network-aware printers, \

#       and to start the installation process for some operating systems.

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                 = no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

3.default文件内容

[root@localhost tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32

timeout 600

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.

# For vesamenu, this means the graphical background is still displayed without

# the menu itself for as long as the screen remains in graphics mode.

menu clear

menu background splash.png

menu title Red Hat Enterprise Linux 7.0

menu vshift 8

menu rows 18

menu margin 8

#menu hidden

menu helpmsgrow 15

menu tabmsgrow 13

# Border Area

menu color border * #00000000 #00000000 none

# Selected item

menu color sel 0 #ffffffff #00000000 none

# Title bar

menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message

menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item

menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey

menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey

menu color hotkey 0 #ffffffff #00000000 none

# Help text

menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.

menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg

menu color timeout 0 #ffffffff #00000000 none

menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text

menu color cmdmark 0 #84b8ffff #00000000 none

menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line

menu separator # insert an empty line

label PXE-linux

  menu label ^Install System from PXE-RHEL7.0

  kernel vmlinuz

  append initrd=initrd.img ks=nfs://192.168.1.30/rhel7/ks.cfg ksdevice=eno16777736 ip=dhcp quiet

label linux

  menu label ^Install Red Hat Enterprise Linux 7.0

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0\x20Server.x86_64 quiet

label check

  menu label Test this ^media & install Red Hat Enterprise Linux 7.0

  menu default

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0\x20Server.x86_64 rd.live.check quiet

menu separator # insert an empty line

# utilities submenu

menu begin ^Troubleshooting

  menu title Troubleshooting

label vesa

  menu indent count 5

  menu label Install Red Hat Enterprise Linux 7.0 in ^basic graphics mode

  text help

        Try this option out if you're having trouble installing

        Red Hat Enterprise Linux 7.0.

  endtext

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0\x20Server.x86_64 xdriver=vesa nomodeset quiet

label rescue

  menu indent count 5

  menu label ^Rescue a Red Hat Enterprise Linux system

  text help

        If the system will not boot, this lets you access files

        and edit config files to try to get it booting again.

  endtext

  kernel vmlinuz

  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.0\x20Server.x86_64 rescue quiet

label memtest

  menu label Run a ^memory test

  text help

        If your system is having issues, a problem with your

        system's memory may be the cause. Use this utility to

        see if the memory is working correctly.

  endtext

  kernel memtest

menu separator # insert an empty line

label local

  menu label Boot from ^local drive

  localboot 0xffff

menu separator # insert an empty line

menu separator # insert an empty line

label returntomain

  menu label Return to ^main menu

  menu exit

menu end

4.ks.cfg文件内容

[root@localhost tftpboot]# cat /rhel7/ks.cfg

#platform=x86, AMD64, 或 Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'# Reboot after installation

reboot

# Root password

rootpw --iscrypted $1$FyasdJen$q2zUDfVq.ln1FmIlP8O/m0

# System timezone

timezone Asia/Shanghai

# System language

lang en_US

# Firewall configuration

firewall --disabled

# Network information

network  --bootproto=dhcp --device=eno16777736

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# SELinux configuration

selinux --disabled

# Use NFS installation media

nfs --server=192.168.1.30 --dir=/rhel7

# System bootloader configuration

bootloader --location=mbr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part /boot --asprimary --fstype="xfs" --size=500

part swap --asprimary --fstype="swap" --size=2048

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

part /home --fstype="xfs" --grow --size=1

%packages                      

@base

@core

@desktop-debugging

@dial-up

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@input-methods

@internet-browser

@kde-desktop

@multimedia

@print-client

@x11

%end

5.tftpboot目录下的文件

[root@localhost tftpboot]# pwd

/var/lib/tftpboot

[root@localhost tftpboot]# ll

总用量 39688

-rw-r--r--. 1 root root       74 6月   4 17:10 boot.msg

-r--r--r--  1 root root 35544564 6月   4 17:28 initrd.img

-rw-r--r--  1 root root    26460 6月   4 17:29 pxelinux.0

drwxr-xr-x. 2 root root       20 6月   4 17:10 pxelinux.cfg

-r--r--r--  1 root root   155792 6月   4 17:33 vesamenu.c32

-r-xr-xr-x  1 root root  4902000 6月   4 17:28 vmlinuz

6.pxelinux.cfg目录下的文件

[root@localhost pxelinux.cfg]# pwd

/var/lib/tftpboot/pxelinux.cfg

[root@localhost pxelinux.cfg]# ll

总用量 4

-r--r--r--. 1 root root 3343 6月   4 17:10 default

%packages

@base

@compat-libraries

@core

%end