文章目录

  • 解压/压缩命令
  • 思路
  • 实际操作步骤
  • 总结

环境:CentOS 7.6

解压/压缩命令

# 解压原始文件
mkdir ./test
xz -dc initrd.img | cpio -id# 修改完成后打包(因为无 lzma 工具,故使用gzip)
find . | cpio --quiet -H newc -o | gzip -9 -n > ../initrd-raid.img.gz
mv ../initrd-raid.img.gz /var/lib/tftpboot/centos7.6/initrd-raid.img
# 二次打包命令
mv initrd-raid.img initrd-raid.img.gz && gzip -d initrd-raid.img.gz
cpio -id < initrd-raid.img

思路

参考 基于PXE自动配置RAID方法:

我们要在内存中运行一个小的内核系统,并检测到raid,然后对raid进行配置,我们使用了基于centos6.5的内核和initrd.img(initrd.img本身是一个小的内存中运行的系统),但这个小系统本身带的工具太少,需要我们加入MegaCli64命令,以及用到的shell命令,定制一个符合我们要求的小系统,并重新打包。
由于我们需要在正式安装前配置raid,所以我们利用ks文件中的%pre执行一些检测和配置工作,然后直接重启就OK了。

根据上述思路,我在 CentOS 7.6 环境中通过在 ks 文件中的 @pre 操作来执行配置 RAID 的操作未能成功,于是转变思路,在 initrd.img 加载过程中直接配置 RAID。

根据 Linux 安装启动过程, initrd.img 加载时,会执行 init 命令进行初始化,然后执行 ./usr/bin/dracut-initqueue ,通过修改该初始化脚本中的调用操作,增加获取到 IP 地址后从 ks 服务器端获取配置 RAID 的脚本,实现 PXE 过程中动态配置 RAID 的操作。

总结如下:

  1. 读取全局环境变量 /tmp/ks_urls,获得 ks 文件的服务器地址
  2. 从 ks 文件服务器 scripts 目录读取 raid 脚本并执行
  3. 再执行系统安装流程(可用 init u 来重新执行)

修改文件,cat ./test/usr/lib/dracut/hooks/initqueue/online/12-fetch-raid-net.sh,增加 config_raid() 方法:

#!/bin/bash
# fetch-kickstart-net - fetch kickstart file from the network.
# runs from the "initqueue/online" hook whenever a net interface comes online# initqueue/online hook passes interface name as $1
netif="$1"command -v getarg >/dev/null || . /lib/dracut-lib.sh
. /lib/url-lib.sh
. /lib/anaconda-lib.shconfig_raid() {local ks_serverks_server=`cat /tmp/ks_urls | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"`curl -o /tmp/raid.sh http://$ks_server/scripts/raid.shbash -x /tmp/raid.shif [ $? -ne 0 ];thenwarn  "Could Not Config Raid"return 1elseinfo "Config Raid Done"return 0fi
}config_raid[ $? -ne 0 ] && exit 1

其中,raid.sh 内为基本的 MegaCli 配置命令。

实际操作步骤

  1. 解压 initrd.img
  2. 加入 MegaCli 包
    a. cp -r /opt ./
    b. 通过 ldd opt/MegaRAID/MegaCli/MegaCli64 查看 MegaCLi 缺少的依赖包并从正常系统拷入
    c. 加入执行 raid.sh 时需要的 shell 命令 curl ,记得 chmod +x
    d. 打包 initrd.img
  3. 替换原来 initrd.img ,PXE 启动进行测试

总结

  1. 现网环境服务器比较老旧,只能通过带内来进行实现(无奈.jpg)
  2. 个人思路,在实际机器(DELL)中成功运行,参考价值较小,希望大佬可以指正
  3. 了解 Linux 启动流程中的 dracut-initqueue 很有意思
  4. 新的服务器貌似都支持了 Redfish 通用接口来进行硬件相关的配置,就不需要如此费劲了

参考链接:

  • 基于 PXE 自动配置 RAID 方法
  • MegaCli 监控 RAID 状态
  • MegaCli 使用手册
  • Linux 安装启动过程
  • Linux 引导程序介绍

通过修改 initrd.img 来实现 PXE 启动过程中进行硬盘 RAID 初始化相关推荐

  1. 用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化

    前一段时间就在研究用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化,但被一些无关紧要的事儿给耽误了,经过查阅<dockerfile最佳实践>及MyS ...

  2. 服务器启动过程中没有提示进入raid卡的引导操作;如何修改、组建和配置raid卡

    一.问题描述 有时候在重装系统时,需要重新设置raid卡,但是在服务器启动过程中并没有进入raid卡的引导操作 二.根因 是由于启动引导模式不同导致的 传统的BIOS模式是Legacy,新型模式是UE ...

  3. U盘安装Centos7启动过程中出现:starting dracut initqueue hook

    使用U盘安装Centos7启动过程出现了以下报错:starting dracut initqueue hook 这个问题是因为安装程序没有找到安装文件的位置.所以我们需要在启动过程中找到对应启动盘的U ...

  4. linux启动过程中内核拷贝,轻松识破linux内核启动过程中的“”套路“”

    内核启动流程相关的内容让很多热爱linux的小伙伴既爱又恨,因为这是了解linux系统基本构造的良好过程同时由于其本身复杂且底层,脑子中的脉络不是很清晰,本文就总结了一些优秀博文,以自己的理解来解构一 ...

  5. linux内核启动文件系统,Linux启动过程中文件系统的加载

    前言:我觉得我的文章相对来说都是比较浅显的.一些初学者可以看看,这也是我不在嵌入式那个版上发文的原因.对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其中的错误.这也是我到这里来和大家 ...

  6. Pyspider启动过程中的问题ssl/nss错配问题

    pysider的配置 pyspider, centos 7.4 , python 3.6.5 问题的提出 在启动pyspider的过程中,碰到如下的问题: 其中的信息如下: [root@AY13120 ...

  7. Ubuntu虚拟机中VCS安装和启动过程中遇到的问题总结

    上篇文件写完后,很多人留言说VCS启动有些问题在文中没有解决,这里总结汇总了下从VCS安装好以后,临时license授权到使用VCS成功运行并用verdi dump波形这个过程中可能会遇到的一些问题及 ...

  8. ifix5.8 启动过程中 iFX系统未启动!Profice iFIX 启动文件末找到无法执行任务:IOCNTRL.EXE

     错误提示: iFX系统未启动! Profice iFIX启动 文件末找到 无法执行任务:IOCNTRL.EXE 未检测到SCADA冗余对 无法找到I/O启动器的配置程序 解决过程:找到以下贴子 IF ...

  9. Android启动过程中执行一个C语言的应用程序或者执行shell脚本

    Android启动过程中执行一个C语言的应用程序或者执行shell脚本 一.Android启动过程中去对系统做一些设置,如修改某些文件夹的属性和文件的权限,可在init.rc中增加service执行s ...

最新文章

  1. 万字大白话带你重拾计算机网络
  2. 避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常
  3. 分享超酷的添加图片悬浮特效jQuery插件 - Adipoli
  4. python dict遍历_Python 容器(二):字典(Dict)
  5. (十八)深入浅出TCPIP之epoll的一些思考
  6. gdal获取像元的灰度值java_GDAL利用地理坐标读取图像像元值
  7. ACM MM2018 Best Paper 被华人包揽
  8. 大数运算(Java)
  9. c语言课程设计风扇,基于单片机C语言万历智能温控风扇设计报告proteus大赛汇编.doc...
  10. BAPI_FIXEDASSET_OVRTAKE_CREATE 创建资产并折旧
  11. 计算机技术领域当前的主流技术及其社会需求调查报告
  12. Windows 文件系统格式 Raw格式转换NTFS
  13. 工信部《全国区块链和分布式记账技术标准化技术委员会组建公示》
  14. 过cloudflare,使用cfscrape,以及cfscrape挂代理的方式
  15. ECBS多机器人路径规划
  16. Javaweb后端技术(下)02-Mybatis
  17. Cesium环境 Primitives加载广告牌出现Cannot read property ‘globe‘ of undefined
  18. 【用户画像】功能实现值写入ClickHouse人群包、预估和更新分群人数,NoSQL数据库介绍
  19. 我的Url重写,我的UrlRewriting
  20. clamav安装使用

热门文章

  1. endnote如何导入和导出文献
  2. 腾讯云首推私有云存储,意欲抢占更多用户市场
  3. Unity 检测鼠标进入UI
  4. 海外“吃鸡”游戏被下架!开发商Epic与苹果谷歌正面刚 ,60页诉讼状告“苹果税”
  5. Python数据攻略-Pandas的数据创建与基础特性
  6. 美团技术合辑:1300+页电子书,覆盖前端、后台、大数据、算法、顶会论文……...
  7. python 爬取抖音ID 粉丝量,点赞 联系方式 day3
  8. CS模式与BS模式的比较分析
  9. 人工智能在模拟空战中击落人类飞行员
  10. 一个彻底改变世界的思想