Hard drive is not detected at early stage of unattended installation
I'm doing an unattended installation of Ubuntu-14.04-server with a USB drive and a preseed
file on different type of servers (HP Proliant ML110, ML310, ML350). This preseed
file contains multiple rules, including the configuration of partman-auto
that automates the (custom) partitioning of the server's hard drive.
On the servers ML110 and ML310, at the beginning of the installation process (before
partman
launches), the hard drive is in/dev/sda
and the USB drive takes/dev/sdb
. Therefore, I specifyd-i partman-auto/disk string /dev/sda
in mypreseed
file, and the partitioning is applied on the server's hard drive. Everything works fine.But on the servers ML350, at the beginning of the installation process, the main hard drive is not present on
/dev/sd*
, and the USB drive takes the/dev/sda
. It's only a few steps later that the hard drive shows up … in/dev/sdb
. Therefore, my rule in thepreseed
file is no longer valid andpartman
screws-up my USB drive.
This very annoying fact rises two questions:
- Why the main hard drive doesn't show in the devices at the beginning of the installation process?
- How could I force the main hard drive to show up (and make it take the
/dev/sda
) or if I cannot, How could I find out, with certainty, on which/dev/sdX
the main hard drive will be.
I tried to add dmraid=true
in the kernel options, it didn't work. I also tried to add pci=conf1
(found here) but without success.
Solution 1:
Ever since the move from the old CCISS driver to the HPSA driver, HP Smart Array controllers now leverage the normal SCSI block device subsystem. Therefore, the device naming scheme is /dev/sdX
.
Your use of a USB key alters the device enumeration because the USB device is present before the RAID controller (you're booting off of it). So the USB key becomes /dev/sda
and the first HP Smart Array RAID controller is /dev/sdb
.
Modern Linux operating systems use partition labels or UUIDs, so the device name won't matter upon first boot (after you've removed the USB key).
The difference between your platforms may be that the ML110 and ML310 (you didn't specify generations) are not using Smart Array controllers, or have a different class of RAID device.
The ML350 does have a proper Smart Array controller, so the behavior you're seeing is to be expected.
Use a different preseed file, or try a different deployment approach if possible.
Solution 2:
Even if in an presed/early_command
the hard drive was not yet detected, I found out that in the partman/early_command
, it is!
Therefore, I made a command that sets the partman-auto/disk
parameter of the debian-installer
with the correct correct device name, checked at that moment.
For more information about that commad, see Unattended installation with preseed -- give a custom device to partman-auto