运维自动化之系统安装
本章内容系统安装过程配置anaconda自动化安装系统制作引导光盘和U盘DHCP服务PXE安装系统 cobbler企业级应用
安装程序
• CentOS系统安装
系统启动流程:
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
• anaconda: 系统安装程序
gui:图形窗口
tui: 基于图形库curses的文本窗口
安装程序启动过程
• MBR:isolinux/boot.cat
• stage2: isolinux/isolinux.bin
• 配置文件:isolinux/isolinux.cfg
每个对应的菜单选项:
加载内核:isolinuz/vmlinuz
向内核传递参数:append initrd=initrd.img ...
• 装载根文件系统,并启动anaconda
默认启动GUI接口
若是显式指定使用TUI接口:向内核传递text参数即可
(1)按tab键,在后面增加text
(2)按ESC键:boot: linux text “纯字符方式安装系统,不需要图形界面“
手动安装界面
anaconda工作过程
Anaconda安装系统分成三个阶段:
1、安装前配置阶段
- 安装过程使用的语言
- 键盘类型
- 安装目标存储设备
- Basic Storage:本地磁盘
- 特殊设备:iSCSI
- 设定主机名
- 配置网络接口
- 时区
- 管理员密码
- 设定分区方式及MBR的安装位置
- 创建一个普通用户
- 选定要安装的程序包
2、安装阶段
- 在目标磁盘创建分区,执行格式化操作等
- 将选定的程序包安装至目标位置
- 安装bootloader和initramfs
3、图形模式首次启动
- iptables
- selinux(安全机制)
- core dump
anaconda
anaconda负责安装系统向导,默认为GUI界面,如果我们使用ks自动应答安装的话建议使用TUI界面来安装,在安装启动界面我们可以按esc键来自己手动指定安装启动选项anaconda选项:
1)boot:linux askmethod 在稍后的安装中手动选择安装源
本地光盘、硬盘、NFS、FTP、HTTP
2)linux dd 加载驱动盘
3)linux ks=xxx 指定安装ks文件
- DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
- Hard drive: ks=hd:device:/directory/KICKSTART_FILE
- HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
- FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
- HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
- NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
4)linux nonet 不启用网络
5)linux noprobe 不装载其他的硬件设备
6)linux rescue 进入救援模式
7)linux 正常安装
8)local 从硬盘启动
9)linux text 以字符界面安装
10)linux ip={DHCP | 192.168.0.1} netmask=255.255.255.0 gateway=192.168.0.1 dns=114.114.114.114 ks=http://192.168.0.1/ks.cfg 设置IP并从网络获取ks文件
11)linux ip={DHCP | 192.168.0.1} netmask=255.255.255.0 gateway=192.168.0.1 dns=114.114.114.114 repo=http://192.168.0.1 设置IP地址并指定从repo源安装
- ip=IPADDR
- netmask=MASK
- gateway=GW
- dns=DNS_SERVER_IP
- ifname=NAME:MAC_ADDR
12)linux vnc vncpassword="PASSWORD" 使用vnc调用安装界面
# ls -1 isolinux/ boot.cat 模拟mbr文件 boot.msg grub.conf grub的配置文件 initrd.img ramdisk文件 isolinux.bin grub的第二阶段 isolinux.cfg 配置文件(启动菜单定制文件) memtest 内存测试文件 splash.jpg 背景图片 TRANS.TBL vesamenu.c32 光盘启动的图形界面菜单风格 vmlinuz 内核文件
13:启动菜单的配置文件isolinux/isolinux.cfg
# cat isolinux/isolinux.cfg default vesamenu.c32 提供图形菜单风格 #prompt 1 timeout 600 菜单选择超时时间 display boot.msg menu background splash.jpg 背景图片 menu title Welcome to CentOS 6.9! 菜单上方提示信息 menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux 一条菜单 menu label ^Install or upgrade an existing system menu default 默认选择 kernel vmlinuz append initrd=initrd.img 向内核传递参数
实验:如果想加图形界面,方法如下
1:配好yum 源:按装包yum grouplistall "gonme desktop" yum grouplist:查看包组
2:yum install bash-completion 如果是最小化安装的系统则安装补全包 用 rmp -qa "bash" 查找出
如果已经装好,则exit重新登录,只有从新登录装的包会生效
3:systemctl isolate graphical.target --------- 或者init5
4:修改开机启动运行模式,
kickstart自动应答文件
kickstart为anaconda安装系统过程中自动应答已配置好的选项,实现无人值守安装系统。
事先把我们手动安装时的那些设置,如分区,语言,口令之类的安装的包存在应答文件中,安装向导读取应答文件内容自动安装,
ks文件格式:三部分
命令段:
---必须指定---
authconfig: 认证方式配置
authconfig --useshadow --passalgo=sha512
bootloader:bootloader的安装位置及相关配置
bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"
keyboard
lang
timezone
rootpw
authconfig --enableshadow
bootloader --location=mbr --password=******
driverdisk 指定驱动盘
firewall --enable --ssh,--disabled
firstboot --disbaled
halt 完成后关机
reboot 完成后重启
text|graphical(default) 文本|图像
key --skip 跳过安装号码,适用于rhel版本
keyboard: 设定键盘类型
lang: 语言类型
part: 创建分区
rootpw: 指明root的密码
timezone: 时区
---可选命令---
clearpart --all,--linux,--none(default) --initlabel(初始化分区标记)
autopart 自动分区
ignoredisk --drives=drive1,drive2忽略硬盘
autostep 跳过可选项,付默认值
part or partition /boot --fstype ext4 --size=200
install OR upgrade
text: 文本安装界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安装完成后为系统创建新用户
url: 指明安装源
key –skip 跳过安装号码,适用于rhel版本
[root@centos7 ~/.ssh]# ssh-keygen 在centos7上先生成key Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:9xImk70qDENHI8D4aJlqNewV2o3/RUGm7njgz6ZIBqs root@centos7 The key's randomart image is: +---[RSA 2048]----+ | o.. .o | |. . ..o o. | | o+ oo+. . . | |.+.=.+...o . | |o ooo...S.* | |.. .= ..+= = | |. . * o.o+ . | | . o + ++ . | | E . o+o | +----[SHA256]-----+ [root@centos7 ~/.ssh]# cat id_rsa.pub 查看公钥文件
ks文件中LVM逻辑卷分区格式
part /boot --fstype xfs --size=200 --ondisk=sda part pv.2 --size=0 --grow --ondisk=sda volgroup myvg --pesize=4096 pv.2 logvol / --fstype xfs --name=lv_root --vgname=myvg --size=10240 --grow logvol swap --fstype swap --name=lv_swap --vgname=myvg --size=1024 --grow --maxsize=2048
ks文件中使用系统自动分区格式
# Partition clearing information clearpart --all --initlabel autopartc
实验:在centos7上通过应答文件配合ftp 服务实现自动化安装
#version=DEVEL
# Firewall configuration
firewall --disabled #关闭防火墙
# Install OS instead of upgrade
install
# Use network installation
cdrom 光盘引导
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# System timezone
timezone Africa/Abidjan
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=partition
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
part /boot --fstype=ext4 --size=300
part / --fstype=ext4 --size=20480
part /app --fstype=ext4 --size=10240
part swap --size=2048
%post
rm -rf /etc/yum.repo.d/*
cat > /etc/yum.repo.d/media.repo <<EOF
[base]
name=base
baseurl=file:///media/
gpgcheck=0
EOF
useradd wang
echo 111111|passwd --stdin wang
%end
%packages
@base
@core
autofs
%end
label linux
menu label ^Auto Install an system
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks6.cfg
label vesa
menu label Install ^Manual centos
kernel vmlinuz
append initrd=initrd.img reop=http://192.168.1.12/centos/6/os/x86_64/
label local
menu label Boot from ^local drive
menu default
localboot 0xffff
3、制作ISO文件,
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 RidgeExtensions 的系统上
DHCP DISCOVER:客户端到服务器
- Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
- Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
- Client执行接收到的pxelinux.0文件
- Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),TFTP将配置文发回Client,继而Client根据配置文件执行后续操作。
- Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
- Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
- Client启动Linux内核
- Client下载安装源文件,读取自动化安装脚本