Muitos usuários de Linux têm dual boot com uma instalação de Windows, geralmente para executar alguma aplicação específica, como jogos mais recentes ou o iTunes (apesar de que o Ubuntu 10.04 deve suportar iPod e iPhone).

Quem utiliza esta configuração e usa Firefox em ambos os sistemas operacionais acaba tendo dois perfis independentes no browser, e não consegue acessar bookmarks, histórico e extensões instaladas no outro sistema. Uma solução para este problema é compartilhar os perfis do Firefox entre os sistemas operacionais.

O Firefox armazena um diretório com configurações pessoais do usuário. No Linux, esse diretório fica tipicamente em /home/usuario/.mozilla/Firefox/, e no Windows, em C:\Documents and Settings\usuario\Dados de aplicativos\Mozilla\Firefox\. Este diretório contém, entre outras coisas, um subdiretório Profiles com todos os perfis criados (mais detalhes sobre isso no post sobre gerenciamento de perfis no Firefox) e um arquivo profiles.ini. Este arquivo é carregado na inicialização do browser, e faz referência aos perfis utilizados. O formato do arquivo é como mostra o exemplo abaixo:

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=Profiles/dwi06ij0.default

[Profile1]
Name=teste
IsRelative=1
Path=Profiles/nkc5ofgt.default
Default=1

O arquivo é dividido em seções. A primeira, General, tem somente o parâmetro StartWithLastProfile: se for 0, será exibida a tela de seleção de perfis; se for 1, o último perfil que foi usado será escolhido automaticamente.

As seções seguintes definem todos os perfis criados. Cada perfil tem um nome e um path - que será relativo ao diretório de configurações do Firefox se IsRelative for 1, e absoluto em caso contrário. O parâmetro Default indica se este é o perfil padrão.

Para que os dois sistemas operacionais compartilhem um perfil, primeiramente é necessário montar a partição do usuário utilizada pelo outro sistema operacional. Isso pode ser feito de duas maneiras:

Mapeando uma partição do Windows no Linux

Para montar uma partição do Windows, basta utilizar o comando mount, como no exemplo abaixo:

sudo mount /dev/sda1 /media/windows

Neste exemplo, a partição do Windows é /dev/sda1, e o diretório destino (que deve ser criado antes) é /media/windows. A partição pode ser FAT32 ou NTFS - neste caso, é necessário instalar o ntfs-3g, que já vem por padrão na maioria das distribuições atuais. Para que a partição seja montada automaticamente na inicialização do sistema, inclua a linha abaixo no arquivo /etc/fstab:

/dev/sda1 /media/windows ntfs defaults 0 0

Caso a partição seja FAT32, substitua ntfs por vfat na linha acima.

A configuração acima também pode ser feita utilizando uma ferramenta gráfica como o ntfs-config.

Mapeando uma partição do Linux no Windows

Para isso, é necessário instalar uma ferramenta como o Ext2 IFS - que, apesar do nome, também suporta ext3. Ao instalar esta ferramenta, será possível mapear qualquer partição ext2 ou ext3 como um drive comum. A figura abaixo mostra uma tela da ferramenta, onde aparecem todas as partições dos discos locais. Em cada partição do Linux, há uma combo box que permite selecionar a letra em que a partição será mapeada - selecionando none o mapeamento será desfeito.

Ext2 IFS

Entre as duas opções, pessoalmente, prefiro a segunda, pois não gosto da ideia do Windows acessando minhas partições do Linux - só mapeio uma partição com o Ext2 IFS quando preciso copiar algum arquivo, depois desfaço o mapeamento.

Após realizar o mapeamento da partição, de uma das duas formas acima, basta configurar o arquivo profiles.ini do Firefox. Para isso, é possível configurar o path completo para o perfil desejado e definir o parâmetro IsRelative=0, ou fazer um link no diretório onde o Firefox armazena os perfis e configurar o path relativo, com o parâmetro IsRelative=1. A primeira configuração ficaria como no exemplo abaixo:

[Profile0]
Name=default
IsRelative=0
Path=/media/windows/Documents and Settings/guilherme/Dados de aplicativos/Mozilla/Firefox/Profiles/sa8ww6mz.default

Para a segunda configuração, é necessário criar um link com o comando ln:

ln -s /media/windows/Documents\ and\ Settings/guilherme/Dados\ de\ aplicativos/Mozilla/Firefox/Profiles/sa8ww6mz.default /home/guilherme/.mozilla/Firefox/Profiles/

Neste caso, a configuração do arquivo ficaria assim:

[Profile0]
Name=default
IsRelative=1
Path=Profiles/sa8ww6mz.default

Possíveis problemas

Apesar de funcionar muito bem, o compartilhamento de perfis pode trazer alguns problemas:

  • Se as versões do Firefox nos dois sistemas forem diferentes (o que é muito comum, pois o repositório do Ubuntu costuma demorar para atualizar as versões), cada vez que você abrir o browser num sistema após tê-lo acessado no outro será como se você tivesse atualizado a versão do Firefox, ou seja, a inicialização será mais lenta, pois ele verificará a compatibilidade de cada extensão instalada com a versão atual;
  • Se você tentar abrir o Firefox num sistema operacional após ele ter travado no outro sistema, ele exibirá uma mensagem informando que já existe uma sessão aberta. Isso acontece por que, quando o Firefox é iniciado, ele cria um arquivo vazio chamado parent.lock no diretório do perfil que você estiver usando. Este arquivo é excluído quando o browser é fechado. Se isso ocorrer de maneira incomum (ex: travamento do browser ou do sistema operacional), este arquivo impedirá a abertura de outra sessão. Para resolver o problema, exclua esse arquivo;
  • Algumas extensões são incompativeis com determinados sistemas operacionais e versões de browser. Se for o caso, estas extensões serão desativadas pelo browser.