segunda-feira, 10 de junho de 2024

Gerenciando máquinas virtuais usando virt-manager

Para começar, verifique se sua CPU suporta tecnologia de virtualização. Seu sistema precisa ter um processador Intel VT-x (vmx) ou AMD-V (svm). Para verificar isso, execute o seguinte comando egrep. A saída do comando deverá ser maior que 0, se a virtualização for suportada.

egrep -c '(vmx|svm)' /proc/cpuinfo


Verifique se a virtualização KVM é suportada usando `kvm-ok`. Se este comando estiver faltando,, instale o pacote cpu-checker da seguinte maneira:

sudo apt install cpu-checker -y


Para verificar a compatibilidade do seu sistema, execute o seguinte comando:

kvm-ok


Para instalar, atualize as listas de pacotes e repositórios e, em seguida, instale o QEMU/KVM junto com outros pacotes de virtualização da seguinte maneira:

sudo apt update

sudo apt install qemu-kvm virt-manager virtinst libvirt-clients bridge-utils libvirt-daemon-system -y

Iniciando a virtualização

Neste ponto, instalamos o QEMU e todos os pacotes essenciais de virtualização. A próxima etapa é iniciar e ativar o daemon de virtualização libvirtd. Portanto, execute os seguintes comandos para habilitá-lo/iniciá-lo:

sudo systemctl enable --now libvirtd

sudo systemctl start libvirtd


Para verificar se o serviço de virtualização está funcionando, basta executar o seguinte comando:

sudo systemctl status libvirtd


Ajustar as permissões

Finalmente, se você deseja adicionar o usuário atualmente logado aos grupos kvm e libvirt para que ele possa gerenciar as máquinas virtuais, basta inserir os dois comandos a seguir:

sudo usermod -aG kvm $USER

sudo usermod -aG libvirt $USER

Você precisa fazer logoff e logon para receber as permissões corretas.


Virt-manager

Você pode iniciar a ferramenta QEMU/KVM GUI, que é o Virtual Machine Manager na linha de comando digitando:

virt-manager

A tela inicial é:


Se você receber uma mensagem de erro e você adicionou seu usuário aos grupos (como mostrado anteriormente), pode ser que você esqueceu de fazer logoff e logon para que o usuário possa receber estas opções.


segunda-feira, 3 de junho de 2024

Como acessar o vscode via internet

Existem algumas opções para acessar o Visual Studio Code (VS Code) via HTTPS.

Normalmente isto envolve o uso do Visual Studio Code Server ou de um ambiente de desenvolvimento remoto como GitHub Codespaces, 

Vou mostrar abaixo duas maneiras de configurar e acessar o VS Code via web:


Método 1: Codespaces GitHub

  1. Inscreva-se e configure: certifique-se de ter uma conta no GitHub e acesso ao GitHub Codespaces.
  2. Crie um espaço de código (codespace).
  3. Navegue até o repositório que você deseja trabalhar.
  4. Clique no botão Code e selecione Open with Codespaces.
  5. Siga as instruções para criar um novo Codespace.

Depois que o Codespace é criado, ele é aberto em uma guia do seu navegador, e fornece um ambiente VS Code acessível via HTTPS.


Método 2: Transforme seu computador em um servidor vscode (Self-Hosted VS Code Server)

Para hospedar sua própria instância do VS Code acessível via web, você pode usar o code-server do Coder. Mais informações podem ser achadas aqui.

Se você utiliza Ubuntu, a instalação é super simples. Basta utilizar o script de instalação (veja mais aqui) denominado install.sh, que automatiza a maior parte do processo. O script usa o gerenciador de pacotes do sistema para fazer a instalação dos pacotes necessários.

A instalação é feita baixando e rodando o script com a linha de comando abaixo:

curl -fsSL https://code-server.dev/install.sh | sh

Com isto você poderá acessar o vscode via web utilizando o endereço http://127.0.0.1:8080.


A configuração está no arquivo $HOME/.config/code-server/config.yaml, como mostrado abaixo:

h3dema@station01:~$ cat $HOME/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: suasenhaaqui
cert: false


Note que você pode permitir o acesso a outras interfaces de rede. Por exemplo se quiser que o vscode seja acessível por todas as interfaces altera bind-addr para:

bind-addr: 0.0.0.0:8080


É necessário uma senha para acessar o vscode. Esta senha está no campo password deste arquivo de configuração. Inicialmente este campo contém um valor aleatório, que você pode trocar para outro valor que você ache melhor, como por exemplo:

password: suasenhaaqui


O método recomendado de acesso é via SSH forward, assim o usuário é autenticado pelo SSH server para fazer o acesso web. Contudo você pode habilitar, https e confiar somente na senha de acesso. Recomendo você só faça isto em uma rede privada, com controle estrito dos usuários que tem acesso a ela. Mas se você decidiu mesmo fazer isto, tem algumas configurações adicionais:

Você precisa alterar a linha "cert: false" no arquivo de configuração do code-server para

cert: true
Altere ainda a porta de acesso:
bind-addr: 0.0.0.0:443

Permita que o code-server escute a porta 443:
sudo setcap cap_net_bind_service=+ep /usr/lib/code-server/lib/node

Reinicie o code-server:
sudo systemctl restart code-server@$USER

Pronto você agora pode acessar o vscode usando o endereço IP (ou o nome da sua estação). No meu caso, posso acessar utilizando https://station01 como indicado abaixo. Note que como o certificado é auto-assinado, o navegador indica navegação não segura 😓.












sexta-feira, 31 de maio de 2024

Alterar o tamanho da partição root no Ubuntu via linha de comando.

Este exemplo temos um computador cujo disco principal tem algum espaço livre (veja a saída de parted abaixo) e queremos alocá-lo para a partição de root (/). Contudo o acesso que temos ao computador é remoto via ssh. O que fazer?


Como está o nosso servidor

h3dema@station01:~$ df
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        59G   35G   21G  63% /
/dev/sda2       512M  6.1M  506M   2% /boot/efi

Observação: Removi da saída acima as linhas com tempfs.

h3dema@station01:~$ sudo parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  2097kB  1049kB                                     bios_grub
 2      2097kB  540MB   538MB   fat32        EFI System Partition  boot, esp
 3      540MB   64.4GB  63.9GB  ext4
        64.4GB  85.9GB  21.5GB  Free Space

Vemos que temos um espaço livre de ~21GB no disco. Este espaço pode ser alocado para sda3. Note que tivemos que utilizar "print free" para ver também o espaço livre de disco. O comando "print" só mostra as partições criadas (isto é, 1, 2, e 3 mostrado acima).

Fazendo a alteração da partição

Podemos fazer a alteração utilizando o parted:

h3dema@station01:~$ sudo parted /dev/sda
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart 3 100%
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? yes
(parted) print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sda: 85.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                  Flags
 1      1049kB  2097kB  1049kB                                     bios_grub
 2      2097kB  540MB   538MB   fat32        EFI System Partition  boot, esp
 3      540MB   85.9GB  85.4GB  ext4

Você precisa reiniciar o computador.

Crescer o sistema de arquivos

Contudo ao reiniciar você irá notar que a partição cresceu, por exemplo, usando parted, você irá notar que agora tem ~80GB. 
Contudo se você usar novamente "df " para ver o espaço em disco verá que o espaço não foi todo preenchido (a saída ainda irá mostrar 59GB como antes).

Para ilustrar melhor o problema, vamos abrir a versão gráfica de parted -- chamada gparted. 
Lembre-se que deveríamos estar alterando um servidor remoto via SSH e que não tem uma interface gráfica.
Na tela do gparted notamos uma exclamação em vermelho na partição /dev/sda3.


Se solicitamos informações sobre esta partição, gparted irá mostrar a seguinte mensagem:

Ou seja, ainda precisamos crescer o sistema de arquivos. É por isto que "df" não mostra o tamanho que esperávamos.

Gparted ou parted não permitem crescer o sistema de arquivos de uma partição montada.

Contudo temos um outro recurso: resize2fs.
Com ele podemos fazer esta alteração como mostrado abaixo.

h3dema@station01:~$ sudo resize2fs /dev/sda3
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/sda3 is mounted on /; on-line resizing required
old_desc_blocks = 8, new_desc_blocks = 10
The filesystem on /dev/sda3 is now 20839675 (4k) blocks long.

As partições agora ficaram (note que removi as linhas com tempfs):

h3dema@station01:~$ df
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        78G   35G   40G  47% /
/dev/sda2       512M  6.1M  506M   2% /boot/efi


Apesar da alteração estar sendo mostrada, recomendo que você reinicie o computador novamente.


Resumindo:

  • Use parted para alterar o tamanho da partição
  • Use resize2fs para crescer o tamanho do sistema de arquivos e ocupar todo o espaço que você adicionou com parted.


Observações
1- Você pode solicitar ao parted a informação de disco livre sem ter que usar o modo iterativo mostrado acima. O comando é

sudo parted -s -a opt /dev/sda "print free"

2- Se você for alterar uma partição que pode ser desmontada (não é nosso caso neste exemplo), você também pode 

sudo parted -s -a opt /dev/sda "resizepart 3 100%"

No nosso exemplo, o comando acima irá tentar executar, mas não será capaz de emitir a mensagem para alterar uma partição em uso (que aparece no modo iterativo).

3- Note que não informamos no comando resize2fs qual o tamanho desejamos crescer o sistema de arquivos. Assim, ele irá crescer até 100 % do tamanho da partição. Você pode especificar um tamanho. Leia mais aqui.

Permitir que seu usuário execute sudo sem senha

 Primeiramente, o seu usuário deve pertencer ao grupo sudo.

Você irá então editar o arquivo /etc/sudoers. Este arquivo não deve ser editado com um editor de texto normal. Existe um comando especial para isto denominado visudo.

visudo /etc/sudoers

Para alterar para um usuário específico, adicione a linha abaixo no final do arquivo sudoers usando o comando sudo visudo, trocando myuser pelo nome do seu usuário:

myuser ALL=(ALL) NOPASSWD: ALL


Se for para um grupo inteiro, a linha passa a ser
%mygroup ALL=(ALL) NOPASSWD: ALL


Mais informações na página sudoers da documentacao do Ubuntu ou na documentação do comando.

sábado, 25 de maio de 2024

Utilizando o comando `perf` no Ubuntu para verificar o funcionamento do scheduler.

 O comando perf no Linux é uma ferramenta de análise de desempenho que fornece informações sobre o desempenho do sistema e dos aplicativos rodando no sistema.

Mais informações podem ser encontradas no site de Brendan.

Neste post vamos descrever uma das opções deste comando denominada perf-sched.

perf sched é um subcomando projetado para analisar e monitorar o comportamento do agendador (scheduler) Linux. Ele fornece informações sobre como o agendador está lidando com tarefas, o que pode ser crucial para diagnosticar problemas de desempenho relacionados ao agendamento de tarefas, uso da CPU e latência do sistema. Seus principais recursos são:

Gravação de eventos do agendador: Captura vários eventos relacionados ao agendador, como mudanças de contexto, migrações de tarefas e latência de agendamento.

Repetição e visualização: Permite a reprodução de eventos registrados do agendador para visualizar a execução de tarefas e compreender o comportamento do agendamento ao longo do tempo.

Análise de Latência: Mede e relata latências de agendamento, ajudando a identificar tarefas que estão enfrentando altas latências ou que estão sem tempo de CPU.


Instalação da ferramenta no Ubuntu 22

Existe uma opção para instalação do perf utilizando apt.

Você irá utilizar o comando mostrado abaixo:

apt -y install linux-tools-common linux-tools-generic linux-tools-`uname -r`


perf-sched

Contudo existe um problema. Nesta versão do perf disponível no repositório do apt, o subcomando sched não existe. Para isto precisamos compilar uma nova versão de perf. A sequência de comandos abaixo para fazer isto.

Primeiro vamos instalar algumas dependências:

apt -y update
apt -y install libelf-dev and libtraceevent-dev
apt -y install flex bison
apt -y install linux-source

Criamos um local para compilar o código. A variável DIR na linha abaixo define o local. Você pode trocar para qualquer outro local que você desejar. Note que o fonte é baixado pelo apt (última linha do bloco de comandos acima) no diretório /usr/src/ compactado com bz2.

DIR=$HOME/linux-source
mkdir -p $DIR
cd $DIR
tar -xf /usr/src/linux-source*.bz2
cd linux-source-*

Vamos preparar para a compilação utilizando a configuração do sistema atual e executando o make:

cp /boot/config-$(uname -r) ./.config
make oldconfig

Note que make vai te pedir um monte de informações. Normalmente aceitar a opção default para cada uma delas funciona bem para a compilação do perf-sched.


Finalmente, compilamos o código:

cd tools/perf
make prefix=$DIR/install install

Após a execução destes comandos, os executáveis são criados no diretório $DIR/install/bin.

Você precisará alterar o PATH para adicionar este diretório, ou mover os arquivos para outros locais no PATH atual.


Você pode testar o resultado com:

cd $DIR/install/bin
./perf sched record -- sleep 10
./perf sched latency



sexta-feira, 24 de maio de 2024

Desabilitar wpa_supplicant no Ubuntu em um computador sem adaptador WiFi

Nas versões mais novas do Ubuntu Desktop o aplicativo wpa_supplicant, que é utilizado para acessar a rede sem fio, fica ativado mesmo que você não tenha uma placa de rede WiFi no seu computador. Para conferir se ele está rodando no seu computador basta efetuar o comando abaixo. Se uma linha semelhante aparecer, o wpa_supplicant está rodando (à toa) no seu computador.


Para desativá-lo é relativamente simples. Basta entrar os dois comandos abaixo como root. O primeiro desativa o programa e o segundo impede que ele seja ativado quando o computador for reiniciado.

systemctl stop wpa_supplicant

systemctl disable wpa_supplicant



segunda-feira, 6 de maio de 2024

Remover a imagem de fundo no Ubuntu 20+

Até a versão 18, você consegue fazer esta alteração utilizando a opção "Background" em "Settings". Contudo as versões mais recentes do Ubuntu Desktop removeram a capacidade de definir o plano de fundo com uma cor sólida de "Settings".

Você pode executar um comando em uma janela de terminal para realizar esta tarefa:


Para limpar a configuração de imagem atual:

gsettings set org.gnome.desktop.background picture-uri none

Se você usar o modo escuro, poderá limpar a configuração de imagem atual com:

gsettings set org.gnome.desktop.background picture-uri-dark none


Para definir a cor primária

O comando abaixo permite definir a primeira cor em um gradiente ou a cor sólida da tela:

gsettings set org.gnome.desktop.background primary-color '#000000'

Note que você deverá fornecer a cor em RGB. Você pode usar este link para escolher a cor.

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