菜鸟学Linux 第103篇笔记 pxe自动化安装linux
内容总览
linux的系统安装
kickstart文件的组成部分
DHCP (Dynamic Host Configuration Protocol)
PXE (Preboot Execution Environment)
tftp
PXE 实现自动化基于网络安装linux步骤
SELinux (Security-enforced Linux)
linux的系统安装:
CentOS 6
anaconda fedora, Linux系统安装程序 kickstart
安装前配置阶段
键盘类型
安装过程中的语言
支持的语言
时区
选择要使用的磁盘设备
分区格式化
选择要安装的程序包
管理员密码
是否启动iptables
是否启用selinux
安装阶段
在目录磁盘上创建出根文件系统
将选定的程序包安装至目录磁盘
如何启动安装过程
MBR: bootloader
网络启动安装过程
可移动设备
简装光盘, 只有isolinux
安装前配置阶段
配置的选项
必选项(一定要给)
可选项
kickstart文件的组成部分
命令段:用于配置系统
install
firewall
part
lvm
软件包, 指定要安装的程序包组(@)及程序包
%packages
@Base
lftp
tree
程序包名称之前附加“-”号表示不希望安装此程序包
%end
脚本段:
%pre: 安装过程开始之前执行的预备脚本(所能执行的操作较小,简装版的shell环境)
%post: 所有的软件安装完成之后执行的脚本 (必有完整意义上的shell环境)
光盘: MBR-->bootloader, isolinux
启动安装界面时,boot提示符后,可以向安装内核传递许多的配置参数用于安装指定过程
boot text 文本安装界面
boot askmethod 指定安装方法,让用户选择使用的安装树
boot asknetwork 安装过程中使用网络功能,并提示用户配置网络属性
boot dd 提示用户指定一个驱动程序所在设备
boot ks= 指定一个安装过程所使用的kickstart文件
ks={http|https}://
ks=cdrom:/
ks=nfs:
创建kickstart文件方式
1. 复制模板/root/anaconda-ks.cfg 而后使用vim编辑配置
2. 使用system-config-kickstart来生成,创建也使用/root/anaconda-ks.cfg作为模板
验证kickstart文件是否配置正确命令
# ksvalidator kick-file-name.cfg
bash丢失如何修复
1. 启动紧急救援模式
2. 获取到bash的rpm包
# mkdir /media
# mount -r /dev/dvd /media
# cd /media/Packages
# rpm -ivh bash-*.rpm --replacepkgs --root=/mnt/sysp_w_picpath/
DHCP (Dynamic Host Configuration Protocol)
bootp --> dhcp (lease 地址租约)
C/S
server: DHCP server UDP 67 (运行dhcp服务)
client: DHCP client UDP 68 (运行dhcp程序)
UDP: 发送很小的数据报文,且对时效性要求较高
dhcp报文交互过程(广播)
C: DHCP DISCOVER
S: DHCP OFFER (ip/netmask)
C: DHCP REQUEST
S: DHCP ACK
续约50%
C: DHCP REQUEST
DHCP
IP, NETMASK, GATEWAY, DNS, NTP SERVER, WINS SERVER, FILE
根据mac地址不同分配的IP也可不同
169.254.*.*
# yum install dhcp
dhcpd.conf
定义dhcp的自身工作属性
log-facility
全局地址分配属性 option打头
option router
子网配置
每个作用域通过一个subnet定义
subnet NETWORK_ADDR netmask NETMASK {
range ip ip;
option routers ip;
option broadcst-address ip;
option domain-name-servers ip;
option domain-name "";
default-lease-time #s;
max-lease-time #s;
}
主机配置(优先匹配)
通常为某特定的mac地址固定分配一个地址
host 'HOST ID' {
hardware ethernet mac-addr;
fixed-address ip;
}
PXE (Preboot Execution Environment)
Client 网卡要支持网络引导
tftp Trivial FTP, 简单文件传输协议, 高效传输小文件 UDP 69
超级守护进程 Xinetd
瞬时守护进程 无须定义运行级别,只需要一次性定义xinetd运行级别
独立守护进程(standalone) 有运行级别,
tftp
yum -y install tftp-server xinetd
tftp-directory: /var/lib/tftpboot/
复制文件到/var/lib/tftpboot/ 目录下 是从iso镜像里复制出来的
p_w_picpaths/pxeboot/{vmlinuz,initrd.img}
isolinux/{boot.msg,vesamenu.c32,splash.jpg}
# yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
将dhcp分配地址时给其客户端指定一个文件让其访问
/etc/dhcp/dhcpd.conf
next-server 192.168.11.171;
filename="pxelinux.0";
# service dhcpd restart
(至此centos便可以使用网络连接来启动安装界面)
建立web服务器 将iso镜像挂载到html/centos6.5目录里
# mount /dev/cdrom /var/www/html/centos6.5
制作kickstart文件复制到/var/www/html/目录中并命名ks.cfg
再将isolinux.cfg 即放在此目录下的default文件配置其ks文件所在地方
即可实现网络自动化安装centos
PXE 实现自动化基于网络安装linux
前提:
# mount /dev/cdrom /media
(挂载的是centos 6.5的iso)
1. 配置DHCP服务器
# yum -y install dhcp
# vim /etc/dhcp/dhcpd.conf
定义subnet {
...
next-server tftp-server-ip;
filename "pxelinux.0";
}
# service dhcpd restart
2. 配置tftp-server
# yum -y install xinetd tftp-server tftp
# service xientd start
# chkconfig tftp on
# service xinetd restart
# ss -unl | grep ":69"
3. 准备安装树
# mkdir /var/www/html/centos6.5
# mount --bind /media/ /var/www/html/centos6.5
# service httpd start
4. 准备/var/lib/tftpboot下的文件
/media/p_w_picpaths/pxeboot/{vmlinux,initrd.img}
/media/isolinux/{boot.msg,vesamenu.c32,splash.jpg}
/usr/share/syslinux/pxelinux.0
# mkdir /var/lib/tftpboot/pxelinux.cfg
/isolinux/isolinux.cfg 放到上边建立的目录并更名为default
5. 第一次测试,看看客户端是否可以启动到引导界面
6. 提供kickstart文件
注意url及repo后的路径要修改为可安装树的路径
配置kickstart文件时,虽然system-config-kickstart可以进行配置,但磁盘还
需要自行手动进行配置的,如果是想使用lvm
编辑好kickstart文件保存至/var/www/html目录下 ks.cfg(可自定义名字)
7. 配置引导程序能自动加载kickstart文件
# vim /var/lib/tftpboot/pxelinux.cfg/default
在label为linux项的append一行后附加
ks=http://HTTP_SERVER_IP/ks.cfg
8. 第二次测试,查看其是否可自动引导,并进行自动化安装centos 6.5
(预祝你成功呵呵 亲测本人已经配置完成)
SELinux (Secure Enhenced Linux)
沙箱
启用 /etc/selinux/config
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# getenforce
# setenforce {0|1}
0 off | 1 on
# ls -Z
# ps -auZ