Modem em Máquinas Virtuais Windows e Hosteadas em Linux com VMWare

February 2nd, 2005

Category: Linux

Um problema muito encontrado é a dificuldade em usar um modem, para conectar via linha discada, a partir de uma máquina virtual no VMWare hosteada por um Linux. O fato de os device drivers do Linux para softmodem não serem reconhecidos como modem pelo VMWare pode ser contornado através do uso de um pipe. Veja neste tutorial como conseguir disponibilizar uma porta serial para o Windows de uma máquina virtual, atachada ao device do Linux, e fazer com que o Windows detecte um modem funcional.


Modem em Máquinas Virtuais Windows e Hosteadas em Linux com VMWare

Ambiente

  • Notebook Toshiba Satellite 5105-S501
  • Crux Linux Evolution 2.0.1 kernel version 2.6.8.1
  • VMWare Workstation 4.0.5 build-6030
  • Softmodem
  • Modem driver Smart Link Soft Modem for Linux version 2.9
  • Modem conecta normalmente no sistema host (Crux)
  • Device sendo usado pelo driver linkado em /dev/ttySL0

Maquina Virtual

  • Windows 2000 Professional
  • Preciso conectar via dial-up diretamente da maquina virtual.

Procedimentos

Normalmente você pode configurar para a maquina virtual acessar uma porta serial do sistema host da seguinte forma:

Edit->Virtual Machine Settings->Add->Serial Port->Next->Use a Physical Serial Port->Next->/dev/ttySL0->Finish

Desta forma o Windows da maquina virtual enxergaria uma porta serial local que seria mapeada para a serial do sistema host.


Problema

Quando iniciada a maquina virtual, o VMWare apresenta o erro abaixo, mesmo antes de iniciar o sistema operacional:

serial0: The “/dev/ttySL0″ file does not appear to be a serial port.
Device serial0 will start disconnected.

Não tenho certeza se este problema acontece com qualquer distribuição Linux ou é um problema pontual.

Resolução

Realmente o device não é uma porta serial, portanto, mesmo que haja um jeito de desabilitar o teste do VMWare, talvez a porta serial vista pelo Windows não funcionasse.
Você deve direcionar a pseudo-porta da maquina virtual para um “pipe” e não como porta física. O problema é que você precisa usar uma aplicação para fazer a interface com o driver do modem, recebendo e enviando dados através deste “pipe” para a maquina virtual.
Graças a nossa imensa comunidade de software livre, já fizeram isso. :)
Baixe o script http://platan.vc.cvut.cz/ftp/pub/vmware/serpipe.tar.gz em um diretório local.
Descompacte o arquivo:

$ tar xzvf serpipe.tar.gz
serpipe/
serpipe/serpipe.o
serpipe/serpipe.c
serpipe/Makefile
serpipe/serpipe

Vá para o diretório criado.

$ cd serpipe

Copie para o /usr/bin, caso ache melhor.

serpipe$ su (entre a senha de root)
serpipe# cp serpipe /usr/bin/.
serpipe$ exit

Agora você pode criar o pipe. Execute em um terminal, onde <user> é o seu usuário comum. Você pode escolher qualquer caminho e nome de pipe, desde que o usuário com o qual você rode o comando tenha permissões de escrita neste diretório:

$ serpipe /home/user/tmp/serial /dev/ttySL0

O comando não retorna um prompt, pois ele fica com o “pipe” aberto até que você o interrompa, momento em que a máquina virtual deixaria de ter acesso a sua porta serial.

Configure o VMWare:

Edit->Virtual Machine Settings->Add->Serial Port->Next->Use named pipe->Next->/home/user/tmp/serial->this end is the client->other end is an application->Finish

  

Inicie a maquina virtual.

Verifique no terminal que você chamou o serpipe se há algum erro do tipo abaixo:

25893: Cannot open /dev/ttySL0: Permission denied

Neste caso você terá que alterar o owner do device de modem para o usuário através do qual foi chamado o vmware.
Como root:

$ cd /dev
$ ls -l ttySL0
lr-xr-xr-x  1 root root 10 Feb  2 09:36 ttySL0 -> /dev/pts/3
$ cd pts
$ chown user:users 3

Veja que ttySL0 é apenas um link para o device real, altere o owner deste device para o seu usuário comum, no exemplo “user” do grupo “users”.

No Windows, chame no Painel de Controle o Assistente para Adicionar ou Remover Hardware. Na tela seguinte selecione “Adicionar um dispositivo…” e clique em Avançar. O Windows irá procurar por um dispositivo Plug and Play. Como ele não vai encontrar nenhum, vai ser mostrado para você um lista de dispositivos que você pode escolher para reparar. Nesta lista, a primeira opção é “Adicionar um novo dispositivo”, a qual deve ser selecionada para a inclusão de dispositivos não detectados por Plug and Play. Este é o nosso caso, selecione esta primeira opção e clique em “Avançar”.
A pergunta seguinte é se você deseja que o Windows procure pelo hardware, escolha “Sim” e clique em “Avançar”. Após a pesquisa o Windows deve encontrar um “Modem desconhecido” (ver figura abaixo).

Clique em “Avançar”, em seguida “Concluir”.

O Diagnóstico do Modem pelo Gerenciador de Dispositivos do Windows dirá que não consegue se comunicar com o modem, mas mesmo assim o discador IG funcionou a contento, teste o seu discador ou conexão dialup criada manualmente.

  

— hlbog

No comments yet


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>