Apagou a tabela de partições? E agora?

September 2nd, 2008


Ola, ola, ola…

Tudo bem com vocês ?

Eu estou numa correria danada, vários serviços, palestra e aulas. Quarta vou dar uma palestra na FATEC de praia grande e na sexta um workshop na Unisanta. Os dois vão ser bem legal. Depois falo mais sobre o assunto.

Bom vamos ao assunto do post! Na sexta feira estava brincando com o meu pendrive, até a hora que decidi apagar o MBR e fiz:

sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1

bom, em seguida meu pendrive não tinha mais nada e o linux não reconhecia mais nenhuma partição dele. Pronto, fiz coisa sem pensar, o MBR são os primeiros 512 bytes dos nossos HDs e Pendrives. Sendo 446Bytes para armazenar algo como um bootloader e os últimos 66Bytes para a tabela de partições do dispositivo, ou seja fiz besteira mesmo! E agora?

Parei e pensei, " Meus dados estão lá", então antes de mais nada vou fazer um backup de tudo que tem lá. Então fiz:

cat /dev/sdb > /home/gustavo/pendrive.img

Ótimo, agora esta tudo OK, vamos mexer, se der algo errado a gente restaura esse backup e tenta novamente.

Tem um programa o gpart, ele tem a capacidade de ler todo o seu dispositivo e detectar as partições e remontar a tabela. Mas não é sempre que funciona, e comigo não funcionou, então parei e pensei, pensei e fiz um teste, tentei montar o arquivo .img que eu fiz de backup com o parâmetro -o loop e o melhor funcionou:

sudo mount -t vfat -o loop,offset=32256,utf8 ./pendrive.img /media/cdrom0/

feito isso, apaguei o pendrive, formatei tudo certinho e copiei tudo de volta para o pendrive.

fdisk
sudo mkfs.vfat /dev/sdb1 -n Gustavo-PD
cp -rf /media/cdrom0/* /media/Gustavo-PD

Ufa, essa foi por pouco, eu tinha backup de tudo, só que eu faço backup aos domingos e era uma sexta, ou seja tinha bastante alterações da semana.

Façam backups regularmente! Mas se tiver uma emergência, e o gpart não ajudar, vocês já possuem uma outra tentativa.

Tags: , , , ,

Ubuntu HotKeys

August 27th, 2008


Para quem esta começando no linux, algumas combinações de teclas pode ajudar qualquer usuário novo a ganhar tempo na utilização do linux. No título coloco o Ubuntu como referencia, mas as combinações encontradas aqui são hotkeys do gnome, bash, bash history, e dos programas em uma forma genérica, se procura algo mais especifico de uma olhada nos posts anteriores.

Geral

Ctrl+A = Selecionar tudo (Em Documentos, Firefox, Nautilus, etc, Não funciona no terminal)
Ctrl+C = Copiar (Em Documentos, Firefox, Nautilus, etc, Não funciona no terminal)
Ctrl+V = Colar (Em Documentos, Firefox, Nautilus, etc, Não funciona no terminal)

Ctrl+N = Novo (Cria um novo documento, Abre nova janela[Nautilus,Firefox], Não funciona no terminal)
Ctrl+O = Abrir (Abre um documento, ou diretório[Nautilus] , Não funciona no terminal )
Ctrl+S = Salvar (Salvar o documento atual, Não funciona no terminal )
Ctrl+P = Imprimir (Imprime o documento atual, Não funciona no terminal )

Ctrl+E = Enviar para… (Envia o documento atual para um e-mail ou um local remoto, Não funciona no terminal )
Ctrl+W = Fecha o documento atual ou aba (Fecha apenas o documento ou aba atual sem fechar o programa, Não funciona no terminal )
Ctrl+Q = Fechar (Fecha a aplicação, Não funciona no terminal)

Ctrl + Alt + F1 = Vai para o primeiro terminal
Ctrl + Alt + F2(F3)(F4)(F5)(F6) = Vai para os diversos terminais
Ctrl + Alt + F7 = Vai para o modo gráfico

Ctrl + Alt + Backspace = Reinicia o ambiente gráfico (Servidor X)

Alt+Tab = Alterna entre os programas abertos
Printscrn = Print sreen

Command line / Terminal shortcuts

Ctrl+C = Mata o processo atual
Ctrl+Z = Envia o processo atal para segundo plano( Falarei sobre Jobs em outro post)
Ctrl+D = Faz logout da sessão atual.

Ctrl+A = Inicio da linha (Move o cursor para o inicio da linha)
Ctrl+E = Final da linha (Move o cursor para o final da linha)
Tab = Lista os comandos disponíveis através das primeiras letras digitadas (Ex: Digite iw e clique tab, Saída = iwconfig iwevent iwgetid iwlist iwpriv iwspy)

Ctrl+U = Remove a linha atual
Ctrl+K = Remove todos os caracteres a direita do cursor
Ctrl+W = Remove a última palavra antes do cursor

Arrows up and down = Navega entre os comandos do history
Ctrl+R = Pesquisa algo entre os comandos já digitados

Shift+PageUp / PageDown = Rola o conteúdo do terminal para cima e para baixo
Ctrl+L = Limpa a tela
Shift+insert =Cola

Tags: , ,

Estou aqui e vocês?

August 27th, 2008


Fala pessoal, tudo certo ? Faz tempo que não escrevo aqui, para quem passou por aqui pode ter dado a impressão de abandono, mas eu não abandonei, apenas passei por algumas semanas de muuuuito trabalho. Turmas de sábado o dia todo, durante semana turmas em São Paulo pelo dia e turmas em Santos pela noite, mas vamos indo. Estou pensando em uma promoção para o blog, estava pensando em sortear um curso na tecnoponta treinamentos, lugar onde eu ministro os cursos de linux, e alguns outros como cabeamento óptico e metálico, wireless, Telefonia IP e Actions Script 3. O que acham da promoção ? Que tipo de promoção sugerem ? Espero a opinião de vocês!

Semana que vem estarei fazendo uma palestra sobre Linux na Fatec de Praia Grande, e um Workshop na Unisanta. Depois eu posto mais informações sobre os eventos. Hoje farei uma palestra sobre Desenvolvimento de Jogos na FALS em Praia Grande.

Tem alguns posts no forno, aguardem…

Até mais!

Tags: , , ,

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!

June 26th, 2008


…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe -- quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

Script para manutenção de usuários -- versão 2

June 14th, 2008


Em janeiro postei um script que eu fiz em sala de aula com os alunos, agora em uma nova turma, incrementamos ele, não deu tempo de terminar tudo em sala e eu fiquei de terminar e postar aqui. Ficou bem legal, a nova versão esta baseada em dialog.

Veja o script a baixo

#!/bin/bash

#
# Script Manutenção de Usuários
# Versão: 2.0
#
# Gustavo Lichti
# gustavo.lichti@gmail.com
#

add(){
nome=$(dialog --stdout --title 'Criar novo usuário' \
--inputbox 'Digite o login…' 0 0 ) &&  \
senha=$(dialog --stdout --title 'Criar novo usuário'\
--passwordbox 'Digite a senha…' 0 0 )

if [ $? = '0' ]; then
useradd $nome && echo "$nome:$senha" | chpasswd -m
fi
menu
}

rmu(){
nome=$(dialog --stdout --title 'Remoção de usuário'\
--menu 'Escolha o usuário…'\
0 40 10 $(cat /etc/passwd | cut -d: -f1,3 | tr : ' ' ))

if [ $? = '0' ]; then
userdel $nome
fi
menu
}

asenha(){
nome=$(dialog --stdout --title 'Alteração de senha' \
--menu 'Escolha o usuário…' 0 40 10\
$(cat /etc/passwd | cut -d: -f1,3 | tr : ' ' )) && \

senha=$(dialog --stdout --title 'Criar novo usuário'\
--passwordbox 'Digite a senha…' 0 0 )

if [ $? = '0' ]; then
echo "$nome:$senha" | chpasswd -m
fi
menu
}

lsu(){
dialog --title 'Lista de usuários' --msgbox \
"$(cat /etc/passwd | cut -d: -f1 | less)" 15 40
menu
}

menu(){
clear
op=$(dialog --stdout --nocancel --title 'Administração de usuários'\
--menu 'Escolha uma opção' 0 0 0 1 'Adicionar usuário'\
2 'Remover usuário'\
3 'Listar usuários'\
4 'Alterar senha'\
5 'sair' )

case $op in
'1') add;;
'2') rmu;;
'3') lsu;;
'4') asenha;;
'5') exit 0;;
*) menu;;
esac
}

menu

Tags: , , ,

Compilando o kernel no Ubuntu -- Parte 1

June 13th, 2008


Na maioria da vezes a compilação de um novo kernel, não é necessária, Um mistério para quem esta entrando no mundo linux é a (re)compilação do kernel, muitas vezes este ato de compilar um kernel é mais uma realização pessoal do que uma necessidade, nas distribuições baseadas no debian, sempre há duas formas e se fazer a compilação, uma delas é da forma tradicional, fazendo tudo na mão, e a outra é gerando um package(.deb) e instalar o novo kernel.

A forma que irei demostrar neste post é a forma tradicional, deixarei para um proximo post a segunda forma de se fazer a compilação.

Ates de começar é necessário instalar alguns pacotes.

apt-get install libncurses-dev

O Primeiro passo é fazer o download do código fonte e descompactar em /usr/src

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.6.tar.bz2
sudo tar -xjvf linux-2.6.25.6.tar.bz2 -C /usr/src/

O segundo passo é entrar dentro do diretório /usr/src e criar um link do diretório que contém o código fonte da versão que acabamos de descompactar para um diretório linux.

cd /usr/src/
sudo ln -s linux-2.6.25.6/ linux

Agora temos que entrar no diretório /usr/src/linux, editar o arquivo Makefile e alterar a variavel extraversion.

cd /usr/src/linux
sudo nano Makefile

Caso seja a primeira vez que esta compilando este código fonte que acabamos de baixar este passo não é necessário, mas se executado, não trará problemas, este comando só limpa a sujeira de compilações anteriores

sudo make mrproper

Quando vamos compilar um kernel, temos que ter um ponto de partida, este ponto, é um arquivo de configuração, temos duas opções, uma delas é um arquivo de configuração padrão, que exige de quem esta compilando o kernel um bom conhecimento do sistema e do hardware, a segunda opção, é o arquivo de configuração do kernel que estamos utilizando no momento, essa é a melhor opção para a gente neste momento.

sudo cp /boot/`uname -r` /usr/src/linux/.config

Agora é a hora que iremos carregar o arquivo de configuração e se necessario, fazer alterações. No nosso caso, só iremos carregar o arquivo sem fazer alterações.

sudo make menuconfig

Feito isso, va até a penultima opção 'Load an Alternate Configuration File' e carrege o arquivo .config enseguida saia ('exit') salvando.

Agora vamos ao passo mais importante, a compilação, este passo pode demorar de varios minutos a varias horas, depende sempre do hardware da maquina.

sudo make
sudo make modules_install

Agora só falta copiar o kernel e os seus arquivos de configuração para o diretório /boot

sudo cp .config /boot/config-2.6.25.6-lichti
sudp cp System.map /boot/System.map-2.6.25.6-lichti
sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.25.6-lichti

Agora temos que criar o initrd, o responsável por carregar nossos módulos na inicialização do sistema. Aqui tem uma curiosidade, no debian ainda usamos o utilitario mkinitrd, no ubuntu esse utilitario não é mais utilizado por estar defasado, o utilitario usado agora é o mkinitramfs

mkinitramfs -o /boot/initrd.img-2.6.25.6-lichti 2.6.25.6-lichti

Agora só falta editar o arquivo menu.lst do grub e adicionar algumas linhas ao final dele

sudo nano /boot/grub/menu.lst

Agora adicione essas linhas ao final

title        Ubuntu 8.04, kernel 2.6.25.6-lichti
root        (hd0,1)
kernel        /boot/vmlinuz-2.6.25.6-lichti root=UUID=46f5f474-a4b6-48c7-ba4c-1f7ad207361e ro quiet splash locale=pt_PT
initrd        /boot/initrd.img-2.6.25.6-lichti
quiet

title        Ubuntu 8.04, kernel 2.6.25.6-lichti (recovery mode)
root        (hd0,1)
kernel        /boot/vmlinuz-2.6.25.6-lichti root=UUID=46f5f474-a4b6-48c7-ba4c-1f7ad207361e ro single
initrd        /boot/initrd.img-2.6.25.6-lichti

Pronto, agora é só reiniciar, e lá no gerenciador de boot, selecionar o seu novo kernel.

Tags: , , , ,

Teclas de atalhos do Firefox

June 9th, 2008


O Navegador Web Firefox a cada dia que passa ganha mais adeptos, muitos desses novos usuários, não conhecem as teclas de atalhos deste navegador, as teclas de atalhos auxiliam muito na navegação e aumentam a produtividade.

Ctrl D => Adicionar aos favoritos
Alt Seta Esquerda => Voltar
Ctrl B => Lista dos favoritos
F7 => Caret Browsing(Hbilita um cursor na página, permitindo que se faça seleções com o teclado)
Ctrl W => Fechar Aba
Ctrl F4 => Fechar Aba
Ctrl Shift W => Fechar o programa
Alt F4 => Fechar o programa
Ctrl Shift T => Abre a última aba fechada
Ctrl C => Copiar
Ctrl X
=> Recortar
Ctrl -- =>  Diminui o tamanho do texto
Shift Delete => Apaga uma opção do auto-completar
Ctrl J => Lista de downloads
F3 => Pesquisar
Ctrl G => Pesquisar
' => Pesquisa rápida de links
/ => Pesquisa rápida
Ctrl F => Pesquisar na página
Shift Backspace => Avança para a próxima página
Alt Seta Direita => Avança para a próxima página
F11 => Full Screen
Ctrl H => Lista do histórico
Alt Home => Vai para a pagina home
Ctrl + => Aumenta o tamanho do texto
F6 => Vai para o próximo frame
Shift F6 => Volta ao frame anterior
End => Vai ao fim da página
Home => Vai ao fim da página
Ctrl T => Nova aba
Ctrl Tab => Próxima aba
Ctrl PageDown => Próxima aba
Ctrl N => Nova janela
Ctrl O => Abrir arquivo
Ctrl Enter => Abre um link selecionado em nova aba
Shift Enter => Abre um link selecionado em nova janela
Ctrl U => Código fonte
Ctrl V => Colar
Ctrl Shift Tab => Aba anterior
Ctrl Page Up => Aba anterior
Ctrl P => Imprimir
F5 => Atualizar
Ctrl R => Atualizar
Ctrl F5 => Atualizar ignorando o cache
Ctrl Shift R => Atualizar ignorando o cache
Ctrl O => Volta o texto para o tamanho padrão
Ctrl S => Salva a pagina como
Ctrl A => Seleciona tudo
Alt D => Seleciona a barra de endereço
F6 => Selecona a barra de endereço
Ctrl L => Seleciona a barra de endereço
Esc => Parar
Ctrl Z => Desfazer
Ctrl K => Pesquisar na web

Tags: ,

Jobs -- Trabalhando com aplicações em background

June 6th, 2008


Quando trabalhamos em modo texto no linux, muitas vezes temos a necessidade de roda um outro programa, para obter alguma informação especifica. Em casos que o usuário esta usando o ambiente gráfico, ele pode a qualquer momento abrir um novo terminal ou uma nova aba caso o terminal que esteja sendo usado tenha suporte a abas. E quando o usuário esta usando o modo texto(tty1) ? Bom neste caso ele tem mais 5 terminais do tty2 ao tty6, neste caso eu já estaria convencido em usar os recursos dos Jobs, mas alguns ainda vão dizer que para isso os jobs não possuem utilidade. Então, e se você estiver acessando um servidor via SSH, o que vai fazer ? abir uma nova conexão para cada novo processo ? Eu acredito que não!

Bom, o que é, e como funciona esse tal de jobs ?

É bem simples, abra um terminal (tty1, gnome-terminal, konsole, xterm) e faça:

gustavo@gustavo-laptop:~$ nano

Você vai ter a tela a baixo:

Agora você quer abrir um outro arquivo, mas não quer fechar esse que você esta editando no momento. Então você agora deve acionar a seguinte combinação de teclas:

Ctrl Z

Isto colocara sua aplicação em background, você vera na tela algo assim:

agora faça:

gustavo@gustavo-laptop:~$ nano /etc/mtab

Agora que você viu a informação desejada, e que voltar ao arquivo anterior, mas não quer fechar esse ainda. Faça novamente:

Ctrl Z

E agora, como faço para saber quais aplicações estão em background e como faço para trazer ela para o foreground ? Simples, execute este comando:

gustavo@gustavo-laptop:~$ jobs

Bom, agora você já sabe que o comando jobs nos mostra as aplicações que estão em background, e agora como trazer ela para o foreground?

Para trazer um aplicação para foreground usamos o comando fg, e se você percebeu, quando pressionamos ctrl z e quando chamamos o comando jobs, antes do nome do aplicativo que esta em background aparece um numero entre colchetes, ex: [1], é exatamente isso que você esta pensando, esse numero representa esta aplicação que esta ao lado dele. Agora faça:

gustavo@gustavo-laptop:~$ fg 1

você voltará a aplicação que você havia iniciado no inicio deste post

Agora você já consegue trabalhar com várias aplicações ao mesmo tempo, agora vamos ver a utilizacão de jobs em um outro caso. Você esta vai fazer o download do firefox novo, e vai usar o wget no terminal.

Então abra um terminal e digite:

gustavo@gustavo-laptop:~$ wget http://tinyurl.com/58euhq

Neste momento você tem que aguardar o termino do download, então você pensa "vou colocar em background", parabéns, só que faça o teste agora, execute a linha a cima, olhe a porcentagem do download e pressione ctrl z, agora aguarde um minuto.

….

Estamos aguardando um minuto com você.

….

Pronto, agora você já sabe o que fazer traga a aplicação para foreground:

gustavo@gustavo-laptop:~$ fg 1

Perceba que o download ainda não acabou e não evoluiu, e agora? As aplicações em background não funcionam? Funcionam sim. Para isso, após pressionar ctrl z, precisamos ativar a aplicação em backgroud com o comando bg. Observe:

gustavo@gustavo-laptop:~$ wget -nv http://tinyurl.com/58euhq

Observe que agora tem o parâmetro -nv no comando wget, para ele não mostrar o andamento na tela, em seguida faça: ctrl z

Olhe a linha e observe "Stopped" quando colocamos a aplicação em background ele pausa a aplicação e para isso usamos o bg para mandar continuar executando a tarefa em background

Veja:

gustavo@gustavo-laptop:~$ bg 1

Em seguida:

gustavo@gustavo-laptop:~$ jobs

Pronto veja que agora ao invés de "Stopped" esta "Running"

Caso você queira iniciar um aplicação em background basta adicionar ao final da linha &. Veja:

gustavo@gustavo-laptop:~$ wget http://tinyurl.com/58euhq &

Em seguida:

gustavo@gustavo-laptop:~$ jobs

Pronto, espero ter conseguido explicar o uso dos Jobs em background. Qualquer coisa faça um comentário. :)

Tags: , , , , ,