Virtualbox флешка как диск linux

Обновлено: 07.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Linux на USB

Linux прекрасно себя чувствует на флешках и внешних дисках. Поэтому если вы хотите попробовать новый дистрибутив или просто начать своё знакомство с Linux, то установка на внешний диск это хороший вариант (ещё проще работать с виртуальной машиной).

Установив Linux на USB вы получите портативную систему, которую можно загрузить на другом компьютере.

В отличие от виртуальных компьютеров, система на флешке имеет полный доступ к железу (встроенный Wi-Fi адаптер, видеокарта и прочее) — благодаря этому вы сможете использовать ресурсы компьютера в полную силу.

Кстати, если вас интересует работа с Windows на USB, то смотрите статью «Как установить Windows на USB диск».

При установке и использовании Linux на внешний диск могут возникнуть не совсем очевидные проблемы — в этой инструкции я покажу как их решить.

Кстати, именно с возможных проблем давайте и начнём.

БИОС и EFI

БИОС и EFI — это разные варианты загрузчиков. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Некоторые компьютеры поддерживают только БИОС, некоторые поддерживают только EFI, некоторые работают с обоими вариантами.

Live образы почти всех современных дистрибутивов Linux — это гибридные диски. Они имеют раздел и для работы с БИОСом, и для работы с EFI. В зависимости от того, что именно обнаружено на вашем компьютере запускается тот или иной вариант.

Причём установщики для БИОС и EFI могут различаться даже визуально. Один и тот же диск, запущенный на компьютере с БИОС:


И этот же диск запущенный на компьютере с EFI:


Имеются отличия в пунктах меню. Но главное отличие — если была запущена версия для БИОСа, то она устанавливает загрузчик GRUB, предназначенный для работы (как можно догадаться) именно с БИОСом. Если же была запущена версия для EFI, то в качестве загрузчика будет выбран GRUB с поддержкой EFI.

Следовательно, при переносе USB флешки/диска с одного компьютера на другой, она может не загрузиться по причине того, что предназначена для работы с EFI, а другая машина не поддерживает это. Или наоборот.

Это первый подводный камень, который у меня занял время пока я разобрался — помните о БИОС и EFI, если также столкнётесь с проблемой, что система не загружается на другом компьютере.

Имя диска Linux зависит от количества дисков на компьютере

Первый диск в Linux обычно называется /dev/sda, второй диск /dev/sdb, третий диск /dev/sdc и так далее. То есть обычно название имеет вид /dev/sdX, где вместо X идёт латинская буква. Названия могут быть другими — зависит от типа подключения, но обычно всё-таки это /dev/sdX. Кстати, разделы диска называются также как и сам диск, но ещё добавляется цифра. Например, первый раздел первого диска имеет имя /dev/sda1.

Поскольку буква зависит только от порядкового номера диска, то при переносе на другой компьютер, имя диска может поменяться. Например, у вас диск с Линукс был вторым и назывался /dev/sdb, а на другом компьютере это третий диск и он называется /dev/sdc.

Проблема здесь в том, что в загрузчике прописано имя диска и если имя поменялось, то он не может загрузить ядро Linux и, следовательно, всю систему.

Явным признаком неправильного имени диска в настройках загрузчика является сопутствующая ошибка:


Причина её в том, что настройки GRUB указывают на неверный диск, например, на диск Windows. Система не понимает файловую систему диска и не может продолжить загрузку. Эта проблема решается достаточно просто.

Перезагрузите компьютер, и когда появится меню загрузчика GRUB нажмите клавишу e. Вы увидите примерно следующее:


Обратите внимание на строку, начинающуюся с linux. В моём случае там присутствует запись

Поскольку при установке в виртуальном компьютере кроме флэшки не было других медиа, то ей было присвоено имя /dev/sda1. В реальном компьютере имеется ещё минимум один жёсткий диск, и имя /dev/sda1 могло быть присвоено ему. А флэшка, с которой я пытаюсь загрузиться, теперь имеет другое имя. Этим именем может быть /dev/sdb1, или, /dev/sdc1 или другое (в зависимости от количества дисков в системе).

Если вы не знаете новое имя, то просто перебирайте разные варианты. Переместите курсор на имя диска и поменяйте его на /dev/sdb1. После этого нажмите клавишу F10 и дождитесь загрузки. Если загрузка неудачная, то перезапустите компьютер и поменяйте запись на /dev/sdс1 (и так далее по алфавиту), нажмите F10 и проверьте успешность загрузки.

После успешной загрузки в систему, поменяйте имя загружаемого диска. Например, в моём случае имя диска оказалось /dev/sdс1 (с буквой c). Тогда команда для изменения загрузочного диска будет выглядеть так:

Вместо /dev/sdc подставьте имя вашего диска или флэшки.

Теперь при перезагрузке не будет возникать ошибка.

Как установить Linux на флешку или USB диск из VirtualBox

Установить Linux на внешний диск можно на любом компьютере, подключив этот диск по USB, а затем выбрав его в качестве диска для размещения системы. Но это не самый безопасный способ, особенно для новичков, поскольку случайно вы можете выбрать неверный диск и удалить нужные файлы.

Установка через VirtualBox чуть сложнее, но зато происходит в полностью изолированном окружении. Благодаря этому шансов что-то повредить просто нет.

Первая проблема, с которой вы можете столкнуться: при установке в VirtualBox в качестве загрузчика был выбран обычный БИОС, но новые компьютеры не всегда его поддерживают. То есть это та самая дилемма о которой я говорил чуть выше.

Если у вас современный компьютер, то после создания виртуальной машины, поставьте галочку «Включить EFI (только специальные ОС)»:


Будет выполнена установка с поддержкой EFI. На моём ноуте нет поддержки БИОСа и поэтому система, установленная без этой галочки, просто не запускается — у вас может быть также.

Но вернёмся к самому началу — созданию виртуальной машины. При её создании выберите «Не подключать виртуальный жёсткий диск»:


Остальные настройки на ваше усмотрение. Если вы совсем новичок по работе с виртуальными машинами, то смотрите пример создания в статье «Установка Kali Linux на флэшку или на внешний диск как полноценную ОС».

Затем при запуске виртуальной машины подключите вашу флэшку или ваш USB диск к реальному компьютеру, и затем подключите его к виртуальной машине:


Теперь имеется два варианта. Первый я рекомендую только для чистых флэшек и дисков. Иначе есть очень большая вероятность, что процесс разметки диска в установщике завершиться неудачей.

Итак, первый вариант

выбираем Ручную разметку диска:


Там могут быть какие-то разделы:


Если они вам не нужны, удалите их все, получится:


Теперь выберите Автоматическую разметку:


Авто — использовать весь диск:



Оставьте как есть, если не знаете как это использовать:


Если ставите с EFI, то будет создана похожая разметка:


Обратите внимание, что раздел ESP должен быть обязательно — без него EFI просто не увидит ваш диск. Это небольшой раздел в FAT32, где размещается загрузчик. По своему усмотрению, можно подредактировать другие разделы, например, я убрал файл подкачки и уменьшил размер диска:


Соглашаемся с запросами установщика, который может предупредить об отсутствии файла подкачки. Утверждаем выбранную разметку дисков:


Поэтому есть второй вариант.

В самом начале, когда доходим до загрузки, вместо установщика выберите Live Mode. Когда система загрузится в Live режиме, подключите вашу флешку/диск к реальному компьютеру, а затем подключите её к виртуальному, если вы этого не сделали ранее.

Следующей командой проверим имя диска:

Оно должно быть /dev/sda


Сделаем полную очистку флешки /dev/sda. На всякий случай: полная очистка означает, что ВСЕ ДАННЫЕ с флешки будут УДАЛЕНЫ! Обращаю внимание, это мы делаем В ВИРТУАЛЬНОЙ МАШИНЕ. Не делайте так на реальном компьютере, если вы не понимаете, какое имя у вашей флешки — сотрёте первый (скорее всего системный) диск.

Открываем его программой gdisk:

Для перехода в экспертный режим там введите

Затем для удаления GPT введите

Дважды согласитесь, чтобы полностью очистить диск.


Перезагружаем виртуальный компьютер:

При последующей загрузке выберите пункт для установки системы — далее как обычно.

Как установить Linux на флешку или USB диск

Описанным выше способом можно также установить Linux на USB прямо в физическом компьютере, без использования VirtualBox. При этом будьте внимательны, чтобы случайно не перепутать флешку с каким-то внутренним диском и не стереть на нём информацию.

Также помните про название дисков после того, как отключите установочную флешку. Например, на этой фотографии первой идёт установочная флешка (sdb), а за ней внешний USB диск, на который я хочу выполнить установку (sdc):


Если продолжить установку, то затем придётся переименовывать диск в загрузчике. Я поступил проще, отключил компьютер и поменял флешку и диск местами в USB гнёздах, получилось так:


Теперь даже после отключения установочной флешки, USB диск с системой всё равно будет иметь имя sdb и не придётся ничего дополнительно настраивать.

Загрузка Linux с USB из VirtualBox (БИОС)

Кстати, для меня этот метод оказался очень полезным: некоторые системы, например Parrot, после установки не загружаются на физическом компьютере. Проблема решается тем, что я загружаюсь с этого диска через VirtualBox и обновляю систему. После этого система способна загрузиться уже и на физическом компьютере. На аналогичные проблемы (Live система прекрасно работает, а после установки система не загружается) жалуются также некоторые пользователи Kali Linux. Видимо, дело в какой-то несовместимости с железом, которая исправлена в новых версиях ядра.

Загрузка Linux с USB из VirtualBox (EFI)

С EFI в VirtualBox есть свои особенности. Во-первых, нужно начать загрузку с внешнего диска, как это описано в этой статье.

Но загрузка завершиться неудачей:


Причина ошибки в том, что загрузчик VirtualBox EFI не видит файлы .efi для продолжения загрузки ОС.

Вариантов решить эту проблему два:

1) явно указать загрузчику нужные файлы

2) поменять название требуемых файлов на дефолтные — которые загрузчик точно найдёт.

1. Указываем загрузчику файл .efi:

Теперь выполните команду

чтобы увидеть содержимое папки EFI:


Видим там папку parrot, теперь посмотрим, то внутри этой папки:


Итак, видим там файл grubx64.efi. Получается, что файл, который не может найти система, находится по пути \EFI\parrot\grubx64.efi

Открываем файл для редактирования:

И вписываем туда строку (у вас может быть другая, например, \EFI\Manjaro\grubx64.efi или ещё какие-то варианты):

Для выхода из редактора:

После этого система нормально загрузится:


2. Изменяем имена файлов на отказоустойчивые

Как мы только что увидели, файл для загрузки находится по пути /EFI/parrot/grubx64.efi, отказоустойчивым именем, которое система ищет по умолчанию, является /EFI/BOOT/BOOTX64.EFI

Можно открыть этот диск и просто переименовать папку и файл в /EFI/BOOT/BOOTX64.EFI — система загрузится и ни на что другое это не повлияет.

Установка нескольких дистрибутивов Linux на одном USB

Ничего не мешает установить на USB диск второй дистрибутив Linux, а также третий, четвёртый, пятый и так далее.

Процесс всегда примерно одинаковый — из (части) свободного места создаётся новый раздел и на него устанавливается новый дистрибутив.

Загрузчик Linux хорошо определяет соседние системы


и при запуске компьютера предлагает на выбор загрузиться с одной из них.


Могут быть разные нюансы с «дружественными» дистрибутивами. Например, Ubuntu изображает из себя Windows и не хочет устанавливаться на USB. Всё решается подключением диска особым способом как описано в этой статье.

Эта же самая Ubuntu не даёт вручную задать размер диска и занимает всё свободное пространство…


С помощью GParted Ubuntu вылечена от жадности:


В общем если вы хотите сделать «шаг влево шаг вправо», то «дружелюбность» сразу превращается в головную боль.

Почему Linux не загружается с USB

Кроме уже перечисленных вариантов, когда могут возникнуть проблемы, также проверьте, отключены ли у вас в настройках EFI опции Security Boot и Fast Boot.

Железо

  • старайтесь не использовать USB хабы — от них очень много проблем
  • во время установки не шевелите флешки и провода дисков
  • флешки могут отключаться от перегрева — помните об этом

Вам может это пригодиться:

  • внешний USB диск
  • внешний USB SSD диск
  • SATA-USB чехол-переходник
  • карта памяти USB на 64 Гб
  • карта памяти USB на 128 Гб
  • карта памяти USB на 256 Гб

Я себе купил два вот таких SATA-USB переходника. Первый:


А этот я купил в местном магазине (600 рублей), поддерживает только USB 2, заметно медленнее предыдущего, в комплекте приятный чехол. В него я вставил HDD диск (тоже со старого ноутбука):

В этой заметке я расскажу, как подключить USB диск в виртуальную машину так, чтобы гостевая система воспринимала его как обычный жёсткий диск.

Этот трюк позволит не только загружаться с установочного USB — что, на мой взгляд, довольно бессмысленно, поскольку на флешку записывается .ISO образ, которой намного проще подключить к виртуальному компьютеру в VirtualBox. Если подключить USB диск или флешку к гостевой системе в качестве обычного диска, то можно делать такие интересные вещи как:

  • загрузка с физического SATA диска через USB переходник
  • установка Windows на USB диск или флешку

Если у вас нет возможности подключить SATA диск непосредственно в компьютер — например, к ноутбуку — но вам очень нужно загрузиться именно в операционную систему, которая развёрнута на нём, то описанный здесь трюк поможет это сделать: через USB переходник подключите SATA диск к компьютеру, а затем USB диск подключите к виртуальной машине в качестве обычного диска, как это показано в этой инструкции.

По поводу второго пункта — установка Windows на USB носитель — если вы хотите установить Linux на флешку (не записать Live-образ, а именно установить полноценную систему), то для установки необязательно проделывать показанный здесь трюк — поскольку Linux прекрасно устанавливается на переносной носитель. Но в Windows стоит запрет для установки на USB диски и флешки.

Я покажу как загрузиться с USB в Windows и Linux. Принцип одинаковый в обеих этих операционных системах, но чуть различаются команды из-за специфики ОС.

Как в VirtualBox загрузиться с USB в Windows

Подсоедините USB флешку или диск к компьютеру. Затем нажмите Win+r и выполните diskmgmt.msc.

Найдите вашу флешку и запомните номер диска:


К примеру, на моём скриншоте флешка имеет номер 2.

Закройте все окна VirtualBox, если они открыты.

Далее нам нужно открыть командную строку как администратор. Для этого нажмите Win+x и выберите «Windows PowerShell (администратор)».

Теперь перейдите в папку, где у вас установлена VirtualBox. Если эта программа установлена в директорию по умолчанию, то команда для перехода:

Если вы выбрали другое расположение для VirtualBox, то отредактируйте предыдущую команду соответствующим образом.

Например, у меня это второй диск, тогда команда выглядит так:

Если всё прошло успешно, должна появиться надпись:


Обратите внимание, что вы можете заменить C:\usb.vmdk на любое расположение файла по своему желанию.

Эта команда создаёт файл диска виртуальной машины (VMDK) указывающий на физический диск, который вы выбрали. Когда вы загружаете VMDK файл в качестве диска в VirtualBox, то VirtualBox на самом деле будет иметь доступ к физическому диску.

Теперь откройте VirtualBox от администратора — это обязательно, иначе не сработает как надо. Для этого нажмите кнопку Пуск, наберите VirtualBox и выберите «Запуск от имени администратора»:


VirtualBox может иметь доступ к сырым дисковым устройствам только с правами администратора.

Теперь в VirtualBox создайте новую виртуальную машину, выберите соответствующую операционную систему и когда дойдёт дело до выбора жёсткого диска, вместо создания нового, выберите Использовать существующий виртуальный жёсткий диск:


Теперь откройте файл C:\usb.vmdk (или другой, если вы сохранили его в другом месте или под другим именем):


Загрузите вашу виртуальную машину, теперь вашу USB флешку она должна видеть как самый обычный жёсткий диск. То есть если это правильно записанный загрузочный диск или флешка, то система загрузиться с него.

Обратите внимание, что USB устройство должно быть первым жёстким диском в вашей виртуальной машине VirtualBox, иначе загрузка не произойдёт. Если вы подсоединяете новый USB диск к уже существующей машине, то попробуйте изменить порядок носителей в настройках этой машины, либо выбрать соответствующий диск в начале загрузки.

Как в VirtualBox загрузиться с USB в Linux

Чтобы понимать принцип, прочитайте предыдущий раздел про Windows.

Чтобы в Linux обойтись без прав root, нужно добавить пользователя (себя) в группу disk:

После этого перезагрузитесь.

Если вы не добавите себя в группу disk, то вам нужно будет запускать VirtualBox от пользователя root или с sudo, иначе вы столкнётесь с ошибкой:

В Linux, чтобы узнать имя USB диска выполните команду:


В моём случае у диска имя /dev/sdb.

Для создания файла виртуального диска, указывающее на реальный диск, выполните команду вида:

Где вместо X впишите букву соответствующего диска. Пример для моих условий:


Всё остальное — создание виртуальной машины и выбор в качестве жёсткого диска существующий виртуальный диск — в точности как в Windows.

Обратите внимание, что файл usb.vmdk — это простой текстовый файл, который вы можете переместить в любое расположение и даже отредактировать.


Вместо имени вида /dev/sdX вы можете использовать постоянное имя на основе by-id, например:

Это позволит вам избежать ошибки недоступности диска если его имя изменится. Ннапример, если вы перед флешкой для VirtualBox подключите какую-то другую флешку или USB диск и имя диска изменится с /dev/sdb на /dev/sdc. Подробности смотрите в статье «Постоянные имена для файловых устройств».

Настоятельно рекомендуется ознакомиться с Руководством по VirtualBox

VirtualBox - это популярная программа для эмуляции персонального компьютера и запуска различных операционных систем. Вы можете подключать к своей виртуальной машине различные устройства, включая USB устройства, подключенные к основной системе.

Но многие пользователи сталкиваются с проблемой что VirtualBox не видит USB. Устройства подключены к системе и точно работают, а в меню подключения их просто нет. В этой статье мы рассмотрим что делать если virtualbox linux не видит usb устройства. Статья рассчитана в первую очередь на Ubuntu, но подойдет также пользователям других дистрибутивов.

Ошибка Virtualbox не видит USB

Чаще всего такая ошибка возникает потому что у пользователя, от имени которого вы запустили VirtualBox нет доступа к необходимым файлам. Это решается очень просто, вам достаточно добавить своего пользователя в группу vboxusers. Для этого выполните команду:

sudo usermod -a -G vboxusers $USER


После этого вам достаточно еще раз войти в систему чтобы все заработало. Вы можете проверить обнаруживаются ли USB устройства с помощью команды:

VBoxManage list usbhost

Но это помогает не всегда. Вам также нужно посмотреть включена ли поддержка USB контроллера для виртуальной машины. Для этого откройте контекстное меню для нее и выберите пункт "Настройка", затем перейдите на вкладку "USB":


Тут должна быть установлена галочка напротив "Включить контроллер USB", а также выбран один из доступных интерфейсов. Для поддержки USB 2.0 или USB 3.0 вам необходимо установить Virtualbox Extensions Pack. Это набор проприетарных расширений, которые включают к тому же поддержку этой технологии. Скорее всего, вы уже можете подключить usb virtualbox.

Для этого скачайте файл для вашей версии Virtualbox на официальном сайте. Затем откройте меню "Файл" -> "Настройки" -> "Плагины" и подключите здесь скачанный файл:


В Ubuntu 16.04 это можно сделать проще, достаточно выполнить команду:

sudo apt install virtualbox-ext-pack


Готово, после этого вы можете включить поддержку USB 3.0.


В некоторых дистрибутивах, например, семейства Red Hat, не работает usb в virtualbox, потому что поддержка подключения USB отключена из соображений безопасности. В таком случае вам придется ее включить. Для этого нужно сначала раскомментировать все строки SUBSYSTEM в /etc/udev/rules.d/60-virtualbox.conf. Это можно сделать командой:

Затем скопируйте этот файл в каталог /usr/lib/udev:

И перезагрузите наборы правил:

sudo udevadm control --reload-rules
$ sudo systemctl restart vboxdrv.service

Теперь можете опять проверить все ли еще не видит Virtualbox usb устройства или уже все работает.

Выводы

В этой статье мы рассмотрели что делать если VirtualBox не видит USB Ubuntu или других Linux дистрибутивах. В большинстве случаев проблема решается очень просто. Надеюсь, эта информация была вам полезной.


Оригинал: How To Boot From USB Drive In Virtualbox In Linux
Автор: SK
Дата публикации: 22 мая 2020 г.
Перевод: В.Костромин
Дата перевода: 25 мая 2020 г.

В предыдущей статье мы рассмотрели процесс создания с помощью Ventoy мульти-загрузочного USB-диска в Linux-системе. После успешного создания загрузочного диска имеется возможность добавлять разные ISO-образы на загрузочный диск и запускать с него разные версии операционных систем. Но при этом остается небольшая проблема, заключающаяся в том, что приходится перезагружать систему каждый раз после добавления нового ISO, чтобы проверить, действительно ли работает USB-накопитель. Это занимает много времени. Было бы лучше, если бы можно было загрузиться с USB-накопителя в виртуальную машину Virtualbox, установленную в системе Linux. Как вы, возможно, знаете, Oracle Virtualbox не предлагает прямого способа загрузки с USB. К счастью, нашелся простой обходной путь, позволяющий Virtualbox загружаться с USB-накопителя.

Загрузка с USB-диска в Virtualbox в системе Linux

Чтобы разрешить Virtualbox загружаться с USB-накопителей, вам нужно создать файл .vmdk и разместить его на USB-накопителе для загрузки с него. Файл vmdk - это не что иное, как файл виртуального диска, который содержит всю информацию об отдельной виртуальной машине.

Сначала вы должны определить имя вашего USB-диска. О том, как это сделать, вы можете узнать из следующей статьи:

Пример вывода:

Как видите, в данном случае USB-диск имеет имя /dev/sdc .

Теперь запустите терминал и выполните одну из следующих команд, чтобы создать файл vmdk:

В некоторых дистрибутивах Linux команда vboxmanage чувствительна к регистру символов. В этом случае команда создания vmdk-файла должна иметь вид:

Create new vmdk file using vboxmanage command

Задайте нужные разрешения для вновь созданного vmdk-файла:

После этого извлеките USB-диск и перезагрузите систему, чтобы изменения вступили в силу. Если вы не извлечете ваш USB-диск, имя вашего диска может измениться при последующей загрузке. Так что это важно: вначале удалите USB-диск, а потом перезагружайте систему.

Теперь откройте приложение Oracle Virtualbox и создайте новую виртуальную машину:

Create new virtual machine in virtualbox

Укажите имя виртуальной машины, тип и версию ОС и щелкните по кнопке Next:

Enter virtual machine details in virtualbox

Задайте объем оперативной памяти:

Enter RAM size to virtual machine in virtualbox

Use an existing virtual hard disk file

Выберите созданный вами vmdk-файл на вашем локальном диске:

Choose the newly created vmdk file from your local drive

После добавления файла vmdk нажмите кнопку «Choose» (Выбрать) для подтверждения:

Confirm adding the vmdk file

После этого вы увидите, что файл vmdk выбран в качестве виртуального жесткого диска для нового виртуального компьютера. Нажмите Next (Далее), чтобы продолжить:

vmdk file is selected as the virtual hard disk

Все сделано! Подключите ваш загрузочный USB-диск и запустите виртуальную машину:

Boot from USB drive in Virtualbox

Теперь вы можете загружать одну из ОС, имеющихся на вашем USB-диске, в Oracle Virtualbox. На следующей картинке вы видите момент загрузки с загрузочного USB-диска, созданного с помощью скрипта Ventoy, в Virtualbox:

Boot From USB Drive In Virtualbox In Linux

Создание ISO-образа загрузочного USB-диска

Add ISO in virtualbox storage controller

Теперь запустите виртуальный компьютер и загрузите систему с этого ISO-образа.

Пожалуйста, обратите внимание, что этот метод работает не со всеми образами USB-дисков, в частности, с USB-дисками разбитыми на несколько разделов.

Читайте также: