在OSSIM安装的最后阶段,系统会进行GRUB引导程序安装,一旦GRUB安装失败,会导致系统无法引导。最近一些学员采用U盘在物理服务器部署OSSIM就遇到了这种问题,下面我们看个实例。
一、背景
用户将OSSIM的镜像写入到U盘(8GB)之后,采用U盘在服务器上安装系统,结果导致系统无法引导。下图为正常情况下采用光驱为服务器安装系统,右侧图采用U盘安装系统时磁盘文件的区别。
下图是安装GRUB的截图。
经过分析,通过U盘安装OSSIM系统时,/dev/sda是U盘设备名,而/dev/sdb才是硬盘(20GB空间)设备文件。下面查看这种情况/dev/sdb的信息。
二、故障分析
有关设备文件的说明,在上面的例子中/dev/sda是指你电脑上编号第一的那块SCSI硬盘(这里是U盘)。“grub-install /dev/sda”指令是将Grub(一个多操作系统引导程序)安装在第1块SCSI硬盘的引导区(一般是MBR,但也有GPT分区表的)。
当我们使用光驱为系统安装OSSIM时,光驱设备文件是/dev/sr0 ,第一块SCSI设备为/dev/sda
当使用U盘安装OSSIM时,系统默认会把U盘识别为/dev/sda,主机中的硬盘识别为/dev/sdb,而ISO安装脚本默认是写入到/dev/sda中,而U盘(写保护)无法写入,导致安装GRUB失败。
在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda、sdb、sdc等在某些情况下会造成混乱,例如sda变成了sdb或者sdc变成了sdb等,这样会导致磁盘设备管理的混乱,这也就是常见Linux文件系统的启动问题。
很多人在遇到这种问题的时候都去找存储或阵列卡的问题,其实这种底层的磁盘(单个磁盘或者RAID阵列)和Linux下磁盘设备文件的映射并不是磁盘、阵列厂家来决定的,而是Linux内核自身的原因。
光盘引导系统时,我们到CLI下,可以发现下面的现象。
正常情况下硬盘也就是,安装磁盘设备名称为/dev/sda
由上图可知,光驱设备名称为/dev/sr0
找到原因,我们也可以实现用官网下载的ISO进行U盘安装,下面我们将官网下载的ISO进行定制设置。
三、定制OSSIM安装镜像
OSSIM使用了build-simple-cdd 来 定制OSSIM安装盘,寻找配置文件中的定义,我们打开光盘中simple-cdd\defaultA.preseed文件,先分析他的用途:
禁用DHCP的脚本
d-i netcfg/disable_dhcpbooleantrue
d-i netcfg/confirm_staticbooleantrue
# 设置静态IP地址
#定义自动分区的脚本:面的操作执行自动分区而不再提示
d-i partman-auto/diskstring/dev/sda
d-I partman-auto/methodstringregular
d-I partman-auto/purge_lvm_from_devicebooleantrue
d-I partman-lvm/device_remove_lvmbooleantrue
d-I partman-md/device_remove_mdbooleantrue
d-I partman-lvm/confirmbooleantrue
d-I partman-auto/choose_recipeselectatomic
d-i partman-auto/expert_recipestring\
boot-root::\
500100001000000000ext3\
$primary{}$bootable{}\
method{format}format{}\
use_filesystem{}filesystem{ext3}\
mountpoint{/}\
64512300%linux-swap\
method{swap}format{}\
写入Grub的脚本
grub-pc grub-pc/install_devicesmultiselect/dev/sda
grub-pc grub2/linux_cmdline_defaultstringquietsplashvga=792
d-i grub-installer/only_debianbooleantrue
d-i grub-installer/with_other_osbooleantrue
设置主机名和域名
d-i netcfg/get_hostnamestringalienvault
d-i netcfg/get_domainstringalienvault
1.
2.
设置管理员接口
cd-setupcd-setup/ifaces_promiscmultiselecteth0(admin)
修改镜像思路:
先将defaultA.preseed文件提取出来,修改其中/dev/sda部分,保存。然后删除ISO内的defaultA.preseed文件,再添加已经修改好的defaultA.preseed文件,最后我们进行文件打包。
将打包好的文件保存为新的ISO文件。
注意:安装的时候会调用simple-cdd目录下的配置文件。
推荐使用工具UltraISO
如何使用UltraISO方法本文不再赘述。
注:试验中如丢失defaultB.preseed文件,会出现上图所示界面。
2023年度 51CTO杰出讲师评选开始啦,期待大家投上宝贵一票! http://edu.51cto.com/lecturer/350944.html