samba + qemu + DOS (получить доступ к samba из-под DOS в qemu)

Модератор: /dev/random

reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

samba + qemu + DOS

Сообщение reinhard »

Всем привет!

Необходимо запустить DOS (freedos) в qemu, чтобы он получил доступ к ресурсу, расположенному на samba.
монтирование средствами Linux cifs в dosemu не подходит, т.к. не поддерживает блокировок.
freeDOS в qemu поставился нормально, msclient - тоже.
В конфигурации msclient'а поставил карточку NE2000 совместимую.
Гружу qemu:

Код: Выделить всё

qemu -net nic,model=ne2k_isa -cdrom client.iso -boot c qemu.img

Грузится DOS, драйвер сетевой загружается без проблем, потом идет строчка

Код: Выделить всё

Initializing TCP/IP via DHCP...

после этого тормозит несколько минут, потом говорит, что не может определить IP адрес, сеть, естественно, не работает.

Кто-нибудь решал подобную проблему?
Куда стоит копать?
Спасибо сказали:
Аватара пользователя
Subj
Сообщения: 151
Статус: Useful
ОС: win

Re: samba + qemu + DOS

Сообщение Subj »

Во первых, нужно поднять tun интерфейс на хостовой машине
# modprobe tun
(должно появиться /dev/net/tun. дать для него права rw для всех)

# tunctl -u <user>
user - имя пользователя, который будет работать с qemu, то есть из под которого будет запускаться эмулятор.
в
# ifconfig -a
появится интерфейс tap0

(утилиты tunctl возможно не будет в системе. в ядре должна быть поддержка tun/tap, по умолчанию она есть. на некоторых системах, в частности на редхат и ASP этого делать не надо, qemu сам поднимает tap интерфейс. но модуль tun подгрузить обязательно)

Далее нужно создать скрипт для qemu
file /etc/qemu-ifup :
#!/bin/sh
sudo /sbin/ifconfig $1 192.168.100.1

дать права на sudo для пользователя <user> (прописать в /etc/sudoers)
сделать
#chmod a+rx /etc/qemu-ifup

и запустить эмулятор:
(user computer)$ qemu -cdrom client.iso -boot c -hda qemu.img -no-kqemu -m 72 -net nic,model=ne2k_isa -net tap,ifname=tap0,script=/etc/qemu-ifup
здесь -m72 - отдать 72 мегабайта под гостевую ос, -no-kqemu - не использовать ядреный модуль kqemu(скока не бился, он у меня только тормозит гостевую ос)

если все запуститься нормально, в выводе
# ifconfig -a
будет интерфейс tap0 с IP 192.168.100.1 и маской 24.
теперь на гостевой машине нужно статически настроить сеть :
192.168.100.2/24 (24 = 255.255.255.0)
и указать default gateway 192.168.100.1
и попробовать попинговать 192.168.100.1. если будет пинговаться - то все ок, если нет - посмотерть настройки файрволла и в случае чего добавить
# iptables -A INPUT -i tap0 -j ACCEPT
если не поможет - нужно будет думать :)
можно попробовать из хостовой машины попинговать гостевую.

по идее все. если нужно, чтобы гостевая система имела доступ не только к хостовой но и в сеть, нужно настроить маскарадинг или SNAT для tap0, но это другой уже вопрос.

PS. опечатался про ядреный модуль, но решил не исправлять :)
Building better software with Ada
Спасибо сказали: