Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Перенос виртуальной машины на физический жесткий диск

Оригинал: How to make a virtual computer real
Автор: Paul Zarucki
Дата публикации: 15 мая 2009 года
Перевод: А. Кривошей
Дата перевода: август 2011 г.

Если мне хочется побыстрее установить на компьютер какой-либо дистрибутив GNU/Linux, хорошим способом для этого может быть установка его в виртуальной машине с последующим преобразованием виртуального компьютера в реальный путем копирования виртуального диска на физический жесткий диск (этот процесс, в противоположность виртуализации, можно назвать "реализацией").
Вы можете использовать виртуальный диск как шаблон для быстрого и простого развертывания системы на нескольких компьютерах. У меня имеется целый набор шаблонов для различных конфигураций, например для десктопов и серверов, для 32 и 64-битных машин, для различных дистрибутивов Linux. Все они готовы к установке в любой момент. В этой заметке приведен мой рецепт для конвертирования виртуального компьютера в реальный. Я работал с дистрибутивами Debian 4 и 5 (серверы и десктопы) и floppyfw (маршрутизаторы и брандмауэры). Этот метод должен работать с большинством (если не со всеми) дистрибутивами Linux. Для создания виртуальных машин я применял VirtualBox, но любое другое решение для виртуализации (VMware, QEMU, Parallels и т.д.) также должно подойти. Я ни в коем случае не гарантирую успеха - используйте этот метод на свой страх и риск!

Создание виртуальной машины

Я предполагаю, что вы уже знаете, как создать виртуальную машину и установить в ней GNU/Linux, поэтому не буду подробно описывать этот процесс. Обычно я создаю виртуальный компьютер с небольшим жестким диском, вся файловая система расположена на первом разделе. Если необходимы дополнительные разделы для /home, /var и т.д., я предпочитаю создавать их позже, на реальной машине, что будет описано ниже. Для десктопов и серверов достаточно виртуального диска размером около 8 Гб.
Установите GNU/Linux и все необходимые приложения в виртуальной машине, а также произведите все необходимые вам настройки.

Очистка (необязательно)

Размер сжатого виртуального диска можно уменьшить, если удалить ненужные файлы и свободное пространство на диске. В Debian вы можете значительно увеличить свободное место, очистив кэш загруженных программных пакетов с помощью команды:

$ apt-get clean

Теперь посмотрим, сколько у нас свободного пространства на диске:

В приведенном примере размер свободного пространства составляет 3577324 блоков (каждый по 1 Кб).
Чтобы удалить свободное пространство, создадим файл, заполненный нулями, размером немного меньше размера свободного пространства. Для верности, чтобы избежать ошибок, примем его размер равным 3577324 - 1000 = 3576324 блоков:

$ dd if=/dev/zero of=/zeroes.bin bs=1024 count=3576324

Теперь удалим этот файл:

$ rm /zeroes.bin

Чтобы автоматизировать вышеописанный процесс, можно использовать скрипт, который сам определяет размер свободного пространства и удаляет его:

Копирование виртуального диска в файл

Мы хотим извлечь данные из виртуального диска в таком виде, чтобы они были пригодны для копирования на физический диск. Для этого я подключил виртуальный диск вторым диском к другой виртуальной машине. Запустите эту виртуальную машину и просмотрите таблицу разделов второго диска.

Мы хотим скопировать все с начала диска до конца первого раздела, т.е. первый 931 цилиндр. Находим количество блоков размером по 512 байт, которые необходимо скопировать: 931 * 16065 = 14956515. Приведенная ниже команда копирует данные в сжатый файл.

$ dd if=/dev/hdb bs=512 count=14956515 | gzip > /mnt/nfs/template.bin.gz

здесь template.bin.gz - сжатый файл с данными, /mnt/nfs - расшаренная директория, в которой я его сохраняю. Разумеется, директория может быть любой.

Копирование файла на физический жесткий диск

Загрузите физический компьютер с GNU/Linux. Я использовал USB-флешку с установленным на ней Debian, но подойдет любой GNU/Linux live CD. Для того, чтобы получить доступ к файлу, содержащему данные для жесткого диска (в моем случае template.bin.gz), необходимо подключиться к сетевой папке, в которой он находится, либо скопировать его на любой носитель.
Копируем данные на жесткий диск:

$ cat /mnt/nfs/template.bin.gz | gunzip > /dev/hda

В вашем случае замените "/mnt/nfs" на путь к директории, в которой у вас лежит файл с данными. Кроме того, замените /dev/hda на свой жесткий диск (например, это может быть /dev/sda)/

Разбиение диска

Теперь жесткий диск имеет точно такую же таблицу разделов, как виртуальный диск. Если вы хотите, чтобы разделы реального жесткого диска имели точно такой же размер, как на виртуальном диске, то можете пропустить следующие разделы до настройки имени хоста и сети. Однако обычно физический диск имеет намного больший размер, чем виртуальный, и если вы хотите использовать имеющееся свободное место, например для расширения раздела подкачки или увеличения пространства под домашнюю директорию, читайте дальше.
Используем fdisk или любой его аналог для редактирования таблицы разделов жесткого диска (в моем случае /dev/hda).
Я обычно удаляю все существующие разделы, за исключением первого (/dev/hda1). Затем я создаю раздел подкачки на 2 Гб (/dev/hda2), а оставшееся место использую для создания большого раздела под /home (вместо этого можно создать отдельные разделы под /home и /var). Сохраните изменения и выйдите из fdisk.
Ниже приведено разбиение для моего жесткого диска на 400 Гб.

Форматируем второй раздел для подкачки:

$ mkswap /dev/hda2

Обычно я форматирую раздел /home в файловую систему ext3:

$ mke2fs -j -m 1 /dev/hda3

Перемещение домашних директорий

Смонтируйте первый и третий разделы ("/" и "/home" соответственно):

$ mkdir /mnt/hda1
$ mount -t ext3 /dev/hda1 /mnt/hda1
$ mkdir /mnt/hda3
$ mount -t ext3 /dev/hda3 /mnt/hda3

Переместите домашние директории с /dev/hda1 на /dev/hda3:

$ mv /mnt/hda1/home/* /mnt/hda3

Редактируем fstab

Отредактируйте /mnt/hda1/etc/fstab, чтобы отразить тот факт, что /home у нас теперь находится на отдельном разделе. Ниже мой отредактированный fstab:

Имя хоста и настройки сети

Описываемые ниже настройки относятся к Debian 5. Для других систем возможно необходимо будет редактировать другие файлы, расположенные в других местах. Если вы хотите, чтобы реальная система имела другое имя хоста, отличное от имевшегося у виртуальной машины, отредактируйте файл /mnt/hda1/etc/hostname, заменив в нем имя хоста.
Сетевой интерфейс может получить имя, отличное от имевшегося в виртуальной машине, например "eth1" вместо "eth0". Чтобы избежать этого, например, если вы настраивали сеть вручную, отредактируйте файл /mnt/hda1/etc/udev/rules.d/70-persistent-net.rules и удалите строку, которая относится к существующему сетевому интерфейсу. Если вам необходимо изменить настройки сети, редактируйте файл /mnt/hda1/etc/network/interfaces.

Выключите компьютер и удалите флешку или CD. Снова включите компьютер. Если все прошло удачно,вы увидите реальную версию вашей виртуальной машины.


Иcтoчник
      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP