解决PXE安装Linux系统时kickstart自动识别硬盘问题

在使用PXE结合kickstart文件可实现网络全自动安装Linux系统,按照kickstart语法须要在ks.cfg文件中指定操作系统安装的位置(指定硬盘)如hda、sda或硬盘的UUID等唯一标识,分区信息以及建立mbr的位置。

如果硬盘命令指定有误,或与实际硬盘命令不符,无法找到对应的设备等那么anaconda会直接ks.cfg文件错误而导致安装失败;如果在ks.cfg文件中不指定硬盘信息,那么在进行到分区步骤时,anaconda会在此停下来让人工操作以便任务继续,那么批量主机安装系统时则严重降低部署效率。

  1. 正常情况下CentOS、RHEL、SUSE、Ubuntu等Linux系统按照SAS/SATA接口硬盘默认为/dev/sda、/dev/sdb、/dev/sdc....,但也有特殊情况,比如HP服务器主板加装P410阵列卡配置RAID后在CentOS/RHEL平台下默认以/dev/cciss/c0d0、/dev/cciss/c0来命名的;不同的虚拟化平台所虚拟化磁盘在Linux平台默认命令也可能不一样,Xen虚拟化磁盘默认以/dev/xvda、/dev/xvde命令;Kvm虚拟化磁盘默认以/dev/vda、/dev/vdb来命令等等。
  2. 如果主板直接接SAS/SATA硬盘或通过RAID控制器管理的本地硬盘通过PXE安装系统,会顺利将系统与mbr安装到本地硬盘上;如果主板通过光纤HBA卡映射的SAN存储,通过Linux内核优先扫描到,则被命令为/dev/sda等情况,那么默认可能会出现将操作系统安装到本地硬盘,而mbr安装到了SAN存储,导致安装完成后系统无法正常启动。

那么可否让anaconda可否根据磁盘大小或类型来自动识别磁盘的命名,并确定我们想要安装系统的位置呢?

这个问题是可以解决的,在kickstart语法中有pre预安装环境这一部分,在执行安装之前可做一些操作。在载入内核使用脚本判断出我们所需要安装硬盘的命名,再指定给kickstart文件调用即可。

这里我们使用容量大小为32GB的磁盘来安装操作系统与mbr,可从/proc/partitions文件内容判断第一块容量大小为32GB*1024*1024=3355442KB磁盘即可。

预安装脚本部分(注意%pre最后要以%end来结束标识):

disk=$(while read line;do awk ‘BEGIN{} {if ($3 == "33554432" && $2 == "0") print $4} END{}‘;done < /proc/partitions)

cat > /tmp/part-include << EOF

# Disk partitioning information

part / --asprimary --fstype="ext4" --ondisk=$disk --size=24576

part swap --fstype="swap" --ondisk=$disk --size=8191

EOF

将判断识别后的磁盘名称按照kickstart语法写入临时文件/tmp/part-include,再将kickstart文件中分区参数的部分修改为调用/tmp/part-include文件中的内容

%include /tmp/part-include

完整部分如下图:

就这样不论磁盘如何命名,仅依据容量来判定安装系统的位置实现灵活性安装系统。

时间: 2024-10-16 02:14:47

解决PXE安装Linux系统时kickstart自动识别硬盘问题的相关文章

PXE安装linux系统

利用网络安装系统流程:1.配置dhcp,让客户端能够自动获取ip,在dhcp配置中添加pxelinux.0配置,使客户端连接tftp文件2.复制光盘镜像的isolinux文件夹下面的所有文件到tftp的根目录中,复制/usr/share/syslinux/pxelinux.0到tftp的根目录中3.在tftp的根目录中创建pxelinux.cfg的文件夹,将tftp的根目录中的isolinux.cfg文件复制到pxelinux.cfg文件夹,修改为defualt4.修改defualt文件----

使用PXE安装Linux系统

1.配置DHCP服务器 # yum -y install dhcp # vim /etc/dhcp/dhcpd.conf 自定义subnet: subnet { ... next-server TFTP-SERVER-IP; filename "pxelinux.0"; } # service dhcpd restart # tail -f /var/log/boot.log 2.配置tftp-server # yum -y install xinetd tftp-server tft

解决虚拟机安装linux系统后不能上网的问题

一.首先虚拟机设置为桥联方式 需要配置下centos的IP及DNS 二.CentOS 修改网关  修改对应网卡的网关的配置文件 [[email protected]]# vi /etc/sysconfig/network 修改以下内容 NETWORKING=yes     (表示系统是否使用网络,一般设置为yes.如果设为no,则不能使用网络,而且很多系统服务程序将无法启动) HOSTNAME=centos     (设置本机的主机名,这里设置的主机名要和/etc/hosts中设置的主机名对应)

Kickstart&&pxe智能化安装Linux系统

Kickstart&&pxe智能化安装Linux系统

linux基础学习第二十一天之自动化安装linux系统(kickstart)

内容: 利用kickstart进行自动化安装linux系统 制作光盘.U盘启动盘 一.系统自动化安装: 1.anaconda 由前面的学习我们知道,系统的启动流程: bootloader-->kernel(initramfs)-->rootfs-->/sbin/init 所以,bootloader完全可以由光盘来进行引导,在引导的过程中在借助kickstart来进程自动安装 Anaconda是RedHat.CentOS.Fedora等Linux的安装管理程序.它可以提供文本.图形等安装管

自动化批量部署Linux系统(Kickstart+DHCP+NFS(http)+TFTP+PXE)

自动化批量部署Linux系统 (Kickstart+DHCP+NFS(http)+TFTP+PXE) 楓城浪子原创(除原理流程图外),转载请标明出处! 更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com 微信bh19890922 QQ445718526.490425557 序: 本文主要介绍自动化部署操作系统,主要借助的工具包含(Kickstart+DHCP+NFS(http)+TFTP+PXE),至于每种工具用途及作用请自行补脑,本文主

kickstart 批量安装Linux系统

Kickstart 批量安装Linux系统 Kickstart的工作原理想必大家都知道了,通过pxe协议同时装配多台服务器.一般用的时候不多,但是要知道,用的时候才能得心应手,我的环境如下: 需要安装部署的Linux服务器: Redhat 6.4 64位 IP地址:192.168.30.34 网卡:p3p1 子网掩码:255.255.255.0 网关:192.168.30.1 DNS:202.106.0.20 或者 8.8.8.8 具体操作: 第一部分:在kickstart服务器系统操作 关闭S

PXE全自动安装Linux系统

PXE自动安装Linux系统 PXE安装系统是基于网络的方式安装的,所以需要网卡支持PXE才可以. 本次实验环境: 虚拟机:VMware-10.0.1 build-1379776 服务器端:CentOS 6.6 安装的版本:CentOS 6.6 本次搭建所有安装域下载的服务程序都是基于YUM安装的,如果不能外网安装请自建光盘YUM仓库,参考:http://kmk0226.blog.51cto.com/5975994/1662522 配置文件修改都为vim,如果没有需要安装 yum -y inst

安装Ubuntu Linux系统时硬盘分区最合理的方法

无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在合肥上门装系统的经验谈谈安装Ubuntu Linux系统时硬盘分区最合理的方法. 在讲硬盘分区之前,我先来普及一下硬盘的相关分类,硬盘一般分为IDE硬盘.SCSI硬盘和SATA硬盘三种,在Linux系统中,IDE接口的硬盘被称为hd,SCSI和SATA接口的硬盘则被称为sd,其中IDE硬盘基本上已经淘