在hyper-v中更新到12.04后,等待根设备

我有一个Ubuntu 11.10虚拟机,我刚刚升级到12.04。 安装进行的很好,但现在使用3.2.0内核,它在启动时失败

Gave up waiting for root device. ... ALERT! /dev/mapper/uvm-root does not exist. Dropping to a shell! 

如果我使用以前的内核启动Linux uvm 3.0.0-17-server #30-Ubuntu SMP Thu Mar 8 22:15:30 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux一切正常。 在以前的内核中,我已经手动启用了hyper-v模块(如http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/10/21/installing-ubuntu-server-10-10- on-hyper-v.aspx ) – 基本上,它们已被添加到/etc/initramfs-tools/modules

我怎样才能debugging这个问题? 我有机器运行Ubuntu 12.04现在3.0内核,所以我可以调查。 没有看起来真的很可疑,看着/boot/grub/grub.cfg我可以看到相同的ID传递; 我也试过update-initramfs -u -v ,我可以看到hv_storvsc.ko被包含在内。

我的答案在这里复制下面,最有可能适用于你,并解释了为什么内核更新和内核模块(storvsc)解决了你的问题。 以下是如何获得在Hyper-V上运行的股票Ubuntu 12.04机器:

复制我的答案在这里: https : //serverfault.com/a/522332/72237

让Ubuntu 12.04在2012平台上运行得很好,最简单的方法就是下载Windows Azure云镜像 – 不幸的是,我今天(2013年7月10日)查看的这些镜像并不在Ubuntu Cloud Images镜像存储上。 我在他们的答案网站上提出了一个问题,您可以按照这些问题来查看他们是否还原了云端图像。

也就是说,让我们来讨论为什么你有一个问题:12.04.2有一个较旧的内核,没有最新的Hyper-V集成(内核模块),这些内核已经被烧入12.10,并且也在13.04。 治愈的方法是获得更新的内核。 正如我前面所说,获取正确映像的最简单方法是获取为Windows Azure构build的映像 – Azure公共云和专用Hyper-V服务器都运行基本相同的pipe理程序,因此适用于Azure的任何指示信息都适用于您。

要在Azure平台上运行,也就是2012 Hyper-V虚拟机pipe理程序,Microsoftbuild议您在他们认可的Linux发行版列表中按照许多步骤更新12.04.x发行版以使用后端内核和内核模块。 您不需要安装walinuxagent或重新configurationGRUB,这只是Windows Azure所必需的 。 在这里转载完整说明 ,并删除了walinuxagent和GRUB说明:

  1. sudo sed -i "s,archive.ubuntu.com,azure.archive.ubuntu.com,g" /etc/apt/sources.list

    此步骤将镜像更新为指向Azure托pipe的镜像。

  2. sudo apt-add-repository 'http://archive.canonical.com/ubuntu precise-backports main'

    这一步添加了获取内核和代理更改所需的存储库。

  3. sudo apt-get update
  4. sudo apt-get install linux-backports-modules-hv-precise-virtual

    这一步添加更新内核和相关的模块。

  5. sudo apt-get install hv-kvp-daemon-init

    这一步添加更新的代理。

    注意: 我已经从这个命令中删除了walinuxagent。 私有云不是必需的,但是适用于Windows Azure。 然而,这个更新确实安装了可能用于时间同步和其他事情的键值对交换,但我并不完全确定。

  6. 此步骤与修改GRUB以在Windows Azure上更高效地运行有关。
  7. (推荐) sudo apt-get dist-upgrade
  8. sudo reboot

最后需要注意的是:这些说明会为您的Ubuntu机器添加一个新的存储库,您应该意识到这个存在的影响。 确保第一个命令运行正确(我过去一周没有自己testing过)用azure.archive.ubuntu.comreplacearchive.ubuntu.com 。 我自己已经完成了这些步骤,但我不能说他们将来会工作。 请注意,第一步的目标是指出您的Ubuntu发行版使用一组新的默认存储库,旨在支持Windows Azure和2012 Hyper-Vpipe理程序。