Linux基于pxe+dhcp+nfs+tftp+kickstart的系统网络安装方法
发布时间 - 2017-06-23 00:00:00 点击率:次原文发表于:2010-09-05
转载至cu于:2012-07-21
一.原理简介
PXE(preboot execute environment)工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载镜像,并由此支持来自网络的操作系统的启动。启动过程中,终端由DHCP服务器分配IP地址,再用TFTP(trivial file transfer protocol)等协议下载存在于服务器(NFS,FTP,HTTP等)的Liunx内核和根文件系统等到本机内存中并执行,由此完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
Kickstart 是一种无人职守安装方式。它通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个ks.cfg文件;在其后的安装过程中单出现要求填写参数的时候,安装程序会查找kickstart文件,在能找到合适的参数情况下就不需要人工干预。
二.环境说明
os:
CentOS 5.4 i386
soft:
dhcp, nfs, tftp, kickstart(gnome 或者x-window)
可以使用yum安装:
yum –y install dhcp* yum –y install nfs* yum –y install tftp* yum –y install system-config-kickstart*
ip:
eth0: 192.168.1.254
三.安装配置过程简介
1. 配置DHCP
more /etc/dhcpd.conf
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
# Location: Zhangjiang IDC
# Date: 2010-08-01
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.254;
option time-offset -18000; # Eastern Standard Time
range dynamic-bootp 192.168.1.10 192.168.1.250;
default-lease-time 21600;
max-lease-time 43200;
# Group the PXE bootable hosts
# PXE-server configuration direction
next-server 192.168.1.254; #指向nfs服务器
filename "/pxelinux.0"; #/tftp根目录下的启动引导文件
# we want the nameserver to appear at a fixed address
host ns {
hardware ethernet 00:1C:25:80:F4:58; #张江机房的笔记本网卡mac
fixed-address 192.168.1.2;
}
}
重启dhcp服务:
/etc/init.d/dhcpd restart
2. 配置TFTP
more /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 = -u nobody -s /tftpboot #-s指定tftp根目录
disable = no #默认yes,关闭
per_source = 11
cps = 100 2
flags = IPv4
}
重启tftp服务:
/etc/init.d/xinetd.restart
查看tftp服务是否启动:
chkconfig –list | grep tftp
3. 配置NFS
NFS需要向RPC注册才能被客户端调用,一般做端口映射的portmap是默认安装的,没有的话可以使用yum安装:
yum –y install portmap*
可以直接使用挂载的镜像,这里是拷到服务器上为了建立一个专门存放常用的镜像文件建的目录。
mount /dev/cdrom /mnt mkdir /ios/CentOS_5.4 cp –a /mnt/* /ios/CentOS_5.4
#共享tftp的根目录,192.168.1.0/24网段的用户有只读权限 echo "/tftpboot 192.168.1.0/24(ro,sync)" > /etc/exports #共享存放镜像文件的目录,所有用户有只读权限 echo "/ios/CentOS_5.4 *(ro,sync)" >> /etc/exports
#不重启nfs服务器情况下配置生效 exportfs –arv #重启服务 /etc/init.d/portmap restart /etc/init.d/nfs resart
查看共享目录是否生效:
showmount –e localhost
4. 配置PXE启动需要的文件
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
# pxelinux.0依赖于syslinux,没有安装使用yum:yum –y install syslinux*
# pxelinux.0是PXE启动引导文件
cp /ios/CentOS_5.4/ioslinux/vmlinuz /tftpboot cp /ios/CentOS_5.4/ioslinux/initrd.img /tftpboot
# vmlinuz和initrd.img是不同版本的系统内核和系统引导文件,安
装不同版本系统时请使用各版本的vmlinuz和initrd.img
mkdir /tftpboot/pxelinux.cfg cp /ios/CentOS_5.4/ioslinux.cfg /tftpboot/pxelinux.cfg/default
到目前已经可以从网络安装系统了。测试如下:
启动服务器,一般F12进入PXE网络启动,向DHCP请求IP,DHCP响应包含IP地址和pxelinux启动程序位置;PXE客户端收到响应后,向服务器请求传送文件(pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img);客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。(由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件,它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过程)。
5. 配置ks.cfg文件
ks.cfg文件可以由以下方法生成:
1. 每次装好一台CentOS(RedHat),安装程序都会自动创建一个kickstart文件,文件记录了真实的安装配置,位置在/root/anaconda-ks.cfg,可以根据此配置来生成自己需要的ks.cfg文件;
2. 使用图形化的kickstart配置工具,命令:system-config-kickstart;
3. 使用文本编辑器编辑。
以下是已经写好的ks.cfg文件,仅供参考:
more /ios/ks.cfg # Kickstart file automatically generated by anaconda. install nfs --server=192.168.1.254 --dir=/ios/CentOS_5.4 #指出NFS的路径和安装文件的位置 lang en_US.UTF-8 keyboard us network --device eth0 --onboot yes --bootproto dhcp --hostname test #network --device eth0 --onboot yes –bootproto static --ip 192.168.1.10 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 8.8.8.8 --hostname test #一个网卡获得地址的方式 network --device eth1 --onboot no --bootproto dhcp --hostname test rootpw --iscrypted $1$V26J9f5V$A7k9alSJs1GzG.qNBef6f/ #加密root密码 firewall --disabled #--port=22:tcp authconfig --enableshadow --enablemd5 #使用md5认证 selinux --disabled timezone --utc Asia/Shanghai bootloader --location=mbr --driveorder=sda # 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 --linux part /boot --fstype ext3 --size=100 --ondisk=sda part swap --size=2048 --ondisk=sda part / --fstype ext3 --size=100 –grow --ondisk=sda #分区和选包是机房最头疼的事,在这里可以修改 #clearpart --linux --drives=sda #part /boot --fstype ext3 --size=200 #part pv.2 --size=0 --grow --ondisk=sda #volgroup VolGroup00 --pesize=32768 pv.2 #logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow #logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=6144 #以上是一个LVM分区的示范 reboot #安装完毕后重启 %packages @development-libs @development-tools @admin-tools @editors #选包
将配置好的ks.cfg文件放在共享目录内,这里放到/ios下
echo "/ios 192.168.1.0/24(ro,sync)" >> /etc/exports exportfs –arv
修改/tftpboot/pxelinux.cfg/default配置:
more /tftpboot/pxelinux.cfg/default default ks #默认从标签ks启动 prompt 1 #显示"boot:"提示符 timeout 30 #等待超时时间 display boot.msg #/tftpboot/boot.msg默认显示boot.msg,可以根据实际情况编辑, F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux #在boot:提示符后输入linux(只是一个标签),从下面指出的内核启动 kernel vmlinuz append initrd=initrd.img label text #在boot:提示符后输入text,这里是文字界面安装 kernel vmlinuz append initrd=initrd.img text label ks #default默认,从ks.cfg读取安装信息,无需人工干预 kernel vmlinuz append ks=nfs:192.168.1.254:/ios/ks.cfg initrd=initrd.img ksdevice=link #ksdevice=link,从连接的网卡读取安装文件 label local localboot 1 label mem kernel memtest append -
6. 进阶
由于机房目前常安装的系统是RHEL4.7, RHEL4.7 x86_64, CentOS5.4, CentOS5.4 x86_64。可以将四种镜像放在专门的目录内。例如:
RHEL4.7:/ios/rhel4.7
RHEL4.7 x86_64: /ios/rhel4.7-x86_64
CentOS5.4: /ios/centos5.4
CentOS5.4 x86_64: /ios/centos5.4- x86_64
/tftp根目录(这里是/tftpboot下,各版本的内核和引导文件也需要改变位置:
RHEL4.7:/ios/rhel4.7/vmlinuz
/ios/rhel4.7/initrd.img
RHEL4.7 x86_64: /ios/ rhel4.7-x86_64/vmlinuz
/ios/ rhel4.7-x86_64/initrd.img
CentOS5.4: /ios/centos5.4/vmlinuz
/ios/centos5.4/initrd.img
CentOS5.4 x86_64: /ios/centos5.4- x86_64/vmlinuz
/ios/centos5.4- x86_64/ initrd.img
PXE引导文件(这里是/tftpboot/pxelinux.cfg/default)修改:
default 3 prompt 1 timeout 300 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label 1 kernel rhel4.7/vmlinuz append initrd=rhel4.7/initrd.img label 2 kernel rhel4.7-x86_64/vmlinuz append initrd=rhel4.7-x86_64/initrd.img label 3 kernel centos5.4/vmlinuz append initrd=centos5.4/initrd.img label 4 kernel centos5.4-x86_64/vmlinuz append initrd=centos5.4-x86_64/initrd.img label 1-ks_** kernel rhel4.7/vmlinuz append ks=nfs:192.168.1.254:/ios/rhel4.7ks_**.cfg initrd=rhel4.7/initrd.img ksdevice=link label 2-ks_** kernel rhel4.7-x86_64/vmlinuz append ks=nfs:192.168.1.254:/ios/rhel4.7-x86_64ks_**.cfg initrd=rhel4.7-x86_64/initrd.img ksdevice=link label 3-ks_** kernel centos5.4/vmlinuz append ks=nfs:192.168.1.254:/ios/centos5.4ks_**.cfg initrd=centos5.4/initrd.img ksdevice=link label 4-ks_** kernel centos5.4-x86_64/vmlinuz append ks=nfs:192.168.1.254:/ios/centos5.4-x86_64ks_**.cfg initrd=centos5.4-x86_64/initrd.img ksdevice=link label local localboot 0 label mem kernel memtest append –
这里由于选项太多,可以在tftp根目录下启用boot.msg与options.msg文件来说明安装什么样的操作系统和怎样安装操作系统。如:
boot.msgInstall RHEL4.7: 1 Install RHEL4.7 x86_64: 2 Install CentOS5.4: 3 Install CentOS5.4 x86_64: 4 Default: Graph mode. If you want to use text mode, type: [number] text F1: boot.msg F2: options.msg
options.msgInstall RHEL4.7: 1 Install RHEL4.7 x86_64: 2 Install CentOS5.4: 3 Install CentOS5.4 x86_64: 4 Default: Graph mode. If you want to use text mode, type: [number] text If you want to use kickstart, the flowing list the different OS ks.cfg: 1-ks_**: RHEL4.7 2-ks_**: RHEL4.7 x86_64 3-ks_**: CentOS5.4 4-ks_**: CentOS5.4 x86_64 F1: boot.msg F2: options.msg
7. 小结
只要注意各操作系统的内核和引导文件的对应关系,就能扩展到多套系统。
kickstart文件能在原来的基础上修改的就在原来的基础上修改,稍加时日,就可以形成针对各业务不同的kickstart文件,这样就方便IDC人员实现Linux操作系统的自动化安装。
# linux
# 宋体
# 安装程序
# 重启
# 操作系统
# 镜像
# 的是
# 放在
# 过程中
# 基础上
# 客户端
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何在 Pandas 中基于一列条件计算另一列的分组均值
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
利用JavaScript实现拖拽改变元素大小
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
如何在云主机快速搭建网站站点?
郑州企业网站制作公司,郑州招聘网站有哪些?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
如何在云虚拟主机上快速搭建个人网站?
Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何快速打造个性化非模板自助建站?
制作电商网页,电商供应链怎么做?
Android滚轮选择时间控件使用详解
在centOS 7安装mysql 5.7的详细教程
Java类加载基本过程详细介绍
佛山网站制作系统,佛山企业变更地址网上办理步骤?
js实现获取鼠标当前的位置
SQL查询语句优化的实用方法总结
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Linux安全能力提升路径_长期防护思维说明【指导】
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
javascript基于原型链的继承及call和apply函数用法分析
如何在建站主机中优化服务器配置?
深圳网站制作的公司有哪些,dido官方网站?
简单实现jsp分页
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
php结合redis实现高并发下的抢购、秒杀功能的实例
Linux系统命令中tree命令详解
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何正确下载安装西数主机建站助手?
如何破解联通资金短缺导致的基站建设难题?
如何用y主机助手快速搭建网站?
如何快速搭建FTP站点实现文件共享?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Python面向对象测试方法_mock解析【教程】
免费网站制作appp,免费制作app哪个平台好?
如何在腾讯云服务器快速搭建个人网站?
在Oracle关闭情况下如何修改spfile的参数
海南网站制作公司有哪些,海口网是哪家的?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
Windows Hello人脸识别突然无法使用
详解Android中Activity的四大启动模式实验简述
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】

