Vhd ubuntu чем открыть
- Ubuntu 18.04 / Bionic: bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04 /Focal: focal-server-cloudimg-amd64-azure.vhd.zip
Предварительные требования
В этой статье предполагается, что вы уже установили операционную систему Ubuntu Linux на виртуальный жесткий диск. Существует несколько средств для создания VHD-файлов, например решение для виртуализации, такое как Hyper-V. Инструкции см. в разделе Установка роли Hyper-V и настройка виртуальной машины.
Замечания по установке Ubuntu
- Дополнительные сведения о подготовке Linux для Azure см. в разделе Общие замечания по установке Linux.
- Формат VHDX не поддерживается в Azure, поддерживается только фиксированный VHD. Вы можете преобразовать диск в формат VHD с помощью диспетчера Hyper-V или командлета Convert-VHD .
- При установке системы Linux рекомендуется использовать стандартные разделы, а не LVM (как правило, значение по умолчанию во многих дистрибутивах). Это позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если диск с OC может быть подключен к другой ВМ в целях устранения неполадок. Для дисков данных можно использовать LVM или RAID.
- Не настраивайте раздел или файл подкачки на диске с ОС. Агент подготовки cloud-init можно настроить так, чтобы он создал файл или раздел подкачки на временном диске ресурсов. Дополнительные сведения описаны далее.
- Размер виртуальной памяти всех VHD в Azure должен быть округлен до 1 МБ. При конвертации диска в формате RAW в виртуальный жесткий диск убедитесь, что размер диска RAW в несколько раз превышает 1 МБ. См. дополнительные сведения в примечаниях по установке Linux.
Создание вручную
На центральной панели диспетчера Hyper-V выберите виртуальную машину.
Щелкните Подключение , чтобы открыть окно виртуальной машины.
Замените текущие репозитории в образе репозиторием Azure для Ubuntu.
Перед редактированием /etc/apt/sources.list рекомендуется сделать резервную копию:
Ubuntu 18.04 и Ubuntu 20.04:
Образы Ubuntu для Azure теперь используют специализированное ядро Azure. Обновите операционную систему до последней версии специализированного ядра Azure и установите инструменты Azure для Linux (включая зависимости Hyper-V), выполнив следующие команды:
Ubuntu 18.04 и Ubuntu 20.04:
Измените строку загрузки ядра в конфигурации Grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте файл /etc/default/grub в текстовом редакторе, найдите переменную GRUB_CMDLINE_LINUX_DEFAULT (или добавьте ее, если это необходимо) и измените ее, включив следующие параметры:
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно это сделано по умолчанию.
Установите cloud-init (агент подготовки) и агент Linux для Azure (обработчик гостевых расширений). В пакете cloud-init для настройки конфигурации сети системы во время подготовки к работе и каждой последующей загрузки используется netplan .
Установка пакета walinuxagent приведет к удалению пакетов NetworkManager и NetworkManager-gnome (если они установлены).
Настройте агент Linux для Azure, чтобы он выполнял подготовку с помощью cloud-init. Дополнительные сведения об этих параметрах см. в проекте WALinuxAgent.
Команда sudo waagent -force -deprovision+user выполняет обобщение образа, пытаясь очистить систему и сделать ее пригодной для повторной подготовки. Команда +user также удаляет последнюю подготовленную учетную запись пользователя и связанные с ней данные.
Отмена подготовки с помощью приведенной выше команды не гарантирует, что из образа будет удалена вся конфиденциальная информация и что он будет готов к повторному распространению.
В диспетчере Hyper-V выберите Действие -> Завершение работы.
Azure принимает виртуальные жесткие диски только фиксированного размера. Если диск ОС виртуальной машины не является виртуальным жестким диском фиксированного размера, используйте командлет PowerShell Convert-VHD с параметром -VHDType Fixed . Ознакомьтесь с документацией по Convert-VHD здесь.
Дальнейшие действия
Теперь виртуальный жесткий диск Ubuntu Linux можно использовать для создания новых виртуальных машин Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.
Загрузка Linux с VHD может пригодиться в различных сценариях, например, когда на компьютере установлена Windows и есть необходимость в Linux, но WSL или виртуальной машины с Linux недостаточно, а разбивать диск на разделы нет желания. Microsoft позволяет грузить Windows с VHD «из коробки» начиная со старших редакций Windows 7. Но что делать, если возникла необходимость загрузить таким способом Linux?
На форумах часто можно встретить мнение, что загрузить Linux с VHD либо нельзя, либо очень сложно. Полезной информации в интернете на эту тему действительно мало. Базовая идея, как это осуществить, описана тут. Суть в следующем:
Необходимо убедиться в поддержке NTFS на всех этапах.
Необходимо убедиться в поддержке loop-устройств.
Добавить в загрузочные скрипты ОС команду монтирования loop-устройства.
Убедиться, что все необходимые утилиты добавлены в образ, обновить initramfs внутри VHD.
В случае legacy-зарузки (BIOS) и использования штатного загрузчика Windows добавить grub4dos в меню bootmgr, а в меню grub4dos добавить пункт для загрузки с VHD.
Практическое применение этой идеи для Arch Linux описано тут. В этой статье я проведу аналогичный эксперимент с Debian. Предполагается, что читатель имеет представление о работе с консолью в Windows и в Linux, умеет работать со стандартными системными утилитами, с ПО для виртуализации и т.п. — элементарные вещи подробно не расписаны.
Процесс загрузки будет выглядеть так: bootmgr -> grub4dos -> initramfs -> debian. Рассмотрим подготовку каждого этапа справа налево.
Установка Linux на VHD
Для начала необходимо создать пустой образ VHD с фиксированным размером. Если нужно минимизировать размер образа, то для экспериментов с CLI достаточно создать диск объемом
1,5 Гб. Для рабочей системы с GUI можно ограничиться объемом 10 Гб (с условием хранения пользовательских данных вне VHD).
Создадим VHD с помощью diskpart.exe:
Далее необходимо установить Debian на VHD. Я для этого воспользовался VirtualBox 6.1, устанавливал debian-10.8.0-amd64-netinst.iso. Параметры виртуальной машины — по умолчанию, новый диск создавать не надо, достаточно подключить ранее созданный debian.vhd.
Установка Debian стандартна, обращу внимание только на некоторые моменты.
При разметке диска я создал один загрузочный раздел ext4. Раздел подкачки на VHD я делать не стал, после установки можно разместить файл или раздел подкачки в удобном месте.
При выборе дополнительного ПО для установки я оставил только SSH-сервер и стандартные системные утилиты. Всё остальное можно поставить потом, по необходимости. GRUB установлен в MBR. Если при установке была выбрана русская локаль, то после установки можно добавить локаль en_US командой dpkg-reconfigure locales .
Подготовка Linux к загрузке с VHD
В установленную систему необходимо добавить поддержку NTFS и утилиту partprobe, которая позволяет сообщить ядру ОС о необходимости повторного чтения таблицы разделов жёсткого диска.
Затем надо подготовить скрипты для initramfs.
initramfs — это начальная файловая система в оперативной памяти, которая содержит утилиты и скрипты, требуемые для монтирования файловых систем перед вызовом init, располагающегося в корневой файловой системе.
Скрипты для initramfs созданы на основе документации. Наши дополнения для initramfs мы будем размещать в следующих каталогах.
/etc/initramfs-tools/hooks/ — здесь размещаются скрипты, которые запускаются при генерации initramfs-образа. Тут мы разместим скрипт для добавления в initramfs утилиты partprobe с необходимыми библиотеками.
/etc/initramfs-tools/scripts/local-top/ — после выполнения этих скриптов загрузчик считает, что root-устройство смонтировано. Т.е. здесь будет скрипт для монтирования VHD.
Скрипт для добавления partprobe в initramfs возьмем из этой статьи с добавлением еще одной библиотеки. Надо создать файл partcopy и сделать его исполняемым:
Скрипт для монтирования VHD сделан на основе скрипта для Arch Linux с учетом особенностей выбранного дистрибутива Linux. Скрипт необходимо сохранить под именем loop_boot_vhd и сделать исполняемым:
Немного подробнее поясню логику работы скрипта. Обработка prereqs рекомендована в документации. В переменную cmdline попадает строка инициализации из grub4dos, например, root=/dev/loop0p1 loop_file_path=/debian.vhd loop_dev_path=/dev/sda2 . Далее идет разбор этой строки и из нее определяется номер партиции на loop-устройстве, а в переменные loop_dev_path и loop_file_path сохраняются путь к устройству, на котором хранится VHD-файл, и путь к VHD-файлу на устройстве. Если данные для этих переменных не переданы, то скрипт прекращает работу и система пытается загрузиться в обычном режиме. Если переменные определены, то загружается модуль ядра для подержки loop-устройств с указанием в параметрах максимального количества loop-устройств и максимального количества таблиц разделов на loop-устройстве. Затем командой blkid определяется тип файловой системы диска, на котором хранится VHD-файл. Если VHD лежит на NTFS, то монтирование производится с помощью команды ntfs-3g , иначе — командой mount . Монтирование производится в каталог /host (который при необходимости предварительно создается). После этого VHD подключается в систему командой losetup , а затем partprobe сообщает ядру о новом диске.
После размещения скриптов в нужные каталоги ( /etc/initramfs-tools/scripts/local-top/loop_boot_vhd и /etc/initramfs-tools/hooks/partcopy ) необходимо пересобрать initramfs командой:
Для дальнейшей настройки надо запомнить номер версии ядра: /boot/initrd.img-4.19.0-14-amd64 и /boot/vmlinuz-4.19.0-14-amd64.
На этом образ готов к запуску на реальном железе, можно выключать виртуальную машину и приступать к подготовке загрузчика. Готовый образ debian.vhd надо скопировать в корень диска C:, дальнейшие скрипты написаны исходя из предположения, что VHD находится в корне NTFS-раздела.
Настройка grub4dos
Для начала надо скачать актуальную версию grub4dos. Работа с этой утилитой в различных источниках описана достаточно подробно. Настройка сводится к следующему:
необходимо найти раздел, в корне которого лежит VHD-файл, и сделать его корневым для всех команд в текущем пункте меню (команда find --set-root );
затем загрузить образ жесткого диска (команды map . vhd и map --hook );
далее подключенный образ указать как корневое устройство (команда root );
и указать параметры запуска Linux ( kernel и initrd ).
Получается файл menu.lst с таким содержимым:
Тут надо обратить внимание на один момент: в команде kernel инициализируются переменные, которые передаются в initramfs и используются в ранее созданном скрипте loop_boot_vhd .
В моем примере переменные заполнены исходя из моей конфигурации компьютера: один диск с Windows, разбитый на два раздела (загрузочный "System Reserved" и основной NTFS), а внутри VHD — один раздел ext4.
Настройка загрузчика bootmgr
Обратите внимание: в зависимости от версии Windows и особенностей установки ОС возможны незначительные отличия.
Первое, что надо сделать, — подключить скрытый раздел с bootmgr, в примере ниже я подключаю скрытый раздел "System Reserved" в каталог C:\mnt (каталог должен быть предварительно создан). Команды выполняются в diskpart.exe:
После этого надо распаковать в каталог C:\mnt\ файлы из архива с grub4dos: grldr и grldr.mbr . В этот же каталог надо скопировать файл menu.lst , созданный на предыдущем шаге. После этого раздел можно отключить в diskpart.exe:
Чтобы настроить отображение пункта меню при загрузке Windows, надо сделать следующее:
В ответ будет сообщен GUID нового пункта меню. Полученный GUID используется в следующих командах:
Тут подробно не останавливаюсь, все команды очевидны и хорошо описаны в документации. Ну, и чтобы не переключаться лишний раз между графическим и текстовым режимами:
На этом всё: можно перезагрузить компьютер, выбрать в меню загрузки grub4dos, затем Debian, после чего должен загрузиться Linux.
Что делать, если не грузится?
В этом случае, скорее всего, неверно указаны параметры с путями к устройству, на котором находится VHD-файл, или раздел на loop-устройстве. Если загрузка останавливается на уровне grub4dos, то в консоли надо последовательно вводить команды, перечисленные в menu.lst , и смотреть на результаты, в зависимости от которых правильно указать параметры для загрузки Linux. Если загрузка останавливается в initramfs, то надо проверить доступность необходимых устройств на этом этапе. Проверить можно, последовательно вводя команды из скрипта loop_boot_vhd (основное: смонтировать нужные разделы, найти VHD, подключить его, проверить присвоенный номер партиции с Linux, в моем примере — loop0p1).
А как же UEFI?
Это немного другая история, надеюсь, позже найду время и проведу аналогичный эксперимент с UEFI.
Есть ли способ загрузить систему Linux с виртуального жесткого диска в Windows 7?
Если есть способ, как я могу поставить его там в первую очередь?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я не пытаюсь запустить Linux в виртуальной машине. Я пытаюсь загрузить его на своей физической машине с виртуального жесткого диска, как я могу это сделать с Windows 7.
Вы не можете. В Windows поддержка VHD интегрирована в процесс загрузки, и Linux не предлагает такую поддержку. Кроме того, я не знаю, что Linux поддерживает загрузку с любого другого типа виртуального диска.
Правильно - поддержка загрузки с VHD является частью загрузчика Windows 7, и это не поддерживается ни одной другой ОС. Я не знаю ни о каких планах перенести это либо. Linux может легко загружаться из образов ext4. Существует ли Linux-эквивалент для VHD, с которого он может загружаться? хотя это не строго формат диска для обычных виртуальных машин. Однако на данный момент Linux может загружаться с VHDда, мы только что выпустили пример Linux VHD, который позволяет загружать любой компьютер.
Вы можете найти больше информации здесь:
1 Linux как реальное устройство
С VBoot для Linux вы можете предварительно установить и предварительно настроить ОС Linux и ее приложения, а затем распространить полученный файл виртуального диска в формате VHD. VHD может загрузить реальный компьютер с конфигурацией и приложениями, доступными мгновенно. Таким образом, операционные системы действительно управляемы, так же просто, как файлы. Мы называем такой Linux VHD настоящим устройством в том смысле, что он загружает физические компьютеры.
Настроить и загрузить компьютер с VHD-файлом очень просто. Вы загружаете файл VHD, перетаскиваете его в файловую систему Windows или Linux, затем настраиваете загрузчик и перезагружаете компьютер.
2 Linux как виртуальное устройство
Точно такой же VHD-файл также запускается как виртуальная машина с использованием программного обеспечения для виртуализации, такого как VMLite Workstation, VirtualBox, Xen и Virtual PC, Hyper-V и т. Д. По умолчанию он оптимизирован для VMLite Workstation.
Если установлена VMLite Workstation, вы можете просто дважды щелкнуть файл ubuntu-910-desktop-i386.mop, чтобы запустить виртуальный жесткий диск как виртуальную машину с VMLite Workstation.
Есть ли способ загрузить систему Linux с виртуального жесткого диска в Windows 7?
Если есть способ, как я могу поставить его там в первую очередь?
РЕДАКТИРОВАТЬ: Чтобы уточнить, я не пытаюсь запустить Linux в виртуальной машине. Я пытаюсь загрузить его на своей физической машине с виртуального жесткого диска, как я могу это сделать с Windows 7.
Вы не можете. В Windows поддержка VHD интегрирована в процесс загрузки, и Linux не предлагает такую поддержку. Кроме того, я не знаю, что Linux поддерживает загрузку с любого другого типа виртуального диска.
Правильно - поддержка загрузки с VHD является частью загрузчика Windows 7, и это не поддерживается ни одной другой ОС. Я не знаю ни о каких планах перенести это либо. Linux может легко загружаться из образов ext4. Существует ли Linux-эквивалент для VHD, с которого он может загружаться? хотя это не строго формат диска для обычных виртуальных машин. Однако на данный момент Linux может загружаться с VHDда, мы только что выпустили пример Linux VHD, который позволяет загружать любой компьютер.
Вы можете найти больше информации здесь:
1 Linux как реальное устройство
С VBoot для Linux вы можете предварительно установить и предварительно настроить ОС Linux и ее приложения, а затем распространить полученный файл виртуального диска в формате VHD. VHD может загрузить реальный компьютер с конфигурацией и приложениями, доступными мгновенно. Таким образом, операционные системы действительно управляемы, так же просто, как файлы. Мы называем такой Linux VHD настоящим устройством в том смысле, что он загружает физические компьютеры.
Настроить и загрузить компьютер с VHD-файлом очень просто. Вы загружаете файл VHD, перетаскиваете его в файловую систему Windows или Linux, затем настраиваете загрузчик и перезагружаете компьютер.
2 Linux как виртуальное устройство
Точно такой же VHD-файл также запускается как виртуальная машина с использованием программного обеспечения для виртуализации, такого как VMLite Workstation, VirtualBox, Xen и Virtual PC, Hyper-V и т. Д. По умолчанию он оптимизирован для VMLite Workstation.
Если установлена VMLite Workstation, вы можете просто дважды щелкнуть файл ubuntu-910-desktop-i386.mop, чтобы запустить виртуальный жесткий диск как виртуальную машину с VMLite Workstation.
Читайте также: