我正在使用 USB 驱动器在不同类型的服务器(HP Proliant ML110、ML310、ML350)上进行 Ubuntu-14.04-server 的无人值守安装。
在某些情况下,USB 驱动器错误地安装在/media
而不是 上/cdrom
,导致安装过程停止并显示以下消息:
[ 检测并挂载 CD-ROM ]
无法安装您的安装 CD-ROM。这可能意味着 CD-ROM 不在驱动器中。如果是这样,您可以插入它并重试。
我设法确定了一些发生此错误的情况:
- 在 ML110 和 ML310 上:当硬盘驱动器为空时
- 在 ML350 Gen9 上:即使硬盘已分区。
我认为它来自于debian-installer
在安装的早期阶段,尝试从第一次驾驶然后/media
将 USB 驱动器安装到 中/cdrom
。
在上述情况下,安装过程稍后会检测到硬盘,因此 USB 驱动器是第一次驾驶因此将其安装在 上/media
而不是 上/cdrom
。
对于手动干预不成问题的人来说,我找到了一种解决方法,我将在下面的答案中描述。但对于无人值守的安装,这不是解决方案。
我们可以强制安装程序在特定的安装点上安装 USB 驱动器吗?
答案1
对于手动干预不成问题的人来说,这里有一个简单的程序。
- 打开另一个终端
tty2
或tty3
按alt+F2
或alt+F3
并按enter
从以下位置卸载 USB 驱动器
/media
:umount /media/
sdX
在设备列表中识别 USB 驱动器(sda
,sdb
,sdc
,...)ls -l /sys/block/sd* | grep usb
安装 USB 驱动器到
/cdrom
mount /dev/sdX /cdrom
tty1
按下返回主终端alt+F1
,然后按下yes
重试安装“CD-ROM”。
正如问题中所提到的,这是一种变通方法,而不是无人值守安装的解决方案。
答案2
我遇到了同样的问题,最后幸运地发现了一组可以让我自动执行此操作的幻灯片,并且有一个带有完整预置文件的代码库。https://github.com/uweplonus/adia-install/blob/master/initrd/preseed.cfg#L3
许多人建议使用preseed/early_command umount /media/*
,但由于预播部分运行的时间与分区的时间不同,这种方法在相当长的一段时间内都没有起到作用。
正确的方法是将以下内容添加到 boot 命令引用的预置文件中的任何位置。
d-i partman/early_command string \ USBDEV=$(list-devices usb-partition | sed "s/\(.*\)./\1/");\ BOOTDEV=$(list-devices disk | grep -v "$USBDEV" | head -1);\ debconf-set partman-auto/disk $BOOTDEV;\ debconf-set grub-installer/bootdev $BOOTDEV; \ umount /media;