环境:
虚拟软件:vmware workstation 14 pro
服务器虚拟机A:
系统:Centos7.3
IP:192.168.181.10
网络模式:仅主机
软件:dhcp-4.2.5
tftp-5.2
httpd-2.4.6
本机系统安装光盘
syslinux-4.05
system-config-kickstart-2.9.7
客户端虚拟机B:
新建虚拟机,等待pxe安装系统
网络模式:仅主机
部署:
服务器端:
1、关闭防火墙或放行相关端口,关闭SElinux:
# systemctl stop firewalld
# setenforce 0
2、安装xinetd超级守护进程服务(tftp服务的启动管理会用到)
# yum install -y xinetd ;安装xinetd服务
# systemctl enable xinetd ;允许xinetd服务开机启动
# systemctl start xinetd ;启动xinetd服务
3、安装tftp服务;(简单文件传输服务,用于pxe启动时客户端获取pxe启动
内核及其他文件)
# yum install -y tftp-server ;安装tftp-server
# sed -i '/disable/{s/yes/no/}' /etc/xinetd.d/tftp ;设置tftp服务随xinetd服务启动
# systemctl reload xinetd ;重载xinetd服务以使配置生效
该文件服务的文件存储位置为:/var/lib/tftpboot目录,pxe启动所需的相关
文件会放置在该位置;
# mkdir /var/lib/tftpboot/pxelinux.cfg ;该目录是pxe启动读取启动配置文件的
位置
4、部署dhcp服务
# yum install -y dhcpd; 安装dhcp服务
# systemctl enable dhcpd ;开机启动
编辑/etc/dhcp/dhcpd.conf文件,内容如下:
option domain-name "ijia.com"; 域名
option domain-name-servers ns1.ijia.com;域名服务器
default-lease-time 600; 默认租约时间
max-lease-time 7200; 最大租约时间
log-facility local7; 日志记录方式
subnet 192.168.181.0 netmask 255.255.255.0 {
range 192.168.181.100 192.168.181.200; 分派地址范围
option domain-name-servers ns1.ijia.com;分派的dns
option domain-name "ijia.com"; 分派的域名
option routers 192.168.181.10; 分派的网关ip
option broadcast-address 192.168.181.255; 分派的广播地址
default-lease-time 86400; 默认租约时间
max-lease-time 86400; 最大租约时间
filename "pxelinux.0"; pxe启动的文件名
next-server 192.168.181.10; pxe启动的下一跳服务器地址
}
#systemctl start dhcpd ;启动dhcp服务
5、安装httpd服务;(使用httpd服务来提供安装源和kickstart文件)
# yum install -y httpd ;
# systemctl enable httpd ;允许开机启动
# systemctl start httpd ;启动服务
# mkdir /var/www/html/centos7 ;要安装的系统光盘映像文件会复制到该位置;
# mkdir /var/www/html/kickstart ;自动应答文件kickstart会放置在该位置;
6、安装syslinux包(该包提供了linux在多种启动方式下所需的启动文件)
# yum install -y syslinux ;
# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,pxelinux.0}
/var/lib/tftpboot/ ;复制syslinux包中提供的pxe启动文件到tftp服务的文件
目录位置;
7、挂载安装镜像文件,并复制安装镜像到我们所指定的安装目录位置web站点
目录下centos7目录
# mount /dev/cdrom /mnt ;挂载cdrom到临时挂载目录/mnt
# cp -a /mnt/* /var/www/html/centos7 ;复制安装文件到指定位置;
# cp /mnt/.treeinfo /var/www/html/centos7 ;redhat官方文档提示inst.repo
指令指定的位置必须包含此文件,所以复制过去;
# cp /mnt/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot ;复制linux启动文件
到tftp服务的文件目录位置;
8、安装system-config-kickstart包图形配置kickstart文件或创建并自定义内容
kickstart文件或修改/root/anaconda-ks.cfg文件;该文件用于centos7自动
安装的应答文件;下面介绍图形配置kickstart文件。
#yum install -y system-config-kickstart ;安装
# system-config-kickstart ;启动命令,进入kickstart的图形配置界面
按需选择后,点击保存,存储为/var/www/html/kickstart/ks.cfg文件;
Tip:
运行system-config-kickstart命令在选择安装包时,可能会提示无可用
包,此时编辑/usr/share/system-config-kickstart/packages.py文件,
在文件161行处修改包组id,添加base(该仓库必须包含在系统当前
仓库中,并且可用,并且安装包中包含此仓库或者仓库中的包)
9、创建pxe启动默认配置文件/var/lib/tftpboot/pxelinux.cfg/default;
cat << EOF > /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 ;默认菜单程序
prompt 40 ;提示等待时间
timeout 60;选择超时时间;
MENU TITLE Centos7 x86_64 PXE Installation ;菜单标题
LABEL Centos 7 X86_64 PXE Installation ;选择菜单标记
MENU LABEL Centos7 x86_64 PXE Installation ;选择菜单名称
kernel vmlinuz ;启动的内核文件
APPEND initrd=initrd.img inst.repo=http://192.168.181.10/centos7
inst.ks=http://192.168.181.10/kickstart/ks.cfg ;附加的内核启动
参数;(详见:https://access.redhat.com/documentation/zh-
cn/red_hat_enterprise_linux/7/html/installation_guide/chap-an
aconda-boot-options)
label local ;默认从本地磁盘启动
menu label Boot from local drive
menu default
localboot 0xffff
EOF
客户端:
1、开机后进入bios设置pxe网络启动;
2、系统进入无人值守自动安装
cobbler的部署使用:
cobbler是对pxe安装过程的高级封装,主要包括distro,repo,profile
三个组件,distro包括对应版本的vmlinuz、initrd文件,导入时也会
导入packages,repo是各个版本对应的仓库,profile是安装模板
包括使用的distro,repo,ks文件等等(不指定repo时,使用的是
distro导入时的包仓库)
1、安装cobbler、cobbler-web包;
yum install -y cobbler cobbler-web pykickstart rsync dhcp tftp httpd
debmirror syslinux xinetd;
cobbler-web是cobbler的web操作界面
pykickstart是cobbler部署时需要用到的工具
rsync是cobbler数据同步时用到的工具
dhcp、tftp、httpd是网络部署需要的服务
syslinux包提供了各种环境的启动引导
debmirror是进行debian mirror下载和维护的工具
2、配置服务启动状态,启动服务
依照pxe的设置tftp服务,并配置开机启动,启动xinetd服务;
启动dhcp服务,并配置开机启动(注意添加filename和next-server两项)
启动rsync服务,并配置开机启动
启动httpd服务,并配置开机启动
启动cobblerd服务,并配置开机启动
运行cobbler check,并修改提示项:
#cobbler check ;依结果提示修改以下项:
1、修改/etc/cobbler/setting配置文件中的server指令为外部ip
(不能为127.0.0.1)
2、修改next-server指令为外部ip(不能为127.0.0.1)
3、已安装syslinux此提示可略过,也可运行cobbler get-loaders
4、enable和start rsyncd服务;
5、安装debmirror包;
6、修改安装时root的默认密码,使用如下命令:
openssl passwd -1 -salt `openssl rand -base64 2`
键入密码,得到加密字符串,填入setting配置文件对应位置
7 、安装fencing 工具:
yum install cman fence-agents -y
修改完成后,运行cobbler sync命令,重启cobbler服务:
#cobbler sync;
#systemctl restart cobblerd;
3、从安装光盘导入distro,创建profile文件:
# mount /dev/cdrom /mnt
挂载安装光盘到/mnt目录
# cobbler import --name=Centos7.3-x86_64 --path=/mnt
从目录导入安装文件(包括distro,repo等)
# cobbler list
列出当前cobbler资源列表,上一步导入会生成一个distro条目和
一个profile条目
# cobbler profile report ;
列出profile的详细信息,包括默认ks文件
4、启动一个无本地系统的客户机,选择安装条目后会进行系统自动安装
5、设置启动安装选项的密码:
生成加密密码串:
openssl passwd -1 -salt `openssl rand -base64 2`
在/etc/cobbler/pxe/pxedefault.template中MENU TITLE行下添加:
MENU MASTER PASSWD ****************(密码串)
在/etc/cobbler/pxe/pxeprofile.template中LABEL行下添加:
MENU PASSWD
运行cobbler sync命令:
# cobbler sync
此后,我们在执行网络安装时会要求输入密码
6、cobbler_web的密码设置
cobbler_web的访问地址为https:$IP/cobbler_web,默认访问账户密码
为:cobbler cobbler
cobblerweb管理页面的认证模块定义在/etc/cobbler/modules.conf中,
默认为authn_configfile
authn_configfile模块使用/etc/cobbler/users.digest文件中的账户进行认证
对该文件中用户的授权管理在/etc/cobbler/users.conf文件中;删除默认
账户,并添加用户自己设定账户:
首先删除cobbler默认账户:
#sed -i ‘/^cobbler/d’ /etc/cobbler/users.digest;
使用htdigest命令生成用户:
#htdigest /etc/cobbler/users.digest Cobbler cbl
Tip:realm设定为Cobbler,必须为此值,否则创建的用户无法登陆;
cbl为用户名,命令回车后输入密码即创建成功;
修改users.conf文件,授权cbl的管理员权限:
#sed -i -e '$a\cbl = ""' -e '/^cobbler/d' /etc/cobbler/users.conf
执行cobbler sync操作:
#cobbler sync
Tip:
1、在完成安装第一次启动cobblerd时运行cobbler check提示错误如下:
Traceback (most recent call last):
File "/usr/bin/cobbler", line 36, in <module>
sys.exit(app.main())
。。。。
return u.close()
File "/usr/lib64/python2.7/xmlrpclib.py", line 794, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">
解:google后据说是cobbler的一个bug,重启cobblerd服务再次运行
cobbler check,正常运行
疑:在上次命令正常后,再次运行cobbler sync和cobbler check命令均
提示如上错误
解:在setting配置文件中,设置了server的值为非本机的地址,修正后
正常;
2、cobbler在每次修改后都需要运行cobbler sync命令,配置文件修改时
修改重启cobblerd服务
3、对于cobbler repo的使用不太明了,在导入仓库并同步后,在profile中
指定使用该仓库,但安装时却提示找不到包,例:
@复制安装目录packages下的所有包到/var/www/html/centos7-base中
并下载epel源中yad包到该目录中(yad包仅依赖于base源中的某些包)
@并对centos7-base目录创建仓库文件:
#createrepo /var/www/html/centos7-base
@cobbler 添加repo:
#cobbler repo add --name=centos7-x86_64-base --\
mirror=/var/www/html/centos7-base
@同步repo:
# cobbler reposync
@添加profile使用仓库“centos7-base”:
#cobbler profile add --distro=Centos7.3-x86_64 --name=Centos
7.3-x86_64-yad-test --repos=centos7-base --ks=/var/lib/cobbler\
/kickstart/centos7-x86_64-yad-test
ks文件中定义了url --url=$tree
@cobbler sync
#cobbler sync
@重启cobblerd服务:
# systemctl restart cobblerd
@客户端选择从网络安装,提示找不到yad包,是否继续
cobbler自动安装Ubuntu、win7、win10、2016:
Ubuntu自动安装:
1、挂载光盘:
#mount /dev/cdrom /mnt
2、cobbler导入镜像:
#cobbler import --name=ubuntu16.04 --path=/mnt
3、cobbler导入镜像后,会生成两个distro版本、两个profile版本、两个repo版本
分别为ubuntu-server-hwe、ubunut-server;默认自动应答文件为/var/lib/
cobbler/kickstart/sample.seed文件,可以进行简单修改
4、使用自定义应答文件出错,无法自动安装;
进行桌面版本的部署出错,脑壳一片混乱,暂停!
Tip:
ubuntu16.04-desktop导入镜像失败,google说是不支持ubuntu桌面版本
系统的自动部署,下载了server版的导入成功
win7自动安装:
使用windows AIK程序中的‘部署工具命令提示工具’创建pe,参考
‘相关推荐文件’第五条
安装未成功,自动部署卡在wpeinit,偶尔出现蓝屏现象,问题如下:
出现的问题:
@在执行imagex /mountrw c:\winpe\winpe.wim 1 c:\winpe\mount
Error opening file [c:\winpe\winpe.wim]. 系统找不到指定的文件。
打开目录,发现copype amd64 C:\winpe命令并没有生成此文件
解:貌似是终端打开错误,程序生成了两个终端,一个是‘部署
工具命令提示’,‘部署和印象工具环境’,应打开前者
@在进行自动安装时卡在‘x:\windows\system32\wpeinit’
解:在制作安装iso时,删除startnet脚本的第一行‘wpeinit’
@在startnet脚本运行ping测试命令时提示‘无法联系ip驱动程序’
运行net use z: \\192.168.181.10\share时,提示‘工作站服务没有启动’
猜:可能是上面wpeinit程序未运行,导致ip驱动程序未装载
@恢复脚本第一行wpeinit,启动卡在此处,并偶尔蓝屏
@google搜索wpeinit是一个初始化pe环境,添加和装载你已经包含
进pe的驱动
@google后修改wpeinit为wpeinit.exe依然不行
卡文
win10自动安装:
安装步骤同win7差不多,不过安装对应win10的pe制作工具
参考:
https://anjia0532.github.io/2019/02/22/cobbler-win10-win-server-2019/
问题:
同样卡在了wpeinit处;
需要对winpe的详细启动和制作过程加以学习, 以排查问题所在
自动应答文件生成:
https://www.windowsafg.com/win10x86_x64.html
#该网站提供明了的选择项来帮助生成win10自动应答文件
https://www.windowscentral.com/how-create-unattended-
media-do-automated-installation-windows-10
#该网页记录了【windows系统映像管理器】生成自动应答文件的步骤
UEFI模式pxe安装centos7:
1、uefi模式和legacy模式的pxe安装的区别在于pxe引导所需的文件不同,即dhcp
中定义的filename的文件不同,所需文件都可在镜像包中找到,过程如下:
@dhcp中定义pxe引导文件名为‘BOOTX64.EFI’
@客户端向tftp服务器下载此文件,读取grub.cfg文件,获取引导菜单选项;
@客户端选择安装项,向tftp服务器下载vmliniuz和initrd文件,并根据启动
选项启动
@整个过程同legacy相差无几,主要是引导文件的差别
2、挂载镜像,复制可用文件到tftp服务器目录下:
镜像文件挂载后复制EFI/BOOT/目录下:
BOOTX64.EFI ;作用类似于pxelinux.0文件
grubx64.efi;引导菜单程序
grub.cfg (稍作修改);引导菜单程序配置项文件;
isolinux目录下:
vmlinuz
initrd
以上五个文件到/var/lib/tftpboot/目录下;
修改/etc/dhcp/dhcpd.conf文件中:
filename “BOOTX64.EFI”;
3、其他步骤雷同legacy pxe安装;
问题:
1、pxe安装提示:
/sbin/dmsquash-live-root write error no space left on device
解:
在虚拟机内存只有1G内存时7.3安装会报错,7.1,7.2可能可以准确安装
调整虚拟机内存至2G以上
2、设定了ks文件,但安装时却总是进入图形安装界面等待手动选择
解:在生成kickstart文件时,选择text模式;
不知道为什么图形界面不能实现自动安装
3、自动安装时,弹出互动提示:
Erro setting up software source;
Installation source not set up;
解:虽然在system-config-kickstart程序中指定了安装源,但生成的ks文件
中却并没有包含此项,在ks文件中添加安装包url:
install
url --url http://192.168.181.10/centos7
4、延续3的问题,原本在安装内核启动参数中有设置inst.repo,但未知也未
生效;
析:原本认为是.treeinfo文件在cp时未一起复制到安装源目录,但重新从
光盘中复制文件过去,启动还是不行,未解
5、在%packages模块,考虑到有可能装图形界面(Oracle)做了一个注释
%packages
...
#@gnome-desktop
然后就会在安装过程卡住,在#后面增加与一个空格就好了
# @gnome-desktop
6、由于cobbler导入ubuntu-desktop系统失败,所以尝试pxe部署安装
坑:
1、复制icasper目录下vmlinuz和initrd作为网络安装内核,启动安装
失败,提示no init found
解:启动内核需加 boot=casper 参数,但之后提示找不到sr0设备
,应该是该安装内核内设定了安装路径默认为cdrom,装入cdrom
后,进入系统桌面,需双击安装程序进行安装,放弃;
查询boot=casper参数是指定cdrom安装,于此处无效;
2、iso镜像目录下并没有netboot/ubuntu-installer/amd64/目录,所
以找不到网络安装内核文件
3、在http://archive.ubuntu.com/上下载网络安装内核文件:vmlinux
、initrd.gz
4、将步骤3下载的文件放到tftp服务器文件目录并解压,设置为安装
内核文件,可以进入安装界面,由于未插入cdrom,也未指定安装
源,安装会要求选择就近的一个镜像站来下载安装所需文件
5、步骤3中网站boinic版本目录下之只有一个网络安装内核文件,未
区分是desktop版本还是server版本,安装程序和iso文件对应才能
正确安装,安装内核中的安装程序参数和所需文件是不同的;
(两个版本所安装内核的内核选用特性、内核装载的模块应该不同)
6、步骤4中选择从就近的镜像站中安装,安装完成进入系统,使用
uname -r:查看系统版本为:4.15.0-96-generic,按google到的说明
generic为桌面版本,server为服务器版本;但也有说两个版本的区别
只是安装的包的区别
7、
7、在进行ubunut的pxe自动安装时,不管是pxe部署还是cobbler部署,在
安装程序启动时都会提示‘没有默认路由,是否继续’,而dhcp服务器明明
指派了option routers
@ 在preseed文件中添加:
d-i netcfg/no-default-router boolean true
但是未生效
@为了排除dhcp服务器的问题,我停掉了dhcp服务,并配置使用dnsmasq
但同样的问题出现,dnsmasq使用配置参考:
https://www.cnblogs.com/sunsky303/p/9238669.html
8、cobbler在安装ubuntu时,使用自定义的preseed文件,无法进入自动安装
而对比cobbler默认的preseed文件,两者选项并没有与此问题有关的不同;
9、ubuntu18.04-server在cobbler import导入镜像时失败,一次日志提示空间
不足;一次怀疑是cobbler版本和ubuntu官网镜像版本不匹配,ubunut官方
下载的server版本包大小为870M,导入失败,google后在cmimage.ubuntu
.com/releases/18.04/中下载的包大小为921M,导入成功
10、错误信息:/sbin/dmsquash-live-root:line286:printf:write error:no space
left on device
解决办法:内存不足,增加客户机内存最少为2G
11、uefi模式pxe安装时,在向tftp服务器获取文件时服务器端报错:
‘tftp Error code 8: User aborted the transfer’
解决办法:本事例中,是因为tftp服务器上漏了grubx64.efi文件,客户端
搜索不到此文件,无法完成引导,因此中断了其它文件传输动作,服务
端因此报错;
相关推荐文档:
1、centos 7的pxe安装部署详解;
https://blog.51cto.com/renjunjie622/1782543 ;
2、https://access.redhat.com/documentation/zhcn/red_hat_enterprise
_linux/7/html/installation_guide/chap-anaconda-boot-options
redhat安装指南第20节--内核引导选项
3、https://access.redhat.com/documentation/zh-cn/red_hat_enterprise
_linux/7/html/installation_guide/sect-kickstart-syntax
redhat安装指南第23节--kickstart文件语法
4、cobbler部署
https://blog.csdn.net/qq_38773184/article/details/86508997
5、cobbler的win7部署
https://www.cnblogs.com/pluse/p/8508538.html
https://www.cnblogs.com/pluse/p/8528122.html win7应答文件之作
https://www.letifer.org/2014/03/26/cobbler-and-windows/ 抽离winpe中的固定参数
6、cobbler的仓库配置:
https://blog.csdn.net/Allison_ywt/article/details/77892826
7、cobbler部署CentOS,Ubuntu,Windows 10 和 Windows Server 2019
https://anjia0532.github.io/2019/02/22/cobbler-win10-win-server-2019/
8、Ubuntu官网kickstart文件使用介绍:
https://help.ubuntu.com/18.04/installation-guide/amd64/ch04s06.html#kickstart
9、Ubuntu官网preseed文件使用介绍:
https://help.ubuntu.com/18.04/installation-guide/amd64/apb.html
10、ubuntu使用手册:
*Ubuntu系统使用手册:
https://wiki.ubuntu.org.cn/UbuntuManual
*Ubuntu使用手册的次要参考资料:
https://wiki.ubuntu.org.cn/UbuntuManual:Ubuntu_%E6%8A%80%E6%
9C%AF%E6%94%AF%E6%8C%81#.E5.8F.82.E8.80.83.E8.B5.84.E
6.96.99
*debian/GUN安装手册
https://www.debian.org/releases/stable/amd64/
*ubuntu使用预置文件自动化安装
https://www.debian.org/releases/stable/amd64/apbs02.zh-cn.html
11、preseed文件模板:
https://www.debian.org/releases/buster/example-preseed.txt