Neste post demonstrarei como utilizar suas partições do linux no windows de forma transparente, montando-as independente qual for em drives de letra como x:, y:, etc
Eu sou um desenvolvedor crossplatform e 90% dos meus clientes usam windows. tenho um software feito em python com gtk, e tenho grandes problemas com portabilidade, principalmente em comunicação com hardware.
o libusb é um deles. escrevi recentemente um driver de um dispositivo usb para linux, e ao chegar no linux vi que ele não funcionava mesmo utilizando o mesmo libusb. Enfim, não pretendo entrar em detalhes disso, mas é fatal que eu precise usar o windows no dia-a-dia para corrigir alguns eventuais problemas no meu software.
A maior dificuldade de se usar windows, na minha opinião, além de todas que já temos, é não ter acesso aos meus arquivos, principalmente minhas músicas e ao meu repositório svn que fica no linux.
Para resolver este problema estou fazendo os seguintes passos:
Instalando o colinux
o colinux é um port do kernel do linux para windows, basicamente ele roda o kernel do linux como se fosse um serviço do windows, este kernel não tem acesso nem a som nem a vídeo, nem a praticamente qualquer outro dispositivo de hardware do computador, mas é um linux real rodando dentro do seu windows, e sem emulação ou virtualização (se assim preferir chamar).
o colinux pode ser baixado neste site.
baixar o colinux não é tudo. precisamos instalar uma distro básica para que ele possa rodar.
eu particularmente uso um debian que já vem no site para ser baixado, mas nada impede você de utilizar sua própria distribuição já instalada no seu hd, salvo uns problemas de boot que você pode gastar um bom tempo pra corrigir.
Mas de qualquer forma, acho mais fácil utilizar logo uma imagem pronta.
apesar de ter usado minha própria distro do hd por um tempo.
a imagem que eu uso é esta:
Debian Etch 4.0.
Esta imagem é um pouquinho desatualizada, mas para o que vamos usar, não tem importancia.
Após instalar o colinux e desempacotar a imagem do debian, iremos às configurações.
“Mas caetano, se o colinux não consegue acessar o hardware como eu vou montar minhas partições nele?”
Por sorte, no windows, temos algo parecido com o diretório /dev/ do linux, coisa que pouca gente sabe e que eu gastei muitas horas de pesquisa pra descobrir.
Passo 1:
Após instalar o colinux, notamos que ele vem com um arquivo chamado example.conf, como somos preguiçosos, não vamos nos dar sequer ao trabalho de mudar o nome dele, apenas fazer algumas modificações.
no example.conf teremos algo similar a isto:
# # This is an example for a configuration file that can # be passed to colinux-daemon in this manner: # # colinux-daemon @example.conf # # Note that you can still prepend or append configuration and # boot parameters before and after '@', or you can use more # that one '@ to load several settings one after another. # # colinux-daemon @example.conf @overrider.conf mem=32 # # Full list of config params is listed in colinux-daemon.txt. # The default kernel kernel=vmlinux # File contains the root file system. # Download and extract preconfigured file from SF "Images for 2.6". cobd0="c:\coLinux\root_fs" # Swap device, should be an empty file with 128..512MB. #cobd1="c:\coLinux\swap_device" # Tell kernel the name of root device (mostly /dev/cobd0, # /dev/cobd/0 on Gentoo) # This parameter will be forward to Linux kernel. root=/dev/cobd0 # Additional kernel parameters (ro = rootfs mount read only) ro # Initrd installs modules into the root file system. # Need only on first boot. initrd=initrd.gz # Maximal memory for linux guest #mem=64 # Select console size, default is 80x25 #cocon=120x40 # Slirp for internet connection (outgoing) # Inside running coLinux configure eth0 with this static settings: # ipaddress 10.0.2.15 broadcast 10.0.2.255 netmask 255.255.255.0 # gateway 10.0.2.2 nameserver 10.0.2.3 #eth0=slirp # Tuntap as private network between guest and host on second linux device #eth1=tuntap # Setup for serial device #ttys0=COM1,"BAUD=115200 PARITY=n DATA=8 STOP=1 dtr=on rts=on" # Run an application on colinux start (Sample Xming, a Xserver) #exec0=C:\Programs\Xming\Xming.exe,":0 -clipboard -multiwindow -ac"
note a chave c0bd0, será o dispositivo virtual para root, descompacte a sua imagem do debian, caso tenha escolhido ela em alguma pasta, eu o fiz em c:\debian\debian.img
e configure para dar boot por ela.
cobd0="c:\debian\debian.img"
Legal, já temos uma configuração que vai dar boot. mas isso não me servirá pra praticamente nada, precisamos montar os discos do linux nesse colinux.
o primeiro passo é descobrir quais são os discos e partições vistos pelo windows, para isso, utilizaremos uma ferramenta do windows de gerenciamento de computador.
Esta ferramenta pode ser localizada em: Menu Iniciar\Painel de Controle\Ferramentas Administrativas\Gerenciamento do Computador.
Dentro desta ferramenta, teremos uma treeview com vários ítens, escolha Gerenciamento de Disco
como podemos ver, os ítens destacados em vermelhos são as partições que o windows não sabe reconhecer, que por acaso são nossas partições do linux.
abaixo temos o formato delas no disco, veja:
Disco 1:
937 MB, Íntegro, Ativo
13,99GB, Íntegro, Partição desconhecida
122GB, Íntegro, Partição desconhecida
D:, 12GB NTFS, Íntegro
podemos inferir dessas informações que a primeira partição seria a minha swap, a segunda partição minha root e a terceira partição minha home.
todas no disco 1.
agora basta ensinar ao colinux a popular seu udev com elas, colocaremos a seguinte configuração:
logo abaixo de onde colocou o cobd0:
sda3="\Device\Harddisk1\Partition3" sda2="\Device\Harddisk1\Partition2" sda1="\Device\Harddisk1\Partition1" sda="\Device\Harddisk1"
agora o colinux, não apenas irá conseguir reconhecer os dispositivos dentro do linux que se iniciar, como também irá poder usá-los.
Agora finalmente poderemos dar boot no nosso colinux para fins de testes.
o comando é, pelo cmd:
cd \arquiv~1\colinux colinux-daemon.exe @example.conf
voilá, você estará vendo um console dando boot no seu linux.
Mas tenha calma, ainda não temos nada,
o login inicial é root sem senha.
precisamos configurar nosso colinux inicialmente.
primeiro colocando uma senha para o root
# passwd
após isso, vamos configurar os discos que a gente configurou no example.conf para a fstab.
vamos deixar nossa fstab como esta:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/cobd0 / ext3 noatime,errors=remount-ro 0 1 /dev/sda1 none swap sw 0 0 #/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/sda3 /home xfs defaults 0 0 /dev/sda2 /mnt reiserfs defaults 0 0
note que eu especifiquei os sistemas de arquivos que eu uso, no caso reiserfs para / e xfs pra home, você provavelmente deve usar outros sistemas de arquivos, então não esquecer de especificar.
estou montando a minha home em /home e a minha root em /mnt, já que estamos usando a root do debian que baixamos mesmo.
note que é possível inclusive usar cdroms e afins, mas como não é nosso objetivo neste post, não será explicado aqui.
agora, vamos limpar a home antes de montar tudo:
rm -rf /home/*
Lembre-se de que você deverá fazer isso antes de montar seus discos, caso seja feito errado, você pode perder seus arquivos, óbvio, né?
agora que está tudo beleza, podemos montar tudo:
swapon /dev/sda1 mount -a
isso resolve o problema.
não se esqueça de adicionar um usuário neste debian com a mesma uid que você usa no seu linux.
adduser caetano
Como eu uso ubuntu no meu linux e aqui estou usando debian e sei que é o primeiro usuário do sistema, tenho certeza que a uid será 1000 a mesma do meu usuário no linux, então não vou ter problemas com permissões.
feito tudo isto, vamos parar o nosso linux.
init 0
está quase tudo pronto com o nosso colinux, falta apenas rede.
em minha residencia e escritório, usamos modens roteadores para distribuir os ips da rede, por este motivo, achei interessante deixar o meu colinux com um ip físico na minha rede, assim eu posso acessá-lo de qualquer lugar, e eventualmente colocar um firewall ou proxy por ele, caso eu necessite.
para fazer isto, precisamos de 2 passos.
a) Configurar a eth0 do colinux para usar interface tuntap.
eth0=tuntap
b) Após isso, precisamos criar uma bridge de rede como na imagem abaixo:
selecione as duas interfaces, a interface de rede do seu computador, e a interface virtual criada pelo colinux,
botão direito do mouse e clique em conexões de ponte, para fazer um bridge.
pronto, agora seu colinux acessa a rede local como se fosse um computador de verdade.
antes de mais nada, precisamos configurar a rede no colinux.
abra novamente o colinux e edite o arquivo /etc/network/interfaces
e edite o arquivo, adicionando o bloco:
auto eth0 iface inet eth0 dhcp
isto caso você queira sua interface com ip dado por dhcp, mas nada te impede de colocar um ip fixo, que em muitos casos é melhor para o que vamos fazer.
após isso, desligue novamente seu colinux.
vamos agora instalar o serviço de linux no seu computador para que o colinux inicie silenciosamente e como serviço quando o computador for ligado.
colinux-daemon --install-service linux @example.conf
agora é possível iniciar ou desligar o linux apenas com net start linux ou net stop linux.
mas ainda não é tudo, precisamos configurar o serviço para iniciar automaticamente.
vá ao menu iniciar/executar e digite: services.msc
localize o serviço linux e entre em suas propriedades
coloque tipo de inicialização automático, clique em iniciar e clique em aplicar.
prontinho, já temos o colinux rodando e com rede, agora precisamos instalar o ssh nele.
você deve ter notado que apareceu um atalho para o colinux em sua área de trabalho, eu prefiro acessá-lo com o putty.
mas como não temos ssh ainda, vai com ele mesmo.
acessado, instale o ssh
apt-get update apt-get install openssh-server ssh
prontinho, já temos ssh funcionando no nosso linux.
podemos passar para o passo 2
Instalando o SpanDrive
O span drive é um software proprietário que monta uma unidade de sftp como se fosse uma unidade de rede.
pode ser baixado para demonstração em:
www.sftpdrive.com
após instalado, irá aparecer um ícone na sua tray de um inmã.
vamos configurá-lo agora:
botão direito do mouse sobre o ícone do inmã, Open Connect Window.
Estou usando o ip 10.1.1.222 para o meu colinux e configurei ele manualmente afim de evitar que ele mude toda vez que meu modem for reiniciado.
estou montando minha home em k: para efeitos ilustrativos.
após isto, bote reconecte on logon para sempre que você ligar seu windows esteja tudo certinho lá.
e fim, tudo feito.
veja uma screenshot do sistema em uso:
e isto é tudo, até o próximo post.