字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

近期在通过物理主机BMC(ILO地址进入后)系统远程安装系统时候经常出现“黑屏”问题。

安装中遇到的“黑屏”

黑屏解释:由于各种原因(链接BMC的网络限制或延迟、或跳板机经常卡死),导致在进入系统安装图形主界面(出现设置磁盘分区、时区、安装包、kdump等)前屏幕出现黑屏,鼠标阴影可以移动……就是卡在原地,停止不前,其中原因也有各种浏览器或java的版本不兼容等问题。总之,很多厂家的这种问题频繁的出现,让物理机加载本来启动就很慢的等待,面对黑屏更是无语到吐血…… 经过机房现场(机房安装系统很顺利,包括通过笔记本直连物理主机的ilo口,在笔记本上打开浏览器安装系统)和远程跳板机的近20多次的测试,发现一个规律:操作系统安装过程中图形界面下黑屏,但字符界面安装就不存在黑屏,这也许是网络数据传输限速不支持图形或者说现在主流的服务器对显卡要求低不支持主流操作系统。

第一种:通过ks.cfg应答文件完成字符界面下自定义分区安装

从以上实践结论,找到一个解决方案(至少有路可走),必须字符界面下安装操作系统。那么问题又来了,字符界面下安装是默认分区--不让手动创建和修改分区,那分区怎么办……,总不能搭建一个cobbler(网络PXE+kickstar+DHCP+tftp等全自动话无人值守安装的一种)安装吧。经过某厂家高手指导:本地光盘也可以使用kc.cfg文件安装,其实之前就想到:光盘在字符界面使用的默认分区就是依靠光盘中文件实现的,可以修改这个文件重新打包就行,但这样就破坏了原有的正常ISO文件,且面对多种需求不灵活。所以想到了手动创建新的应答文件(也叫init初始化文件)让系统能正常引导就可以了。所以本文章的主要内容是:通过本地操作系统光盘+自定义的ks.cfg应答文件进行无人值守安装系统。

以上是分析和测试过程,具体安装和操作过程如下:

准备工作

1、光盘ISO,本例中centos7.6; 2、ks.cfg文件,并压缩为iso文件(放入光驱的); 3、物理主机打开BMC,选两个光驱或一个光驱一个软驱(只要是可以加载的设备都行);

操作过程

----很简单吧,因为几乎是全自动化安装

1. BMC镜像挂载Centos.iso 和 ks.iso(centos.iso挂载到第一个虚拟光驱,ks.iso挂载到第二个虚拟光驱)。2. install centos 界面 按Tab,quiet后加 inst.ks=hd:/dev/sr1. 安装完成后系统会提示安装成功,需要按回车键重启。

操作过程截图如下:

1、BMC挂载镜像,两个iso文件。建议该界面一直开着,以观察数据是否读取。也可以通过打开cmd执行长ping看看安装过程中网络延迟;

系统安装过程中数据读取显示,判断当前是否正常

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

注:CD/DVD1和CD/DVD2的顺序在后面要区分的。

2、开机启动,进入启动菜单选择第一个ISO,也就是操作系统的ISO文件所在的位置。

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

3、在安装开始时,编辑应答文件:

看准时机和提示!!! 按tab键进入编辑

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

编辑应答文件的位置:

quiet后加 inst.ks=hd:/dev/sr1 ###dev/sr1是ks.cfg文件位置 也就是刚才挂载的第二个光驱位置。

编辑完,回车启动

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

至此,已经完成全部操作,等系统进入全自动安装界面。

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

文件ks.cfg内容

#version=DEVEL# System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
cdrom# Use graphical install
text# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=enp8s0f0 --onboot=off --ipv6=auto --no-activate
network --bootproto=dhcp --device=enp8s0f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=enp8s0f2 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=enp8s0f3 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens10f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens10f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens11f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens11f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens8f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens8f1 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$IOiWTYJILHDidTJw$AgLnxq.sP5.ZkWfwb844BPKOW7VzBj/60mWbt7JDUCnMEImV1Rk6gnTibUWg/1FTgb8lkJT7FZpOHKGzFbnw91# System services
services --disabled="chronyd"# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part pv.495 --fstype="lvmpv" --ondisk=sda --size=457517
part /boot --fstype="xfs" --ondisk=sda --size=200
volgroup centos --pesize=4096 pv.495
logvol swap --fstype="swap" --size=8192 --name=swap --vgname=centos
logvol / --fstype="xfs" --size=449321 --name=root --vgname=centos

%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
############################################
#####硬件部分:网卡和硬盘分区需要自己修改

这个ks.cfg文件在使用过程中可能会出现问题,需要不断修改。centos或redhad7或以上版本在磁盘划分时不一致。

例子2:如果安装完后在root目录下有个anaconda.cfg文件,即为ks.cfg文件

##### anaconda-10455ks.cfg 
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
repo --name="Server-HighAvailability" --baseurl=file:///run/install/repo/addons/HighAvailability
repo --name="Server-ResilientStorage" --baseurl=file:///run/install/repo/addons/ResilientStorage
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network --bootproto=dhcp --device=enp8s0f0 --onboot=off --ipv6=auto --no-activate
network --bootproto=dhcp --device=enp8s0f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=enp8s0f2 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=enp8s0f3 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens10f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens10f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens11f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens11f1 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens8f0 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=ens8f1 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$P2tgorSm0KSJ1k63$9P.3/c3gZtuTy9MABaFwiSYijfx4lboAU8UJN9eSrlye.qOPhA.HECajI8ik0f7I6Od4I9QAJTLeiPh2L4u6T0
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel --drives=sda
# Disk partitioning information
part pv.4411 --fstype="lvmpv" --ondisk=sda --size=457217
part /boot --fstype="xfs" --ondisk=sda --size=500
volgroup rhel --pesize=4096 pv.4411
logvol /usr/local/mysql-x86_64 --fstype="xfs" --size=20480 --name=usr_local_mysql-x86_64 --vgname=rhel
logvol /opt/auditbak --fstype="xfs" --size=102400 --name=opt_auditbak --vgname=rhel
logvol / --fstype="xfs" --size=40960 --name=root --vgname=rhel
logvol swap --fstype="swap" --size=16384 --name=swap --vgname=rhel
logvol /var/log/dbs --fstype="xfs" --size=61440 --name=var_log_dbs --vgname=rhel
logvol /audit_data --fstype="xfs" --size=215545 --name=audit_data --vgname=rhel
%packages
@^minimal
@core
@development
chrony
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

该例子不同的是--磁盘分区比较特殊 比如pv.4411

# Disk partitioning information
part pv.4411 --fstype="lvmpv" --ondisk=sda --size=457217
part /boot --fstype="xfs" --ondisk=sda --size=500
volgroup rhel --pesize=4096 pv.4411
logvol /usr/local/mysql-x86_64 --fstype="xfs" --size=20480 --name=usr_local_mysql-x86_64 --vgname=rhel
logvol /opt/auditbak --fstype="xfs" --size=102400 --name=opt_auditbak --vgname=rhel
logvol / --fstype="xfs" --size=40960 --name=root --vgname=rhel
logvol swap --fstype="swap" --size=16384 --name=swap --vgname=rhel
logvol /var/log/dbs --fstype="xfs" --size=61440 --name=var_log_dbs --vgname=rhel
logvol /audit_data --fstype="xfs" --size=215545 --name=audit_data --vgname=rhel

第二种,把iso文件读入到内存

既然在安装过程中出现延迟大的问题,那么就把iso文件读入到内存,这样就能保证图形安装过程中不受网络影响出现黑屏,但同样读取iso到内存需要很长时间。

操作过程

操作:在出现安装界面时,tab键进入到编辑模式,在quite末尾加入:

inst.nokill rd.live.ram

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

字符界面下自定义分区安装操作系统(本地光盘+ks.cfg无人值守安装系统)

1、inst.text是字符界面装机,不加就是图形界面;

2、nst.nokill 防止安装被终止并将ISO复制到内存中有助于防止超时;

~~~~后面图形安装省略。