Liunx之Centos系统无人值守全自动化安装
作者: 邓聪聪
定制 centos6.8 自动安装 ISO 光盘
- 安装系统为 centos6.8 (base server),安装方式为全新安装
- 使用 ext4 分区格式
- 安装前可以交互输入 root 密码,主机名,分区大小,然后安装过程自动化
- 关闭防火墙,selinux
- 网络为 dhcp 方式获取
- 时区为 Asia/Shanghai
- 分区表类型为 mbr
- 默认设置三个分区,boot 分区 200M,swap 分区 200M,其余为根分区
安装步骤
安装制作系统镜像所需要的工具
yum -y install mkisofs createrepo
创建光盘挂载目录、资源重构目录、自定义数据库目录
mkdir /mnt/iso (挂载光盘) mkdir /data/iso (ISO 目录)
挂载 CentOS 系统光盘, 并复制光盘目录下的内容到其他路径下,由于光盘内容权限为“只读”,可赋予权限直接修改或者 cp 新文件给权限修改。
mount -o loop /data/iso/CentOS-6.8-x86_64-minimal.iso /mnt/iso
创建自响应文件 ks.cfg ,把此文件放在 /data/iso/isolinux/ks.cfg
#version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use CDROM installation media cdrom #interactive # Root password rootpw --plaintext 123456 # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install #text # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled network --onboot=yes --device=eth0 --bootproto=dhcp --noipv6 # Do not configure the X Window System skipx # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone --isUtc Asia/Shanghai # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=200 part / --fstype="ext4" --grow --size=1
repo --name="CactiEZ" --baseurl=file:///mnt/source --cost=100
%packages --nobase @core
%post --nochroot
mkdir -p /mnt/sysimage/tmp/cactiez >> /tmp/ins.log 2>&1
cp /mnt/source/Packages/cactiez-x86_64.tgz /mnt/sysimage/tmp/cactiez >> /tmp/ins.log 2>&1
%post
cd /tmp/cactiez >> /tmp/ins.log 2>&1
tar zxvf cactiez-x86_64.tgz >> /tmp/ins.log 2>&1
cp -rf /tmp/cactiez/var/www/html/* /var/www/html >> /tmp/ins.log 2>&1
cp -rf /tmp/cactiez/usr/* /usr >> /tmp/ins.log 2>&1
cp -rf /tmp/cactiez/etc/* /etc >> /tmp/ins.log 2>&1
sed -i "s/GSSAPIAuthentication no/GSSAPIAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/#UseDNS yes/UseDNS no/g" /etc/ssh/sshd_config echo "nameserver 219.141.140.10" >> /etc/resolv.conf /sbin/chkconfig iptables off %end
修改启动安装导向文件 /data/iso/isolinux/isolinux.cfg, 下面为修改后内容
default vesamenu.c32 #prompt 1 timeout 50 menu background splash.jpg menu title Welcome to use CentOS 6.8! 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 PowerSoft OS menu default kernel vmlinuz append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
定制 ISO 光盘所需的数据
.discinfo 文件 一定要复制过来,建议复制完之后检查该文件是否存在!!!
rm -fr /data/iso/repodata
declare -x discinfo=$(head -1 .discinfo) cp /mnt/iso/repodata/*-c6-minimal-x86_64.xml ./c6-minimal-x86_64.xml cd .. createrepo -g repodata/c6-x86_64-comps.xml ./
重构系统,生成 ISO 镜像 -- 用于 CentOS6. 此步骤需要在 iso 的配置文件主目录中我这里是(/data/iso/)
mkisofs -o CentOS-6.5_64.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /data/iso/
重构系统,生成 ISO 镜像 -- 用于 CentOS 7
genisoimage -v -cache-inodes -joliet-long -R -J -T -V CENTOS7 -o /root/centos7.iso -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b images/efiboot.img -no-emul-boot .
在 CentOS7 中无法使用 %post 的参数 ks.cfg 配置文件如下:
#version=DEVEL
install
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
#graphical
text
# Run the Setup Agent on first boot
firstboot --disabled
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens33 --onboot=yes --ipv6=auto --no-activate
network --hostname=begon
# Root password
rootpw 12345678
firewall --disabled
selinux --disabled
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
#autopart --encrypted --type=lvm
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=300
part / --fstype xfs --size=1 --grow
#Reboot after installation
reboot --eject
%packages
@^minimal
@core
kexec-tools
%end
%post
systemctl stop firewalld
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
在 CentOS7 中 isolinux.cfg 配置文件如下:
[root@bogon isolinux]# cat isolinux.cfg default vesamenu.c32 timeout 30display boot.msg
Clear the screen when exiting the menu, instead of leaving the menu displayed.
For vesamenu, this means the graphical background is still displayed without
the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title CentOS 7
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13Border Area
menu color border * #00000000 #00000000 none
Selected item
menu color sel 0 #ffffffff #00000000 none
Title bar
menu color title 0 #ff7ba3d0 #00000000 none
Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none
Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none
Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none
Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none
Help text
menu color help 0 #ffffffff #00000000 none
A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none
Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 noneCommand prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 noneDo not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
menu tabmsg Press Tab for full configuration options on menu items.
menu separator # insert an empty line
menu separator # insert an empty linelabel linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quietlabel check
menu label Test this ^media & install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quietlabel linux
menu label ^Install CentOS7 CentOS7.4
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/isolinux/ks.cfgmenu separator # insert an empty line
utilities submenu
menu begin ^Troubleshooting
menu title Troubleshootinglabel vesa
menu indent count 5
menu label Install CentOS 7 in ^basic graphics mode
text help
Try this option out if you're having trouble installing
CentOS 7.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 xdriver=vesa nomodeset quietlabel rescue
menu indent count 5
menu label ^Rescue a CentOS system
text help
If the system will not boot, this lets you access files
and edit config files to try to get it booting again.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quietlabel memtest
menu label Run a ^memory test
text help
If your system is having issues, a problem with your
system's memory may be the cause. Use this utility to
see if the memory is working correctly.
endtext
kernel memtestmenu separator # insert an empty line
label local
menu label Boot from ^local drive
localboot 0xffffmenu separator # insert an empty line
menu separator # insert an empty linelabel returntomain
menu label Return to ^main menu
menu exitmenu end