[Настройка Linux] Запуск Linux с виртуального диска vmdk на реальном железе и VirtualBox
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Возникла необходимость обеспечить работу Linux как на виртуальной машине (VirtualBox), так и на реальном железе. После долгих поисков и попыток запускать Linux с виртуального диска формата VHD, по примеру Windows, которые либо слишком сложны, либо не работают, я пришел к достаточно простому способу сделать это. Правда не из дисков в формате VHD, а из образа раздела диска в формате VMDK.
Linux возможно загрузить из образа раздела. Теперь нужно сделать так, что бы у нас был и образ диска, который понимает VirtualBox и образ раздела, который может загрузить grub.
Далее расписано, как это можно сделать быстро и без лишней головной боли.
Все что далее, сделано из Windows.
Создаем новый диск фиксированного размера в формате vmdk:
VBoxManage createmedium disk --format VMDK --variant Fixed --filename test1.vmdk --size 10000
Имеем созданные файлы:
- test1.vmdk — дескриптор диска, текстовый файл
- test1-flat.vmdk — файл с образом диска
Теперь необходимо в начало диска добавить еще один кусок размером 1M.
Создаем файл test1-boot.vmdk размером 1M:
fsutil file createnew test1-boot.vmdk 1048576
В test1.vmdk меняем createType="custom" на createType="monolithicFlat". Это будет означать, что диск состоит из нескольких файлов.
Добавляем test1-boot.vmdk в test1.vmdk, первым. После добавления test.vmdk должен выглядеть как-то так:
...
createType="monolithicFlat"
RW 2048 FLAT "test1-boot.vmdk" 0
RW 20480000 FLAT "test1-flat.vmdk" 0
...
где 2048 — это 2048*512=1048576 байт (1M) для этой части диска.
Создаем виртуальную машину для установки Linux, подключаем к ней диск test1.vmdk и ставим ubuntu/kubuntu/xubunu. Я ставил только эти дистрибутивы, начиная с версий 18.04 до последней (еще не вышедшей) 21.04, все остальное не проверял.
Особенность при установке: должен быть создан только один раздел на виртуальном диске и должен он быть на границе 1M. Это поведение по умолчанию при ручном создании раздела.
Загрузчик должен быть установлен на диск /dev/sda, а не на раздел /dev/sda1. Это тоже поведение по умолчанию.
После того, как все установили, перезагружаемся в VirtualBox, что бы убедится, что Linux загружается.
Теперь загрузим только что установленный Linux на реальном железе. Проще всего сделать это с использованием загрузочной флешки.
Создаем загрузочную флешку (или usb-диск) с использованием Ventoy (https://www.ventoy.net/).
Создаем файл ventoy\ventoy_grub.cfg на разделе данных флешки со следующим содержимым:
menuentry 'boot linux from vmdk part' {
set imgfile="/mydisks/test1-flat.vmdk"
set d_label="MYDISK"
search --set=root --label ${d_label}
loopback loop0 ${imgfile}
set root=(loop0)
linux /boot/vmlinuz root=/dev/disk/by-label/${d_label} loop=${imgfile} rw nosplash
initrd /boot/initrd.img
}
Здесь:
- imgfile="/mydisks/test1-flat.vmdk" — путь до файла с образом раздела
- d_label="MYDISK" — метка раздела, где лежит файл с образом раздела test1-flat.vmdk
Загружаемся с этой флешки, нажимаем F6 и попадаем в меню, где выбираем пункт "boot linux from vmdk part". Радуемся запущенному Linux.
Можно вернуться в свою рабочую OS, запустить VirtualBox и загрузить Linux из виртуального диска.
Таким вот, незамысловатым, способом можно иметь возможность сидя в Windows запускать Linux в VirtualBox, настраивать его… А потом запускать на реальном железе.
Стоит иметь ввиду, что если обновления затрагивают grub, то они не корректно будут завершены в системе, запущенной на реальном железе, ибо нет раздела с загрузчиком. Однако это не мешает нормальной работе. А такие обновления можно и через VirtualBox применять.
Кстати, образ test1-flat.vmdk можно скопировать на флешку Ventoy, и запускать с нее, тоже работает.
Ну и на последок. Ventoy умеет загружать linux из vhd, но требует дополнительных манипуляций с установленным Linux (https://www.ventoy.net/en/plugin_vtoyboot.html). Но, к сожалению, у меня эти манипуляции привели к тому, что загрузка работает либо на реальном железе, либо в VirtualBox. И там и там с одним образом не получается.
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, GTK+, Разработка под Linux] Создатель динамических обоев на языке Vala
- [Настройка Linux, Системное программирование, Kubernetes] Скидка на экзамены по Kubernetes и Linux
- Выпуск дистрибутива Альт Рабочая станция К 9.1
- [Java] Вышла Java 16
- [Системное администрирование, Программирование, Git, Разработка под Linux, DevOps] DevOps: автоматизация инфраструктуры на примере Terraform, docker, bash, prometheus exporters, Gitlab и WireGuard
- [*nix] Загрузка Linux с VHD на компьютере с BIOS
- [*nix, Разработка под Linux, Интернет вещей, DIY или Сделай сам] Подключаем дисплей SPI LCD ILI9341 к одноплатному компьютеру Banana Pi BPI-M64 или любому другому на ОС Armbian
- [Open source, Системное программирование, Реверс-инжиниринг] Linux для macOS M1: что сделала команда Asahi Linux за январь-февраль 2021 (перевод)
- [Программирование, GTK+, Разработка под Linux] Пишем онлайн-радио на языке Vala
- [Системное администрирование] ossh: параллельное выполнение команд на многих серверах
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_linux, #_virtualbox, #_vmdk, #_grub, #_nastrojka_linux (
Настройка Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 04:20
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Возникла необходимость обеспечить работу Linux как на виртуальной машине (VirtualBox), так и на реальном железе. После долгих поисков и попыток запускать Linux с виртуального диска формата VHD, по примеру Windows, которые либо слишком сложны, либо не работают, я пришел к достаточно простому способу сделать это. Правда не из дисков в формате VHD, а из образа раздела диска в формате VMDK. Linux возможно загрузить из образа раздела. Теперь нужно сделать так, что бы у нас был и образ диска, который понимает VirtualBox и образ раздела, который может загрузить grub. Далее расписано, как это можно сделать быстро и без лишней головной боли. Все что далее, сделано из Windows. Создаем новый диск фиксированного размера в формате vmdk: VBoxManage createmedium disk --format VMDK --variant Fixed --filename test1.vmdk --size 10000
Имеем созданные файлы:
Теперь необходимо в начало диска добавить еще один кусок размером 1M. Создаем файл test1-boot.vmdk размером 1M: fsutil file createnew test1-boot.vmdk 1048576
В test1.vmdk меняем createType="custom" на createType="monolithicFlat". Это будет означать, что диск состоит из нескольких файлов. Добавляем test1-boot.vmdk в test1.vmdk, первым. После добавления test.vmdk должен выглядеть как-то так: ...
createType="monolithicFlat" RW 2048 FLAT "test1-boot.vmdk" 0 RW 20480000 FLAT "test1-flat.vmdk" 0 ... где 2048 — это 2048*512=1048576 байт (1M) для этой части диска. Создаем виртуальную машину для установки Linux, подключаем к ней диск test1.vmdk и ставим ubuntu/kubuntu/xubunu. Я ставил только эти дистрибутивы, начиная с версий 18.04 до последней (еще не вышедшей) 21.04, все остальное не проверял. Особенность при установке: должен быть создан только один раздел на виртуальном диске и должен он быть на границе 1M. Это поведение по умолчанию при ручном создании раздела. Загрузчик должен быть установлен на диск /dev/sda, а не на раздел /dev/sda1. Это тоже поведение по умолчанию. После того, как все установили, перезагружаемся в VirtualBox, что бы убедится, что Linux загружается. Теперь загрузим только что установленный Linux на реальном железе. Проще всего сделать это с использованием загрузочной флешки. Создаем загрузочную флешку (или usb-диск) с использованием Ventoy (https://www.ventoy.net/). Создаем файл ventoy\ventoy_grub.cfg на разделе данных флешки со следующим содержимым: menuentry 'boot linux from vmdk part' {
set imgfile="/mydisks/test1-flat.vmdk" set d_label="MYDISK" search --set=root --label ${d_label} loopback loop0 ${imgfile} set root=(loop0) linux /boot/vmlinuz root=/dev/disk/by-label/${d_label} loop=${imgfile} rw nosplash initrd /boot/initrd.img } Здесь:
Загружаемся с этой флешки, нажимаем F6 и попадаем в меню, где выбираем пункт "boot linux from vmdk part". Радуемся запущенному Linux. Можно вернуться в свою рабочую OS, запустить VirtualBox и загрузить Linux из виртуального диска. Таким вот, незамысловатым, способом можно иметь возможность сидя в Windows запускать Linux в VirtualBox, настраивать его… А потом запускать на реальном железе. Стоит иметь ввиду, что если обновления затрагивают grub, то они не корректно будут завершены в системе, запущенной на реальном железе, ибо нет раздела с загрузчиком. Однако это не мешает нормальной работе. А такие обновления можно и через VirtualBox применять. Кстати, образ test1-flat.vmdk можно скопировать на флешку Ventoy, и запускать с нее, тоже работает. Ну и на последок. Ventoy умеет загружать linux из vhd, но требует дополнительных манипуляций с установленным Linux (https://www.ventoy.net/en/plugin_vtoyboot.html). Но, к сожалению, у меня эти манипуляции привели к тому, что загрузка работает либо на реальном железе, либо в VirtualBox. И там и там с одним образом не получается. =========== Источник: habr.com =========== Похожие новости:
Настройка Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 04:20
Часовой пояс: UTC + 5