![无人值守安装初期未检测到硬盘](https://linux22.com/image/656747/%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%E5%AE%89%E8%A3%85%E5%88%9D%E6%9C%9F%E6%9C%AA%E6%A3%80%E6%B5%8B%E5%88%B0%E7%A1%AC%E7%9B%98.png)
我正在使用 USB 驱动器和preseed
文件在不同类型的服务器(HP Proliant ML110、ML310、ML350)上进行无人值守的 Ubuntu-14.04-server 安装。该文件包含多个规则,包括自动对服务器硬盘进行(自定义)分区preseed
的配置。partman-auto
在服务器 ML110 和 ML310 上,在安装过程开始时(
partman
启动之前),硬盘驱动器已安装/dev/sda
,USB 驱动器已占用/dev/sdb
。因此,我d-i partman-auto/disk string /dev/sda
在我的preseed
文件中指定,并在服务器的硬盘驱动器上应用分区。一切正常。但在服务器 ML350 上,在安装过程开始时,主硬盘是不存在
/dev/sd*
,USB 驱动器会接管/dev/sda
。这只是一个几步稍后硬盘会出现在…中/dev/sdb
。因此,文件中的规则preseed
不再有效,并partman
损坏了我的 USB 驱动器。
这个令人恼火的事实引发了两个问题:
- 为什么在安装过程开始时主硬盘没有显示在设备中?
- 我怎样才能强制主硬盘出现(并让其占用
/dev/sda
),或者如果我不能,我怎样才能确定地找出/dev/sdX
主硬盘位于哪个位置。
我尝试添加dmraid=true
内核选项,但没有成功。我还尝试添加pci=conf1
(发现这里),但没有成功。
答案1
自从从旧的 CCISS 驱动程序迁移到 HPSA 驱动程序以来,HP Smart Array 控制器现在利用了普通的 SCSI 块设备子系统。因此,设备命名方案是/dev/sdX
。
由于 USB 设备存在,因此您使用 USB 密钥会改变设备枚举前RAID 控制器(您正在从其启动)。因此,USB 密钥变为/dev/sda
,第一个 HP Smart Array RAID 控制器为/dev/sdb
。
现代 Linux 操作系统使用分区标签或 UUID,因此设备名称在首次启动时并不重要(移除 USB 密钥后)。
您的平台之间的差异可能在于 ML110 和 ML310(您没有指定代数)没有使用智能阵列控制器,或者具有不同类别的 RAID 设备。
ML350做有一个合适的智能阵列控制器,因此您看到的行为是可以预料的。
如果可能的话,请使用不同的预置文件或尝试不同的部署方法。
答案2
即使在 中presed/early_command
尚未检测到硬盘,但我发现在 中partman/early_command
它可以被检测到!
因此,我创建了一个命令,使用正确的设备名称设置partman-auto/disk
参数,并在当时进行检查。debian-installer
有关该命令的更多信息,请参阅使用 preseed 进行无人值守安装 - 为 partman-auto 提供自定义设备