Fábio's Home Page

Linux

Linux

LINUX: because a PC is a terrible thing to waste

Bom, aqui você não encontrará informações sobre "o que é Linux" ou coisas neste sentido, mas sim algumas dicas vindas da minha experiência pessoal com o Linux nos últimos anos.

Muitas das dicas aqui contidas foram descobertas por mim ou por algum motivo chegaram aos meus ouvidos, visto que tenho muitos amigos que trabalham com este sistema operacional também. Se você tem uma dica que considera interessante e acha que vale a pena colocá-la aqui, envie para mim! Será um prazer colocá-la aqui. Para me contatar, verifique a seção Eu.

Pequeno Índice

Para facilitar a navegação um pouquinho, abuse deste pequeno índice.

Algumas frases

Algumas frases que rolam pela Internet sobre o Linux... São muito engraçadas (pelo menos eu acho)!

> > Other than the fact Linux has a cool name, could someone explain why I
> > should use Linux over BSD?
>
> No.  That's it.  The cool name, that is.  We worked very hard on
> creating a name that would appeal to the majority of people, and it
> certainly paid off: thousands of people are using linux just to be able
> to say "OS/2? Hah.  I've got Linux.  What a cool name".  386BSD made the
> mistake of putting a lot of numbers and weird abbreviations into the
> name, and is scaring away a lot of people just because it sounds too
> technical.
(Linus Torvalds' follow-up to a question about Linux)
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, in comp.os.linux.misc, on X interfaces.)
After watching my newly-retired dad spend two weeks learning how to make a new
folder, it became obvious that "intuitive" mostly means "what the writer or
speaker of intuitive likes".
(Bruce Ediger, in comp.os.linux.misc, on X the intuitiveness of a Mac interface.)

Ok, agora vamos para a parte séria... Acho que não foi pra ler frases engraçadas que você veio aqui!

Dicas

Acessando NTFS sem recompilar o Kernel

Um dos grandes problemas de quem usa Linux na mesma máquina que tem instalado o Windows NT ou Windows 2000 é ter acesso às partições do seu sistema Microsoft. Se as partições estão no formato FAT16 (ou FAT32, no caso do Windows 2000), o Linux as reconhecerá automaticamente. Porém, para acessar partições formatadas usando o sistema de arquivos NTFS á necessária uma alteração no Kernel do Linux.

Essa alteração é simples de ser feita, porém exige uma recompilação do Kernel do sistema operacional.

Porém, podemos nos utilizar de uma característica especial do Kernel do Linux para "incluir código no Kernel quando quisermos". Essa característica chama-se Loadable Modules, ou Módulos Carregáveis. Utilizando-se desta facilidade, podemos incluir o módulo do kernel responsável pela leitura do NTFS sem sequer reiniciar o sistema!

Seguem-se as instruções necessárias, passo a passo:

  1. Se você sabe como recompilar o Kernel do Linux, acesse o configurador do Kernel (geralmente o xconfig), habilite a opção do NTFS como um módulo dentro de Filesystems, e pule para o passo 6. Senão, continue lendo.
  2. Vá para o diretório /usr/src/linux-<sua versão do Linux>. Para saber que versão do Linux você está rodando, digite uname -r. Para o Kernel 2.4.0, por exemplo, o diretório é /usr/src/linux-2.4.0.
  3. Certifique-se que você esteja rodando o X. Chegando lá, digite make xconfig.
  4. A ferramenta de configuração do Kernel inicia. Entre na opção Filesystems, e marque a opção NTFS como M (compilar como módulo).
  5. Clique em Main Menu, e em seguida em Save Changes and Exit.
  6. Agora você normalmente compilaria o Kernel, mas não o fará. Digite o costumeiro make dep, e quando ele acabar, digite make modules.
  7. Agora você tem os módulos compilados. Teoricamente, você deveria compilar um Kernel com estes módulos e instalar os modulos, usando make modules_install. Usar o make modules_install neste ponto até funcionaria, mas é muito arriscado. O ideal é fazer a operação manualmente. Continue lendo...
  8. Relativo ao diretório onde você deve estar agora (lembra, /usr/src/linux-<sua versão do Linux>) existe um diretório chamado modules. Listando o conteúdo dele, você verá diversos links simbólicos para todos os módulos que foram compilados. O que nos interessa é o ntfs.o. Copie ele para o diretório onde estão instalados os seus módulos, que deve ser /lib/modules/<sua versão do Linux>/fs (desta vez sem o prefixo linux-). Você pode copiá-lo usando o comando cp normalmente, o próprio cp se encarregará de derreferenciar o link simbólico.
  9. A parte final: com o módulo no local correto, vá para o local onde você o colocou (repetindo, o /lib/modules/<sua versão do Linux>/fs) e lá digite insmod ntfs. O módulo será inserido no Kernel do seu Linux, e você poderá começar a utilizá-lo agora mesmo, sem sequer reiniciar a máquina! Fantástico, não é?

A chance desta operação não funcionar é mínima, na verdade, isso só não irá funcionar se o seu Kernel não suportar Loadable Modules ou se você não tiver instalado o código-fonte do seu Kernel. Se você tiver algum destes problemas, você pode perguntar a um amigo que saiba algo de Linux que ele (provavelmente) saberá resolver. Em último caso, envie um e-mail para mim mesmo. Prometo que, se eu receber mais de 3 e-mails pedindo por soluções para este problema, eu coloco nesta página também as soluções para estes casos.

Fazendo com que seus scripts venham para o diretório onde estão

Às vezes escrevemos um script que executará uma tarefa considerando que ele foi executado no diretório onde ele está atualmente. Isso funciona muito bem enquanto vamos até a pasta onde está o script com o comando cd e depois executamos o script lá mesmo... Porém, quando queremos colocar o script num atalho do Gnome ou KDE, por exemplo, ou até mesmo quando queremos colocar este script no PATH, a situação complica um bocado. Para resolver este problema, basta colocar como uma das primeiras linhas do script o comando cd `dirname $0`.

Mas o quê este comando tem de mágico? É simples: $0 representa o nome completo do script. No caso, se o seu script chama-se fazcoisa e está em /usr/local/meuprograma/bin, o valor de $0 é /usr/local/meuprograma/bin/fazcoisa. Com este dado na mã, chamamos o comando dirname, que traz o diretório do arquivo que a ele for passado. Por exemplo, dirname /var/tmp/xyz mostra na tela /var/tmp.

Peraá, você falou "na tela"... Como fazemos para passar isso que apareceria na tela como parâmetro para outro comando, no nosso caso, o cd? Usando um mecanismo especial do bash, que eu não sei como se chama (se você sabe, me diga!). Sá sei que, com ele, o que seria direcionado para a saída padrão é utilizado para formar um novo comando. Uma forma alternativa de utilizá-lo seria cd $(dirname $0).

Se você quiser mais informações sobre este recurso do bash que eu não sei o nome, leia o manual do bash, digitando man bash. É uma leitura e tanto, recomendada para todo Linuxer.