domingo, 5 de maio de 2019

Como encolher uma máquina virtual do VirtualBox e liberar espaço em disco

Por padrão, o VirtualBox cria discos dinâmicos (.vdi) que crescem com o tempo à medida que você adiciona dados. Contudo, se você excluir dados da máquina virtual posteriormente, você verá que  que o disco não diminui automaticamente.

Você pode reduzir manualmente um disco dinâmico usando  um conjunto de comandos.

Primeiro passo - remover arquivos desnecessários

Você deve apagar todos os dados que você não deseja mais no disco dentro da máquina virtual para liberar espaço antes de continuar. Exclua os arquivos que você não precisa, desinstale os programas que não são mais usados e esvazie sua lixeira.

Segundo passo - zerar os blocos não usados

Então, você precisará substituir esse espaço vazio por zeros.
Você precisará instalar o utilitário zerofree. Ele está disponível nos repositórios de software de muitas distribuições Linux - com o Ubuntu.
No Ubuntu para instalar este programa basta executar o seguinte comando no terminal dentro de sua máquina virtual:
$ sudo apt-get install zerofree

Você não pode usar o zerofree na sua partição raiz (/) no ambiente Linux padrão.
Para liberar espaço nesta partição, você precisará inicializar em um modo de recuperação no qual a partição raiz normal não está montada. Assim você precisará parar o funcionamento da máquina virtual para isto.

Para entrar neste modo de recuparação, reinicie sua máquina virtual e pressione repetidamente a tecla "Esc" enquanto estiver inicializando para acessar o menu do GRUB. Quando o menu GRUB aparecer, selecione “* Opções avançadas para o Ubuntu” e pressione Enter.
Selecione a opção (modo de recuperação) associada ao kernel mais recente do Linux - ou seja, a opção que tenha o maior número de versão próximo ao topo da lista. Pressione Enter para selecioná-la. Selecione no menu que aparece a opção de obter o shell do linux.



Se sua máquina virtual foi criada com as configurações padrão do VirtualBox com Ubuntu, ela terá apenas uma partição denominada /dev/sda1 que é a partição raiz.
Você precisará adaptar o próximo comando se você configurou de maneira diferente seu Linux, por exemplo, com vários discos ou várias partições. Se tiver várias partições ou discos, você deverá usar o zerofree para cada um deles
O comando abaixo zera os blocos não usados de /dev/sda1 (note que ele não apaga arquivos):

$ zerofree -v /dev/sda1

Terceiro passo - liberar o espaço

Desligue a máquina virtual e entre no shell de sua máquina física.
Primeiro localize o disco que você quer reduzir usando o comando

$ VBoxManage list hdds


Agora você deve dar o comando para reduzir o tamanho do disco:
$ VBoxManage.exe modifymedium disk /VMS/VM/WINET/Simulação/Simulação.vdi --compact


Instalar o OMNET++ no Ubuntu

Você deve ler o guia de instalação do omnet no link https://doc.omnetpp.org/omnetpp/InstallGuide.pdf.
Contudo, no meu Ubuntu 18. Alguns passos estão faltando.

Vamos começar abrindo um Terminal (CRTL + ALT + T) no Ubuntu para que vocẽ entre com os comandos de instalação.

Pre-requisitos

A primeira parte da instalação consiste em instalar pacotes de pré-requisitos
Você pode executar a instalação usando a interface gráfica do usuário ou a partir do terminal, o que você preferir. Vou exemplificar com os comandos no terminal.

$ sudo apt-get install build-essential gcc g++ bison flex perl \
       python python3 qt5-default libqt5opengl5-dev tcl-dev tk-dev \
      libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-1.0

$ sudo apt-get install openmpi-bin libopenmpi-dev

$ sudo apt-get install libwebkitgtk-3.0-0 libopenscenegraph-dev  openscenegraph-plugin-osgearth  libosgearth-dev

$ sudo apt-get install libpcap-dev

$ sudo apt-get install osgearth osgearth-data

$ sudo apt-get install gnome-color-chooser

Instalando o OMNET

Faça o download do OMNeT ++ a partir do site http://omnetpp.org.
Certifique-se de selecionar o download do omnetpp-5.4.1-src.tgz. (Este post foi testado com a versão 5.4.1) Copie o arquivo para o diretório em que você deseja instalá-lo.
No meu caso preferi colocar no $HOME (que é o home do meu usuário).

No terminal e extraimos o arquivo usando o seguinte comando:
$ tar xvfz omnetpp-5.4.1-src.tgz

Isso cria um subdiretório omnetpp-5.4.1 com os arquivos OMNeT ++ nele.
O OMNeT ++ precisa que seu diretório bin esteja no PATH.
Para adicionar bin ao PATH temporariamente (apenas no shell atual), mude para o diretório OMNeT ++ e dê o comando:
$ cd omnetpp-5.4.1
$ . setenv

O script também adiciona o subdiretório lib a LD_LIBRARY_PATH, que pode ser necessário em sistemas que não suportam o mecanismo de rpath.

Para definir as variáveis de ambiente permanentemente, edite .bashrc no seu diretório pessoal.
Use seu editor de texto favorito para editar .bashrc, por exemplo gedit:
$ gedit ~ / .bashrc

Adicione as seguintes linhas no final do arquivo e salve o arquivo. Na minha instalação a segunda linha é desnecessária e pode ser omitda.
$ export PATH=$HOME/omnetpp-5.4.1/bin:$PATH
$ export LD_LIBRARY_PATH=$HOME/omnetpp-5.4.1/lib:$LD_LIBRARY_PATH

Você precisa fechar e reabrir o terminal para que as alterações entrem em vigor.

Com isto seu OMNET deve estar funcionando no Ubuntu.

Criar um arquivo de swap no linux

Recentemente encontrei um servidor cujo administrador tinha criado com uma área de swap muito pequena para a memória RAM disponível.

$ swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   4G   4G   -1

Note que o swap mostrado acima é uma partição, e para alterá-la será necessário utilizar uma ferramenta de edição de partições, que terá que diminuir alguma partição existente para dar espaço para a nova área de swap. 
Como não dava para parar o servidor no momento e eu precisava de mais swap, a solução foi criar um arquivo de swap.

Vamos ver os passos necessários a seguir. Todos os comandos abaixo são dados como root.

1- Precisamos criar o arquivo que irá conter o swap. No meu caso irei criar um swap de 16GB no arquivo /swapfile:
$ fallocate -l 16G /swapfile


2- Vamos preenche-lo de branco. Usamos o dd. Como o tamanho do bloco é de 1024 bytes, precisamos de 12582912 blocos (informados em count) para preencher.
$ dd if=/dev/zero of=/swapfile bs=1024 count=12582912

3- Trocar a permissão (se você esquecer este passo, ao executar o comando do 4º passo, ele irá lembrá-lo disto):
$ chmod 600 /swapfile

4- Definimos agora o arquivo como uma área de swap
$ mkswap /swapfile

5- Ativamos o novo swap
$ swapon /swapfile


6- Para garantir que ele suba em um reboot, precisamos acrescentar a seguinte linha ao arquivo /etc/fstab:
/swapfile swap swap defaults 0 0


7- Verificamos se está tudo ok:
$ swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   4G   4G   -1
/swapfile file       16G   0B   -2

Pronto, o seu linux está com um swap adicional de 16GB.

domingo, 30 de dezembro de 2018

Trocar a imagem de bloqueio do Ubuntu

Fazer esta troca não é muito complicada, pois pode ser feita utilizando a ferramenta de configuração que vêm com o Ubuntu. Ela pode ser vista na imagem abaixo.

Tendo selecionado a ferramenta de configuração, vá para a configuração de plano de fundo e selecione a tela de bloqueio.


Uma janela de seleção como a mostrada abaixo permite você selecionar a imagem que deseja,

Ao clicar no botão selecionar a imagem é selecionada para ser mostrada na tela de bloqueio.

Trocar a imagem de fundo do GRUB

Para mudar a imagem de fundo do GRUB, você precisa copiar sua imagem para a pasta /boot/grub/.

Por exemplo no meu caso, tenho uma imagem chamada ml.jpg no diretório de imagens do meu usuário, assim preciso dar o comando (substitua o caminho da imagem pelo seu):

sudo cp ml.jpg /boot/grub/

Você pode usar imagens no formato JPG / JPEG / PNG.
Contudo lembre-se que o GRUB suporta apenas 256 cores com os formatos JPG e JPEG. Portanto, é melhor usar imagens no formato PNG para mais cores.

Depois de fazer as alterações necessárias no arquivo GRUB, salve e feche-o.

Utilize o comando sudo update-grub2 para atualizar as configurações, como mostramos na imagem abaixo.

Note que o comando irá identificar a imagem e utiliza-la.

Fazer o GRUB usar a última opção

Em um post anterior vimos como configurar o timeout do menu do GRUB.
Se você tiver mais de um sistema operacional em seu sistema, poderá inicializar o último sistema operacional usando o valor GRUB_DEFAULT = saved.
no arquivo /etc/default/grub. Configurando esta opção, sempre que você reinicializar o sistema, o último sistema operacional será rodado.
Note que para fazer este truque funcionar, você deve adicionar uma linha no arquivo de configuração.
Esta linha deve conter GRUB_SAVEDEFAULT = true .
Você ainda deve rodar o comando sudo update-grub2 (ou update-grub) para que as alterações sejam gravadas e tenham efeito.

Configurar o timeout do GRUB

O GRUB2 é o carregador de inicialização padrão para a maioria dos sistemas operacionais Linux derivados do Debian, como por exemplo o meu computador que roda Ubuntu 18. GRUB significa GRand Unified Bootloader e é o primeiro programa que é executado quando o computador é iniciado.
Ele serve para carregar e transferir o controle para o kernel do sistema operacional, isto é, ele tem uma função básica de selecionar o sistema operacional desejado e carregar as funções básicas deste sistema, e, em seguida, o Kernel assume o controle e inicializa o restante do sistema operacional.

Você vai encontrar a base de configuração do funcionamento do GRUB no arquivo /etc/default/grub. Recomendo guardar uma cópia deste arquivo, antes de fazer qualquer modificação, assim fica mais fácil recuperar de um erro.

A primeira opção marcada na figura acima permite selecionar o sistema operacional padrão para inicializar o computador. Se você definir o valor como "0", o primeiro sistema operacional na entrada do menu de inicialização GRUB será inicializado. Se você definir como “1”, o segundo sistema operacional será inicializado e assim por diante.

Por padrão, a entrada selecionada no menu de inicialização (pela opção anterior) começará a rodada em 10 segundos.
Você pode aumentar ou diminuir essa configuração de tempo limite. Se o valor for "0", o sistema operacional padrão iniciará imediatamente a inicialização. Se o valor for “5”, o menu de inicialização aparecerá por 5 segundos, para que você possa selecionar qual sistema operacional deseja carregar quando o sistema for iniciado.

Para que as alterações sejam gravadas e tenham efeito, você ainda deve rodar o comando sudo update-grub2 (ou update-grub).

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