CEX.io

понедельник, 21 марта 2011 г.

DOS vs VirtualBox for Linux

1. Скачиваем и устанавливаем VirtualBox
2. Создаем новую виртуальную машину
    "Создать"->"Вперед>"
    Введем имя "Dos" -> "Вперед>" -> "Вперед>" -> "Вперед>" -> "Вперед>"
    Выберем "образ фиксированного размера" -> "Вперед>" -> "Вперед>"
    -> "Финиш"
3. Устанавливаем Dos (скачиваем один из образов для установки)

Обмен файлами можно организовать путем подключения физических устройств, созданием и монтированием виртуальных устройств. Проще и безопаснее всего это сделать через виртуальный образ FDD диска

# создадим образ диска 1.44Mb
dd bs=512 count=2880 if=/dev/zero of=~/floppy.img
# форматируем
mkfs.msdos ~/floppy.img
# монтируем
sudo mkdir /media/floppy/
sudo mount -o loop ~/floppy.img /media/floppy/

Далее можно подключить созданный образ к виртуальной машине
и использовать его для обмена файлами

Есть более оригинальный способ. Можно монтировать образ виртуального HDD диска (Dos.vdi).

# читаем 4 байта (без знаковое целое) по смещению 76
od -j76 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=2 (фикс. размер диска)
# читаем 4 байта (без знаковое целое) по смещению 344
od -j344 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=8192 (начало диска)

#копируем таблицу разделов диска в отдельный файл
dd if=Dos.vdi of=vdstart bs=1 skip=8192 count=1b >/dev/null #8192(начало диска)

# узнаем характеристики диска
/sbin/sfdisk -luS vdstart
rm vdstart

По этим данным можно вычислить начало диска и его общий размер:
# offset = 8192(начало диска)+63(начало)*512(размер сектора) = 40448
# size = 1048257(число секторов)*512(размер сектора) = 536707584
sudo mkdir /media/Dos/
sudo mount Dos.vdi /media/Dos -t auto -o loop,offset=40448

Полученную папку /media/Dos можно использовать для прямого перемещения данных в виртуальную машину

Например: для моего случая мне потребовалась документация по Dos (Tech Help 6.0) FAsm и отладчик Swat. И другие инструменты.

1 комментарий:

Анонимный комментирует...

Здорово!