Centos安装
◆ Centos安装的理解:
引导程序--->引导vmlinuz,initrd.img两个文件,启动一个小型的linux系统--->启动安装程序
--->安装程序根据用户选择或者ks文件查找安装源--->安装源就是一个yum仓库
◆ 光盘直接安装
略过
◆ pxe启动的本质
支持pxe启动的网卡,芯片中集成了一个tftp客户端,当客户机通过dhcp服务器取得ip的同时
取得一个tftp服务器ip,和一个pxe引导文件名,获取ip成功后,通过tftp-server取得
pxe引导文件,再加载tftp服务器上的菜单,内核...
◆ 安装源的问题
1. 可以在图形安装界面中安装源位置手动指定
2. 可以在安装启动菜单位置
按esc,再使用加参数指定
boot:linux ip=192.168.2.44 netmask=255.255.255.0 inst.repo=ftp://192.168.2.254/
注: 其中linux是启动菜单的第一项(包含了: kernel,initrd等)
Centos6,7的选项有所不同可参考:Red_Hat_Enterprise_Linux-7-Installation_Guide-en-US.pdf
在 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
中页面找相应的版本,再找Installation Guide就是其安装说明"Boot Options"为安装选项
◆ ks自动应答文件 (更多的使用是在pxe网启环境中使用)
1.文件的来源
1.1 正常安装一次后,在/root目录下会自动生成一个anaconda-ks.cfg文件就是自动应答文件,
可在这个基础上修改,主要在安装源上,网络安装为:url --url="ftp://192.168.2.99/"
1.2 在系统上安装system-config-kickstart程序可图形化生成ks文件,需桌面环境
在Centos7上需要一个[development]的yum源,否则不能选安装包
2.文件的使用
2.1 在安装中要手到指定
boot:linux ip=192.168.2.44 netmask=255.255.255.0 inst.ks=ftp://192.168.2.254/ks.cfg
2.2 windows作为服务器,使用
windows下使用 "TinyPXE网启" 可在配置菜单中加入选项,来启动自动安装
item Centos Install Centos 7
:Centos
kernel ${xieyi}://${next-server}/boot/vmlinuz inst.ks=${xieyi}://${next-server}/boot/ks.cfg
initrd ${xieyi}://${next-server}/boot/initrd.img
boot || goto retry
goto start
注: TinyPXE文件夹下 boot/的vmlinuz,initrd.img要使用相应的版本,不然可能会出问题
2.3 linux作为服务器,使用
dhcp tftp
pxe启动需要tftp的支持
过程
dhcp server <-------udp --------- client
dhcp server --------IP & TFTP --------> client
tftp server <-------UDP --------- client
tftp server --------pexlinux.0 --------> client
tftp server <-------UDP --------- client
tftp server --------kernel and initrd-----> client
ftp nfs http server <-------tcp --------- client
ftp nfs http server --------ks.cfg &yum repo------> client
3.ks文件的正确性
# ksvalidator
◆ 网络安装中的注意事项:
安装Centos7时1G内存会导致安装失败
如果网络中有dhcp服务器可以不写 ip=,让电脑自动获取
◆ windows作为服务器 注意事项:
* 关于windows下安装ftp服务,使用 "Serv-U" 有做服务器,一些简单的ftp服务器软件不能正常使用
* 如果不想把整个光驱都解压到硬盘上可使用虚拟光驱挂载iso文件,但是>>>windows下的挂载有问题<<<<
表现: 挂载后光盘目录下的 repodata 目录下的元数据文件后缀会丢失,
本来的.gz,.xz文件会变为无后缀,安装程序和yum都会无法获取元数据,失败
===========================================================================================
解决方法:
建一个目录Centos,
使用rar等软件将 iso 文件中的 repodata 目录解压到Centos目录下
再用虚拟光驱软件挂载iso文件
cd /d 到Centos目录下
mklink /j Packages i:\Packages(i:为虚拟光驱的盘符)
再使用这个Centos目录来使用安装源就OK了
===========================================================================================
系统光盘中isolinux目录列表
boot.msg: 打印启动信息(文本)
boot.cat: 光盘的mbr
isolinux.bin: 光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目(相当于stage2)
isolinux.cfg: isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
vesamenu.c32: 是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单
Memtest: 内存检测,这是一个独立的程序
splash.jgp: 光盘启动界面的背景图
vmlinuz 是内核映像
initrd.img 是ramfs(先cpio,再gzip压缩)
◆制作一个有定制菜单的安装光盘(可集成安装源,可不集成)
1. mddir myiso
2. cp -r /misc/cd/isolinux/ /data/myiso/ (将整个isolinux文件夹拷到目录下)
3. 将应答文件放入myiso目录下myiso/ksdir/ks.cfg
4. 修改菜单,isolinux.cfg
1abel mini
menu labelInstall a ^mini system
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks.cfg
5.
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 ×86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/
-b isolinux/isolinux.bin: 是相对路径,相对于/data/myiso/
6. 制作成为U盘linux下:
yum install syslinux
isohybrid boot.iso # 需要转换一个boot.iso文件
dd if=boot.iso of=/dev/sdc/(u盘)
mkisofs相关说明:
◆-o 指定映像文件的名称。
◆-b 指定在制作可开机光盘时所需的开机映像文件。
◆-c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog 全部内容作成一个文件。
◆-no-emul-boot 非模拟模式启动。
◆-boot-load-size 4 设置载入部分的数量
◆-boot-info-table 在启动的图像中现实信息
◆-R 或-rock 使用Rock RidgeExtensions
◆-J 或-joliet 使用Joliet格式的目录与文件名称
◆-v 或-verbose执行时显示详细的信息
◆-T 或-translation-table 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上
6.
7.
◆对比两个文件(使用hash来对比两个文件是否一样)
md5sum /cdrom/.discinfo /data/myiso/.discinfo
◆如果是6两张光盘合在一起,需要重新生成元数据 repodata
保留原有的 repodata目录下的 .xml文件 (分组信息)
createrepo -g repodata/.xml . (根据.xml,在当前目录创建repodata元数据目录)
find -name TRANS.TBL -exec rm {} \;(查找TRANS.TBL,并删除)
dhclient dhcp客户端
dhcp客户端,可以直接运行,默认为后台运行
-d: 可以查看查看其运行过程
日志: /var/lib/dhclient/dhclient.leases
DHCP服务port: udp c68 s67
c:Discover --> s:Offer --> c:Request --> s:ACK
* 跨网段
1. 路由开启 中继
2. DHCP代理(同网段一台主机 或 本网段的路由器)
◆Linux DHCP协议的实现程序:dhcp,dnsmasq(dhcp,dns)
yum install dhcp
检查语法:
service dhcpd configtest
/usr/sbin/dhcpd
/etc/dhcp/dhcpd.conf-->/etc/rc.d/init.d/dhcpd
***** subnet 要配置一个和本机同网段的地址段
***** 地址绑定
host XXXX{
hardware ethernet 00:00:00:f7:aa;
fixed-address 192.168.2.10;
option routers 192.168.2.254; #可选单独设置,不设置用subnet中的,
option domain-name-servers 61.139.2.69; #可选单独设置,默认用subnet 或 全局中的,
}
***** 在使用pxe时,tftp服务器
filename 'pxelinux.0'; # 指定网卡启动文件
next-server 192.168.100.100; # 指定网卡启动文件tftp服务器
/etc/dhcp/dhcpd6.conf-->/etc/rc.d/init.d/dhcpd6
/usr/sbin/dhcrelay
/etc/rc.d/init.d/dhcrelay
dhcp server:67/udp
dhcp client:68/udp
dhcpv6 client:546/udp
◆Dhcp client
dhclient自动获取的IP信息:/var/lib/dhclient
TFTP服务port: udp(69)
安装 yum install tftp-server
Centos 6 的启动:
chkconfig tftp on; service xinetd restart
Centos 7 的启动:
systemctl start tftp.socket
systemctl enable tfpt
工作目录:
/var/lib/tftpboot
mkdir pxelinux.cfg/
yum install syslinux (包中含有pxelinux.0,XXX.c32菜单风格)
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
使用一个简单的菜单
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
使用光盘的菜单
cp /misc/cd/isolinux/boot.msg splash.jpg vesamenu.c32 /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default(复制,重命名)
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600 #(60秒)
menu title Centos Auto Install
label linux
menu label ^Auto Install Mini Centos7
kernel vmlinuz
append initrd=initrd.img ks=http://XXX.XXX.XXX.XXX/ksdir/7/ks.cfg
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
http服务
yum install httpd
systemctl start httpd
systemctl enable httpd
cd /var/www/html
mkdir centos/{6,7} -pv
vim /etc/fstab
/dev/sr0 /var/www/html/centos/7 iso9660 defaults 0 0
mount -a
getenforce# ---->检查selinux是否关闭
cp ks.cfg /var/www/html/centos/7/ks.cfg
chmod 644 /var/www/html/centos/7/ks.cfg
第一次开机时的lensense许可禁用
◆ systemctl disable initial-setup.service
◆
cobbler
◆ cobbler 介绍
◆Cobbler:
>快速网络安装linux操作系统的服务,支持众多的Linux发行版:
Red Hat、Fedora、CentOS、Debian、Ubuntu和SuSE,也可以支持网络安装windows
>PXE的二次封装,将多种安装参数封装到一个菜单
>Python编写
>提供了CL和Web的管理形式
◆安装包
>cobbler 基于EPEL源
◆cobbler 服务集成
>PXE
>DHCP
>rsync
>Http
>DNS
>Kickstart
>IPMI电源管理
◆检查cobbler环境
>cobbler check
cobbler 相关术语
◆发行版:
表示一个操作系统版本,它承载了内核和initrd的信息,以及内核参数等其他数据配置文件:
◆配置文件:
包含一个发行版、一个kickstart文件以及可能的存储库,还包含更多特定的内核参数等其他数据
◆系统:
表示要配置的主机,它包含一个配置文件或一个镜像,还包含IP和MAC地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息
◆存储库:
保存一个yum或rsync存储库的镜像信息镜像:
◆镜像:
可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和initrd的对象)
cobbler各种配置目录说明
◆安装:yum install cobbler dhcp
◆配置文件目录/etc/cobbler
/etc/cobbler/settings:cobbler主配置文件
/etc/cobbler/iso/:iso模板配置文件
/etc/cobbler/pxe:pxe模板文件
/etc/cobbler/power:电源配置文件
/etc/cobbler/user.conf:web服务授权配置文件
/etc/cobbler/users.digest:web访问的用户名密码配置文件
/etc/cobbler/dhcp.template:dhcp服务器的的配置模板
/etc/cobbler/dnsmasq.template:dns服务器的配置模板
/etc/cobbler/tftpd.template:tftp服务的配置模板
/etc/cobbler/modules.conf:模块的配置文件
systemctl start cobbler
vim /etc/cobbler/settings
server :本机ip
next_server :tftp服务器ip
default_password_crypted :安装时设置的root密码
openssl passwd -1 -salt 'random-phrase-here'生成密码
manage_dhcp: 1 #设置为1,使用cobbler来管理设置dhcp服务
vim /etc/cobbler/dhcp.template #cobbler的dhcp设置模版
和设置dhcpd.conf一样
# 下载 启动的相关文件
cobbler get-loaders
会将相关文件下载到/var/lib/cobbler/loaders/下
cobbler sync
将/var/lib/cobbler/loaders/复制到/var/lib/tftpboot/目录下
ss -tunl
查看 67 69 80都开启
systemctl restart cobbler
# 开始准备 yum源
加一个光驱,加载6.9的光盘(可选)
echo '- - -' > /sys/class/scsi_host/host2/scan #通知scsi去重新扫描硬件
# 导入源,会自动生成一个 最小安装的菜单
cobbler import --path=/mnt/cdrom1/ --name=CentOS-6.9-x86_64 --arch=x86_64
# 会将光盘中的yum源导入到/var/www/cobbler/ks_mirror/CentOS-6.9-x86_64/目录下
# 导入后 会自动在 /var/lib/tftpboot/pxelinux.cfg/下生成启动菜单文件
cobbler import --path=/mnt/cdrom0/ --name=CentOS-7.4-x86_64 --arch=x86_64
# cobbler distro list
查看现有的 distro 相当于安装源
# cobbler profile remove --name=CentOS-6.9-i386
删除不要的 profile 相当于安装配置文件
# cobbler distro remove --name=CentOS-6.9-i386
删除不要的
# 要使用自己的ks文件,安装源必须改,改为url --url=$tree
cp ks6_mini.cfg /var/lib/cobbler/kickstarts/
cobbler profile add --name=CentOS-6.9-x86_64_Mini --distro=CentOS-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6_mini.cfg
菜单显示名 cobbler distro list中显示的
# cobbler profile report --name=CentOS-7.4-x86_64
查看配置文件的详情
◆cobbler commands介绍
cobbler check核对当前设置是否有问题
cobbler list列出所有的cobbler元素
cobbler report列出元素的详细信息
cobbler sync同步配置到数据目录,更改配置最好都要执行下
cobbler reposync同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息
◆ cobbler的web管理实现
◆cobbler-web
提供cobbler的基于web管理界面,epe源
yum install cobbler-web
◆认证方式
认证方法配置文件:/etc/cobbler/modules.conf
>支持多种认证方法:
authn_configfile
authn_pam
vim /etc/cobbler/modules.conf #可以修改认证方法 默认为下面
# authn_configfile --use Wetc/cobbler/users.digest (for basic setups) # 默认认证文件
htdigest -c /etc/cobbler/users.digest Cobbler test1 设置一个cobbler的管理员
设置用户密码
# 如果修改了认证方法为 module = authn_pam
使用的认证文件是/etc/cobbler/users.conf
# 增加一个账号
useradd -s /sbin/nologin test2
echo pass | passwd --stdin test2
vim /etc/cobbler/users.conf
admim='test2'
访问https://ip/cobbler_web/
◆
◆
代理dhcp
在有dhcp服务器的网络中,再开一个dhcp服务是不可行的,
这时可能使用一个 pxe-pdhcp 软件来处理
https://github.com/frsyuki/pxe-pdhcp
wget https://github.com/frsyuki/pxe-pdhcp/archive/master.zip
unzip master.zip
cd pxe-pdhcp-master/
make
生成一个pxe-pdhcp的可执行文件(单文件,可拷贝到其他地方去)
原理:
在一般的路由dhcp上没有关于pxe启动中需要的
net-server 和 boot filename字段 来指定tftp服务器和启动文件
无法进行pxe启动
而pxe-pdhcp软件可以监听在udp/67端口,收到客户机的dhcp-Discover报文后
以使用广播方式发一个携带了net-server 和 boot filename 的报文,通知
客户机tftp服务器和启动文件在什么地方,来完成pxe启动
遇到的坑:
作者说: -i or (-l, -t and -b), and options are needed.
但是 ./pxe-pdhcp -i ens33 -d pxelinux.0
listen address: 192.168.2.11:67
broadcast address 192.168.2.255:68
tftp address: 192.168.2.11
nbp name: pxelinux.0
这时,客户机没有ip地址,pxe-pdhcp 发的广播为192.168.2.255,客户机收不到啊。失败
正确的启动姿势:
./pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 192.168.2.11 -d pxelinux.0
说明:
-d 前台执行,(默认为后台运行)
-l 监听的地址 (0.0.0.0为本机所有网卡的地址)
-b 广播地址 (应该为255.255.255.255)
-t tftp服务器地址
pxelinux.0 启动文件
TinyPXE
menu
:Centos
kernel ${xieyi}://${next-server}/boot/vmlinuz inst.ks=${xieyi}://${next-server}/boot/ks.cfg
initrd ${xieyi}://${next-server}/boot/initrd.img
boot || goto retry
goto start
linux 使用 ipxe
cd ipxexxxxx/src
vim demo.ipxe
#!ipxe
ifopen
chain tftp://${next-server}/boot/menu.txt || shell
make bin/undionly.kpxe EMBED=demo.ipxe
cp bin/undionly.kpxe /var/lib/tftpboot/
使用
linux下使用ipxe 不能使用dhcp代理,使用pxe-pdhcp 代理 ${next-server}只会是dhcp服务器
不能使用${next-server},但可以使用固定ip,来达到tftp服务器
# 官方说明
http://ipxe.org/howto/chainloading
./pxe-pdhcp -l 0.0.0.0 -b 255.255.255.255 -t 192.168.2.11 -d undionly.kpxe