Arquivo mensais:outubro 2007

Consertando o GRUB

Como sempre ocorre, acabei ficando sem espaço em meu disco rígido. Resolvi então diminuir o espaço dado ao Windows no sistema (qualquer dia eu apago de vez, mas ainda quero jogar GP Legends…) usando o Ubuntu 6.10 LTS Live CD e o Gparted.

O melhor a fazer com o Gparted é realizar uma ação por vez. Diminui a partição em 10GB do Windows e criei uma nova no sistema de arquivos ext3 com o espaço criado. Reboot! Ops…

O sistema deixou de subir, mostrando uma mensagem de erro do GRUB bem elucidativa: ERROR

O fato é que com a movimentação nas partições, os números que as identificam também mudaram. Eu precisava então fazer algumas coisas:

  1. descobrir a nova numeração;
  2. atualizar o GRUB na MBR;
  3. atualizar o arquivo /boot/grub/menu.lst.

Solução: usar novamente o Ubuntu Live CD.

Após carregar o sistema do CD, abri um terminal e montei o sistema de arquivos da partição onde se encontrava o Linux, com o seguinte comando:

sudo mount -o dev /dev/sda5 /media

Isto monta a partição raiz do Linux do disco rígido no diretório /media. Eu soube que era /dev/sda5 através do Gparted.

Entrei no diretório /media e executei o GRUB, o que abriu seu próprio prompt, :

$>sudo grub

grub>

Neste prompt procurei então pela nova denominação da partição

grub>find /boot/grub/stage1

O que devolveu:

(hd0,4)

Ah ha! Agora é so consertar o GRUB, configurando corretamente em que partição se encontram seus binários e arquivos de configuração:

grub>root (hd0,4)
grub>setup (hd0)
grub>quit

Agora o sistema irá ligar e deixar de emitir o erro do GRUB, MAS…. Ainda falta atualizar o arquivo de listagem do boot. Executei então o comando:

$>sudo gedit /media/boot/grub/menu.lst

E troquei todas as instâncias em que estavam escritas (hd0,6) por (hd0,4), que é a nova numeração da partição.

E agora que consegui entrar no Ubuntu vou atualizá-lo para o Feisty Fawn! =)

Nota: o comando para saber o UUID de uma determinada partição é vol_id <device>.

Compilation Error CS0433

Compiler Error Message: CS0433: : The type '<um tipo>' exists in both '<um local>' and '<outro local>'

Este erro surgiu em minha aplicação. O que isto quer dizer? Simplesmente que a aplicação tem uma ou mais classes definidas com o mesmo nome em assemblies distintos.

Mas como isto pode ocorrer? Bom, pode ser resultado de uma migração da aplicação da versão 1.1 para a versão 2.0 do .Net (http://forums.asp.net/t/980517.aspx e http://webproject.scottgu.com/CSharp/Migration2/Migration2.aspx). Refaça a migração que tudo ficará ok (haha).

Pode também ocorrer se você atualizou algum assembly mas o servidor de páginas não atualizou o cache, geralmente localizado em C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files. Vá para a pasta em questão e remova tudo. Pode ser necessário fechar o Visual Studio antes disto.

Se nada disso resolveu (provável), pode ser que os assemblies conflitantes estejam uma na aplicação e uma no GAC de sua máquina. Para remover o assembly do GAC entre em C:\WINDOWS\assembly, encontre o safado e escolha a opção Uninstall. Com sorte você conseguirá realmente apagá-lo (http://technet.microsoft.com/en-us/library/aa559881.aspx).

Sem sorte? Pois é, o jeito é chafurdar no temível registro do windows, e remover algumas entradas de lá (http://support.microsoft.com/?scid=kb%3Ben-us%3B873195&x=11&y=17 e http://blogs.msdn.com/alanshi/archive/2003/12/10/42690.aspx). Após editar o registro, quem sabe seja possível remover o assembly.

Não conseguiu remover a entrada Default (ou Padrão) do registro? Cheque suas permissões quanto à entrada em questão. Quem diz que configurar o Linux é complicado nunca mexeu no registro do Windows…