Как перенести файлы в установленную на VirtualBox MS DOS
Как перенести файлы в установленную на VirtualBox MS DOS
О дной из ключевых задач, которые предстоит решить пользователям, установившим MS DOS на виртуальную машину, является организация общего доступа к файлам. В VirtualBox, например, имеется замечательная функция подключения общих папок, но в данном случае от нее будет мало толку. Как известно, для подключения общих папок необходима обязательная установка пакета дополнений гостевой ОС, только вот для MS DOS такого пакета нет, попытки же примонтировать каталог NTFS, скорее всего ни к чему не приведут.
Тем не менее, наладить файлообмен с хостовой операционной системной системой можно. В далекие счастливые времена для обмена данными между компьютерами с DOS использовались гибкие магнитные диски. Вы также может использовать дискеты, но только не настоящие, а виртуальные. Если вы откроете настройки любой виртуальной машины и перейдете на вкладку Носители, то внизу, сразу под областью с дисками сможете увидеть несколько кнопок, одна из которых отвечает за добавление новых контроллеров к дереву носителей информации.
Если по ней кликнуть, появится всплывающее окошко содержащее список доступных контролеров. Есть в нем и Floppy контролер, тот самый, который позволяет устанавливать в виртуальный компьютер гибкие диски. В установленной на VirtualBox MS DOS этот виртуальный дисковод уже присутствует по умолчанию. Остается лишь создать для него дискету с файлами и считайте дело в шляпе. В качестве такой дискеты можно использовать образ диска в формате IMA. В настоящее время формат IMA считается устаревшим, раньше же он был столь же популярен как сегодня ISO.
Файлы IMA могут содержать образ физического или виртуального диска с практически любыми данными. Для создания образов IMA существует специальная утилита под названием WinImage. Она является платной, но будет на то желание каждый сможет найти вполне рабочую модифицированную версию и к тому же на русском языке. После того как образ IMA будет создан, его можно будет подключить к контроллеру Floppy.
Далее запускаем MS DOS, в командной строке набираем A: и жмем ввод. Теперь вы можете легко скопировать файлы на жесткий диск, а саму дискету отформатировать.
Вот только вот вряд ли вам этим способом получиться переносить большие объемы данных. Размер поддерживаемых VirtualBox дискет для DOS не может превышать 2,88 Мб. Поэтому для переноса файлов в виртуальную среду MS DOS лучше использовать образы формата ISO. Например, игра Quacke 1996 года выпуска в распакованном виде весит как минимум 51 Мб и на дискете IMA просто не поместится. А вот в ISO вы можете закатать сколько угодно данных. Чем создать такой образ? Программ для создания образов этого формата множество, одной из лучших считается UltraISO. Также вы можете воспользоваться такими утилитами как MagicISO или PowerISO.
Подключение такого образа к виртуальной машине производится так же, как и в случае с IMA, только вместо контроллера Floppy нужно выбирать контролер IDE, тот самый, к которому подключен основной диск виртуальной машины.
А вот еще. Если при работе с виртуальной дискетой мы переходили на диск A, то в случае с подключенным ISO-образом нужно переходить на диск D. Ну а дальше и так все понятно, создаем на диске С отдельную папку и копируем туда все добро.
Как перенести файл или текст из основной системы в гостевую в Virtual Box?
Требуется: передавать файлы или текст между основной и гостевой операционными системами в прямом и обратном направлениях. В связи с этим, рассмотрим возможные способы передачи данных в виртуальной машине Virtual Box.
Через буфер обмена
Актуальные виртуальные машины:
Vmware Player (Vmware WorkStation) и Virtual Box
По сути, в настоящее время (2018 г.) одними из наиболее актуальных и удобных виртуальных машин являются Vmware (WorkStation) Player и Virtual Box . Первая обладает особенно легкой возможностью настройки, в ней работает двусторонний буфер обмена, причем, для копирования/вставки как файлов, так и текста. Подключается он безо всяких настроек, сразу после установки виртуальной машины. Тогда как в Virtual Box , несмотря на декларированность, буфер обмена может и не работать. Даже несмотря на выполненные настройки двунаправленного буфера, установку дополнений и т.д. Итак, перейдем к рассмотрению способов передачи файлов и текста. Т.е., по сути, рассмотрим, как можно эмулировать двусторонний буфер обмена между гостевой и основной системами в Virtual Box .
По протоколам SSH, FTP и др.
Этот способ передачи требует наличия соответствующего сервера в одной из операционных систем (например, в гостевой) и клиента (например, такого, как FileZilla ) — в другой. Понятно, что таким образом возможно передать только файлы, текст передать не получится. Для работоспособности способа передачи по протоколам SSH, FTP необходимо, чтобы соответствующие сервер и клиент были постоянно загружены в оперативную память, т.е. чтобы они были работоспособны. В сети существует множество (как правило, повторяющихся) рекомендаций, каким образом сделать такие серверы автозагружаемыми, т.е. чтобы они автоматически начинали работать при загрузке гостевой операционной системы. Аналогично, можно сделать автозагружаемым, например, клиент. Можно, но это приведет к необходимости держать постоянно (точнее, все время, пока потребуется перенос файлов между гостевой и основной операционными системами) включенным соответствующий сервер. Что, кстати, может быть и небезопасно, особенно, если пользовательь компьютера не владеет навыками администрирования сетей. Ибо бесконтрольный доступ по SSH, FTP или другим аналогичным протоколам может привести как к скачиванию с компьютера тех или иных файлов, так и к бесконтрольной записи на него (например, опасных прорамм, вирусов).
Через внешние носители информации
Это может быть, например, жесткий диск, флешка и др. Способ кажется парадоксальным, но он вполне работает. Однако, здесь может быть небольшая проблема. Мало того, что носитель потребуется подключить к USB-порту. Так еще при каждом переносе из одной операционной системы в другую придется КАЖДЫЙ РАЗ (при очередном копировани файлов) подключать его к гостевой системе и потом отключать. Это, во-первых, вынуждает тратить время (ибо внешние носители, подключаемые к портам USB , отключаются/подключаются не мгновенно, а через несколько секунд), а, во-вторых, попросту не совсем удобно. Тем более, иногда, например, в Ubuntu , установленной в Virtual Box , флешка может работать некорректно.
Через сайт или онлайн-сервис в интернете
Это — вообще, надо сказать, экстравагантный способ, но он вполне работает, особенно легко, при копировании текста. Но, лишь при условии, что из обоих операционных систем есть одновременный доступ в интернет. При этом, конечно, необходимы будут, во-первых, браузеры, запущенные в обоих системах, через которые будет осуществляться передача информации. Данный способ особенно легок для копировании/вставке текста. При этом текст копируется откуда-нибудь (например, из текстового редактора, открытого в Ubuntu ) на страницу сайта, позволяющую сохранять информацию. После чего, из другой операционной системы (например, из Windows 7 ) в браузере обновляется страница и — можно скопировать оттуда текст, вставить его в соответствующую программу. работающую уже в этой операционной системе.
Данный способ отлично подойдет для переноса между операционными системами как "просто текста", так и файлов. Повторимся, для переноса текста достаточно будет вставить его на соответствующую страницы сайта в одной системе. а скопировать — из другой. Однако, вполне возможно, что форматирование (цвет, размер шрифта, поля и др.), конечно же, могут не сохраниться – это зависит от технологий, примененных на сайте. Кроме того, видимо, не всегда будет возможным вставить на сайт контент более сложный, чем текст, как то — таблицы, картинки. впрочем, есть облака, Google-диск, Яндекс-диск и т.п. Электронная почта, в конце концов. Кроме того, если страница такого сайта находится в открытом доступе — этот текст может быть доступен любым желающим, в том числе и поисковикам Google, Яндекс. При этом он может проиндексироваться ими и тогда его доступность для всех желающих еще более увеличится. Правда, можно разработать специальную страницу, защищенную паролем — как от остальных пользователей, так и от поисковиков. Впрочем, скорее всего, ничего разрабатывать не придется, так как уже давно имеются обласные технологии, позволяющие передавать файлы целиком. Есть электронная почта, разного рода WhatsApp и многие другие сервисы. Впрочем, для входа на запароленную страницу потребуется вводить пароль, что может быть несколько неудобно.
Кроме того, потребуется не только подключение к интернету, но и, что немаловажно, наличие денег на счету. Наконец, при большом объеме информации перенос как файла, так и текста может существенно замедлиться, особенно, при невысокой скорости интернет-соединения.
Через общие папки
Опять же, можно поступить, как минимум, двумя путями. Можно сделать общую папку (share) в основной операционной системе, затем установить сетевое соединение между ней и гостевой системой (на адрес вида 192.168.х.х ) и передавать файлы. Получится аналогия предыдущей возможности, правда, не через глобальную сеть (интернет), а через локальную, что, конечно, будет гораздо быстрее. Однако, этот способ сложен своею настройкой. Придется либо пробрасывать порты, либо отключать политику NAT . Последнее приведет к появлению дополнительной уязвимости, поэтому непрофессионалам это делать нежелательно. Да и профессионалам, без крайней необходимости, тоже.
А второй способ реализации общей папки является довольно простым. Его мы и рассмотрим ниже.
Как сделать общую папку в Virtual Box
Итак, требуется: сделать общую папку, которую можно было бы использовать для двусторонней передачи файлов из одной операционной системы в другую – почти, как буфер обмена.
Во-первых, следует правильно настроить виртуальную машину Virtual Box , установить дополнения для нее. Во-вторых, следует создать папку с соответствующим именем в каком-нибудь каталоге в основной операционной системе ( Windows 7 ). Пусть это будет папка с именем Common , расположенная в каталоге С:Мои документы . Затем, в менеджере Virtual Box нужно выбрать:
Машина -> Настроить -> Общие папки
Появится панель, на которой можно добавить новую общую папку. Нажав кнопку (с зеленым крестиком), добавится строчка, в которой можно будет ввести адрес любой папки, которую мы ходим сделать общей:
Щелкнув дважды на названии папки (или на кнопке "Изменяет выбранную папку" , появится панель, на которой можно будет изменить ее адрес. Например, сделаем общую папку с названием Common , расположенную в С:Мои документы . При этом путь к папке будет С:Мои документыCommon , тогда как ИМЯ будущей общей папки в основной системе ( Windows 7 ) будет просто Common .
Таким образом, в Virtual Box в основной системе задано имя папки, которая вскоре станет общей.
Монтируем общую папку в гостевой системе Linux Ubuntu
Для этого открываем гостевую систему в виртуальной машине. Чтобы общая папка была доступна всем пользователям (в том числе и из основной системы Windows 7 ), назначаем ей самые широкие права доступа:
sudo chmod 777 /media/sf_Desktop
После чего, в консоли вводим команду монтирования:
sudo mount -t vboxsf Common /media/ sf_Desktop
Как видим, имена папок не совпадают в данном случае. т.е. они вовсе необязательно должны совпадать!
Итак, команда mount запускается в режиме администратора, поэтому в Ubuntu необходимо запускать ее через sudo . Потребуется ввести пароль.
vboxsf — это группа, в которую должен быть добавлен текущий пользователь Ubuntu . Если он НЕ добавлен, вначале следует это сделать. Для этого открываем терминал и от администратора ( root ) выполняем следующую команду:
sudo adduser user_name vboxsf (тоже может потребоваться ввод пароля).
Вместо user_name нужно ввести имя виртуальной машины (точнее, имя гостевой операционной системы Ubuntu в виртуальной машине), которое Вы вводили при инсталляции гостевой системы. И под которым работаете в Ubuntu (т.е. имя "простого" пользователя, не администратора). Возможно, после этого потребуется перезагрузить виртуальную машину, чтобы эти изменения вступили в силу. Перезагрузку можно сделать тремя способами:
- Первый . В консоли набираем соответствующую команду, например, reboot
И нажимаем Enter , естественно. Ubuntu будет вскоре перезагружена. - Второй . В менеджере Virtual Box выбираем Машина -> Перезапустить
- Третий . Выключить (закрыть соответствующее окно) гостевую операционную систему ( Ubuntu ) и затем в менеджере Virtual Box нажать
Машина -> Сбросить сохраненное состояние или просто Сбросить
Common — это имя общей папки, точно соответствующее ее имени в основной операционной системе ( Windows 7 ), которое фигурирует в менеджере Virtual Box (конкретнее, в настройках общих папок, см. выше).
/media/sf_Desktop — это путь к этой общей папке в Ubuntu (здесь, как видим, она имеет ДРУГОЕ ИМЯ, не Common !! Да, здесь у нее может быть и другое имя, не совпадающее с именем в основной системе!). Каталог media содержится в корневом каталоге (под названием "Компьютер" ) Ubuntu .
sf_Desktop — это имя общей папки, которое создала сама Virtual Box , автоматически, при ее создании (см. выше). Оно может, повторимся, как совпадать, так и не совпадать с Common . Это – важный момент, на котором почти никто не акцентирует внимание.
А почему — именно sf_Desktop ? Это – дело случая. Дело в том, что sf_ — это стандартная аббревиатура, используемая Virtual Box . А Desktop — это имя ранее (изначально) использовавшейся общей папки на компьютере автора этой статьи. В принципе, это имя можно изменить и сделать его, например, Common (чтобы имена общей папки совпадали в обоих операционных системах). А можно и оставить, как есть.
С файлами — понятно, но как быть с передачей текста?
Таким образом, общая папка может легко использоваться для передачи файлов между обоими операционными системами в Virtual Box и туда, и обратно. Копируем в общую папку файл в одной операционной системе, переходим в другую операционную систему, смотрим уже там соответствующую общую папку — и видим этот файл уже там. Но, как же передать часть содержимого файла, например, текст? Очевидно, для этого в общей папке следует держать какой-нибудь (желательно, пустой) текстовый файл, в качестве буфера обмена. И. копировать в него текст в текстовом редакторе в одной операционной системе, а извлекать этот текст — в другой. Например, копируем в основной системе текст в Windows 7 в редакторе Notepad++ , а в Linux Ubuntu (гостевая система) — используем редактор Gedit . Т.е., по сути, у нас получился практически аналог буфера обмена, правда, немного менее удобный, требующий нескольких лишних нажатий мыши. Кроме того, обязательно : оба файла должны быть в одинаковой кодировке! Если в Linux Ubuntu кодировка UTF-8 установлена по умолчанию (в том числе и в текстовом реадкторе Gedit ), то в Windows редактор Notepad++ или какой-либо другой текстовый редактор может открыть файл и в другой кодировке, например, в CP1251 . В результате, нелатинские буквы могут превратиться в нечитаемые символы.
Ну, а как быть с рисунками, таблицами, .
Здесь — два варианта. Либо используем, опять-таки, два соответствующих графических, табличных редактора в разных операционных системах (например, кроссплатформенные Gimp или InkScape — для графики), вставляя рисунок в одной системе, извлекая — в другой. Либо — архивируем соответствующий файл и передаем через общую папку, затем производим разархивирование.
Странно, конечно, что же мешало разработчикам Virtual Box сделать полноценный, легко настраиваемый буфер обмена — как для текстов, так и для файлов? Как это сделано в Vmware Player . Ведь, по сути-то, ничего сложного здесь нет. Вполне можно было бы сделать временный каталог и временный файл, которые и выполняли бы функции соответствующих буферов обмена.
Передача файлов в изолированную виртуальную машину под управлением DOS с помощью… клавиатуры
Рассмотрим передачу файлов в виртуальную машину с помощью симуляции активности пользователя.
Представим что у нас есть некоторая виртуальная машина под управлением операционной системы DOS (FreeDOS 1.1/MS-DOS 6.22) с полным набором программ, но не имеющая съемных носителей, последовательных и параллельных портов, доступа в сеть и установленных гостевых дополнений. Единственное что доступно — это консоль.
Попробуем скопировать файлы в виртуальную машину с машины клиента через… клавиатуру! Хотя и виртуальную 🙂
Так как копирование фалов по клавиатуре процесс длительный даже при использовании эмулятора клавиатуры «Key Paste», запасаемся свободным временем и приступаем.
Тестовый стенд
- Хост виртуализации QEMU и клиент — GNU/Linux
- Виртуальные машины:
- ВМ «DOS»
- ВМ «Windows XP» (также клиент ВМ «DOS»)
Доступ к виртуальной машине DOS осуществляется через протокол VNC. Никаких дополнительных программ не установлено.
На виртуальной машине «Windows XP» запущена программа «Key Paste» готовая к эмуляции набора текста. Так как набор текста парализует работу в операционной системе, вынос клиента виртуальной машины DOS в виртуальную машину или отдельный компьютер вполне оправдано.
Создание простого бинарного файла
Попробуем создать в ВМ «DOS» простой бинарный файл размером в 5 байт в котором каждый байт содержит значение соответствующее его позиции а именно: 1,2,3,4,5 в шестнадцатеричной системе исчисления.
Создаем файл 5.txt со следующим содержимым:
где, первая строка определяет имя создаваемого файла, вторая — содержимое файла в шестнадцатеричном формате, четвертая — размер файла.
Отправим файл на обработку программой «Debug»
С помощью команды dir убеждаемся что файл создан
Подготовка к передаче большого файла
Debug позволяет создавать бинарные файлы только до 64Кб. Для создания больших файлов воспользуемся кодированием Base64, которое используется в электронной почте. В DOS по умолчанию нет средств для работы с кодировкой Base64 по-этому скопируем программу для работы с кодировкой base64 и программу для проверки контрольных сумм md5.
Первым делом, скопируем программу md5sum для проверки контрольных сумм md5, используя шестнадцатеричное представление.
В Linux с помощью программы hexdump создадим заготовку файла для передачи в программу debug
hexdump -v -e ‘»e %04_ax «‘ -e ’10/1 «%02X «‘ -e ‘»n»‘ md5sum.exe > md5sum_.hex
На выходе получим файл с содержимым вида:
Подсчитаем размер файла md5sum.exe с помощью команды
В результате получим число «30579». Преобразуя данное число в шестнадцатеричную систему исчисления из десятичной получим число «7773».
Используя заготовку и информацию о размере файла создадим исходный файл для создания бинарного файла с помощью программы debug.
Проверим работоспособность файла в ВМ «Windows XP».
Файл собрался. Переименуем файл md5sum.bin в файл md5sum.exe и попробуем подсчитать контрольную сумму файла md5sum.exe.
контрольная сумма подсчитана и совпадает.
Теперь можно передать файл в DOS и проверить контрольную сумму
Аналогичным образом скопируем файл base64.exe.
Копирование большого файла
Попробуем скопировать большой файл. В качестве примера возьмем дистрибутив «DOS Navigator» от компании «RIT-labs». Закодируем файл дистрибутива «dn151.zip» в формат Base64 с помощью команды:
base64 dn151.zip > dn.b64
Аналогичным образом запакуем файл unzip.exe
base64 UNZIP.EXE > unzip.b64
Так как текстовый редактор edit в DOS очень тяжело переваривает большие текстовые файлы, разобьем файл «dn.b64» на файлы по 3500 строк с помощью команды split
split -d -l 3500 dn.b64 dn
В результате выполнения команды получим файлы: «dn.00», «dn.01», «dn.02» и «dn.03».
С помощью edit и клавиатуры скопируем полученные файлы в DOS. С помощью перенаправления потока, объединим четыре текстовых файла в один
Полученный файл раскодируем с помощью base64
base64 dn.txt dn.zipраскодируем распаковщик:
base64 unzip.txt unzip.exeРаспакуем архив дистрибутива «DOS Navigator»
unzip -e dn.zip -d c:dnПосле распаковки можно запускать «DOS Navigator» командой:
c:dndnЗаключение
В результате данного эксперимента мы научились с помощью эмулятора клавиатуры передавать большие объемы текста, копировать файлы в виртуальные машины даже под управлением DOS. Которая казалась бы на первый взгляд не содержит средств взаимодействия с буфером обмена и создания бинарных файлов.
Процесс передачи файлов чрезвычайно медлителен, однако с другой стороны он работает и может использоваться в аварийных ситуациях или параноидальных условиях. Прежде чем приступать к реальной передаче файлов через клавиатуру вы можете скопировать текстовые файлы со специально подготовленного компакт-диска.
Как перенести файлы на виртуальную машину VirtualBox
VirtualBox — полезное приложение от Oracle для создания виртуальных машин. Простыми словами, вы можете запустить несколько операционных систем на вашем компьютере одновременно, например Windows, Android, Linux или MacOS. Это оболочка, которая эмулирует работу реального компьютера с определенными характеристиками (процессор, ОЗУ, видеопамять). Но если вы читаете данную статью, то наверное знаете, зачем используется VirtualBox. Мы ответим на вопрос, который часто задают пользователи Oracle VM — «Как перекинуть файлы на виртуальную машину VirtualBox»
Для примера, я пользуюсь Windows 10 и установил старый добрый Windows XP на «виртуалку». Как осуществить обмен файлами между реальной и дополнительной ОС? Очень просто.
Способ 1 — Общие папки
Прежде всего нужно установить Гостевые дополнения VirtualBox. Без них вы не сможете работать с общими папками. Запустите виртуалку, в меню выберите «Устройства», «Подключить образ диска Дополнений гостевой ОС».
Начнется установка, после которой нужно будет перезагрузить машину. Установили? Можно продолжать.
Запустите VirtualBox, выберите нужную виртуальную машину и нажмите «Настроить».
Перейдите во вкладку «Общие папки». Нажмите на значок добавления новой папки, укажите ее название и местоположение. Также не забудьте поставить галочку напротив «Авто-подключение», чтобы гостевая ОС автоматически подключала эту папку.
Запустите виртуальную ОС. В проводнике Windows XP появился сетевой диск, который является общей папкой, которой можно пользоваться как с гостевой ОС так и с реальной. Теперь можно спокойно перенести нужные файлы на виртуальную машину VirtualBox.
Способ 2 — Функция Drag’n’Drop
Oracle VM имеет очень полезную функцию под названием Drag’n’Drop. Она позволяет перекидывать файлы с помощью мыши, перетаскивая их в нужное место. В настройках вирт. машины зайдите в «Общие», «Дополнительно» и активируйте эту функцию. Режим — двунаправленный.
Уменьшите окно VirtualBox для удобного перемещения и просто перетащите нужные файлы в гостевую операционную систему.
Как видите, перекинуть файлы в VirtualBox очень легко. Мы не стали рассматривать неэффективные варианты с использованием файлообменников или съемных носителей. Используйте любой из способов. Желаю удачи.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.