У меня есть виртуальная машина 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
.
Как я могу отладить проблему? У меня сейчас есть машина под управлением Ubuntu 12.04 с ядром 3.0, так что я могу разобраться. Ничто не кажется подозрительным, глядя на /boot/grub/grub.cfg
Я вижу, как передаются одни и те же идентификаторы; Я также пробовал update-initramfs -u -v
и я вижу, что hv_storvsc.ko
включается.
Мой ответ Вот, скопированный ниже, скорее всего, также применим к вам и объясняет, почему обновление ядра и модуль ядра (storvsc) устранили вашу проблему. Вот как получить стандартный компьютер Ubuntu 12.04, работающий на Hyper-V:
Самый простой способ заставить Ubuntu 12.04 нормально работать под Hyper-V на платформе 2012 - это загрузить образ Windows Azure Cloud - к сожалению, как я проверял сегодня (10 июля 2013 г.), образы недоступны на Образы Ubuntu Cloud магазин изображений. Я задал вопрос об их сайт ответов за которыми вы можете следить, чтобы увидеть, восстанавливают ли они облачные образы.
Тем не менее, давайте обсудим, почему у вас возникла проблема: 12.04.2 имеет более старое ядро без последней интеграции Hyper-V (модули ядра), которые были встроены в 12.10, а также в 13.04. Лекарство - получить более новое ядро. Как я сказал ранее, самый простой способ получить правильный образ - это создать образ, созданный для Windows Azure - публичное облако Azure и ваш частный сервер Hyper-V работают. по существу тот же гипервизор, поэтому к вам применимы все инструкции, применимые к Azure.
Для работы на платформе Azure, также известной как гипервизор Hyper-V 2012, Microsoft рекомендует в своем списке одобренные дистрибутивы Linux чтобы вы выполнили ряд шагов по обновлению дистрибутивов 12.04.x, чтобы использовать ядро и модули ядра с обратным переносом. Вам не нужно устанавливать walinuxagent или перенастраивать GRUB, что необходимо только для Windows Azure.. В полные инструкции воспроизводятся здесь с удаленными инструкциями walinuxagent и GRUB:
sudo sed -i "s,archive.ubuntu.com,azure.archive.ubuntu.com,g" /etc/apt/sources.list
На этом этапе зеркала обновляются, чтобы они указывали на размещенное в Azure зеркало.
sudo apt-add-repository ‘http://archive.canonical.com/ubuntu precise-backports main’
На этом шаге добавляется репозиторий, необходимый для получения изменений ядра и агента.
sudo apt-get update
sudo apt-get install linux-backports-modules-hv-precise-virtual
На этом этапе добавляется ядро обновления и связанные модули.
sudo apt-get install hv-kvp-daemon-init
На этом шаге добавляется обновленный агент.
НОТА: Я удалил walinuxagent из этой команды. Это не нужно для частных облаков, но для Windows Azure. Однако это обновление устанавливает обмен парами ключ-значение, который может использоваться для синхронизации времени и других вещей, но я не совсем уверен.
sudo apt-get dist-upgrade
sudo reboot
Последнее замечание: эти инструкции добавляют новый репозиторий на ваши машины с Ubuntu, и вы должны знать, какой эффект это имеет. Убедитесь, что первая команда выполняется правильно (я не тестировал ее на прошлой неделе), чтобы заменить archive.ubuntu.com
с участием azure.archive.ubuntu.com
. Я сам выполнил эти шаги, но не могу сказать, что они будут работать в будущем. Просто имейте в виду, что цель первого шага - указать вашему дистрибутиву Ubuntu использовать новый набор репозиториев по умолчанию, предназначенных для поддержки резервного копирования для Windows Azure и гипервизора Hyper-V 2012.