Minix 3 Adventures: fazendo funcionar a rede no VirtualBox

May 31, 2009

Neste semestre, estou fazendo a cadeira de Projeto de Sistemas Operacionais na faculdade. Por opção, resolvi (em conjunto com alguns colegas) usar o Minix 3 como sistema operacional de estudos. Instalei ele, feliz da vida, numa máquina virtual do VirtualBox. O problema é que a rede não queria de jeito nenhum funcionar! A princípio deveria funcionar, escolhi o driver certo na instalação (AMD Lance, emulado pelo VMWare e pelo VirrtualBox), mas não funcionava. Depois de muito pesquisar, consegui fazer funcionar. Aqui vão as dicas!

Depois de completada a instalação do Minix 3, reinicie o sistema (não esqueça de botar no VirtualBox para ele não montar o cdrom do Minix3) e execute primeiramente estes passos:

  1. Com o sistema reiniciado, coloque a imagem do CD do Minix 3 de volta.
  2. Como root, execute “packman”.
  3. Procura o número do vim, para instalá-lo do CD… ;-P
  4. Cuidado para não deixar ele tentar atualizar a lista de arquivos da internet (o que tu não tem ainda… hehehehe…)

Estes foram somente os passos para instalar o vim… hehehehe… Os passos que segui para fazer a rede funcionar no Minix 3 foram estes:

  1. Edite o arquivo “/usr/etc/rc” (com o vim).
  2. Vá para a linha 82; ela diz “Starting services:”.  Vá para a  próxima linha;  ela começa com “up random”.
  3. Aperte “v” (para entrar em modo visual) e vá selecionando até o primeiro “fi” que tu encontrar.
  4. Recorte estas linhas.
  5. Agora, vá até a linha que diz “up inet”.
  6. Cole as linhas que tu copiaste logo em cima desta linha.
  7. Vá para baixo, até onde diz “intr -t 20 hostaddr -h” (use o “/” do vim).
  8. Mude o “20″ para “30″

Esta é a primeira parte da solução… hehehehe… Agora vamos para o kernel…

  1. Dá um cd /usr/src/drivers/lance
  2. vim lance.c
  3. A partir da linha 632, edite da forma como segue.
  4. Comente as seguintes linhas:
  5. if (ec->ec_linmem != 0)
    {
        assert( 0 );
        /*phys2seg(&ec->ec_memseg, &ec->ec_memoff, ec->ec_linmem);*/
    }
     
    /* XXX */ if (ec->ec_linmem == 0) ec->ec_linmem= 0xFFFF0000;
  6. E adicione a seguinte linha:
  7. ec->ec_linmem= 0xFFFF0000;
  8. Salve o arquivo e saia do vim.
  9. Vá até a pasta /usr/src/ e execute o seguinte comando:
  10. # make world

  11. Vai demorar uns 15 ou 20 minutos, aproveite para tomar um cafézinho…
  12. Reinicie o Minix 3 (não esqueça de desmontar a imagem do cdrom do VirtualBox…).
  13. Depois de reiniciado, dê um ps ax | grep lance.
  14. Com o PID do driver de rede (provavelmente, será 55), nós vamos nos aproveitar do Reincarnation Server do Minix 3 e matar o processo do driver de rede. Sim, isso mesmo:
  15. # kill -9 55

  16. O RS vai verificar a morte do processo driver e reiniciá-lo, agora sim a rede vai estar funcionando 100%.

O único problema é que toda a vez que reiniciarmos o sistema teremos que executar o comando kill. Mas, por mim, tá tudo bem. ;-)

Leave a Reply