
1、先找到WinPE.IS_文件,直接将其改成WinPE.CAB,然后用WinRAR解压缩,会发现其实就是一个ISO,如:WINPE.ISO。
2、找到你的RAID卡的驱动,一般来说里面有一个INF、一个SYS和一个DLL文件,还有什么README之类的,我们只要那个SYS就行了,比如说叫XXXSATA.SYS,把它用WinCAB打包成为CAB文件,然后把那个CAB改名为XXXSATA.SY_,然后把这个文件用ULTRAISO弄进ISO文件里面SYSTEM32里面的DRIVERS里面去,也许PE系统不同有差异,你就自己找找ISO里面哪个目录下有一堆SY_这种文件就行了。
3、用ULTRAISO在ISO文件里面找到传说中的TXTSETUP.SI_文件,一般在根目录,也不排除丢在SYSTEM32或者DRIVERS里面,把它提取出来,改成CAB文件,解压缩出TXTSETUP.SIF文件,就是WINDOWS预安装环境加载驱动的配置文件哦!
4、用ULTRAEDIT编辑这个文件,把你的驱动的信息添加进去就行了,以前面说的XXXSATA只有鬼知道存在与否的SATA卡为例,在[SCSI]段增加XXXSATA = "XXX SATA CONTROLLER"
其实这只是个名字,它代表的就是WINDOWS预安装环境加载的时候,显示的“正在加载XXXX驱动”那玩艺儿。然后在[SCSI.Load]段增加XXXSATA = XXXSATA.sys,4
这就是挂驱动,有人问不是压缩成了CAB格式的SY_文件吗?其实程序自己知道分析解压缩,只要保持名字的一致性就行了。然后就是比较复杂的一点了。在[HardwareIdsDatabase]段增加PCI/VEN_105A&DEV_3373 = "XXXSATA"
上面那个PCI后面的数字编号别复制上面的,这只是举个例子,若直接复制上面一段的话你的PE就准备蓝屏吧!这串数字在你的驱动的INF文件里面去找,绝对有的。自己研究研究。然后在[SourceDisksFiles]段添加XXXSATA.sys = 1,,,,,,4_,4,1,,,1,4
完成以后,把这个SIF文件用WinCAB压缩成CAB格式,改成SI_后缀名,然后用ULTRAISO添加到ISO文件里面取代以前的那个SI_文件,不过呢,最好先备份一下。
注:安装在硬盘上的PE挂驱动的方式也基本一样。其实不管是什么版本的PE,只要是基于WINDOWS预安装环境的,都可以参考上面的方法挂RAID卡驱动。大家可以举一反三!
通常情况下是需要用软驱和软盘,把RAID驱动拷贝到软盘上,在安装系统时看到“按F6加载磁盘驱动”时,按一下F6,然后将驱动软盘插入软驱,再继续,安装程序会自动将驱动加载,并继续安装过程。从windows2008开始,安装程序支持用其他设备加载raid驱动。
品牌服务器本身带有raid卡的,通常都会提供一张导航光盘,用它启动系统,会自动准备好驱动并引导你进行 *** 作系统的安装。如果导航光盘丢了,可以去厂商网站下载并刻盘使用。
至于xp、2003等,网友有自制的已经集成了很多raid驱动程序的安装盘,也有的是把安装盘制作成可以从U盘或光盘加载驱动的功能。
实现原理:
我们要在内存中运行一个小的内核系统,并检测到raid,然后对raid进行配置,我们使用了基于centos6.5的内核和initrd.img(initrd.img本身是一个小的内存中运行的系统),但这个小系统本身带的工具太少,需要我们加入MegaCli64命令,以及用到的shell命令,定制一个符合我们要求的小系统,并重新打包。
由于我们需要在正式安装前配置raid,所以我们利用ks文件中的%pre执行一些检测和配置工作,然后直接重启就OK了。
1. 环境准备
a. 正常安装的centos6.5一台
b. 下载并安装megacli工具
ftp://rpmfind.net/linux/Mandriva/devel/cooker/x86_64/media/non-free/release/megacli-8.02.21-1-mdv2012.0.x86_64.rpm
c. 安装后在目录/opt/MegaRAID/MegaCli/三个文件
libstorelibir-2.so.14.07-0 MegaCli MegaCli64
2. 小系统制作
a. 复制解压initrd.img
mount centos6.5.iso /mnt -o loop
mkdir /root/test
cp /mnt/isolinux/initrd.img /root/test/
cd /root/test
xz -dc initrd.img | cpio –id
解压后如下所示:
上述是在ubuntu系统中解压的,最好是在centos中进行,方便后面加入命令
b. 加入自定义的包
cp -r /opt ./ #加入MegaCli64工具
此时,Megacli64工具还不能用,因为在小系统中默认很多依赖包都没有
我们通过ldd查看MegaCLi64依赖的包(有几个缺少的),如下:
root@ubuntu:~/test# ldd opt/MegaRAID/MegaCli/MegaCli64
linux-vdso.so.1 =>(0x00007ffdaffd1000)
libpthread.so.0 =>/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f21f5f26000)
libncurses.so.5 =>/lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f21f5d03000)
libdl.so.2 =>/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f21f5aff000)
libstdc++.so.6 =>/usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f21f57fb000)
libm.so.6 =>/lib/x86_64-linux-gnu/libm.so.6 (0x00007f21f54f5000)
libgcc_s.so.1 =>/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f21f52df000)
libc.so.6 =>/lib/x86_64-linux-gnu/libc.so.6 (0x00007f21f4f1a000)
/lib64/ld-linux-x86-64.so.2 (0x00007f21f6144000)
libtinfo.so.5 =>/lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f21f4cf1000)
这时我们要从正常安装的centos6.5的系统中复制上述包到小系统的相应目录中。
c. 加入特定的shell命令
由于刚解压的小系统中缺少很多shell命令,所以也需要加入里面,以curl为例
首先,在正常安装的centos6.5系统中找到curl命令(/usr/bin/curl),将该命令复制到小系统中的目录中,即/root/test/usr/bin/,并给预执行权限
chmod +x /root/test/usr/bin/curl
根据上述方法我们依次加了head、cp、wc、uniq等命令
d. 打包小系统
find . |cpio -o -H newc>initrd
lzma initrd initrd.lzma
mv initrd.lzma initrd.img
然后将打包好的initrd.img放入PXE的启动文件所在目录中,这里是放在了/var/lib/tftpboot/centos6u5/目录中
3. 配置ks文件
langen_US
keyboardus
timezoneAsia/Shanghai
rootpw--iscrypted $1$bzMRSch3$e2iTZ.7IuuONNJcXLq2jy1
selinux--disabled
reboot
#text
cmdline
install
zerombryes
auth --useshadow --enablemd5
firewall--enabled --port=22:tcp
skipx
url --urlhttp://10.1.15.250/Centos6u5/
clearpart--all --initlabel
bootloader--location=mbr
autopart
logging--host=10.1.15.250 --level=debug
%packages
@core
%pre --interpreter /bin/sh --log=/root/my-pre-log
exportPATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
echo"-------------------"
ln -s -T /mnt/runtime/opt /opt
mkdir /newroot
mount tmpfs /newroot -t tmpfs
cp -a /mnt/runtime/* /newroot/
ls /mnt/runtime/
mount /proc /newroot/proc -o bind
mount /dev /newroot/dev -o bind
mount /sys /newroot/sys -o bind
# chroot to runipmitool/hpasmcli/omreport
chroot /newroot
/opt/MegaRAID/MegaCli/MegaCli64-DiscardPreservedCache -Lall -aALL
/opt/MegaRAID/MegaCli/MegaCli64 -CfgForeign-Clear -aALL
/opt/MegaRAID/MegaCli/MegaCli64-CfgLdDel -LALL -Force -aALL
/opt/MegaRAID/MegaCli/MegaCli64-CfgClr -aALL
id=`/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL |grep 'Enclosure Device ID' |uniq | awk '{print $4}'`
/opt/MegaRAID/MegaCli/MegaCli64-CfgSpanAdd -r10 -Array0[32:0,32:1] -Array1[32:2,32:3] -Array2[32:4,32:5]-Array3[32:6,32:7] -strpsz512 -a0 ||sleep 60
/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp WB -LALL -aALL
/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp ADRA -LALL -aALL
echo"---------------------"
reboot
大功告成!!!!PXE测试!!!
说明:
基于ubuntu的系统使用了debain-installer,其中最关键的检测和安装过程由一个大的二进制程序main-menu进行,无法进行hook,所以本场景不适用;
Rhel/Centos6.2之前的initrd.img打包方式不同,请注意,由于dell x20 、浪潮、联想最新的服务器最低只支持6.5,所以建议使用高版本系统制作配置raid的系统。
4. Raid缓存参数说明
建议设置:
WriteBack,ReadAdaptive, Direct, No Write Cache if bad BBU
写回(默认),自适应读(需要修改),读请求不缓存(默认),电池有问题时自动切到非写回模式(默认)
自适应读修改的命令:/opt/MegaRAID/MegaCli/MegaCli64-LDSetProp ADRA -LALL -aALL
————————————————
版权声明:本文为CSDN博主「枫华0925」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lizhihua0925/article/details/53198483
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)