twitter
    Seja Livre você Também!! :)

quarta-feira, 31 de outubro de 2012

Usando pipes e redirecionamentos no linux



Uma das características mais interessantes de sistemas baseados em Unix, como o linux, é a possibilidade de juntar diversos comandos em um só e poder enviar a saída para um arquivo. Vamos aprender a fazer isso usando pipes e redirecionamentos.
Entre as características do linux, talvez a mais interessante seja a noção de que tudo é um arquivo. Até mesmo dispositivos de hardware são encarados pelo sistema como sendo arquivos.

Da mesma forma, saídas e entradas de programas de modo texto também são vistos como arquivos.

Quando um programa é iniciado, o shell (no nosso caso o bash) coloca a sua disposição arquivos especiais, o chamado Standard Input/Output ou stdio, em português entrada e saída padrão.

Standard I/O
O stdio é formado por três arquivos especiais, são eles:

Standard Input (stdin) – Este arquivo descreve o local de onde o programa vai ler a entrada de dados, geralmente é associado ao teclado.

Standard Output (stdout) – É o local para onde o programa vai enviar a saída (informações, mensagens de sucesso, etc.), quase sempre é o terminal onde o programa foi iniciado.

Standard Error (stderr) – Funciona basicamente da mesma forma que o stdout, mas é exclusivo para a saída de mensagens de erro. Também é geralmente associada ao terminal.

Stdout e stderr são separados porque é comum que as mensagens de erro sejam processadas de maneira diferente das mensagens comuns.

Pipes
Como vimos acima, tudo no linux é visto como sendo um arquivo, inclusive a saída e entrada de dados de programas. Usando essa idéia, podemos juntar diversos comandos por meio de um pipe (em portugês algo como “cano” ou “tubo”), passando a saída de um comando para a entrada de outro. Isso facilita muito o trabalho e pode agilizar tarefas que, sem isso seriam praticamente impossíveis ou pelo menos impraticáveis.

Vamos a um exemplo:

Digamos que você queira analisar as mensagens de inicialização da sua máquina em um paginador, como o less. Você faria assim:

[root@MadMax] # dmesg | less

Dessa forma, o comando dmesg envia sua saída para a entrada do comando less.

Outro exemplo:

[root@MadMax] # ps aux | grep httpd

Com esse comando você exibe na tela todos os processos do httpd (servidor web) ativos na sua máquina.

E se você quisesse somente os PIDs? Simples:

[root@MadMax] # ps aux | grep httpd | awk {'print $2'}

Bom, estes são exemplos simples, mas a partir do momento que você se acostumar com a idéia, vai achar diversas funções para isso.

Este processo é gerenciado pelo shell e é transparente para o usuário.

Redirecionamentos
Às vezes é extremamente interessante enviar a saída de um comando para um arquivo, para poder analisar posteriormente. Isso é feito usando redirecionamentos.

Um exemplo:

[root@MadMax] # ls -la > file1

dessa forma, a listagem do diretório vai ser gravada em um arquivo, ao invés de ser exibida na tela.

o redirecionador ‘>’ cria um arquivo novo vazio e sobrescreve o arquivo se ele já existir, para adicionar o texto no final de um arquivo existente, use ‘>>’

[root@MadMax] # ls -la >> file1

a listagem será salva no final do arquivo ‘file1′. Se o arquivo não existir, será criado.

Note que o redirecionador ‘>’ envia apenas stdout, para enviar stderr, usamos ’2>’.

É importante saber que o shell vai criar o arquivo antes de executar o comando, ou seja, os pipes e redirecionamentos são analisados antes da execução dos comandos. Por isso temos que tomar cuidado com comandos como esse:

[root@MadMax] # grep 'felipe' arquivo > arquivo

isto nunca deve ser feito, pois o arquivo seria sobreposto por um arquivo vazio, resultando na perda de tudo que havia no arquivo. O correto seria usar um arquivo intermediário para guardar a saída do grep e depois renomeá-lo:

[root@MadMax] # grep 'felipe' arquivo > arquivo2

[root@MadMax] # mv arquivo2 arquivo

Estes são os redirecionadores usados no bash, outros shells podem ter sintaxes bem diferentes.

Da mesma forma, podemos ler a entrada de um comando de um arquivo:

[user@MadMax] $ mail -s "novo arquivo" felipe < novoarquivo

Assim o conteúdo do arquivo novoarquivo é enviado para o usuário felipe por email. Normalmente o comando mail espera que você digite a mensagem no terminal.

Os redirecionadores e seus significados:
cmd > arquivo e

cmd 1> arquivo – envia stdout para arquivo

cmd 2> arquivo – envia stderr para arquivo

cmd > arquivo 2>&1 – envia stdout e stderr para arquivo

cmd > arquivo1 2> arquivo2 – envia stdout para arquivo1 e stderr para arquivo2

cmd < arquivo – recebe stdin de arquivo

cmd >> arquivo e

cmd 1>> arquivo – adiciona stdout ao final de arquivo

cmd 2>> arquivo – adiciona stderr ao final de arquivo

cmd >> arquivo 2>&1 – adiciona stdout e stderr ao final de arquivo

cdm1 | cmd2 – Envia stdout de cmd1 para cmd2

cmd1 2>&1 | cmd2 – Envia stdout e stderr de cmd1 para cmd2


(http://brunotorres.net/pipes-redirecionamentos)

sexta-feira, 14 de setembro de 2012

LILO


LILO, ou LInux LOader, é um dos loader de boot Linux mais comuns. O LILO pode ser instalado no MBR da unidade de disco rígido inicializável ou no registro de boot de partição de uma partição. Também é possível instalá-lo em dispositivos removíveis, como disquetes, CDs ou chaves USB. Será uma boa ideia praticar em um disco flexível ou chave USB se ainda não estiver familiarizado com LILO, como em nossos exemplos.
Durante a instalação do Linux, normalmente você especificará LILO ou GRUB como gerenciador de boot. Se escolher GRUB, LILO não poderá estar instalado. Caso ainda não tenha instalado o pacote, será preciso instalá-lo. Também é recomendável instalar o pacote lilo-doc para obter a documentação adicional e mais exemplos. Daqui em diante, consideraremos que você já tenha o pacote LILO instalado.
Configure o LILO usando um arquivo de configuração, que geralmente é /etc/lilo.conf. É possível usar o comando liloconfig(normalmente disponível em /usr/sbin) para gerar um arquivo de configuração inicial e, em seguida, editá-lo conforme necessário. O arquivo de configuração na Listagem 1 foi gerado dessa forma. O arquivo é razoavelmente bem anotado, e as man pages para lilo e lilo.conf fornecerão ajuda adicional. Este é um típico arquivo de configuração LILO que pode ser usado em um sistema de boot duplo com Windows e um ou mais sistemas Linux.

Listagem 1. Exemplo de /etc/lilo.conf

# Originally generated by liloconfig - modified by Ian Shields

# This allows booting from any partition on disks with more than 1024
# cylinders.
lba32

# Specifies the boot device (floppy)
boot=/dev/fd0

# Specifies the device that should be mounted as root.
# If the special name CURRENT is used, the root device is set to the
# device on which the root file system is currently mounted. If the root
# has been changed with  -r , the respective device is used. If the
# variable ROOT is omitted, the root device setting contained in the
# kernel image is used. It can be changed with the rdev program.
root=/dev/sda7

# Bitmap configuration for /boot/coffee.bmp
bitmap=/boot/coffee.bmp
bmp-colors=12,,11,15,,8
bmp-table=385p,100p,1,10
bmp-timer=38,2,13,1

# Enables map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the map
# smaller. Using COMPACT is especially recommended when booting from a
# floppy disk.
compact

# Install the specified file as the new boot sector.
# LILO supports built in boot sectors, you only need
# to specify the type, choose one from 'text', 'menu' or 'bitmap'.
# new: install=bmp      old: install=/boot/boot-bmp.b
# new: install=text     old: install=/boot/boot-text.b
# new: install=menu     old: install=/boot/boot-menu.b or boot.b
# default: 'menu' is default, unless you have a bitmap= line
# Note: install=bmp must be used to see the bitmap menu.
# install=menu
install=bmp

# Specifies the number of _tenths_ of a second LILO should
# wait before booting the first image.  LILO
# doesn't wait if DELAY is omitted or if DELAY is set to zero.
# delay=20

# Prompt to use certain image. If prompt is specified without timeout,
# boot will not take place unless you hit RETURN. Timeout is in tenths of
# a second.
prompt
timeout=200

# Enable large memory mode.
large-memory

# Specifies the location of the map file. If MAP is
# omitted, a file /boot/map is used.
map=/boot/map

# Specifies the VGA text mode that should be selected when
# booting. The following values are recognized (case is ignored):
#   NORMAL  select normal 80x25 text mode.
#   EXTENDED  select 80x50 text mode. The word EXTENDED can be
#     abbreviated to EXT.
#   ASK  stop and ask for user input (at boot time).
#     use the corresponding text mode. A list of available modes
#     can be obtained by booting with  vga=ask  and pressing [Enter].
vga=normal

# Defines non-standard parameters for the specified disk.
#disk=/dev/sda
# bios=0x80

# If you are using removable USB drivers (with mass-storage)
# you will need to tell LILO to not use these devices even
# if defined in /etc/fstab and referenced in /proc/partitions.
# Adjust these lines to your devices:
#
# disk=/dev/sda inaccessible
# disk=/dev/sdb inaccessible

# These images were automagically added. You may need to edit something.

image=/boot/vmlinuz-2.6.31-14-generic
 label="Lin 2.6.31-14"
 initrd=/boot/initrd.img-2.6.31-14-generic
 read-only

image=/boot/vmlinuz-2.6.31-20-generic
 label="Lin 2.6.31-20"
 initrd=/boot/initrd.img-2.6.31-20-generic
 read-only

image=/boot/memtest86+.bin
 label="Memory Test+"
 read-only

# If you have another OS on this machine (say DOS),
# you can boot if by uncommenting the following lines
# (Of course, change /dev/sda1 to wherever your DOS partition is.)
other=/dev/sda6
        label="Fedora 8"

 other=/dev/sda1
   label="Windows XP"


Testaremos nossa configuração criando um disquete de boot, então especificamos boot=/dev/fd0, ao lado da parte superior do arquivo. Também aumentamos o tempo limite de prompt para 20 segundos (200 incrementos de um décimo de segundo) e acrescentamos uma segunda "outra" entrada ao carregamento em cadeia do loader de boot na partição Fedora 8 (/dev/sda6). O LILO permite apenas um comando root em um arquivo de configuração, por isso pode inicializar várias imagens a partir da partição root, mas precisa fazer o carregamento em cadeia para outro loader de boot a fim de inicializar uma imagem de uma instalação diferente, como Fedora 8 (/dev/sda6) ou Windows XP (/dev/sda1) em nosso exemplo.
Use o comando lilo, localizado em /sbin/lilo, para escrever um registro de boot de estágio 1 e criar um arquivo de mapa (/boot/map) usando informações de configuração, como no exemplo acima, normalmente localizadas em /etc/lilo.conf. Existem alguns usos auxiliares que mencionaremos depois.
Agora, se formatarmos um disco flexível com um sistema de arquivos Linux como ext2, podemos executar o comando lilo (/sbin/lilo) para criar um disco flexível inicializável. Nossa saída é mostrada na Listagem 2. Observe que o comando lilo tem cinco níveis de detalhamento. Especifique um -v extra para cada nível. Esse exemplo foi criado usando lilo -v -v.

Listagem 2. Criando um disco flexível inicializável com lilo
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007, and compiled at 10:52:38 on Aug 25 2009
Running Linux kernel 2.6.31-14-generic on i686
Ubuntu

raid_setup returns offset = 00000000  ndisk = 0
 BIOS   VolumeID   Device
Reading boot sector from /dev/fd0
pf_hard_disk_scan: ndevs=1
  0800  54085408  /dev/sda
device codes (user assigned pf) = 0
device codes (user assigned) = 0
device codes (BIOS assigned) = 1
device codes (canonical) = 1
mode = 0x03,  columns = 80,  rows = 25,  page = 0
Using BITMAP secondary loader
Calling map_insert_data
Secondary loader: 19 sectors (0x3800 dataend).
Warning: The boot sector and map file are on different disks.
bios_boot = 0x00  bios_map = 0x80  map==boot = 0  map S/N: 54085408
Mapping bitmap file /boot/coffee.bmp
Calling map_insert_file
Compaction removed 592 BIOS calls.
Bitmap: 603 sectors.
BIOS data check was okay on the last boot

Boot image: /boot/vmlinuz-2.6.31-14-generic
Setup length is 26 sectors.
Compaction removed 7452 BIOS calls.
Mapped 7601 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-14-generic
Compaction removed 14696 BIOS calls.
RAM disk: 14930 sectors.
Added Lin_2.6.31-14 *

Boot image: /boot/vmlinuz-2.6.31-20-generic
Setup length is 26 sectors.
Compaction removed 7468 BIOS calls.
Mapped 7617 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-20-generic
Compaction removed 14704 BIOS calls.
RAM disk: 14938 sectors.
Added Lin_2.6.31-20

Boot image: /boot/memtest86+.bin
Setup length is 4 sectors.
Compaction removed 243 BIOS calls.
Mapped 254 sectors.
Added Memory_Test+

Boot other: /dev/sda6, loader CHAIN
Pseudo partition start: 43198848
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Fedora_8

Boot other: /dev/sda1, on /dev/sda, loader CHAIN
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Windows_XP

 BIOS   VolumeID   Device
  80    54085408    0800
Writing boot sector.
/boot/boot.0200 exists - no boot sector backup copy made.
Map file size: 336896 bytes.
RAID device mask 0x0000
One warning was issued.


Agora, temos nosso disquete LILO inicializável. Se LILO encontrar um erro, talvez você veja uma mensagem de erro, e o setor de boot não será gravado. A mensagem dará uma ideia sobre o que precisa ser corrigido.
Se usarmos o disquete que acabamos de criar e reinicializarmos a máquina, veremos um prompt semelhante ao da Figura 1. Observe o cronômetro de contagem regressiva na parte superior da tela, que está fazendo uma contagem regressiva iniciada em 20 segundos (200 décimos de segundo). Se nenhuma opção for feita dentro de 20 segundos, a opção destacada (a primeira, ou Lin_2.6.31-14 neste caso) é automaticamente inicializada.

Figura 1. Tela de boot do LILO
É possível usar as teclas de seta para mover-se para cima e para baixo na lista de seleção. A Figura 2 mostra como selecionar o kernel Lin_2.6.31-20 mais recente, que é a segunda entrada. Observe que o valor do cronômetro não é mais exibido. Pressione Enter para fazer o boot deste kernel.

Figura 2. Selecionando outro destino de boot com LILO
Quando tiver testado seu disquete de boot, altere a entrada boot=/dev/fd0 no seu arquivo lilo.conf para instalar o LILO no MBR ou em um registro de boot de partição. Por exemplo, boot=/dev/sda instalará o LILO no registro de boot mestre de sua primeira unidade de disco rígido.
Agora, você já teve uma introdução ao LILO e ao seu arquivo de configuração. É possível substituir algumas opções de configuração da linha de comando lilo. Você encontrará mais informações na man page do lilo usando o comando man liloouman lilo.conf. Você encontrará informações ainda mais abrangentes no guia do usuário PostScript instalado com o pacote lilo ou lilo-doc. Isso deve ser instalado no seu diretório de documentação, mas o local exato pode variar de acordo com o sistema. A única forma de localizar o arquivo é filtrar a lista de pacotes por meio de grep. A Listagem 3 mostra isso para o sistema Ubuntu 9.10 baseado em Debian que estamos usando neste exemplo.

Listagem 3. Localizando o guia do usuário LILO com dpkg

ian@pinguino:~$ dpkg -L lilo-doc | grep "ps"
/usr/share/doc/lilo-doc/user.ps.gz
/usr/share/doc/lilo-doc/tech.ps.gz


O comando correspondente em um sistema baseado em RPM como o Fedora seria: rpm -ql lilo-doc | grep "ps"
Comandos auxiliares LILO
O LILO possui vários comandos auxiliares:
lilo -q
Exibe informações do arquivo de mapa.
lilo -R
Define o lilo para fazer boot automaticamente o sistema especificado somente no próximo reboot. Isso é muito conveniente para o reboot automático de sistemas remotos.
lilo -I
Exibe informações sobre o caminho de um kernel.
lilo -u
Desinstala o lilo e restaura o registro de boot anterior.
Quando LILO inicializar um sistema Linux, você poderá fornecer parâmetros adicionais no momento do boot. Por exemplo, se a inicialização gráfica não estiver funcionando, você poderá fazer o boot no modo 3 ou no modo de usuário único para recuperação. Se você selecionar uma entrada e pressionar a tecla TAB, verá uma janela de terminal que foi pré-preenchida com o nome da sua etiqueta, como mostra a Figura 3. Qualquer texto que você digitar depois do nome da etiqueta será passado ao kernel. Por exemplo, em nosso exemplo, você selecionaria o sistema Ubuntu mais recente simplesmente movendo-se uma linha para baixo e, em seguida, pressionando TAB. Se você não selecionar um nome primeiro, pode ser necessário digitar o nome completo especificado na etiqueta. É possível ver por que as etiquetas que são mais sucintas que nossos exemplos podem ser uma boa ideia: digitar Lin_2.6.31.20 não é fácil.

Figura 3. Adicionando parâmetros de kernel com LILO


Na Figura 3, adicionamos "single" aos parâmetros de boot para indicar que queremos inicializar no modo de usuário único para fazer algum tipo de recuperação do sistema. Consulte a seção Recuperação para obter mais informações sobre como usar parâmetros de boot.
Lembre-se também de que com o LILO, é necessário executar o comando lilo sempre que você atualizar o arquivo de configuração (/etc/lilo.conf). Execute também o comando lilo se adicionar, mover ou remover partições ou efetuar qualquer outra alteração que possa invalidar o loader de boot gerado.

http://www.ibm.com/developerworks/br/library/l-lpic1-v3-102-2/

Visão geral do processo de boot


Antes de falar de LILO e GRUB, vamos rever como um PC é iniciado ou inicializado. O código denominado BIOS (de Basic InputOutput Service) é armazenado em memória não volátil, como ROM, EEPROM ou memória flash. Quando o PC é ligado ou reinicializado, esse código é executado. Em geral, ele realiza um autoteste inicial (POST) para verificar a máquina. Por fim, ele carrega o primeiro setor a partir do registro de boot mestre (MBR) na unidade de boot.

O MBR também tem a tabela de partições, para que a quantidade de código executável no MBR seja inferior a 512 bytes, o que não é muito código. Observe que cada disco, mesmo um flexível, possui código executável em seu MBR, mesmo se o código for apenas suficiente para apresentar uma mensagem, como "Disco não inicializável na unidade A:". Esse código, carregado pelo BIOS a partir desse primeiro setor, é chamado de loader de boot de primeiro estágio ou de loader de boot de estágio 1.
O MBR de unidade de disco rígido padrão usado pelos sistemas operacionais MS DOS, PC DOS e Windows® verifica a tabela de partições para localizar uma partição primária na unidade de boot marcada como ativa, carrega o primeiro setor a partir dessa partição e passa o controle para o começo do código carregado. Essa nova porção de código é também conhecida como o registro de boot de partição. Esse registro é na verdade outro loader de boot de estágio 1, mas esse tem inteligência suficiente apenas para carregar um conjunto de blocos da partição. O código neste novo conjunto de blocos é chamado deloader de boot de estágio 2. Conforme usado por MS-DOS e PC-DOS, o loader de estágio 2 continua diretamente para carregar o restante do sistema operacional. Esse é o modo como o seu sistema operacional entra em operação pela sua autoinicialização até estar funcionando normalmente.
Isso funciona bem para um sistema com um único sistema operacional. O que acontecerá se você quiser vários sistemas operacionais, digamos, OS/2, Windows XP e três distribuições Linux diferentes? Você poderá usar algum programa (como o DOS FDISK) para alterar a partição ativa e reinicializar. Isso é incômodo. Além do mais, um disco pode ter apenas quatro partições principais, e o MBR padrão pode ter apenas uma partição primária ativa; não se pode fazer o boot a partir de uma partição lógica. Mas, nosso exemplo hipotético citou cinco sistemas operacionais, e cada um precisa de uma partição. Opa!
A solução está em usar algum código especial que permita que um usuário escolha em qual sistema operacional será feito o boot. Exemplos incluem:

Loadlin

Um programa executável DOS invocado de um sistema DOS em execução para fazer o boot de uma partição Linux. Isso era popular quando a configuração de um sistema multiboot era um processo complexo e arriscado.

OS/2 Boot Manager

Um programa que é instalado em uma pequena partição dedicada. A partição foi marcada como ativa, e o processo de boot de MBR padrão iniciou o OS/2 Boot Manager, que apresenta um menu permitindo escolher qual sistema operacional inicializar.

Um loader de boot inteligente

Um programa que pode residir em uma partição de sistema operacional e é invocado pelo registro de boot da partição de uma partição ativa ou pelo registro de boot mestre. Exemplos incluem:
• BootMagic, parte do Norton PartitionMagic
• LILO, o LOader do LInux
• GRUB, o loader GRand Unified Boot (agora chamado de GRUB Legacy)
• GRUB 2, um novo loader de boot que acaba de começar a aparecer em distribuições comuns
•
Evidentemente, se você puder obter o controle do sistema para um programa que tenha mais de 512 bytes de código para realizar essa tarefa, não será muito difícil permitir o boot de partições lógicas ou de partições que não estejam na unidade de boot. Todas essas soluções permitem essas possibilidades, porque podem carregar um registro de boot de uma partição arbitrária ou porque eles têm algum entendimento de qual arquivo ou quais arquivos carregar para iniciar o processo de boot.

Carregamento em cadeia

Quando um gerenciador de boot obtém o controle, uma das coisas que ele pode carregar é outro gerenciador de boot. Isso é chamado carregamento em cadeia, e ocorre mais frequentemente quando o gerenciador de boot que está localizado no registro de boot mestre (MBR) carrega o loader de boot que está no registro de boot de partição. Isso quase sempre é feito quando um loader de boot Linux é solicitado a inicializar uma partição Windows ou DOS, mas também pode ocorrer quando o loader de boot Linux de um sistema é solicitado a carregar o loader de boot de outro sistema. Veja a seguir exemplos que mostram quando é possível usar isso para vários sistemas Linux.

Loaders de boot Linux

Daqui em diante, nos concentraremos em LILO e GRUB, já que esses são os loaders de boot inclusos na maioria das distribuições Linux. LILO já existe há algum tempo. GRUB é mais recente. O GRUB original agora se tornou GRUB Legacy, e o GRUB 2 está sendo desenvolvido sob o patrocínio da Free Software Foundation. Discutiremos o GRUB 2 brevemente, principalmente para que você tenha uma ideia das principais diferenças e de como o GRUB e o GRUB 2 podem coexistir. Para o restante do artigo, consideramos que GRUB significa GRUB Legacy, a menos que o contexto especificamente indique o GRUB 2. Também está disponível uma nova versão do LILO, chamada ELILO (que é projetada para sistemas de boot que usam Extensible Firmware Interface ou EFI da Intel, em vez de BIOS).
O processo de instalação de sua distribuição provavelmente dará a você uma opção de qual loader de boot configurar. Tanto o GRUB como o LILO funcionarão com a maioria dos discos modernos, embora algumas distribuições, como Fedora, não forneçam mais o LILO. Lembre-se de que a tecnologia de disco tem avançado rapidamente, portanto, você deve sempre ter certeza de que o loader de boot, a distribuição Linux escolhida (ou outro sistema operacional) e o BIOS de sistema funcionarão com o seu disco novo em folha. Caso contrário, poderá ocorrer perda de dados. Da mesma forma, se você estiver adicionando uma nova distribuição a um sistema existente, pode ser necessário certificar-se de que você tenha o LILO ou o GRUB mais recente em seu MBR. Também será necessária uma versão recente o bastante do GRUB ou do LILO, case você planeje fazer o boot a partir de um disco LVM ou RAID.
Os loaders de estágio 2 usados em LILO e GRUB permitem escolher quais sistemas operacionais ou versões carregar dentre inúmeras opções. Entretanto, LILO e GRUB diferem bastante no fato de que uma mudança no sistema requer o uso de um comando para recriar a configuração de boot LILO sempre que você atualizar um kernel ou efetuar outras alterações específicas no seu sistema, ao passo que GRUB pode fazer isso por meio de um arquivo de texto de configuração editável. O GRUB 2 também requer uma reconstrução de um arquivo de configuração que geralmente está armazenado em /etc.

http://www.ibm.com/developerworks/br/library/l-lpic1-v3-102-2/

quinta-feira, 20 de outubro de 2011

BCM4312 Debian Squeeze,Wireless Dell Inspiron 1525

Adicione ao repositório > /etc/apt/sources.list:

deb http://ftp.us.debian.org/debian squeeze main contrib non-free

Atualize a lista de pacotes e instale o pacote wireless-tools

# aptitude update
# aptitude install wireless-tools

Para o dispositivos BCM4312, instale o firmware-b43-lpphy-installer:

#aptitude install firmware-b43-lpphy-installer

O módulo do kernel é carregado automaticamente. Se necessário, ele pode ser carregado manualmente, através do comando: (sempre tive que carregar manualmente)

# modprobe b43

ou

# modprobe b43legacy

Verifique se o dispositivo está disponivel:

#iwconfig

Suba a interface:

# ifconfig wlan0 up

Espero ter ajudajo!!

terça-feira, 18 de outubro de 2011

O Sistema de Arquivo sysfs

O kernel 2.6 do Linux apresenta o sistema de arquivo sysfs. O sistema de arquivo sysfs é descrito como a união dos sistemas de arquivo proc, devfs e devpty. O sistema de arquivosysfsenumera os dispositivos e canais conectados ao sistema numa hierarquia de sistema de arquivo que pode ser acessada pelo espaço do usuário. É desenvolvido para lidar com as opções específicas do driver e do dispositivo, que antes estavam localizadas no /proc/, e incluir a adição dinâmica de dispositivos previamente oferecida pelo devfs. Neste ponto inicial da implementação do sysfs, há muitos drivers e utilitários que ainda referenciam as entradas antigas do proc. No entanto, sabe-se que o sysfs é o caminho do futuro.

O sistema de arquivo sysfs é montado em /sys/ e contém diretórios que organizam os dispositivos conectados ao sistema de diversas maneiras diferentes. Os sudiretórios de/sysfs/incluem:

  1. O diretório /devices/

    Este diretório contém o diretório /css0/. Seus sub-diretórios representam todos os sub-canais detectados pelo kernel do Linux. Os diretórios dos sub-canais são nomeados no formato0.0.nnnn onde nnnn é o número do sub-canal em hexadecimal entre 0 e ffff. Os diretórios do sub-canal, por sua vez, contêm arquivos de status e um outro sub-diretório que representa o dispositivo. O diretório do dispositivo é nomeado 0.0.xxxx onde xxxxé o endereço da unidade do dispositivo. O diretório /devices/ também contém informações de status e opções de configuração do dispositivo.

  2. O diretório /bus/

    Este contém os sub-diretórios /ccw/ e /ccwgroup/. Os dispositivos CCW são acessados através de palavras de comando do canal. Os dispositivos do diretório /ccw/ usam somente um sub-canal no sub-sistema do canal do mainframe. Os dispositicos de grupo CCW também são acessados com palavras de comando do canal, mas utilizam mais de um sub-canal por dipositivo. Por exemplo: um dispositivo 3390-3 DASD usa um sub-canal, enquanto uma conexão de rede QDIO para um adaptador OSA usa três sub-canais. Ambos os diretórios /ccw/ e /ccwgroup/ contêm diretórios chamados devices (dispositivos) e drivers:

    O diretório /devices/ contém uma ligação simbólica para os diretórios do dispositivo no diretório /sys/devices/css0/.

    O diretório /drivers/ contém diretórios para cada driver de dispositivo correntemente carregado no sistema. O driver zFCP tem um diretório aqui. O diretório /driver/contém configurações do driver do dispositivo, assim como uma ligação simbólica para os dispositivos que está usando (no diretório /sys/devices/css0/).

  3. O diretório /class/

    Este contém diretórios que agrupam dispositivos similares, como ttys, drives de fita SCSI, dispositivos de rede e outros dispositivos diversos.

  4. O diretório /block/

    Este diretório contém diretórios para cada dispositivo de bloco do sistema. São, na maioria, dispositivos tipo disco, como DASD reais, dispositivos loopback e dispositivos de bloco de raid de software. A diferença notada entre sistemas Linux mais antigos e aqueles que usamsysfsé a necessidade de referenciar os dispositivos pelos seus nomes sysfs. Numa imagem do Kernel 2.4, o driver zFCP era passado como endereços de seus dispositivos. No sistema da imagem do Kernel 2.6, o driver é passado como 0.0.1600.


    Fonte:http://web.mit.edu

O Diretório /proc

O diretório /proc contém um conjunto de arquivos ``virtuais''. Estes arquivos não existem em disco efetivamente e são criados na memória pelo kernel. Alguns dos mais importantes arquivos e diretórios são descritos abaixo:

/proc/n
é um diretório com informações sobre o processo número n. Cada programa em execução (processo) tem um subdiretório correspondente em /proc.

/proc/cpuinfo
Informações a respeito do processador como tipo, modelo e performance.

/proc/devices
Lista de controladores de dispositívo (device drivers) configurados no kernel em execução.

/proc/dma
Informa quais canais de acesso direto à memória (Direct Memory Access) estão sendo utilizados atualmente.

/proc/filesystems
Sistemas de arquivos configurados no kernel.

/proc/interrupts
Informa quais interrupções de hardware estão em uso.

/proc/ioports
Informa quais portas de entrada e saída estão em uso no momento.

/proc/meminfo
Informa sobre o atual uso de memória, real e virtual.

/proc/net
Informa o status dos protocolos de redes.

/proc/stat
Várias informações estatísticas sobre o sistema.

/proc/version
Informa a versão do kernel.

segunda-feira, 17 de outubro de 2011

Apache, MySql, PHP5, PhpMyadmin

E ae galera beleza?

Pois bem, como testar os sites em PHP, localmente? Não basta dar um duplo clique nos arquivos .php, como se faz com os .htm ou .html. É necessário ter um servidor web configurado para isso. Isso quem desenvolve PHP já sabe, então vamos mostrar como rodar PHP no Debian. É necessário baixar 4 pacotes essenciais:

APACHE, Servidor HTTP (rodando localmente)

apt-get install apache2

PHP, sem o PHP instalado, se você colocar um arquivo .php no site, ao acessá-lo pelo navegador ele será exibido como texto (com o código-fonte), ou o mais comum, o navegador pedirá para salvá-lo, como ao fazer o download de um arquivo qualquer.

apt-get install php5

MySql, É um gegenciador de Banco de Dados, com ele é possível armazenar e centralizar os dados, sem se preocupar com a estrutura dos arquivos onde os dados ficarão armazenados, nem em como esses arquivos são indexados.

apt-get install mysql-server

PhpMyadmin, é um programa de computador desenvolvido em PHP para administração do MySQL pela Internet. A partir deste sistema é possível criar e remover bases de dados, criar, remover e alterar tabelas, inserir, remover e editar campos, executar códigos SQL e manipular campos chaves.

apt-get install phpmyadmin

Após a instalação dos pacotes, abra um editor de texto e digite:

< ?
echo "teste php" ;
? >



Salve como teste.php no diretório /var/www/ - onde ficarão suas páginas em PHP.

Abra seu navegador e coloque o endereço localhost e veja se está funcionando..

Espero ter ajudado...

sexta-feira, 25 de março de 2011

Shell

Uma das maneiras mais usuais de interagir com um sistema LINUX especialmente em servidores é usado a "linha de comando" "prompt do shell", indicando que o sistema está pronto para receber instruções. Quando o final do prompt for "$" ex: felipe@MadMax:~$ ; indica que é um usuário comum, quando terminado em "#" ex: root@MadMax:/home/felipe# ; trata-se de um usuário "root".

O Shell Bash

Faz a intermediação entre o usuário e os recursos do computador, o shell padrão na maioria das distribuições Linux é o bash (Bourne Again Shell).

--------
alias
--------
ex:
alias ls='ls --colors=auto'

O comando acima faz com que toda vez que você digitar ls será mostrada a listagem colorida =o..óóóóó...

---
Set
---
-Mostra uma lista completa das vriaveis do shell
-Define o valor de uma variável

------------------
Criar uma Variavel
------------------
Ex:
set FELIPE="Teste variavel"
export FELIPE

----------
Unset
----------
Remove uma variáel na sessão
ex:
unset FELIPE

"variavel criada no exemplo acima.."

-------------------
O que faz o EXPORT?
-------------------
Depois de criar uma variavel do Shell é preciso exportala, usando o comando"export"
Quando uma variável é exportada para o ambiente ela fica disponivel para todos os processos filhos do Shell (todos os programas e aplicações que você executar no bash).

-----------
Comando ls
-----------
Lista os arquivos no diretório corrente

ls -a mostra todos arquivos, incluindo ocultos
ls -t mostra arquivos ordenados pela última data de modificação
ls -l mostra uma lista detalhada dos arquivos

----------
Argumentos
----------
ls -l *.txt
Com esse comando é listado apenas arquivos no formato .txt

------------------
Mais de um comando
------------------
O BASH também permite que você entre com uma sequencia de comandos na mesma linha, separando os com ";"

--------------
Histórico Bash
--------------
.bash_history
Isso fica no diretório home de cada usuário

----------
Comando cd
----------
Navegar pela árvore de diretórios

Com cd / -> entra no diretório raiz do SO.

-----------
Comando pwd
-----------
Mostra o diretório corrente, onde estou.

felipe@MadMax:~$ pwd
/home/felipe

------------------
Caminhos absolutos
------------------
Sempre começa com "/"

/dev
/usr
/usr/local/bin

------------------
Caminhos Relativos
------------------
Se estou em

felipe@MadMax:~$ pwd
/home/felipe

e executo o comando "ls .." estou dizendo para listar arquivos do diretório /home

----------
Símbolo ~
----------

Relativo para o diretorio home do usuario

cat ~felipe/ssh
Irá mostrar o arquivo ssh salvo no diretório "home/felipe"

terça-feira, 22 de março de 2011

Usando o comando DD

Uns meses atrás, estudando para a LPI me deparei com o comando dd e resolvi compartilhar como faço o uso do mesmo.

O comando dd e um clássico dos ambientes Unix-Like, com ele você pode fazer uma copia exata de um arquivo, ou seja uma copia bit a bit. Sintaxe básica:

$ dd
if=origem of=destino

Exemplo:


$ dd if=/home/felipe/Downloads/netbeans-6.9.1-ml-linux.sh of=/home/felipe/netbeans.sh
543986+0 registros de entrada
543986+0 registros de saída
278520832 bytes (279 MB) copiados, 11,7956 s, 23,6 MB/s

O que foi feito??

Foi feita uma cópia do arquivo "netbeans-6.9.1-ml-linux.sh" localizada em "/home/felipe/Downloads/" onde o arquivo copiado foi para /home/felipe, com o nome de netbeans.sh

Cópia do HD para um arquivo
# dd if=/dev/sda of=~/backup_hd.img

Será feita uma copia exata do hd dentro do diretório do root(#) com o nome “backup_hd.img”. Se quiser restaurar o “backp_hd.img” no /dev/sda2(lembre o sda2 deve ter pelo menos o mesmo tamanho do arquivo “backup.hd” se não os resultados poderão ser desastrosos.

# dd if=backup_hd.img of=/dev/sda2
Cópia do HD para o HD
# dd if=/dev/sda9 of=/dev/sda11
Será feita copia do /dev/sda9 para o /dev/sda11.

Fazendo uma copia do hd para um arquivo compactado
# dd if=/dev/sda1 | gzip > backup_hd.img.gz

e para descompactar:

# gzip -d -c backup_hd.img.gz | dd of=/dev/sda2

O comando acima está descompactando o arquivo beckup_hd.img.gz no HD em /dev/sda2
Criar uma ISO

#dd if=diretorio.tar.gz of=iso_do_diretorio.iso
Para visualizar progresso de cópia de arquivos, vá em outro terminal e execute:
$ watch df -h

Para converter todos as letras maiúsculas de um documento para letras minúsculas
$ dd if=ficheiro1 of=ficheiro2 conv=lcase

Se quisermos converter todas as letras do ficheiro2 para maiúsculas:
$ dd if=ficheiro2 of=ficheiro3 conv=ucase

Para zerar(formatar) o seu HD
# dd if=/dev/zero of=/dev/hda

Gerar senhas de forma (pseudo) aleatória

$ dd if=/dev/random bs=2 count=6 | base64 -
"r2KWFW83e9nTniVR"
6+0 registros de entrada
6+0 registros de saída
12 bytes (12 B) copiados, 0,000100641 s, 119 kB/s

sexta-feira, 18 de março de 2011

Compilando Kernel 3.0.4 no Debian Squeeze com processador de 2 núcleos

Acesse o diretório /usr/src:
$ cd /usr/src

Baixe o kernel 3.0.4
# wget -c http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2

Descompacte
# tar xvjf linux-3.0.4.tar.bz2

Entre no diretório
# cd linux-3.0.4

Aquisição de um arquivo .config

Um arquivo .config contém configurações pré-estabelecidas para a compilação do Kernel.
Se você quiser manter o .config utilizado atualmente pelo seu sistema, execute o comando abaixo.

# cp /boot/config-2[pressione TAB] /usr/src/linux-3.0.4/.config


Configuração e seleção dos módulos a serem compilados.

"Se quiser alterar alguma coisa, acrescentar módulos, remover..ae é da sua escolha, eu não mexo" (pura vagabundice minha)haha, apenas salvo!!

# make menuconfig

Criando uma imagem do kernel compactada com o bzip2

# make -j 3 bzImage

Criando os módulos que você configurou no "make menuconfig"

# make -j 3 modules

Instalando os módulos

# make -j 3 modules_install

Vamos Criar o “initrd” para o Kernel instalado. O “initrd” significa “Initial RAM disk”, ele contém uma pequena imagem do sistema que será carregada no boot.

# mkinitramfs 3.0.4 -o /boot/initrd.img-3.0.4

Este comando copiará o bzImage para o diretório /boot, renomeando para vmlinuz-3.0.4


# cp arch/i386/boot/bzImage /boot/vmlinuz-3.0.4

Atualização do grub


# update-grub ou edite o grub manualmente =) # vim /boot/grub/grub.cfg


E é isso ae!!, espero ter ajudado...

Filtros de texto

------------
#Comando cat
------------
cat
Imprime o conteudo de arquivos

cat > teste.txt
"Conteudo do texto"
Ctrl + C
finaliza o processo de edição de texto
Cria o arquivo texte.txt

cat texto1.txt > texto.txt
Conteudo do arquivo texto.txt é substituido pelo texto1.txt

cat texto1.txt >> texto.txt
Adiciona o conteudo o texto1.txt no final do arquivo texto.txt

------------
#Comando cut
------------
Cortar uma coluna vertical e lê o conteudo de um ou mais arquivo e tem como saída uma coluna vertical

Ex:Coluna A; Coluna B; Coluna C; Coluna D;
1;2;3;4;
10;20;30;40;
100;200;300;400;
1000;2000;3000;400;
10000;20000;30000;40000;

cut -d ´;´ -f2 tabela.txt
Com essa tabela acima e esse comando cut -d onde o delimitador de uma coluna para outra é ";" e -f2 Coluna desejada, neste caso a coluna 2.O resultado seria Coluna B ;2;20;200;2000;20000;

cut -b:número Imprime uma lista vertical com o byte número (da esquerda para direita)

cut -c:número Imprime uma lista vertical com o caractere número (da esquerda para direita)

cut -d:Já foi falado acima =D

cut -f:Também já foi falada =P

cut -d : -f1 /etc/passwd

cut -b 1 /etc/passwd
Primeiro byte do arquivo /etc/passwd

cat /etc/host | cut -f2
Vai ler o conteudo do arquivo /etc/host ,vai jogar para o comando cut que vai selecionar apenas a segunda coluna e vai imprimir o resultado

---------------
#Comando expand
---------------
Troca o Tab dentro dos textos para o número de espaços correspondents

--------------
É util para tornar um texto que faz uso das tabulações mais atrativos para determinados dispositivos, como o vídeo, impressora, arquivos etc..

Continuando com expand

expand -t 4:especifica o número de espaços que o tab contém,neste caso 4, o padrão é 8

expand -i:converte Tabs em espaços somente no início das linhas, deconciderando Tabs no meio ou fim do arquivo.

------------
#Comando fmt
------------
Formata um texto com uma largura específica.
O padrão do fmt é de 75 caracteres.

fmt -w 56 teste.txt: Configura a largura desejada para o texto, neste caso 56 caracteres por linha do arquivo teste.txt

-------------
#Comando head
-------------
Mostra as primeiras 10 linhas do inicio do texto

head -n 2 teste.txt: vai mostrar as duas primeiras linhas do arquivo teste.txt

-------------
#Comando join
-------------
Serve para unir as linhas de ambos arquivosque tenham um índice comum

Exemplo:
Suplonha que o arquivo1 contenha o seguinte conteudo:
GZH-1234
HYD-2389
GIS-2348
E o arquivo2 tenha:
Fiat Uno Mille Smart
Audi A3
Monza

join -j1 arquivo1 arquivo2

A saída será:

1 GZH-1234 Fiat Uno Mille Smart
2 HYD-2389 Audi A3
3 GIS-2348 Monza

-----------
#Comando nl
-----------
É utilizado para numerar as linhas de um arquivo.O comando considera condições especiais para cabeçalho e rodapé do arquivo.

Simbolos para diferenciação
\:\:\: Iniciar o cabeçalho do texto
\:\: Iniciar o corpo do texto
\: Iniciar rodapé do texto

nl -h subopção:Formatar cabeçalho, o padrão é não numerar o cabeçalho

nl -b subopção:Formatar o corpo do texto, o padrão é numerar somente as linhas não vazias

nl -f subopção:Formatar o rodapé do texto, o padrão é não numerar o rodapé

Subopções:

-A :Numerar todas as linhas
-t :Numerar somente as preenchidas
-n :Não numerar as linhas

Exemplo
arquivo.txt

\:\:\:
Relatório de Notas e Frequência dos alunos de CC
------------------------------------------------------------------------------
Nome Nota Freq Resutado
------------------------------------------------------------------------------
\:\:
Felipe dos Santos 8,0 100% Aprovado
Ronaldo Jesus 9,0 90% Aprovado
Josefina Pedrosa 4,5 29% Reprovado
\:
------------------------------------------------------------------------------
nl arquivo.txt

Saída

Relatório de Notas e Frequência dos alunos de CC
------------------------------------------------------------------------------
Nome Nota Freq Resutado
------------------------------------------------------------------------------

1 Felipe dos Santos 8,0 100% Aprovado
2 Ronaldo Jesus 9,0 90% Aprovado
3 Josefina Pedrosa 4,5 29% Reprovado
------------------------------------------------------------------------------
-----------
#Comando od
-----------
Serve para vizualizar conteudo de um arquivi hexadecimal, octal, ASCII e nome dos caracteres

od -t "tipo" :especifica o tipo de saída que o comando od deve gerar

TIPOS:
-a Nome do caractere
-c :ASCII
-o :Octal
-x :Hexadecimal

exemplo
od -t o arquivo.txt
O resultado será que a saída do texto exibirá em octal.

Teste Octal

felipe@MadMax:~$ od -t o Teste.txt
0000000 16434662524 14323620145 01233060564
0000014

--------------
#Comando paste
--------------
É utilizado para concatenar as linhas de diversos arquivos em colunas verticais

paste -d's' :separa as colunas com o símbolo s dentro das aspas simples
paste -s : concatena todo conteúdo de um arquivo com uma linha pra cada arquivo

-----------
#Comando pr
-----------
Formata um arquivo texto para saída paginada com cabeçalho, margens e largura definidos

Pra que isso??
Formatar textos crus para impressão

pr -d :Especifica o espaçamento entre as linhas, neste caso duplo

pr -l 145 :Especifica o número de caracteres de largura da página, padrão é 66, neste caso coloquei 145 =D

pr -o 12 :Especifica o número de espaços da margem esquerda

pr -l 75 -o 5 arquivo.txt
largura 75 saltando 5 da mergem esquerda

--------------
#Comando split
--------------
Usado para dividir arquivos grandes em n-arquivos menores. Os nomes dos arquivos de saída seguem o padrão arquivosaidaaa arquivosaidaab arquivosaidaac, assim por diante

split -n :onde o n é o número de linhas que irão dividir o arquivo de entrada

split -6 teste.txt arquivosaida

Onde -6 é o número de divisão que ocorrerá no arquivo..
A saída vai ser:
arquivosaidaaa
arquivosaidaab
arquivosaidaac
arquivosaidaad
arquivosaidaae
arquivosaidaaf

------------
#Comanto tac
------------
O contrário do cat, mostra o conteudo do arquivo de trás para frente

-------------
#Comando tail
-------------
O oposto do comando head, ele mostra as 10 ultimas linhas de um arquivo

tail -n 17 arquivo.txt :Onde n é o número de linhas finais que irá mostrar

tail -f arquivo.txt :Mostra as últimas linhas finais de um arquivo continuamente enquanto outro processo grava mais linhas. Muito útil para visualizarmos arquivos de LOG.

tail -n 36 /var/log/messages
Vai listar as ultimas 36 linhas do arquivo messages

tail -f /var/log/messages
Vai mostrar o final do arquivo de forma continua e as linhas que são acrescentadas online pelo SO.

-----------
#Comando tr
-----------
Busca uma determinada ocorrência em um texto e trocar por outra ocorrência,ele não modifica o conteudo de um arquivo, para modificalo devemos direcionar o arquivo modificado para um outro lugar ou nome diferente.

tr -d :apaga as ocorrências da variável de busca
tr -s :suprime as ocorrências repetidas da variável de busca

Exemplo:

cat arquivo1 | tr a-z A-Z
Neste exemplo o comando troca todas as letras de a à z para maiúsculas.

cat arquivo1 | tr -d a
Apagará a letra a

cat arquivo1 | tr -s 1
O comando suprime as ocorrências repetidas do número 1

-----------
#Comando wc
-----------
O comando wc conta as linhas, palavras e caracteres de um ou mais arquivos

wc -c :conta os caracteres do arquivo
wc -l :conta o número de linhas do arquivo
wc -L :conta o número de caracteres da maior linha do arquivo
wc -w :conta as palavras de um ou mais arquivos

--------------
#Comando xargs
--------------
Executa o comando e passa como argumento o que foi recebido como entrada padrão. O xargs vai executar inúmeras vezes comando de acordo com o número de linhas recebidas

Não entendi essa porra!!!!!! =S

xargs -p :pergunta ao usuário se o comando deve ser executado antes de fazelo
xargs -r :não executa o comando quando receber linhas vazias
xargs -t :mostre o comando na tela antes de executalo

Exmplo que também não entendi =S
cat texto.txt | xargs echo

A única coisa que fez foi exibir o conteudo do arquivo sem pular linhas, deve ser os argumentos de saída, sei lá??

-----------------
#Símbolos Coringa
-----------------
* "Vale qualquer coisa" ex: Certi* . Pode ser Certificado, Certificação...també pode ser usado para instalar pacotes por exemplo: dpkg -i *deb, vai instalar todos pacotes .deb alocados em um determinado diretório

? "Subistituir um caractere somente de um nome, ex:
?ertificado, onde poderia ser qualquer coisa que terminasse com "ertificado" , Certificado, 1ertificado, certificado....

Hierarquia do Sistemas de Arquivos

Guardar de forma organizada dados e arquivos, por isso foi criado os sistemas de arquivos.

Os arquivos ficam divididos em diretórios e subdiretórios diferentes por uma questão de afinidade e organização.


-------
##Inode
-------
A identificação dos objetos de um sistema de arquivo no Línux é conhecida como inode, ele carrega as informações de onde o objeto está localizado no disco, informações de segurança, data e hora de criação e últimas modificações...

Quando criamos um sistema de arquivos no linux, cada dispositivo tem um número infinito de inodes que será diretamente proporcional ao número de arquivos que este dispositivo poderá acomodar

----------
Diretórios
----------

O sistema GNU/Linux possui a seguinte estrutura básica de diretórios organizados segundo o FHS (Filesystem Hierarchy Standard):

/bin
Contém arquivos programas do sistema que são usados com freqüência pelos usuários.

/boot
Contém arquivos necessários para a inicialização do sistema.

/cdrom
Ponto de montagem da unidade de CD-ROM.

/dev
Contém arquivos usados para acessar dispositivos (periféricos) existentes no computador.

/etc
Arquivos de configuração de seu computador local.

/floppy
Ponto de montagem de unidade de disquetes

/home
Diretórios contendo os arquivos dos usuários.

/lib
Bibliotecas compartilhadas pelos programas do sistema e módulos do kernel.

/lost+found
Local para a gravação de arquivos/diretórios recuperados pelo utilitário fsck.ext2. Cada partição possui seu próprio diretório lost+found.

/mnt
Ponto de montagem temporário.

/proc
Sistema de arquivos do kernel. Este diretório não existe em seu disco rígido, ele é colocado lá pelo kernel e usado por diversos programas que fazem sua leitura, verificam configurações do sistema ou modificar o funcionamento de dispositivos do sistema através da alteração em seus arquivos.

/root
Diretório do usuário root.

/sbin
Diretório de programas usados pelo superusuário (root) para administração e controle do funcionamento do sistema.

/tmp
Diretório para armazenamento de arquivos temporários criados por programas.

/usr
Contém maior parte de seus programas. Normalmente acessível somente como leitura.

/var
Contém maior parte dos arquivos que são gravados com freqüência pelos programas do sistema, e-mails, spool de impressora, cache, etc.

terça-feira, 1 de março de 2011

Identificar e editar configurações de hardware

O mais importante de um sistema operacional é sua integração com o hardware da máquina, o BIOS identifica e realiza testes simples em itens fundamentais de hardware, como disco, processador e memória.

Duas maneiras básicas de identificar recursos de hardware dentro de um sistema Linux, utilizando comandos ou lendo arquivos dentro de sistemas de arquivos especiais.

COMANDOS:

lspci: Mostra componentes conectados ao barramento PCI
lsusb: Mostra dispositivos USB conectados em sua máquina
lsmod: Lista os módulos carregados no sistema

Podemos ver mais detalhes de um dispositivo da seguinte maneira

# lspci -s 09:00.0 -v
09:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller (rev 12)
Subsystem: Dell Device 022f
Flags: bus master, fast devsel, latency 0, IRQ 27
Memory at fe8fc000 (64-bit, non-prefetchable) [size=16K]
I/O ports at de00 [size=256]
Capabilities: [48] Power Management version 3
Capabilities: [5c] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [c0] Express Legacy Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [130] Device Serial Number d6-65-f9-ff-ff-c9-1e-00
Kernel driver in use: sky2

# lspci -s endereço do despositivo -v temos a listagem

O lsusb funciona da mesma forma, mas ao invés do -s usamos -d para enformar o ID do dispositivo escolhido

# lsusb -v -d 05a9:2640

Os comando vistos acima, serve para "facilitar" a leitura das informações de hardwar. Todas essas informações se localizam nos diretórios /proc e /sys.

O diretório /proc contém arquivos com informações dos processos ativos e de recursos de hardware, pro exemplo:

/proc/cpuinfo: Mostra informações sobre o processador encontrado pelo sistema
/proc/dma: Mostra informações sobre canais de acesso direto à memória
/proc/ioports: Mostra informações sobre endereços de memória usados pelos dispositivos.
...

Os arquivos em /sys é parecido com /proc , mas o /sys tem função de guardar informações de dispositivos..


**Informações também retiradas do livro Certificação LPI-1- Luciano António Siqueira, recomendo à todos que buscam a certificação LPI

LPI 101 102

Depois de muito tempo sem postar nada aqui no blog, vou voltar a escrever coisas aqui, atualmente estou estudando para a LPI 101 102 e a cada tópico que eu estudar vou começar a postar o assunto e dar uma breve explicação do assunto..

segunda-feira, 22 de março de 2010

Modem Huawei E156b e Vivo Zap no Debian Lenny

Para isso você deve ter o wvdial instalado. Plugue o modem na máquina e
veja o dmesg. Aparecerão linhas assim:


[ 284.820094] usb 5-1: new high speed USB device using ehci_hcd and address 3
[ 284.963388] usb 5-1: New USB device found, idVendor=12d1, idProduct=1003
[ 284.963405] usb 5-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 284.963417] usb 5-1: Product: HUAWEI Mobile
[ 284.963425] usb 5-1: Manufacturer: HUAWEI Technology
[ 284.963729] usb 5-1: configuration #1 chosen from 1 choice
[ 285.225302] Initializing USB Mass Storage driver...
[ 285.226058] usb-storage: probe of 5-1:1.0 failed with error -1
[ 285.226114] usbcore: registered new interface driver usb-storage
[ 285.226125] USB Mass Storage support registered.
[ 285.226892] usb 5-1: USB disconnect, address 3
[ 292.532234] usb 5-1: new high speed USB device using ehci_hcd and address 4
[ 292.679507] usb 5-1: New USB device found, idVendor=12d1, idProduct=1003
[ 292.679525] usb 5-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 292.679537] usb 5-1: Product: HUAWEI Mobile
[ 292.679545] usb 5-1: Manufacturer: HUAWEI Technology
[ 292.679859] usb 5-1: configuration #1 chosen from 1 choice
[ 292.685403] usb-storage: probe of 5-1:1.0 failed with error -5
[ 292.689253] usb-storage: probe of 5-1:1.1 failed with error -5
[ 292.693103] usb-storage: probe of 5-1:1.2 failed with error -1
[ 292.696929] usb-storage: probe of 5-1:1.3 failed with error -1
[ 293.322818] usbcore: registered new interface driver usbserial
[ 293.322865] USB Serial support registered for generic
[ 293.322967] usbcore: registered new interface driver usbserial_generic
[ 293.322973] usbserial: USB Serial Driver core
[ 293.411645] USB Serial support registered for GSM modem (1-port)
[ 293.411743] option 5-1:1.0: GSM modem (1-port) converter detected
[ 293.411983] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 293.412053] option 5-1:1.1: GSM modem (1-port) converter detected
[ 293.412202] usb 5-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 293.412259] usbcore: registered new interface driver option
[ 293.412266] option: v0.7.2:USB Driver for GSM modems


Resumidamente, isso significa que o kernel tentou carregar o módulo de armazenamento
USB para o dispositivo e deu erro. Então tentou o usbserial, que é o correto. Só que ele
tem que ser reinserido com os parâmetros corretos para o modelo do modem.
Remova e depois reinsira os módulos option e o usbserial, com os parâmetros corretos:

rmmod option usbserial
modprobe option
modprobe usbserial vendor=0x12d1 product=0x1003

(estes parâmetros são tirados do próprio dmesg)
Agora copie este arquivo wvdial.conf para o seu /etc/wvdial.conf (um backup do
anterior não faz mal a ninguém...):

/etc/wvdial.conf
[Dialer Defaults]
Modem = /dev/ttyUSB0
ISDN = off
Modem Type = USB Modem
Baud = 460800
Init = ATZ
Init2 = AT+CFUN=1
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init4 = AT+CGDCONT=1,"IP","zap.vivo.com.br
"
Init5 =
Init6 =
Init7 =
Init8 =
Init9 =
Phone = *99#
Phone1 =
Phone2 =
Phone3 =
Phone4 =
Dial Prefix =
Dial Attempts = 1
Dial Command = ATM1L3DT
Ask Password = off
Password = vivo
Username = vivo
Auto Reconnect = off
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = off
Idle Seconds = 0
Auto DNS = on


Feito isso, inicie o wvdial:
$ wvdial


Você verá o programa iniciando o modem, tentando discar, conectando, etc:

boson:/home/felipe# wvdial
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CFUN=1
AT+CFUN=1
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","zap.vivo.com.br
"
AT+CGDCONT=1,"IP","zap.vivo.com.br
"
OK
--> Modem initialized.
--> Sending: ATM1L3DT*99#
--> Waiting for carrier.
ATM1L3DT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Thu Oct 29 13:43:27 2009
--> Pid of pppd: 3218
--> Using interface ppp0
--> local IP address XXX.XXX.XXX.XXX
--> remote IP address XXX.XXX.XXX.XXX
--> primary DNS address XXX.XXX.XXX.XXX
--> secondary DNS address XXX.XXX.XXX.XXX
^CCaught signal 2: Attempting to exit gracefully...
--> Terminating on signal 15
--> Connect time 25.5 minutes.
--> Disconnecting at Thu Oct 29 14:08:57 2009
boson:/home/felipe#

Nessa saída eu substituí os IP's por XXX, por segurança.
Iniciado o PPP, você verá essas linhas no dmesg:
[ 1010.536988] PPP generic driver version 2.4.2
[ 1010.906930] PPP BSD Compression module registered
[ 1011.094108] PPP Deflate Compression module registered

O wvdial não adiciona rota padrão. Adicione você mesmo:

route add default gw XXX.XXX.XXX.XXX (onde o IP é o "remote IP address").
Depois, para desconectar, use Ctrl+C. O programa desconecta e sai. Note dessa linha em
diante:

^CCaught signal 2: Attempting to exit gracefully...
Se você fez tudo isso na primeira vez e deu certo, não precisa copiar o arquivo na 2a em
diante. Só reinserir os módulos e rodar o wvdial. Automatizar isso aí deve ser simples.
Alguém se habilita?
OBS - O arquivo /etc/wvdial.conf foi adaptado desse tutorial do Viva o Linux:
http://www.vivaolinux.com.br/script/Huawei-Claro-Configurar-modem-Huawei-no-Linux
que é para o mesmo modem mas na Claro. Alguns parâmetros são diferentes.
OBS 2 - O parâmetro Stupid Mode = off pode ser mudado para Stupid Mode = 1, o que
faz o wvdial não esperar pelo prompt e iniciar o PPP imediatamente, portanto é mais
rápido para conectar. Mas por algum motivo, é mais instável e a conexão fica caindo. Não
sei se é coincidência ou não, mas voce pode testar os dois e ver o que funciona melhor
para você.

sábado, 20 de março de 2010

Conectando em uma rede Wireless

Entre como root no terminal e veja qual é a interface de rede wireless.

# iwconfig

O meu seria o eth2.

eth2 IEEE 802.11bg ESSID:"" Nickname:""
Mode:Managed Frequency:2.412 GHz Access Point: Not-Associated
Bit Rate:54 Mb/s Tx-Power:32 dBm
Retry min limit:7 RTS thr:off Fragment thr:off
Power Managementmode:All packets received
Link Quality=5/5 Signal level=0 dBm Noise level=-85 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Faça a procura de uma rede sem fio:

# iwlist eth2 scan

Ex:
eth2 Scan completed :
Cell 01 - Address: 00:02:6F:45:D4:E6
ESSID:"WIRELESS"
Mode:Managed
Frequency:2.427 GHz (Channel 4)
Quality:1/5 Signal level:-83 dBm Noise level:-90 dBm
Encryption key:off
Bit Rates:5.5 Mb/s; 11 Mb/s

Conectar na rede WIRELESS.

#iwconfig eth2 essid "WIRELESS"

Configurar Wireless Dell Inspiron 1525

Dell Inspiron 1525 rodando Debian Lenny

Outras placa suportadas são:

* BCM4310
* BCM4311
* BCM4312
* BCM4321
* BCM4322
-Primeiro abra o Terminal e se logue como root.
Rode o module-assistant prepare para que o sistema instale tudo que necessário para a compilação, build-
essential, linux-headers, etc.
# apt-get install module-assistant

-Pronto, agora estamos com tudo preparado para compilar novos módulos para o kernel e vamos ao que
interessa.
# module-assistant prepare

-Entra no diretórios onde estão localizados alguns fontes
# cd /usr/src

-Criando a pasta que vai receber o arquivo com o fonte
# mkdir hybrid_wl

-Entrando no diretório
# cd hybrid_wl

-Fazendo download do fonte
# wget http://speibsi.site90.com/arquivos/linux/debian/wireless/hybrid-portsrc-x86_32-v5_10_91_9.tar.gz

-Descompactando o fonte
# tar -xzf hybrid-portsrc-x86_32-v5_10_79_10.tar.gz

-Executando limpeza antes da compilação definitiva
# make -C /lib/modules/`uname -r`/build M=`pwd` clean

-Compilando o módulo
# make -C /lib/modules/`uname -r`/build M=`pwd`

-Apagando possíveis módulos instalados anteriormente
# rmmod bcm43xx b43 b43legacy ssb wl ndiswrapper

-Carregando módulos necessários
# modprobe ieee80211_crypt_tkip
# modprobe ieee80211

-Criando diretório
# mkdir /lib/modules/`uname -r`/misc/

-Copiando módulo para o diretório
# cp wl.ko /lib/modules/`uname -r`/misc/

-Instalando o módulo
# insmod /lib/modules/`uname -r`/misc/wl.ko

-Atualizando a lista de dependências do kernel
# depmod -a

-Agora vamos adicional o modulo wl que acamos de compilar para que seja carregado automaticamente
# echo “ieee80211_crypt_tkip” >> /etc/modules
# echo “ieee80211′′ >> /etc/modules
# echo “wl” >> /etc/modules

-Pronto reinicie o notebook e tenha sua wireless funcionando perfeitamente.
# init 6
FONTE: http://blog.bedendo.eti.br

sexta-feira, 19 de março de 2010

Instalando Debian Lenny

Baixando a imagem do Debian.

Segue logo abaixo dois links para downlad de imagens do Debian, processador 32 e 64 bits.

http://cdimage.debian.org/debian-cd/5.0.4/i386/iso-cd/

http://cdimage.debian.org/debian-cd/5.0.4/ia64/iso-cd/

Gravando o CD.

Agora vamos gravar a imagem baixada, para isso use a opção "Queimar/Gravar Imagem (Burn ISO)"

Boot pelo CD.

É necessário indicar por onde você quer que o computador comece a procurar por um sistema operacional (neste caso, queremos que ele "enxergue" o Debian, gravado em um CD e esperando na bandeja do CDROM do seu PC).
Alguns casos a tela de escolha do dispositivo de boot é acessada clicando ESC, durante o início do boot. Outros F11, ou F8.

Instalação do Os.

Tendo bootado o seu computador pelo CD com a imagem do Debian, esta será a primeira tela, onde algumas opções são passíveis de escolha.

-Escolha a Graphical install, aí é só seguir as instruções (Se quiser mais detalhes é só entrar em contato!! =))


Algumas Configurações Iniciais.

Configurando APT.

Vamos adicionar repositórios ao APT, para que você possa instalar pacotes que o Debian fornece para seus usuários.

Abra um terminal (alt+F2>>digite: gnome-terminal), digite 'su', para entrar como root, digite a senha escolhida durante a instalação.

digite o comando:
gedit /etc/apt/sources.list

Adicione (esse é o meu sources.list) e salve:
|
\/
eb http://security.debian.org/ lenny/updates main contrib non-free

deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb ftp://ftp.br.debian.org/debian/ lenny main contrib non-free

deb-src ftp://ftp.br.debian.org/debian/ lenny main contrib non-free

deb http://volatile.debian.org/debian-volatile/ lenny/volatile main contrib non-free

deb http://www.debian-multimedia.org/ lenny main

deb-src http://www.debian-multimedia.org lenny main

deb http://www.backports.org/debian lenny-backports main contrib non-free

deb http://download.skype.com/linux/repos/debian/ stable non-free

Logo após no terminal digite:

apt-get update
apt-get upgrade

O Synaptic.

Synaptic é um front-end para o APT, onde você poderá visualizar e lidar com todos os pacotes dos repositórios de forma fácil e agradável. Ele não vem mais instalado por padrão, então comande, como root:

# apt-get install synaptic

Primeira postagem não está muito boa,qual quer dúvida com a instalação ou instalação de algum programa é só entrar em contato!!!

FONTE: http://www.vivaolinux.com.br/artigo/Instalando-o-Debian-Lenny-Linux

Abraços...