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>.

Publicado em linux | Com a tag | Deixar um comentário

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…

Publicado em software | Com a tag , | Deixar um comentário

Recriando o Show Desktop

Desde o Windows 95 existe um botão muito útil, o Show Desktop, que minimiza todas as janelas abertas, permitindo uma visualização rápida do desktop. Se você o apagou sem querer ou utiliza o Windows 2003 Server, vai ser necessário recriá=lo. Como?

Basta criar o arquivo abaixo em seu desktop:

Show Desktop.scf

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

Depois mova-o com o botão direito para o quick launch area!

Publicado em software | Com a tag | Deixar um comentário

O servidor de páginas do VS 2005

Hoje reparei em uma coisa, que quase me fez perder os cabelos.

Os links para algumas imagens em uma página aspx não apareciam na minha máquina. Daí reparei que os links estavam assim:

<img src="/caminho/para/imagens//imagem.gif" />

Reparou na dupla barra? Isto fazia com que não aparecesse a imagem aqui, tanto no IE quanto no FF. Depois de quebrar a cabeça um tempão, tentando fazer com que os image links (gerados por um template column em um datagrid) tivessem o src correto, verifiquei que no servidor, com o fonte do aspx idêntico ao meu, funcionava!

Tanto na própria máquina do servidor quanto na minha, acessando pelo navegador de minha máquina local. Percebi que isto era problema do servidor de páginas, e não de qqer outra coisa.
O servidor embutido (Cassini) no VS2005 se embanana e não consegue entregar a imagem quando existe // no endereço. =(

O IIS entrega a imagem sem problemas…. =)

Publicado em programação, software | Com a tag , | Deixar um comentário

Ubuntu 6.06 Dapper Drake num Laptop Sharp

Um amigo meu tem um notebook ultra-portátil da Sharp, o PC-MR80J, com tela de 10 polegadas. Diminuto e super leve! Mas ele foi comprado no Japão e ele instalou o Windows XP brasileiro na pobre máquina. Como nada funcionava direito, reinstalamos o Windows, agora o XP SP2.

Ocorreram alguns problemas: o som não funcionava e a rede sem fio tampouco. Encontrei o driver para rede wi-fi e pude acessar a internet pelo roteador sem fio. Mas faltava o som.

Após encontrar o driver correto para a placa de som, ele foi instalado e tudo correu bem. O som funcionava, MAS a rede parou de funcionar. Nem a com fio nem a sem fio. Após quebrar a cabeça por um tempo tentando sanar o problema, resolvi testar o live cd do Ubuntu Dapper Drake que tenho guardado. E não é que TUDO funcionou sem problemas?

Convenci-o a usar o novo SO. Mais um usuário linux no mundo e menos trabalho de manutenção para mim, pois após uma instalação limpa do Windows sempre é preciso instalar drivers, procurar codecs, instalar anti-vírus, instalar programas essenciais e manter todos atualizados.

Me certifico, dia após dia, que instalar, configurar e utilizar o Linux é muito mais simples e prático, sob qualquer ponto de vista.

Especificações

Processador: Intel® Pentium® M 730(1.60GHz)
Memória: 512 MB (expansível até 1024 MB)
Disco Rígido: 80GB (5400 RPM)
DVD SuperMulti: CD-RW, DVD+/-RW
Rede sem fio: IEEE802.11a(J52)/b/g
Sistemas Operacionais: Ubuntu Linux!
Página oficial do notebook

Instalação

Inserir o CD, rebootar a máquina, esperar o sistema carregar e clicar no ícone de instalação. Depois é só seguir o wizard.

Publicado em linux | Com a tag | Deixar um comentário

Encodings e charsets

Geralmente não precisamos nos preocupar com os Encodings em uma aplicação em .NET. Isto porque ao desenvolvermos um sistema .NET, utilizamos ferramentas uniformizadas, afinal, elas provêm de uma mesma fabricante: Microsoft.

(Já quando desenvolvemos soluções LAMP (Wikipedia:LAMP), ou mesmo WAMP, nosso cuidado precisa aumentar e muito.)

Mas e quando precisamos mudar o encoding de alguma string em Asp.NET? Simples:

Encoding.UTF8.GetString(Encoding.GetEncoding("iso8859-1").GetBytes("Média"));

A código acima toma uma string em ISO-8859-1 e tranforma-a em uma no formato UTF-8.

Publicado em programação | Com a tag | Deixar um comentário

Eclipse no Ubuntu

No Ubuntu é muito simples instalar o Eclipse, basta instalá-lo a partir dos repositórios oficiais. (mas sempre dá para instalar o pacote baixado da SUN)

Quanto ao Java, caso não queira utilizar o GCJ, não é necessário baixar diretamente da SUN os pacotes da versão mais recente (já estamos no Java 6). É só instalar a partir do Synaptic. Faça uma busca por sun-java e instale os pacotes necessários.

Depois, para mudar qual dos javas será o padrão para o sistema em geral entre com o seguinte comando para listar as versões instaladas:

update-java-alternatives -l

Para configurar o Java 6 como padrão entre com:

update-java-alternatives -s java-6-sun

Caso o Eclipse teime em usar o GCJ, você tem duas alternativas: editar o arquivo /etc/eclipse/java_home (mudança global) ou editar o arquivo ~/.eclipse/eclipserc (mudança em nível de usuário).

Caso resolva-se editar o eclipserc, basta adicionar a seguinte linha:

JAVA_HOME="/usr/lib/jvm/java-1.6.0-sun"

E para saber que problemas estão ocorrendo no Eclipse, nada como o log de erros: Window->Show View->PDE runtime->Error log

Referência: http://weblogs.java.net/blog/robogeek/archive/2007/05/ubuntu_and_easi.html

Publicado em linux, software | Com a tag , , | 1 comentário

Edgy Eft para Feisty Fawn

Update Manager

Como recente lançamento final do Ubuntu Feisty Fawn, resolvi atualizar meu sistema utilizando seu próprio Update Manager. Após seguir as instruções do site oficial o sistema não subia. Até passava pelo GRUB, mostrava o splashscreen do Ubuntu (um pouco modificado com relação ao do Edgy) mas aparecia um erro e parava num terminal com o prompt dizendo apenas: (initramfs).

E agora?

Bom, tive uma experiência semelhante após reparticionar o disco com o Gparted e eu já sabia que eu deveria:

  1. montar o sistema de arquivos na mão com o mount;
  2. editar o arquivo de configuração do GRUB /boot/grub/menu.lst

Pesquisei também no Google e encontrei isto: http://ubuntuforums.org/showthread.php?t=392854
Que diz para trocar onde diz

kernel        /vmlinuz-2.6.20-13-generic root=UUID=702e3aab-4a86-4374-8763-af456ddb9620 ro splash

para

kernel        /vmlinuz-2.6.20-13-generic root=/dev/sda5 ro splash

(sda5 é a partição em que se encontra o meu Linux, em outros sistemas pode ser outra)

Para não ter de rebootar com sistema usando o Live CD, resolvi aprender a usar o sed, única ferramenta disponível para edição de texto no terminal que me foi dado (aquele do iniotramfs do começo do texto, lembra?).

Assim eu montei o sistema de arquivos:

mkdir /image
mount -o dev /dev/sda5/ /image

E depois editei o arquivo menu.lst

cd /image/boot/grub/
sed -i 's_root=UUID=702e3aab-4a86-4374-8763-af456ddb9620_root=/dev/sda5_' menu.lst

REBOOT!

A estranha seqüencia de caracteres UUID=702e3aab-4a86-4374-8763-af456ddb9620 (veja abaixo) tive de pegar listando o arquivo menu.lst com o comando cat e digitando um por um…

O estranho é que depois de inicializado o sistema, verifiquei outra sequëncia estranha de caracteres no mesmo arquivo, no trecho:

#kopt=root=430e3aab-4a86-4374-8763-af456ddb9620
#kopt_2_6=root=/dev/sda7 ro

que tratei de mudar para:

#kopt=root=/dev/sda5
#kopt_2_6=root=/dev/sda5 ro

Assim na próxima atualização do kernel não terei problemas (espero!).

UUID

Nada como o Wikipedia para tirar nossas dúvidas. O UUID, ou Universally Unique Identifier trata-se de um identificador de propósito geral criado pela Open Software Foundation, que por sua vez foi criada para padronizar a implementação de sistema UNIX.

No nosso caso, no sistema de arquivos ext3, que é o que eu uso, o UUID é utilizado para identificar cada partição da máquina, além dos vários dispositivos de armazenamento que possam ser plugados no mesmo, tais como pen-drives, hds portáteis, mp3 players…

Assim cada dispositivo terá seu próprio número e poderá possuir uma configuração individual.

O Ubuntu, a partir da versão 6.10 (Edgy Eft) passou a utilizar este sistema.

Para descobrir qual o UUID de uma determinada partição podemos utilizar o comando vol_id:

sudo vol_id -u /dev/sda1

O comando acima mostrará o UUID da primeira partição do dispositivo sda, que no caso é meu HD SATA.

Bom, fica a critério usuário manter-se nos /dev/ da vida ou utilizar os UUID. Ao menos no que se refere ao menu.lst =)

Publicado em linux, software | Com a tag | 1 comentário

Usando o DD

Resolvi trocar o HD do meu notebook por um de maior capacidade. Para isto comprei o dito HD e um case USB/e-SATA para aproveitar o HD que vai sair do computador.

Como eu não queria passar novamente pelo processo de instala/configura/verifica, tanto do Windows como do Linux, decidi procurar alguma alternativa parecida ao Norton Ghost, mas no mundo Linux.
Encontrei o comando dd.

O dd copia um fluxo de dados de uma entrada para uma saída. Pode parecer pouco, mas isto o torna capaz de copiar, bit a bit, partições ou HDs inteiros, mesmo que contenham outros SOs.

Coloquei o HD novo no case USB, e liguei o notebook com o Live CD do Ubuntu 6.06 Dapper Drake. Verifiquei se os HDs realmente não estavam montados e executei a seguinte linha de comando:

sudo dd if=/dev/sda of=/dev/sdb

Após pouco mais de 3 horas de espera, o resultado no terminal foi este:

155910825+0 records in
155910825+0 records out
79826342400 bytes (80 GB) copied, 16510.4 seconds, 4.8 MB/s

Troquei os HDs de lugar e liguei o notebook. Tudo certo! Só precisei usar o Gnome Partition Editor (gparted) para extender a partição com o /home para ocupar o restante do HD.

Outra execução:

dd: writing to `/dev/sdb': No space left on device
145226113+0 records in
145226113+0 records out
74355769344 bytes (74GB) copied, 3674.27 s, 20.2 MB/s
Publicado em linux | Deixar um comentário

Eclipse no Ubuntu (antes)

Para ver como é atualmente: http://seiti.eti.br/blog/2007/eclipse-no-ubuntu

Instalando o Eclipse no Ubuntu. Primeiro baixe o Eclipse no site oficial (htp://www.eclipse.org), descompacte-o e depois mova os arquivos descompactados para o diretório /usr/local/:

tar xzf eclipse-SDK-3.2-linux-gtk.tar.gz
sudo cp -R eclipse /usr/local

Copie o ícone do Eclipse para o diretório de ícones do sistema:

sudo cp /usr/local/eclipse/icon.xpm /usr/share/pixmaps/

Crie o atalho que constará no menu de aplicativos, criando e editando o arquivo usr/share/applications/eclipse.desktop (use seu editor de texto favorito):

sudo vi /usr/share/applications/eclipse.desktop

E insira o seguinte texto:

[Desktop Entry]
Comment=Eclipse SDK
Name=Eclipse SDK
Exec=/usr/local/eclipse/eclipse
MultipleArgs=true
Terminal=false
Type=Application
Categories=Application;Development;
Icon=eclipse.xpm

Quase pronto! Falta ainda criar o grupo development, inserir seu próprio usuário neste grupo, e configurar todos os arquivos e diretórios do Eclipse para pertencer ao grupo development. Só assim para você poder atualizar e instalar plugins sem rodar o Eclipse como root.
Crie o grupo e se insira nele atraves do Gerenciador de Usuários do Gnome. Fácil e indolor.

Depois configure os arquivos do Eclipse para pertencerem ao grupo criado:

sudo chgrp development -R /usr/local/eclipse/
sudo chmod g+w -R /usr/local/eclipse/

Pronto!

Publicado em linux, software | Com a tag , | Deixar um comentário