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 specify d-i partman-auto/disk string /dev/sda in my preseed 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 the preseed file is no longer valid and partman screws-up my USB drive.

This very annoying fact rises two questions:

  1. Why the main hard drive doesn't show in the devices at the beginning of the installation process?
  2. 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.

  • Do you have any option NOT to use USB for this? I don't deal in the Ubuntu/Debian realm, but my ProLiant servers all use a netbook image or a minimal .ISO mounted via the ILO. – ewwhite Apr 22 '15 at 14:44
  • USB are easy because I can put access keys and remove them once the s server is installed. Nevertheless, I'm going to try the whole process with a CD to see the results but it is not a final option for me, unfortunately :( – Jav Apr 22 '15 at 14:48

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.

| improve this answer | |
  • I tried a different approach: with a (quite long) d-i partman/early_command, I managed to identify the device /dev/sdX that needs to be passed to d-i partman-auto/disk. But I don't know how to pass the result since this option expects a string – Jav Apr 23 '15 at 9:15

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

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.