terça-feira, 31 de outubro de 2017

Restaurando o boot no Ubuntu

Você já deve ter passado pela situação de seu sistema não iniciar e indicar falha de boot.
Se não passou, você é um felizardo. Comigo aconteceu novamente agora, o nobreak não deu conta de suportar o tempo de falha e o computador desligou na marra e corrompeu o boot.

Existem muitas maneiras de recuperar o boot. Vou mostrar neste post a maneira mais fácil que conheço. Para isto você vai precisar de um cd de boot do ubuntu e de conexão internet no computador que deu problemas.

Iremos instalar uma ferramenta chamada Boot-Repair que permite reparar problemas de inicialização freqüentes que você pode encontrar no Ubuntu, como quando você não pode iniciar o Ubuntu após instalar o Windows ou outra distribuição do Linux, ou quando você não pode inicializar o Windows após a instalação do Ubuntu ou quando o GRUB não é exibido, quando um atualização quebra o funcionamento do GRUB, etc.
O Boot-Repair permite resolver esses problemas com um simples clique.
Fazendo geralmente a reinstalação do GRUB e a restauração do acesso aos sistemas operacionais que você instalou antes do problema.



Passo 1 - Dar boot no computador com o cd do Ubuntu.

Selecione a opção de experimentar o Ubuntu (na sua língua favorita)


Passo 2 - Instalar o boot-repair

Quando a tela do ubuntu abrir, selecione um terminal (por exemplo usando o Dash como na figura abaixo).

Digite os comandos abaixo para instalar o programa. Você precisará adicionar o repositório do boot-repair no apt, atualizar a biblioteca do apt e, por fim, instalar o programa usando apt-get.

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get -y update


sudo apt-get install -y boot-repair


Executando o boot-repair


Inicialize Boot-Repair a partir do (1) Dash ou (2) escrevendo 'boot-repair' em um terminal.
Clique no botão "Reparação recomendada" que utiliza configurações padrão - que na maioria das vezes funciona.

Você pode ainda tentar opções avançadas caso as configurações padrão não funcionem.

quinta-feira, 19 de outubro de 2017

Usando um linux como roteador caseiro

Podemos utilizar um computador com linux e duas interfaces de rede como roteador.
Um roteador recebe informações que chegam através do seu sinal de banda larga através de um modem, decifra os dados e os entrega ao seu computador. O roteador também escolhe a melhor rota para o pacote de dados para que você receba as informações rapidamente.
Em um próximo post mostraremos como usar o roteador linux para utilizar duas conexões internet.

A nossa rede funciona como ilustrado na figura abaixo. A rede interna funciona com endereços privados, na faixa de 192.168.0.0 a 192.168.0.255 ou 192.168.0.0/24. Utilizamos o Ubuntu LTS 14.04.5 para os exemplos de configuração a seguir. Caso você esteja utilizando uma outra versão de linux, as configurações podem ser diferentes.


Configurando as interfaces

Precisamos editar o arquivo /etc/network/interfaces.

Vamos conferir as interfaces que possuimos usando ifconfig.

Veja que em eth0 foi configurado o endereço 10.0.2.15 que foi fornecido pelo nosso provedor e é por ele que faremos o acesso à internet. Enquanto em eth1 está configurado o endereço 192.168.0.1 que configuramos manualmente no arquivo "interfaces".
Vamos ver se conseguimos acessar do roteador algum computador na internet, antes de continuar as configurações. Para isto iremos dar um ping no endereço 8.8.8.8, que é o DNS público do Google. Caso isto não funcione, deve ter algum erro de conexão ou configuração. Neste post não entraremos nestes detalhes.


Podemos ver na saída do ping que conseguimos alcançar o endereço, portanto nossa internet está ok.

Criando NAT

O próximo passo é criar um NAT, isto é, fazer com que o linux pegue todo o tráfego de rede da rede interna (que vem de eth0) que é destinado à internet e faça a conexão como se fosse o computador interno, usando o endereço da interface externa (eth1). Assim o linux fica transferindo as requisições internas para o computador correto que está na internet e quando este computador da internet responde o linux manda para o computador da rede intena (192...) que fez a requisição. Assim todos os computadores da rede interna podem navegar.

Todo o procedimento abaixo é realizado como root.
Para fazer isto precisamos de criar uma regra no iptables e habilitar um recurso chamado "forwarding". Isto é feito com os comandos abaixo.

Ok. Isto é suficiente para os computadores da rede interna poderem acessar a internet.
Só tem um problema. Ao reiniciar o roteador, o comando do iptables é perdido.
Assim precisamos garantir que este comando seja aplicado toda vez que o roteador for reiniciado.

Para isto vamos criar um pequeno script de inicialização em /etc/init.d denominado firewall.
Vamos precisar ainda de gravar a configuração atual do iptables. Para esta segunda parte usaremos iptables-save para gerar o arquivo, como mostrado abaixo:
Note na saída mostrada na tela pelo comando a regra com POSTROUTING MASQUERADE.

Vamos criar o arquivo de inicialização do firewall. A imagem abaixo mostra como criar o arquivo.
As linhas com # (exceto a primeira linha do arquivo) são somente comentários e podem ser removidas.

Note que é necessário executar chmod para dar permissão de execução ao arquivo.
Agora basta criar os links para que este script seja chamado nos inits 2, 3, 4 e 5. Isto pode ser feito com as quatro linhas de comando mostradas abaixo:

Pronto, agora o roteador está funcional e pode ser reiniciado que retornará corretamente.
Em outro post trataremos de melhorar a segurança da rede com outros comandos iptables.
Lembre-se que toda vez que alterar alguma configuração via iptables, ela deve ser gravada usando o comando iptables-save > /etc/firewall/iptables-save.dat.

Criando microSD Raspbian no Ubuntu

Vamos ver como instalar o Raspbian usando ferramentas básicas no Ubuntu.
Primeiro faça o download do Raspbian direto do site. Neste nosso exemplo, mostramos como fazer para o Raspbian Strecth.

Passo 1) Conecte o microSD no seu computador.

Se o seu computador tiver um slot para cartões SD, insira o cartão. Caso contrário, insira o cartão em um leitor de cartão SD e, em seguida, conecte o leitor ao seu computador.

Passo 2) Identificar qual o dispositivo de montagem.

Execute df -h. O novo dispositivo que apareceu é o seu cartão SD. Se nenhum dispositivo aparecer, o seu sistema não faz a montagem automática de dispositivo .
Note na saída abaixo que nosso dispositivo é /dev/sdb. Ele tem duas partições /dev/sdb1 e /dev/sdb2.


Se o df não forneceu o dispositivo, você poderá procurá-lo usando o dmesg.
Execute dmesg | tail e  exibirá as mensagens do sistema mais recentes, que devem conter informações sobre a conexão do dispositivo do cartão SD. Veja a imagem abaixo a indicação de que o nosso dispositivo é /dev/sdb. Note a linha [168661.699185]  sdb: sdb1 sdb2 que mostra o dispositivo e suas partições.


Como as partições foram montadas temos que desmontá-las usando os comandos:

sudo umount /dev/sdb1
sudo umount /dev/sdb2



Passo 3) Copiar os dados para o microSD.

Para escrever a imagem o cartão utilizamos o comando dd abaixo.
A nossa imagem chama-se 2017-09-07-raspbian-stretch.img. Note que a sua pode ter um nome diferente. Este nome vai se colocado no parâmetro if=, como mostrado na imagem.
O parâmetro of= indica o dispositivo de saída, isto é, o dispositivo do microSD que você descobriu no passo 2. Todos os dados do microSD serão apagados, portanto NÃO ERRE. Note que você tem que passar o nome do dispositivo, isto é, /dev/sdb (no meu caso) -- é o nome sem o número final.


Observe que o tamanho do bloco (no parâmetro bs) é de 4M. Este valor deve funcionar, porém caso você tenha algum problema com ele, tente um valor menor, como 1M. Usar um valor menor demora mais, ok?

Se o comando funcionou corretamente você verá a saída apresentada na figura acima, que indica a mesma quantidade de registros de entrada e saída.

sexta-feira, 6 de outubro de 2017

Terminal padrão no Ubuntu

O Ubuntu possui vários emuladores de terminal que podemos utilizar.
Entre eles está xterm e o terminal gnome.
Se você instalar o pacote de desktop kubuntu, você também pode usar o konsole em ubuntu.
Você também pode utilizar o terminador.

Podemos definir o emulador de terminal padrão usando o comando update-alternatives. Você precisa abra uma janela do terminal e digite o seguinte comando:

$ sudo update-alternatives --config x-terminal-emulator

A janela mostrada a seguir se abre e permite selecionar o terminal padrão:
Você verá algo semelhante, embora você possa ver opções diferentes em seu sistema.
Basta digitar o número da seleção e clicar em Enter.

Assim, depois desta seleção, quando você inicia o terminal através do item do menu ou digitando x-terminal-emulator na linha de comando, você verá a janela do terminal que você indicou em update-alternatives.

Desabilitar ModemManager no Ubuntu

 ModemManager provides a unified, high-level interface to control all kinds of modems: 4G/5G modems (LTE/NR) 3G modems NB-IoT / Cat-M1 modul...