Блог им. vladoosКросвиртуализация Ubuntu и Windows на VirtualBox Часть 1

Пролог.
Я давно пытаюсь заставить себя полностью пересесть на Ubuntu, но очень долгое время ничего е получалось. И как казалось для этого помех не было. Ubuntu уже давно показала, что линукс может быть с дружественным лицом и ничего сложного в работе на нем нет. Но все большинство пользователей в том числе и я продолжали работать на windows xp. И у этого есть причины. К объективным причинам можно отнести тот факт, что windows xp действительно удалась Микрософту. Именно успешность XP на долгое время остановили продвижение линуксов в массы. Но время шло, а деньги Микрософт зарабатывает не на том, что делает хорошие продукты, а на том что продает новые продукты. И виста здесь во всей красе показала политику Микрософта. Им плевать, что продавать.

Это был провал. Даже среди сторонников Микрософта было не много желающих уходить с XP. И возможно я бы тоже продолжал бы сидеть на XP, но микрософт заканчивает развитие этого продукта и переходить придется. Для меня как пользователя по большему счету не имеет разницы переход на Ubuntu или на Windows7. Все они слишком сильно отличаются от Windows XP. Почему мне важна схожесть с XP? Это мой субъективный фактор — я просто к ней привык :) Как ни крути, но 9 лет проведённые на XP полны множества воспоминаний, а так человеку свойственно помнить хорошее, то о XP у меня много хороших воспоминаний. Перефразируя одно высказывая можно сказать — “Родину любят не за что она хороша или плоха, а за то что она своя”. И XP была моей малой родиной. Но жизнь такова, что с ней приходится расставаться. А так как продолжать пользоваться продуктами Микрософт больше нет желания, то это отличный повод мигрировать на линукс.

За последние годы я много экспериментировал с различными дистрибутивами. И со многими даже успешно работал… непродолжительное время, а потом снова возвращался на XP. Мне постоянно мешали мои привычки и навыки наработанные на XP. В новой среде их приходилось постоянно менять. Причем это касалось не самой операционной системы, к ней привыкание происходит быстро, а проблемы с новым софтом. Трезво понимая, что мне от программ мне нужен не интерфейс, а функционал, я не пытался искать аналоги программ, а искал программы с нужным мне функционалом. Но как было ни было встречая чужеродный интерфейс мы сталкиваемся с внутренним сопротивлением. И это понятно, когда мы долго работаем с программами, то у нас вырабатываются рефлексы работы с ними. Это устойчивые нейронные связи, которые помогают нам не думать о действия, а думать о процессе. В жизни автоматизация действий происходит постоянно при накоплении навыков. Будь то езда на велосипеде, автомобиле или работа за клавиатурой. Но что мешает нам освоить новые навыки? Ответ очень прост — лень, привычка, нежелание что-то менять. Но меняться нужно. И что бы ослабить внутренне сопротивление, нужно сделать процесс миграции максимально комфортным и малозаметным для нашего ленивого подсознания.

На первых порах, от Windows XP отказаться не удастся, а в некоторых случаях и вовсе невозможно. На практике существуют два варианта начального освоения линуксов. Это параллельная установка двух систем на одном компе или виртуализация. Но в обоих случаях это не очень комфортно. Работая в виртуалке мы тратим много сил на её настройку не имея возможности попробовать её на реальном железе, а запуская её на реальной машине нам приходится повторять все действия снова. Для изучения это сгодится, но если мы хотим вырабатывать нейронные связи, то мы должны переносить часть повседневной работы в линукс, иначе ничего не выйдет. Ломать себя сразу и переходить в линукс готовы не все. Это требует слишком много сил, упорства и значит рано или поздно мы найдем тысячу оправданий почему нам стоит бросить работы с линуксом (я не говорю за всех, но за большинство это точно). А это ни в коем случае нельзя допускать. Для нас очень важно чувствовать систему, а для этого нам нужно работать в ней на реальном железе, но для выработки нейронных связей мы должны в ней быть постоянно, а для этого нам бы пригодилась работа в виртуалке. Значит нужно сделать так, что бы конфигурация виртуальной машины автоматически переносилась бы на реальную систему. В идеале что бы виртуальную машину запускать на реальном железе. И для меня самым очевидным способом оказалось схема при которой в на виртуальной машине запускалась операционная система установленная на реальный винт. Тогда я еще не подозревал, что это далеко не очевидно.

Расскажу как я делал это на своем опыте. У меня имелся один винт, разделяемый между windowsxp и ubuntu. Загрузчик grub спокойно загружал обе системы. И осталось сделать малое, — добиться загрузки обоих ОС в VirtualBox в качестве гостевой системы.

Часть 1
Начнем с самого простого сценария: WindowsXP — хост, Ubuntu — гость. Для начало нужно подключить реальный раздел винта к VirtualBox, но через гуи это сделать невозможно. Разработчики справедливо посчитали эту функцию слишком опасной для новичков, и оставили только консольную возможность подключения, разумно посчитав, что если человек запускает консольные команды то он четко отдает отчет своим действиям. Для этого нужно создать файл виртуального диска-заглушки, пустой vmdk, который будет жестко привязан к разделам физического носителя. Ничего сложного в этом нет, глава хелпа 9,7. подробно объясняет работу. Для примера расскажу конкретно, что я делал.

Создаём файл заглушку хитрой командой из хелпа.
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk \\.\PhysicalDrive0

Путь до vmdk замените сами. Но в последних версиях у меня часто наблюдалась ошибка при слишком длинных путях к файлу. Поэтому чем короче, тем лучше. PhysicalDrive0 — это идентификатор моего первого, и единственного диска. Если нужно примонтировать больше дисков, то порядок дисков сможете узнать в биосе, диспечере дисков или откройте системник и почитайте надписи на материнке. В данном случае монтируется весь диск.

С помощью -partitions можно выбрать конкретные разделы вашего диска. Это желательно делать для безопасности. Если ваш гость будет обращаться к системному разделу хоста, то это может привести к потере данных. Одну систему я так угробил. С помощью любой программы разметки вы сможете узнать номера ваших партиций. Либо с помощью команды

VBoxManage internalcommands listpartitions -rawdisk \\.\PhysicalDrive0

вывод команды будет выглядеть как-то так:

Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
© 2005-2010 Oracle Corporation
All rights reserved.

Number Type StartCHS EndCHS Size (MiB) Start (Sect)
1 0x07 0 /1 /1 1023/254/63 180150 63
5 0x83 1023/254/63 1023/254/63 10132 368949248
6 0x82 1023/254/63 1023/254/63 498 389701632

В моем случае это были номера 1,5 и 6. Раздел 1 — windows, 5 — системный раздел Ubuntu, 6 — раздел подкачки. Поэтому во имя безопасности выполняем команду:

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 5,6

Таким образом мы обезопасим себя от повреждений данные диска. Для совместного использования дискового пространства в виртуальной машине лучше использовать механизм общих папок виртуалбокса. Лучше сделать лишнее движение, чем потом переставлять систему. К счастью винда не видит линукс разделы поэтому во время работы Ubuntu как гостя, вы не навредите, если конечно сами этого не захотите.

Далее мы просто создаем виртуальную машину как обычно. И внимательное следим, какую систему загружает ваш системный загрузчик по умолчанию. И постарайтесь не загружать уже запущенную операционную систему. Это чревато. Я конечно же попытался, винда ругнулась, вывалила ошибку и перестала загружаться, но ничего страшного не случилось. Но лучше этото эксперимент не повторять, если вы морально не подготовились к переустановке системы.

И в конечном итоге я получил линукс систему, которую могу одинаково загружать и на реальном и на виртуальном железе. Её можно из винды настраивать, обновлять, экспериментировать с софтом и даже активировать компиз, использовав поддержку 3D :). И при этом мы сможем в любой момент можем перегрузится в линуксе и продолжить работу с этой же системой как ни в чем не бывало. Для комфортной работы в виртуалке нужно установить дополнение для гостевой системы. Без дополнения будут проблемы с разрешением монитора. На этом с линуксом все. Довольно просто и проблем быть не должно. Находясь в винде мы можем комфортно начать осваивать линукс, не прерывая своей работы в винде. И каждый раз когда выдается возможность нужно реально загружаться в линуксе пробуя его на реальном железе.

Но наша цель полностью отказаться от винды. И на следующем этапе мы должны полностью перейти на линукс, а нужные нам виндовс приложения запускать из виртуалки. Таким образом мы сможем больше времени работать на линуксе, уменьшая зависимость от винды. Правда иногда, что бы поиграться, геймерам все же придется перегружаться, но надеюсь, что игры мира линукса вас порадуют не меньше. :)
  • +7
  • vladoos
  • 22 сентября 2010, 02:48

Комментарии (5)

Интересная возможность VB, не знал о такой. Спасибо :-)
WindowsXP — хост, Ubuntu — гость

наверное наоборот, не?
Наоборот описывается во второй части :)
да, неправ. смутили «правильные» слеши ;)
Спасибо. Думал что ВиртуалБокс не умеет работать с физическим жестким дисков. {потирая руки готовиться к экспериментам}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.