монтирование vhd в linux
Я только что перешел на вкладку «Тандерберд», «Настройки», «Дополнительно» и снял флажок «Включить глобальный поиск и индексирование».
6 ответов
Используя Ubuntu 15.10 (также работает на Ubuntu 16.04), вы можете установить vhdimount и tsk (The Sleuth Kit) с помощью:
Затем вы можете действовать следующим образом:
Затем вам нужно будет рассчитать смещение от выхода mmls следующим образом:
Заменить [ f6] по вашему смещению. Вам также может потребоваться изменить fs-тип в соответствии с fs-типом, включенным в ваш файл vhd.
Я создал сценарий, поэтому мне не нужно вводить его каждый раз;)
При поиске в пространстве Launchpad Ubuntu появляется следующее:
virtualbox (бинарный «виртуальный бокс-плавкий предохранитель» является частью пакета виртуальных боксов)
Это означает, что они слились в основной пакет, и вам просто нужно установить виртуальный бокс из репозитория (это то, что раньше называлось virtualbox-ose, поэтому, если вам нужна лицензионная «полная» версия PUEL, это не поможет вам.) [!d3 ]
Обратите внимание, что вам могут понадобиться дополнительные опции для mount, чтобы установить разрешения по своему усмотрению.
Вы можете использовать VirtualBox.
Чтобы установить VirtualBox под Ubuntu 13.04, просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, запустите следующие команды:
Как только он завершит установку, продолжите работу и создайте новую виртуальную машину
Тип во имя. Убедитесь, что вы выбрали правильный тип и версию ОС, находящейся в VHD.
Выберите использование существующего файла виртуального жесткого диска, и найдите свой файл VHD, а затем нажмите кнопку create.
Загрузка Linux с VHD на компьютере с BIOS
Загрузка 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, умеет работать со стандартными системными утилитами, с ПО для виртуализации и т.п. — элементарные вещи подробно не расписаны.
Установка 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 я делать не стал, после установки можно разместить файл или раздел подкачки в удобном месте.
Подготовка 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 и сделать исполняемым:
После размещения скриптов в нужные каталоги ( /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. Работа с этой утилитой в различных источниках описана достаточно подробно. Настройка сводится к следующему:
далее подключенный образ указать как корневое устройство (команда root );
и указать параметры запуска Linux ( kernel и initrd ).
Получается файл menu.lst с таким содержимым:
В моем примере переменные заполнены исходя из моей конфигурации компьютера: один диск с Windows, разбитый на два раздела (загрузочный «System Reserved» и основной NTFS), а внутри VHD — один раздел ext4.
Настройка загрузчика bootmgr
Обратите внимание: в зависимости от версии Windows и особенностей установки ОС возможны незначительные отличия.
Первое, что надо сделать, — подключить скрытый раздел с bootmgr, в примере ниже я подключаю скрытый раздел «System Reserved» в каталог C:\mnt (каталог должен быть предварительно создан). Команды выполняются в diskpart.exe:
Чтобы настроить отображение пункта меню при загрузке Windows, надо сделать следующее:
В ответ будет сообщен GUID нового пункта меню. Полученный GUID используется в следующих командах:
Тут подробно не останавливаюсь, все команды очевидны и хорошо описаны в документации. Ну, и чтобы не переключаться лишний раз между графическим и текстовым режимами:
На этом всё: можно перезагрузить компьютер, выбрать в меню загрузки grub4dos, затем Debian, после чего должен загрузиться Linux.
Что делать, если не грузится?
А как же UEFI?
Это немного другая история, надеюсь, позже найду время и проведу аналогичный эксперимент с UEFI.
Монтирование vhd в linux
#7
да уж. а не полениться и открыть посмотреть никак?
«But when the hard disk of the virtual machine is a virtual disk (which is just a file when seen from your host operating system), you need the help of a program called vmware-mount.pl. This document describes how to use this program.
What is vmware-mount?
vmware-mount is a program that runs on the host operating system. It makes a virtual disk file appear as a hard disk to the operating system.
Requirements to run vmware-mount
vmware-mount requires a Linux kernel version 2.1.101 or higher (including the stable 2.2.x series) because this version introduced the concept of network block devices, which is heavily used by vmware-mount. vmware-mount is available as an add-on to VMware Workstation for Linux for both evaluation users and licensed customers. To install vmware-mount:
Say, for example, that your virtual hard disk file is
/vmware/vhd.dsk. Follow these steps:
Now, find the partition number (first column) you want to export. Let’s say it is 1.
3. Mount the disk partition on a directory. Let’s say you want to mount your partition on the directory /mnt/vhd. Issue the following command:
vmware-mount.pl
/vmware/vhd.dsk 1 /mnt/vhd
Network Block Device driver detected.
Trying to map the partition to the /dev/nb0 Network
Block Device.. Success.
You can now browse your Virtual Hard Disk partition
in /mnt/vhd Hit Control-C in this terminal when done.
монтирование виртуальны дисков virtual box
Всем привет подскажите через что можно смонтировать виртуальные диски, вариант с fuse некатит так как несовместим по версиям с VB.
так чем смонтировать обычным mount не получается
а ктож его посадит, он же памятник!
не, ну можно и так, через qemu-nbd припонячить
Если образ диска в формате raw, то можно монтировать так:
дело в формате.
Ну сконверти в raw img, кто мешает?
эмо культура поможет тебе )))
ставь куему и следуй рецептуре от fornlr ★ (13.11.2013 20:41:18) )))
Ничего врать не надо, нужна наоборот указать правильные опции монтирования. Монтировать файловую систему с определённым смещением от начала устройства, которое монтируется это стандартная возможность.
в этом месте что следует вписать? окуда взять данные?
А вы читать не умеете? Я специально по русски написал «сектор_начала_раздела».
Данные о разделе, точнее номере начального сектора можно узнать в таблице разделов (Partition Table).
Возьмём например обычный диск.
На этом разделе у меня файловая система xfs, я её могу смонтировать вот так:
Но это только с raw образом диска.
Зачем врать, если все и так есть файл?
читать я умею, а вы отвечать на вопрос умеете?
с обычным диском я в курсе где посмотреть. в данном случае, вы предлагаете посмотреть, где находится смещение для физического диска, у которого есть физические сектора (головки, блоки, дорожки и прочая _физическая_ шняга) причем используете конкретный инструмент для просмотра. и затем монтируете ваш _физический_ диск в ваш каталог начиная с точки смещения.
все файл когда прочитано как файл
файл прочитанный как файл не является файловой системой (файлом для хранения других файлов, то есть каталогом, который конечно тоже файл)
но файловая система, прочитанная и интерпритированная как файл, может являтся файлом для хранения файлов, то есть файловой системой.
файл виртуального диска, должен быть опознан как файловая система и переведен в файл файловой системы, для хранения файлов.
так лучше? )))
обман в том, чтобы файл был воспринят не как файл а затем переведен в файл.
(ночь. самое время пофайлить))) )
Загрузка Linux с VHD на компьютере с UEFI
В статье о возможности загружать Linux с VHD был предложен способ загружать Linux на машине с Windows без необходимости разбивать диск на разделы. Но было одно существенное ограничение: рассматривался только вариант загрузки BIOS, т.е. legacy-загрузки. Сейчас появляется всё больше устройств без поддержки режима legacy (например, многие ноутбуки, выпущенные в 2020 году). Поэтому в этой статье будет рассмотрена загрузка Linux с VHD на компьютерах с UEFI.
В чём отличия UEFI от BIOS, в интернете описано достаточно подробно, можно посмотреть, например, в этой статье. Для нас наиболее важным будет необходимость использовать разметку GPT для загрузочного диска и при создании разделов на VHD. Эксперименты проводились при отключенном Secure Boot. Не буду подробно останавливаться на моментах, описанных в предыдущей части. Как и ранее, предполагается, что читатель имеет представление о работе с консолью в Windows и Linux, умеет работать со стандартными системными утилитами, с ПО для виртуализации и т.п.
Предварительно отмечу еще ряд моментов. Можно было бы рассмотреть загрузку системы с внутреннего жесткого диска компьютера, но мы немного усложним задачу и будем загружать систему со съемного USB-диска, на котором будет располагаться VHD-файл. Все действия применимы и для внутреннего жесткого диска, а некоторые особенности будут отмечены в отдельном разделе.
Разработчики grub4dos недавно выпустили версию своего загрузчика для UEFI. При использовании версии grub4dos-for_UEFI-2021-02-10.7z на виртуальной машине у меня не возникло особых проблем при загрузке Linux с VHD, но на реальном железе при работе с тем же самым образом VHD была получена ошибка: Error 24: Attempt to access block outside of partition. С учетом простоты, с которой UEFI позволяет заменить загрузчик (простая замена файла), было решено воспользоваться загрузчиком grub2 из дистрибутива Debian debian-10.8.0-amd64-netinst.iso.
Установка Linux на VHD
Есть два ключевых отличия от варианта для BIOS:
1) в настройках VirtualBox необходимо установить опцию «Enable EFI»;
2) при установке Debian диск был разбит на два раздела: ESP (EFI system partition) размером
100 Мб, отформатированный в FAT32, и EXT4, занимающий всё оставшееся место.
Возможны и другие варианты разбиения. Раздел ESP при желании можно вынести за пределы VHD (он нам нужен только для загрузки на виртуальной машине), но все дальнейшие настройки сделаны исходя из того, что на VHD будет два раздела.
Подготовка Linux к загрузке с VHD
Скрипт из предыдущей статьи нам подходит для загрузки на локальном компьютере, где состав дисков меняется редко и заранее известно, на каком диске хранится VHD-файл. Но мы себе поставили новую цель: иметь возможность загружаться с USB-носителя на любом компьютере с любой конфигурацией жестких дисков. Загрузчики grub4dos и grub2 умеют искать файлы на доступных разделах и работать с UUID разделов. Мы этим воспользуемся при создании конфигурационного файла загрузчика, а пока добавим обработку UUID в скрипт loop_boot_vhd.
Скрипт loop_boot_vhd необходимо расположить, как и ранее, в /etc/initramfs-tools/scripts/local-top/. После чего пересобрать initramfs, и VHD-образ можно считать готовым.
Настройка grub.cfg
В GRUB2 можно получить UUID раздела с помощью модуля probe, поэтому он должен быть в сборке. За основу была взята сборка GRUB2 с установочного диска Debian, для загрузки нам понадобятся следующие файлы:
Их необходимо скопировать на EFI-раздел USB-диска:
Далее необходимо создать конфигурационный файл \EFI\debian\grub.cfg.
В cfg-файле всё достаточно очевидно, только обращу внимание, что VHD-файл имеет название debefi.vhd, и система будет искать его в корне всех найденных разделов. Для исключения ошибок название файла необходимо сделать уникальным для загружаемой системы. Ну и «gpt2» используется потому, что Linux установлен на втором разделе внутри VHD.
Особенности настройки параллельно с Windows bootloader
Disclaimer: дальнейшие действия могут привести к невозможности загрузить компьютер штатными средствами, все действия вы выполняете на свой страх и риск. Перед экспериментом проверьте, контролирует ли установленное антивирусное ПО целостность загрузчика. И не забывайте о возможных побочных эффектах.
Я опишу один из вариантов реализации выбора между загрузкой Windows и Linux: с помощью замены загрузчика на GRUB2. Загрузка EFI-систем по умолчанию начинается с файла \EFI\Boot\BOOTX64.EFI, в Windows 10 используется \EFI\Microsoft\Boot\bootmgfw.efi. Заменить загрузчик Microsoft на GRUB2 можно просто заменив файл. Необходимо быть внимательным, если сомневаетесь в получении результата с первого раза, то лучше сначала поэкспериментируйте на виртуальной машине. С помощью diskpart.exe надо подключить EFI-раздел Windows, на котором необходимо:
переименовать/перенести файл \EFI\Microsoft\Boot\bootmgfw.efi в \EFI\boot\ms.efi;
файл bootx64.efi из ISO-образа Debian переименовать в \EFI\Microsoft\Boot\bootmgfw.efi;
grubx64.efi разместить в \EFI\Microsoft\Boot\grubx64.efi;
probe.mod разместить в \EFI\debian\x86_64-efi\probe.mod;
ранее созданный grub.cfg скопировать в \EFI\debian\grub.cfg и добавить пункт для передачи управления загрузчику Microsoft:
Теперь при загрузке сначала будет появляться меню GRUB2 с выбором загрузки Windows («ms») или Linux («vhdUUID»).
Если на каком-то из этапов загрузки возникают ошибки, то (как и с grub4dos) необходимо попытаться вводить команды вручную и смотреть, какие ошибки выдает система, как и куда монтируются разделы, доступны ли все необходимые файлы и т.п.