Подключаем внешний накопитель к виртуальной машине VirtualBox в Linux
prolinux
VirtualBox всем известен, как программа для создания виртуальных компьютеров. Именно с его помощью можно запустить на компьютере вторую операционную систему. Виртуальные машины VirtualBox поддерживают различные форматы виртуальных дисков, кроме этого, к ним можно подключить и почти любой реальный, физический накопитель. В этом обзоре я покажу процесс подключения внешнего HDD-накопителя к виртуальной машине VirtualBox под управлением операционной системы с Linux на борту, в данном случае это будет текущий Debian sid. Показанные действия актуальны для любой другой операционной системы с Linux в качестве ядра. Приступим...
Исходные данные
Итак, в моём распоряжении есть компьютер с установленным и настроенным Debian sid на борту. В операционной системе установлен VirtualBox, и с его помощью создана виртуальная машина с именем webserver. У этой виртуальной машины есть собственный виртуальный жесткий диск размером в 10ГиБ, и на нём установлена серверная операционная система. С помощью этой виртуальной машины я обычно отлаживаю развёртывание и настройку web-серверов.
Кроме этого, в моём распоряжении имеется внешний, подключаемый в USB-разъём компьютера HDD-накопитель, на котором установлена операционная система. Его я обычно использую как аварийно-восстановительный инструмент в своём незамысловатом хозяйстве.
Мне необходимо подключить этот внешний накопитель к виртуальной машине webserver и загрузить эту виртуальную машину с этого HDD. Далее следует пошаговая демонстрация всех необходимых для этого действий.
Настраиваем пользователя
В операционных системах с Linux в качестве ядра существует строгая иерархия для классификации пользователей по доступным в системе действиям. Чтобы получить разрешение на то или иное действие без ввода пароля администратора, пользователь должен состоять в системной группе, которая это действие разграничивает. Поставленная в заголовке этой статьи задача подразумевает права пользователя на работу с дисковой подсистемой. Это значит, что для достижения поставленной цели текущий пользователь системы, запускающий VirtualBox, должен состоять в системной группе disk
.
Определить имя текущего пользователя можно с помощью команды whoami, естественно, чтобы её исполнить, мне потребуется терминал. Зная имя текущего пользователя, я могу легко определить, является ли этот пользователь участником системной группы disk
. Для этого достаточно с помощью grep отфильтровать соответствующую строчку системного файла /etc/group
— вот такой простой командой это делается.
$ grep ^disk /etc/group
Как видно на снимке экрана выше, текущий пользователь имеет имя jazz
, и выхлоп grep показывает, что он состоит в системной группе disk
. Список участников группы обычно следует за последним двоеточием.
Что делать, если пользователь не состоит в заданной системной группе? Его можно в эту группу достаточно просто добавить, либо редактированием системного файла /etc/group
, либо, что лучше, исполнением usermod с заданными параметрами — вот так.
$ sudo usermod -a -G disk jazz
Команда требует администраторских прав, их я здесь получил с помощью sudo. В команде я указал целевую группу — disk
, и пользователя, которого я добавляю в эту целевую группу, его имя — jazz
. Сразу после выполнения этой команды пользователь должен покинуть текущую сессию, выйти из системы и войти вновь.
Подключаем внешний накопитель и находим его в системе
Поскольку в моём распоряжении есть внешний HDD-накопитель, пришло время подключить его в разъём USB. Но, чтобы легко его найти в системе после подключения, сначала выполняю команду lsblk, затем подключаю диск в разъём и повторяю lsblk вновь.
На снимке экрана выше представлены два варианта вывода команды lsblk, вторая команда исполнена после подключения внешнего накопителя в USB-разъём компьютера. Сравнив эти данные, несложно определить, что внешний накопитель определился в системе под идентификатором sdb
— на диске два раздела и всего около 233ГиБ дискового пространства. С этим идентификатором я и буду работать дальше.
Создаём VMDK файл для внешнего накопителя
Виртуальные машины VirtualBox оперируют устройствами как файлами. И, чтобы подключить к такой виртуальной машине внешний накопитель, необходимо предварительно создать файл устройства. Это действие самое сложное в цепочке всех описанных в этой демонстрации приключений. Чтобы реализовать его, опять потребуется текстовая консоль.
В составе VirtualBox есть консольная программа VBoxManage, с её помощью выполняются многие системные действия с VirtualBox. Она же даёт возможность создать VMDK-файл физического накопителя. Вот как выглядит команда, создающая такой файл для моего внешнего HDD накопителя, который уже подключен в разъём.
$ VBoxManage createmedium disk --filename VirtualBox\ VMs/tosh.vmdk --format VMDK --variant RawDisk --property RawDrive=/dev/sdb
После выполнения команда оставит на терминале незамысловатый выхлоп и сообщит, что носитель создан, как видно на снимке экрана выше.
Из самой команды ясно, что:
-
Я создаю VMDK файл с именем
tosh.vmdk
, в каталогеVirtualBox VMs
, который хранится в домашнем каталоге текущего пользователя, на что указывает первый ключ команды —--filename
; -
Я создаю VMDK файл для физического диска, на что указывает второй ключ команды —
--variant
; -
В крайнем ключе команды —
--property
я указываю физический диск и его адрес в системном каталоге/dev
—RawDrive=/dev/sdb
.
Сразу после выполнения этой команды, если всё сделали правильно, обнаруживаем созданный файл накопителя в менеджере виртуальных носителей VirtualBox, его можно запустить либо через системное меню программы, либо сочетанием ctrl+D
.
Как видно на снимке экрана выше, мой менеджер виртуальных носителей отображает диск tosh.vmdk
и правильно определяет размеры его дискового пространства.
Подключаем внешний накопитель к виртуальной машине
Как я сказал ранее, у меня уже есть виртуальная машина с именем webserver. Выбираю эту виртуальную машину в списке, в окне VirtualBox и запускаю программу настройки виртуальной машины. На вкладке Носители
добавляю только что созданный файл tosh.vmdk
на контроллер SATA на порт 0, как показано на следующем снимке экрана.
Обращаю внимание, что на этом же контроллере числится второй виртуальный накопитель с именем webserver.vdi
. Чтобы сохранить настройки, жму кнопку OK в текущем модальном окне настроек виртуальной машины.
Загружаем виртуальную машину с внешнего накопителя
Так как мой внешний HDD подключен к контроллеру SATA виртуальной машины и числится первым в списке, я справедливо ожидаю, что виртуальный компьютер сразу же после запуска начнёт загружаться именно с этого внешнего накопителя. Включаю виртуальный компьютер, наблюдаю процесс его загрузки, и через некоторое время оказываюсь перед окном виртуальной машины с загруженным рабочим столом установленной на моём внешнем накопителе операционной системы. Если исполнить в этом окне, в терминале команду lsblk, то мы увидим, что внешний диск определился как sda
, на нём имеется два раздела, и на первом разделе имеется точка монтирования — корень файловой системы.
Цель этой демонстрации полностью достигнута. Я подключил внешний HDD-накопитель к виртуальной машине VirtualBox и загрузил эту виртуальную машину с этого накопителя.
Выводы и умозаключения
-
Имея в хозяйстве внешний HDD-накопитель и установив на него операционную систему, мы получаем возможность использовать эту операционную систему на чужом компьютере, где-нибудь вдали от дома, при условии, что хозяин компьютера позволит загрузить его машину с вашего накопителя. В таком случае мы получаем полностью настроенную и допиленную под собственные требования систему вдали от дома, просто положив внешний накопитель в карман брюк.
-
VirtualBox — довольно удобная программа для отработки и тестирования разных системных действий без риска что-нибудь нечаянной сломать на стационарной системе.
-
Довольно несложно подключить в гостевой машине VirtualBox внешний USB-накопитель, если это HDD, быстрота установки и замены операционной системы на виртуальной машине очень порадует пытливого пользователя, а полученную в итоге операционную систему можно будет запустить на любом другом — реальном компьютере.