实验的目的通过网络安装系统。
NFS 服务器:mysqlndb02.lianhua.com (192.168.0.31)
安装目录: /isolinux
本机IP地址:192.168.0.31
一般情况下,我们都是利用软驱或光驱引导Linux后,再通过本地的光驱安装Linux,如果是碰到无光驱时呢?
什么是PXE
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为 client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜 单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
PXE协议的成功运行需要解决以下两个问题:
(1)、既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
(2)、 通过什么协议下载Linux内核和根文件系统
对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地 址,不过由于这里是给PXE Client分配IP地址,所以在配置 DHCP Server时,需 要增加相应的PXE特有配置。
至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。
一、安装过程:
配置PXE安装,需要如下步骤:
1. 配置DHCP服务器,用于给客户端提供IP地址和其他信息
2. 配置TFTP服务器,用于提供客户端PXE引导所必须的文件
3. 配置NFS服务器 ,用于存放安装源
4. 配置kickstart,用于无人职守的安装(可选)
5. 使用PXE功能引导客户端
第一步,配置DHCP服务器
http://summervast.blog.51cto.com/690507/368793
贴出配置:
#定义所支持的DNS的动态更新类型(必选)
ddns-update-style interim;
#忽略客户端更新DNS记录
ignore client-updates;
指定
tftp-server
的
IP
地址是多少
next-server 192.168.0.31;
指定
pxelinux
启动文件的位置
filename "pxelinux.0";
#定义作用域是192.168.0.0/24
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
#为DHCP客户设置网关
option routers 192.168.0.1;
#为DHCP客户设自豪子网掩码
option subnet-mask 255.255.255.0;
#为DHCP客户设置NIS的域名,没有定义;
# option nis-domain "domain.org";
#为DHCP客户设置DNS服务器的域名
option domain-name "lianhua.com";
#为DHCP客户设置DNS服务器的IP地址
option domain-name-servers 192.168.0.25;
#指定时区的设置为格林威治时间
option time-offset -18000; # Eastern Standard Time
#定义DHCP的地址池
range dynamic-bootp 192.168.0.40 192.168.0.50;
#定义最小租约期是21600秒,6个小时
default-lease-time 21600;
#定义最大的租约期12个小时
max-lease-time 43200;
#设置主机声明
host ns {
#设置用于定义服务器从引导文件中装入的主机名,用于无盘工作站
next-server marvin.redhat.com;
#指定DHCP客户的MAC地址
hardware ethernet 12:34:56:78:AB:CD;
#对指定的MAC地址分配固定的IP地址
fixed-address 207.175.42.254;
}
}
第二步安装NFS
http://summervast.blog.51cto.com/690507/368827
[root@mysqlndb02 /]# mkdir isolinux
[root@mysqlndb02 /]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@mysqlndb02 /]# cp -r /mnt/cdrom/* /isolinux
把/isolinux这个目录共享出来
[root@mysqlndb02 /]#vi /etc/exports
/isolinux 192.168.0.0/24(ro)
使192.168.0.0 这个网段的所有机器都能读;
[root@mysqlndb02 /]# exportfs -a
重新加载NFS
[root@mysqlndb02 /]# showmount -e 192.168.0.31
Export list for 192.168.0.31:
/isolinux 192.168.0.0/24
/var/ftp/pub 192.168.0.25
第三步 配置tftp服务器
1、[root@mysqlndb02 /]#yum install tftp-server
TFTP
是由
xinetd
管理的服务,编辑 /etc/xinetd.d/tftp
1 # default: off (默认是没有激活的)
2 # description: The tftp server serves files using the trivial file transfer \
3 # protocol. The tftp protocol is often used to boot diskless \
4 # workstations, download configuration files to network-aware printers, \
5 # and to start the installation process for some operating systems.
6 service tftp
7 {
8 socket_type = dgram
9 protocol = udp
10 wait = yes
11 user = root
12 server = /usr/sbin/in.tftpd
13 server_args = -s /tftpboot
14 disable = yes
15 per_source = 11
16 cps = 100 2
17 flags = IPv4
18 }
将
tftp
服务的配置文件中的
disable=yes
设置成
disable=no
重启xinetd
[root@mysqlndb02 /]# service xinetd restart
停止 xinetd: [确定]
启动 xinetd: [确定]
[root@mysqlndb02 /]#chkconfig --level nfs 345 on
2、配置pxe引导
安装tfpt后在根目录上会自动出现tftpboot目录;
1)、把光盘里面的isolinux这个目录下的所有东西复制到/tftpboot这个目录下面去;
[root@mysqlndb02 tftpboot]# cp /mnt/cdrom/isolinux/* .
2)、在/tftpboot/里面创建目录:mkdir pxelinux.cfg
[root@mysqlndb02 tftpboot]#mkdir pxelinux.cfg
因为PXE读取到的是pxelinux.cfg这个文件夹,所有必须创建这个文件夹;
3)、在把pxe的引导文件pexlinux.0给复制过来
,这个文件在/usr/lib/syslinux/下面
[root@mysqlndb02 tftpboot]#cp /usr/lib/syslinux/pxelinux.0 .
[root@mysqlndb02 tftpboot]# ll pxelinux.0
-rw-r--r-- 1 root root 13148 08-10 16:13 pxelinux.0
4)、重命名 isolinux.cfg 为default文件并把它移到pxelinux.cfg目录下面
[root@mysqlndb02 tftpboot]#mv isolinux.cfg pxelinux.cfg/default
[root@mysqlndb02 tftpboot]# cd pxelinux.cfg/
[root@mysqlndb02 pxelinux.cfg]#
[root@mysqlndb02 pxelinux.cfg]# ls
default
5)、启动tftp服务:
[root@mysqlndb02 pxelinux.cfg]#chkconfig tftp on
[root@mysqlndb02 pxelinux.cfg]service xinetd restart
基本到此就可以实现NFS安装了
填入NFS地址和装载目录就可以了
正常安装!
第四步,配置kickstart的安装
通常我们在安装系统的时候需要大量的人机交互界面,而kickstart的安装可以实现无人职守的自动化安装,我们只需要将kickstart的脚本放在服务器上面,就可以避免繁琐的人机交互界面。
在linux下面,可以通过system-config-kickstart这个图形工具来生成这个kickstart的脚本。我们知道在系统安装完成后会自动的创建一个kickstart的文件,这个文件就记录了系统的真实安装配置。该文件在/root/anaconda-ks.cfg。
现在就使用这个文件,将它复制重命名到/isolinux/ksfile/ksinstall,并改变一下权限。
[root@mysqlndb02 ~]#cd /isolinux
[root@mysqlndb02 ~]#mkdir ksfile
[root@mysqlndb02 ~]#cp /root/anaconda-ks.cfg /isolinux/ksfile/ksinstall.cfg
[root@mysqlndb02 ~]#cd ksfile/
[root@mysqlndb02 ksfile]# ls
ksinstall.cfg
复制完成后,需要改变权限为644,让每个用户都有读取的权限。
[root@mysqlndb02 ksfile]# chmod 644 ksinstall.cfg
[root@mysqlndb02 ksfile]# ll
总计 4
-rw-r--r-- 1 root root 1289 08-10 16:33 ksinstall.cfg
现在只需要稍微修改一下ksinstall.cfg这个文件,
在这个文件中定义安装源的路径,
# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.0.31 --dir=/isolinux
这个参数告诉系统到服务器192.168.0.31的NFS共享目录/isolinux下去寻找安装介质。
接下来还要在/tftpboot/pxelinux.cfg/default这个文件中定义ks的路径就可以了,
label linux
kernel vmlinuz
append ks=nfs:192.168.0.31:/isolinux/ksfile/ksinstall.cfg initrd=initrd.img
OK,现在kickstart安装配置就完成了。
重新打开一台虚拟机,会自动的安装,不过到磁盘划分哪里要手动,还有安装完毕后重新引导也要手动来操作,
省却了我们大量的人机交互操作。
最后感谢chenlong