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