Translate

terça-feira, 20 de outubro de 2020

Ferramentas mudam cálculo de Memória RAM

Comando free assusta testadores do Debian 12 Bookworm RC, em Abril 2023

• Usuários que tentaram o comando free para medir o uso inicial de Memória RAM do Debian 12 Bookworm RC levaram um susto: — quase o dobro do que o free costumava indicar no Debian 11.

O Debian não está mudando tanto assim. — O que muda são as ferramentas free / top, do pacote procps 4.0 — mas isso já vinha ocorrendo com outras ferramentas, pelo menos, desde 2020.

Vale a pena registrar essas mudanças — bem como a dispersão de usuários e desenvolvedores, cada um com sua ferramenta predileta (bolhas), graças à liberdade do mundo GNU / Linux — e os inúmeros “erros de comparação” que se cometem a cada dia, pelo uso de ferramentas diferentes (ou em versões diferentes) entre duas distros ou dois ambientes de trabalho (DE).

Índice

  • Agosto 2020
  • Março 2021
  • Maio 2021
  • Outubro 2021
  • Abril 2023
  • Ferramentas e medições
    • No Conky
    • Em TXT
    • Referências
  • “Monitor do Sistema” e Terminais

Agosto 2020

Aumento aparente de uso de RAM, com o Conky 1.11.6

Desde Agosto 2020, o Conky 1.11.6 passou a mostrar valores bem mais altos de uso de Memória RAM — no openSUSE Tumbleweed, Debian testing, Fedora, Mageia 8 (beta), Void Linux. — Foi o “primeiro susto”, digamos assim.

Proposta do “novo cálculo”, em 2014

Não era bug. — Era uma “correção” do cálculo da “Memória RAM usada” — que foi proposta ou subscrita por Linus Torvalds desde Janeiro 2014 (Kernel 3.14), quando se introduziu em /proc/meminfo um campo “MemAvailable”, exatamente para tornar esse cálculo mais acurado:

Currently, the amount of memory that is available for a new workload, without pushing the system into swap, can be estimated from MemFree, Active(file), Inactive(file), and SReclaimable, as well as the "low" watermarks from /proc/zoneinfo.

However, this may change in the future, and user space really should not be expected to know kernel internals to come up with an estimate for the amount of free memory.

It is more convenient to provide such an estimate in /proc/meminfo. If things change in the future, we only have to change it in one place.

Aplicação do “novo cálculo” ao Conky, em 2019

A aplicação dessa mudança no Conky só foi pedida em Junho 2019; — efetuada em Outubro 2019 (acima); — e ainda demorou 10 meses, até o Conky 1.11.6 chegar às principais distros rolling-release (e ao Fedora).

Foi o marco inicial de um movimento (bem atrasado) para um cálculo tecnicamente mais correto — que aos poucos chega a outras ferramentas — e tempos depois, aos usuários de cada distro.

Naquele momento, a introdução desse “novo cálculo” quebrou a paridade entre os números do Conky e do htop — no que poderíamos chamar de “cálculo antigo”.

Março 2021

Situação após nova reviravolta do Conky

Em Março 2021, o Conky 1.12.1 fez uma reviravolta, — passando a exibir valores muito baixos.

Foi uma resposta à grita de usuários, que pediam paridade do Conky com o free / top — no que poderíamos chamar de “cálculo muito antigo” (se os experts permitirem). — No fundo, o desejo de garantir o troféu de “mais leve” para suas distros e configurações.

Com o tempo, no entanto, foi-se delineando um movimento de outras ferramentas rumo ao “novo cálculo” proposto desde 2014 — com recuos aqui e ali:

Maio 2021

Versões do Conky e demais ferramentas em 2 Maio 2021

Em Maio 2021, tabulei esse registro (acima) do suposto uso inicial de Memória RAM das distros que eu tinha naquele momento (“cálculo novo”, “cálculo antigo”, e “cálculo muito antigo”), para formar um quadro do estado das ferramentas.

Era o auge das idas-e-vindas do Conky — que chegou a ter pelo menos 4 versões na praça, brigando umas com as outras:

Conky 1.10.8   =  htop   (htop)        Neon, Mint 20, MX Linux 19
Conky 1.11.6   >  htop   (new calc)    Arch, Debian testing, Mageia 8
Conky 1.12.1   <  htop   (free, top)   Fedora 33, PCLinuxOS, Void
Conky 1.12.2   >  htop   (new calc)    openSUSE Tumbleweed

  • O inxi já tinha adotado o “novo cálculo”, pelo menos desde sua versão 3.1.00 (2020-11-11) — mas ainda sobreviviam versões anteriores no KDE Neon, no Linux Mint 20 (ambos LTS “Focal Foss”), e no MX Linux 19 (Debian stable 10 ”Buster”).
  • O screenfetch também já tinha adotado o “novo cálculo”, mas não consegui descobrir exatamente quando. — A versão 3.8.0 (MX Linux 19) ainda mostrava o mesmo valor indicado por free / top — mas o Changelog das versões seguintes (3.9.0, 3.9.1) simplesmente não registrou essa mudança. — As datas (2019-10-06 e 2019-11-12) talvez sejam bem anteriores à chegada dessas versões aos usuários das distros.
  • O neofetch permanecia no “cálculo antigo” — exceto no Slackware, apesar de indicar a mesma versão (7.1.0) de outras distros. — Imagino que fosse uma personalização feita pela equipe do Slackware.

Outubro 2021

Conky, htop, inxi e Screenfetch com o “cálculo novo”, Outubro 2021

Até Outubro 2021, outra mudança:

  • O htop (3.1.0) adotou o “novo cálculo” em 2021-09-21 — e cheguei a ver isso no Arch, no Manjaro, no openSUSE Tumbleweed, no Void Linux — mas parece ter sido um fenômeno de curta duração.

Abril 2023

Uso de RAM, segundo diferentes ferramentas (3 amostras, Abril 2023)

Em Abril 2023 (acima), continuamos longe de uma padronização das ferramentas para o cálculo da Memória RAM usada — e ainda mais longe de um esclarecimento geral dos usuários (e até dos desenvolvedores!) sobre o assunto:

Uso de RAM, segundo diferentes ferramentas (3 amostras, Abril 2023)

Acima - O uso de Memória RAM por diferentes ferramentas — como percentuais dos números do “cálculo novo” — ajuda a tornar o quadro mais nítido.

Uso de RAM, segundo diferentes ferramentas (3 amostras, Abril 2023)

Acima - A partir da versão 3.1.1 (2021-10-14), o htop parece ter cedido à grita dos usuários e retrocedido para o “cálculo muito antigo” — mas em algumas distros (KDE Neon, Mageia 8, MX Linux 21) ainda sobrevive o htop 3.0.5, com o “cálculo antigo”.

openSUSE alterou o free / top 3.3.17, sem esperar a versão 4.0

O interesse despertado pela aproximação do Debian 12 Bookworm causou mais alguns sustos — pois o pré-lançamento já veio com o procps 4.0 — e muita gente achou que essa próxima versão de Debian viesse dobrar o uso de Memória RAM.

  • Na verdade, o procps 4.0 adotou o “cálculo novo” em 2022-06-24 — e essa mudança já tinha chegado ao Debian testing por volta do Natal:

procps (2:4.0.2-1) unstable; urgency=medium

  * free: Used memory is Total - Available
    This means versions of free after 4.0.0 will show different Used
    values for older frees and some other system utilities.

 -- Craig Small [csmall@debian.org]  Mon, 05 Dec 2022 21:34:57 +1100

Portanto — depois que o htop adotou o “cálculo muito antigo” — o free / top já começava a se movimentar para o “cálculo novo”.

Enfim, desde Junho 2022 (imagem acima), o openSUSE Tumbleweed já tinha alterado o htop 3.3.17 para o “cálculo novo” — sem esperar a versão 4.0.

Ferramentas e medições

Calculando o uso de RAM para monitorar as ferramentas

Testei o “cálculo antigo” a partir da descrição textual de Linus Torvalds (excluindo as “marcas d'água”) — e o resultado se mostrou sempre muito próximo do indicado pelas versões do Conky e do htop anteriores a Agosto 2020:

/proc/meminfo --> (Old calc):

Mem used = MemTotal - [MemFree + Active(file) + Inactive(file) + SReclaimable]

Quanto ao que chamo (talvez injustamente!) de “cálculo muito antigo” — usado pelo free / top nas versões anteriores ao procps 4.0 (e agora pelo htop) — confesso que não cheguei a verificar, pois nunca usei, portanto não afetava meu dia-a-dia.

O “cálculo novo” é bem mais simples e claro — e principalmente, mais correto:

/proc/meminfo --> (New calc):

Mem used = MemTotal - MemAvailable 

No Conky

Calculando o uso de RAM para monitorar as ferramentas

Optei por exibir esse “cálculo novo” no meu Conky2 (que se atualiza a cada 10 segundos) encabeçando os números das demais ferramentas — para monitorá-las:

conky.config = {
 (...)
 update_interval = 10,
 (...)
}
conky.text = [[
Mem:               ${alignr 100}up  ${uptime}

Total - Available  ${alignr 100}${exec bash MemInfo.sh; cat MemInfo.txt}
Conky (Mem)        ${alignr 100}${mem}
free               ${alignr 100}${exec free -m | grep Mem | cut -c 25-35} MiB
top                ${alignr 100}${exec top -E m -b -n 1  | grep buff | cut -c 41-50} MiB
neofetch           ${alignr 100}${exec neofetch  --stdout | grep -o -P '.{0,0}Memory.{0,9}' | cut -b 8-12} MiB
htop               ${alignr 100}${exec export TERM=xterm; echo q | htop | aha --line-fix | html2text | grep -o -P '.{0,6}/15' | cut -b 1-6}iB
inxi               ${alignr 100}${exec inxi --memory-short | grep -o -P '.{0,0}used.{0,14}' | cut -b 6-14}
screenfetch        ${alignr 100}${exec screenfetch -n -N | grep -o -P '.{0,0}RAM.{0,9}' | cut -b 5-12}
(...)
${alignr}${cat done.txt}  ${execi 600 echo $XDG_SESSION_TYPE}
(...)
]]

Na linha “Total - Available” (acima), o Conky executa um script “MemInfo.sh” — que efetua o “cálculo novo” — e salva o resultado em um arquivo “MemInfo.txt:

MEM_TOTAL=$(awk '/MemTotal/ { printf $2 }' /proc/meminfo); \
MEM_AVAIL=$(awk '/MemAvailable/ { printf $2 }' /proc/meminfo); \
MEM_USED_KILO="$(($MEM_TOTAL-$MEM_AVAIL))"; \
echo "$(($MEM_USED_KILO/1024))" MiB > MemInfo.txt

O ciclo de 10 segundos evita oscilações súbitas nesses indicadores, — de modo que o gnome-screenshot ou o KDE Spectacle não capturem um valor já afetado por seu próprio acionamento (+ 25 ~ 40 MiB durante uns 25 segundos).

Em TXT

Também criei um script “RAM.sh” — que cria um arquivo “RAM_00-Distro.txt” com essas informações, 10 minutos após o boot. — Quando quero guardar um registro, basta iniciar / reiniciar o computador e ir tomar um café:

echo "------------------------------------------------------------------"     >  RAM_02-Arch.txt
date                                                                          >> RAM_02-Arch.txt
echo "--------------------   uptime   ----------------------------------"     >> RAM_02-Arch.txt
uptime -p                                                                     >> RAM_02-Arch.txt
uptime -s                                                                     >> RAM_02-Arch.txt
echo "-----------------   MemTotal - MemAvailable   --------------------"     >> RAM_02-Arch.txt
MEM_TOTAL=$(awk '/MemTotal/ { printf $2 }' /proc/meminfo);\
MEM_AVAIL=$(awk '/MemAvailable/ { printf $2 }' /proc/meminfo);\
MEM_USED_KILO="$(($MEM_TOTAL-$MEM_AVAIL))";\
MEM_USED_BYTES_X_1000="$(($MEM_USED_KILO*1000))";\
echo "$(($MEM_USED_KILO/1024))" MiB                                           >> RAM_02-Arch.txt
echo "$(($MEM_USED_BYTES_X_1000/1048576))" MiB, exactly                       >> RAM_02-Arch.txt
echo "--------------------    Conky   ----------------------------------"     >> RAM_02-Arch.txt
conky -c ~/.config/conky/conky3.conf
cat Conky.txt                                                                 >> RAM_02-Arch.txt
echo "---------------------   free   -----------------------------------"     >> RAM_02-Arch.txt
free -m                                                                       >> RAM_02-Arch.txt
echo "---------------------   top    -----------------------------------"     >> RAM_02-Arch.txt
top -E m -b -n 1 | grep buff                                                  >> RAM_02-Arch.txt
echo "--------------------- neofetch -----------------------------------"     >> RAM_02-Arch.txt
neofetch  --stdout | grep "Memory"                                            >> RAM_02-Arch.txt
echo "---------------------   htop   -----------------------------------"     >> RAM_02-Arch.txt
export TERM=xterm; echo q | htop | aha --line-fix | html2text | grep "/15"    >> RAM_02-Arch.txt
# export TERM=xterm; echo q | htop                                              >> RAM_02-Arch.txt
echo "---------------------   inxi   -----------------------------------"     >> RAM_02-Arch.txt
inxi -m                                                                       >> RAM_02-Arch.txt
echo "------------------- screenfetch ----------------------------------"     >> RAM_02-Arch.txt
screenfetch -n -N -E | grep "RAM"                                             >> RAM_02-Arch.txt
echo "------------------------------------------------------------------"     >> RAM_02-Arch.txt
date                                                                          >> RAM_02-Arch.txt
echo "------------------------------------------------------------------"     >> RAM_02-Arch.txt
echo '•' > done.txt

Acima - Para salvar em arquivo a variável mem do Conky, o script executa o Conky3 — apenas 1 vez (total_run_times = 1). — Encontrei essa dica de 2011 no Linux Questions e fiz alguns testes, adaptando a sintaxe para as versões atuais (out_to_x = false):

conky.config = {
 out_to_x = false,
 out_to_console = false,
 out_to_stderr = false,
 own_window = no,
 extra_newline = false,
 uppercase = no,
 overwrite_file = 'Conky.txt',
 no_buffers = yes,
 double_buffer = false,
 total_run_times = 1,
}
conky.text = [[
Conky (Mem)        ${mem}
]]

No caso do htop, quando não tenho o aha ou o html2text, não consigo usar o grep para salvar uma linha enxuta — então, o jeito é salvar toda a maçaroca de caracteres esquisitos — e depois procurar “/15.5G” pelo CTRL+F do Kate ou do KWrite, para encontrar o valor da Memória RAM usada.

No final, o bash script cria um arquivo “done.txt” com um bullet “•”, que o Conky2 exibe à esquerda do indicador X11 / Wayland — e depois disso, já posso começar a usar o computador.

Calculando o uso de RAM para monitorar as ferramentas

O bullet “•” permanece à esquerda do indicador X11 / Wayland por 3 minutos (até 13 minutos uptime) — quando é apagado por outro script “VERSIONS.sh”.

Este segundo script apenas adiciona ao arquivo “RAM_00-Distro.txt” as versões da distro, do Kernel, do init, do KDE e das ferramentas. — Em seguida, move o arquivo para uma pasta provisória — e por fim, torna a esvaziar o arquivo “done.txt”, eliminando assim o bullet “•”:

echo '-------  Versions  -----------'             >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
date                                              >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
uname -n                                          >> RAM_02-Arch.txt
lsb_release -ds                                   >> RAM_02-Arch.txt
uname -sr                                         >> RAM_02-Arch.txt
strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }'\
                                                  >> RAM_02-Arch.txt
systemctl --version | grep systemd | cut -c 9-11  >> RAM_02-Arch.txt
#rc-service -V                                     >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
plasmashell --version                             >> RAM_02-Arch.txt
neofetch  --de_version on --stdout | grep "DE:"   >> RAM_02-Arch.txt
kf5-config --version | grep 'Qt\|KDE'             >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
konsole -v                                        >> RAM_02-Arch.txt
kate -v                                           >> RAM_02-Arch.txt
dolphin -v                                        >> RAM_02-Arch.txt
gwenview -v                                       >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
gimp --version                                    >> RAM_02-Arch.txt
google-chrome-stable --version                    >> RAM_02-Arch.txt
libreoffice --version                             >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
conky -v | grep compiled                          >> RAM_02-Arch.txt
free -V                                           >> RAM_02-Arch.txt
top -v | grep procps                              >> RAM_02-Arch.txt
neofetch --version                                >> RAM_02-Arch.txt
htop --version                                    >> RAM_02-Arch.txt
inxi -V | grep inxi                               >> RAM_02-Arch.txt
screenfetch -V | grep Version                     >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
date                                              >> RAM_02-Arch.txt
echo '------------------------------'             >> RAM_02-Arch.txt
mv RAM_02-Arch.txt /run/media/flavio/Warehouse/Byteria/Conky/Conky-RAM-New/
echo ' ' > done.txt

Uso um comando padronizado para detectar o software init — e comandos diferentes para obter a versão de cada init: — apenas no Void, ainda não descobrir como exibir a versão do runit:

[PATH]/Conky/backup/2022-07-18

$ grep -R -A 2 sysname

openSUSE   ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

Arch       ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

Debian     ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

Fedora     ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

KDE Neon   ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

PCLinuxOS  Kernel ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 strings /sbin/init | grep INIT_VERSION | cut -c 23-30}

Mageia     ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

Slackware  ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 strings /sbin/init | grep INIT_VERSION | cut -c 23-30}

Void       ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')}

Manjaro    ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 systemctl --version | grep systemd | cut -c 9-11}

Redcore    ${sysname} ${kernel} ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 rc-service -V | cut -c 21-26}

MX Linux   ${sysname} ${kernel}  ${alignr}\
           ${execi 600 echo $(strings /sbin/init | awk 'match($0, /(upstart|systemd|sysvinit|busybox|runit|openrc|S6|66-boot)/) { print substr($0, RSTART, RLENGTH);exit; }')} \
           ${execi 600 strings /sbin/init | grep INIT_VERSION | cut -c 23-30}

É comum eu atualizar algumas distros em 10 minutos, e reiniciar o computador antes da eliminação do bullet. — Para evitar que ele apareça em uma próxima sessão, ele é eliminado logo após um novo boot:

$ crontab -l
@reboot echo ' ' > done.txt
@reboot sleep 600; bash RAM.sh
@reboot sleep 780; bash VERSIONS.sh

Naturalmente, só 2 ou 3 vezes por ano eu me preocupo em esperar 10 minutos após o boot, com o computador “em repouso”, em 12 distros seguidas, para cumprir todos esses passos. — Isso exige pelo menos 3 horas — e não é frequente eu ver motivo para tanto trabalho.

Nos outros casos, os arquivos abandonados são sobrescritos, e não se acumulam.

Referências:

“Monitor do Sistema” e Terminais

KSysguard

O nome genérico “Monitor do Sistema” tem induzido a muitos enganos e falsas comparações — pelo menos desde 2016, quando tive o KSysguard e o Gnome-System-Monitor lado a lado, em uma instalação do Debian com vários ambientes.

Desde aquela época, verifiquei que o KSysguard indicava uso de Memória bem inferior ao indicado pelo Conky — que na época se alinhava ao htop — ambos ainda com o “cálculo antigo”.

Me parece que o KSysguard busca utilizar o mesmo cálculo do free (o “muito antigo”) — porém “descontando” seu próprio uso de Memória. — Acontece que o free não “desconta” o peso do KSysguard, e por isso tende a indicar um número maior do que ele.

Aliás, o “peso” de qualquer aplicação GUI sempre interfere naquilo que pretende medir — uso de Memória RAM, uso de CPU etc. — por isso desde 2016 optei por usar o Conky, que tem baixíssimo uso de recursos.

  • Em tese, o Conky deveria ter igual uso de recursos em todas as distros — mas na prática, em algumas delas ainda não incluí aha, html2text, ou alguma das outras ferramentas — por isso, o Conky apresenta alguma diferença de consumo entre elas.

Mesmo a abertura de um emulador de Terminal já altera significativamente o uso de Memória RAM. — Além disso, diferentes DEs usam emuladores de Terminal mais “leves” ou mais “pesados” — o que também torna enganosas comparações entre diferentes distros e DEs, mesmo quando pensamos estar usando “apenas uma ferramenta CLI”, como free, htop, neofetch etc.

  • Para realmente usar “só a ferramenta CLI”, deixe o DE em repouso — e use a ferramenta CLI em um “terminal tty” — tty2, por exemplo.

Acima - A simples abertura do KSysguard elevou o uso de Memória RAM de 865 MiB para 1046 MiB (+181 MiB), segundo o cálculo “novo” — ou de 428 MiB para 531 MiB (+103 MiB), segundo o free.

O valor de 0,48 GiB indicado pelo KSysguard equivale a 492 MiB — menos que os 531 MiB indicados pelo free (-39 MiB), mas dentro da faixa de oscilação aceitável.

Plasma System Monitor

Ao fechar o KSysguard, o uso de Memória RAM caiu para 962 MiB, segundo o “cálculo novo” — cerca de 100 MiB acima dos 865 MiB iniciais.

Portanto, quando abri o Plasma System Monitor, já parti de um patamar um pouco mais elevado.

Acima - O novo Plasma System Monitor indicava uso de 1,1 GiB de Memória RAM — valor exato dos 1128 MiB indicados pelo “cálculo novo” (1,102 GiB).

Gnome System Monitor

Ao fechar o Plasma System Monitor, o uso de Memória RAM também não volta ao que era logo no início da sessão. — Mesmo assim, o Gnome System Monitor parece “pesar” menos do que as 2 ferramentas do KDE.

Acima - O Gnome System Monitor indica uso de 1,0 GiB — valor muito próximo aos 1000 MiB indicados pelo “cálculo novo” (0,98 GiB).

Um minuto após fechar o Gnome System Monitor, o uso de Memória RAM baixou para 974 MiB, segundo o “cálculo novo” — cerca de 110 MiB acima dos 865 MiB logo após a inicialização. — Este foi o “saldo” de abrir e fechar as 3 ferramentas GUI, uma após outra.

_______________________
• Publicado em 20 Outubro 2020 e atualizado até 4 Outubro 2021 (histórico).

• Reescrito em Abril 2023.

— … ≠ • ≠ … —

Ferramentas &tc.

quarta-feira, 30 de setembro de 2020

Slackware by Alien - install, config

Slackware by Alien em sessão Plasma KDE

Está é a terceira ou quarta vez que reinstalo o Slackware by Alien Bob; — as primeiras vezes, por tê-lo escangalhado além das minhas possibilidades de consertá-lo; — agora, por simples migração para um novo hardware (e vim adiando, desde Janeiro).

Mais do que nunca, isto não é um “tutorial”. — Só um registro do que fiz, — tateando e cometendo muitos erros.

Pós-instalação


Correção do Grub (externo) para carregar o Slackware

O Grub do openSUSE e do Mageia produziu entradas para “vmlinuz-generic-5.4.66”, e o boot se paralisou em “Kernel panic”. — Nesse primeiro momento, bastou corrigir manualmente para “vmlinuz-huge-5.4.66”, para conseguir carregar o Slackware.

Desabilitando Os-Prober e gerando o Grub

Com isso, pude gerar o arquivo /boot/grub/grub.cfg do próprio Slackware, — e depois disso, o Grub das outras distros já pode ler nele o parâmetro correto:

# grub-install /dev/sda1
Installing for x86_64-efi platform.
Installation finished. No error reported.

# date; grub-mkconfig -o /boot/grub/grub.cfg; date
Sat Sep 26 14:38:40 -03 2020
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-huge-5.4.66
Found initrd image: /boot/initrd.gz
Found linux image: /boot/vmlinuz-huge
Found initrd image: /boot/initrd.gz
Found linux image: /boot/vmlinuz-generic-5.4.66
Found initrd image: /boot/initrd.gz
Found linux image: /boot/vmlinuz-generic
Found initrd image: /boot/initrd.gz
done
Sat Sep 26 14:38:44 -03 2020

Pastas das distros Linux na partição EFI

Note que, para isso, não precisava instalar a “chamada” na partição EFI. — Fiz isso, só para “ver” o que seria gravado lá, pois varia muito de uma distro para outra. — Mas sempre pode ser útil, a qualquer momento.

De qualquer modo, o Grub do Slackware também não precisava perder tempo detectando outras distros, — e primeiro acrescentei uma linha em /etc/default/grub:

GRUB_DISABLE_OS_PROBER=true

Essa edição foi feita no editor interno do mc (Midnight-Commander), logado como root.

Só 10 minutos depois, lembrei de datar os comandos:

$ history
    1                       su
    2                       echo 'export HISTTIMEFORMAT="%F_%H-%M-%S "' >> ~/.bashrc
    3  2020-09-26_14-58-33  history

# history
    1                       cd /usr/lib64/vlc
    2                       find . -name "plugins*.dat" -exec rm -f {} \;
    3                       echo "Generating VLC plugins cache data..."
    4                       DISPLAY="" ./vlc-cache-gen /usr/lib64/vlc/plugins
    5                       grub-install /dev/sda1
    6                       mc
    7                       mc
    8                       date; grub-mkconfig -o /boot/grub/grub.cfg; date
    9                       mc
   10                       mc
   11                       echo 'export HISTTIMEFORMAT="%F_%H-%M-%S "' >> ~/.bashrc
   12  2020-09-26_14-58-44  history

Antes desse momento, eu havia executado (como root) apenas alguns comandos relacionados ao VLC, — talvez sugeridos pelo próprio Slackware, ao abrir o Konsole. — Não fiz anotações sobre isso, nem capturas de tela, e só posso imaginar o objetivo desses comandos.

Opção de montagem em serviços de segundo plano

A montagem automática de partições adicionais me tomou mais de 1 hora, e saiu dos trilhos que eu me havia acostumado a seguir.

13:49 - Ao desativar serviços em segundo plano que não uso, não vi essa opção, — que por sinal, eu nunca vi em nenhuma outra distro, mesmo as que já usam KDE mais recente. — Não vi, não ativei, e talvez esteja ligada ao problema que enfrentei em seguida.

14:05 - Ativei a montagem automática de “dispositivos removíveis” (que não são do sistema) no KDE System settings. — Isso nunca funcionou nas instalações anteriores do Slackware, — mas também nunca atrapalhou.

15:24 - Nova sessão (reiniciei, ou só logout / login?), naturalmente sem montagem das partições adicionais.

15:33 - Colei no /etc/fstab um conjunto de linhas que sempre funcionou para a montagem das partições adicionais, — tanto no Slackware, quando no Debian, LMDE, MX Linux...

15:36 - ... mas ao reiniciar o computador, as partições adicionais não foram montadas.

15:52 - Tentativas de montagem manual retornaram o aviso de que não existiam os pontos de montagem, — coisa que nunca foi problema, nas instalações anteriores.

15:57 - Criei manualmente um ponto de montagem, para teste, — mas não reiniciei, portanto não houve oportunidade de verificar se ia funcionar ou não. — Me limitei a tentar a montagem daquela única partição, pelo Dolphin, e como foi pedida senha, concluí que não resolveu.

xxx

xxx

— … ≠ • ≠ … —

Without-SystemD



    PC desktop UEFI / GPT



    Ferramentas &tc.



    Não-debians


    sábado, 15 de agosto de 2020

    KDE Neon upgrade 20.04 Focal Fossa

    KInfocentre do KDE Neon após upgrade para 20.04 Focal Fossa
    KDE Neon após upgrade para 20.04 Focal Fossa

    O upgrade do KDE Neon, da base Ubuntu 18.04 Bionic para 20.04 Focal Fossa, transcorreu sem qualquer problema, — e não introduziu nenhuma alteração no Plasma KDE, nem no Kernel. — Sob esses aspectos, é como se o KDE Neon permanecesse o mesmo de 2 semanas atrás:

    2020-08-02                                                  2020-08-15
    
          Operating System: KDE neon 5.19                             Operating System: KDE neon 5.19
        KDE Plasma Version: 5.19.4                                  KDE Plasma Version: 5.19.4
    KDE Frameworks Version: 5.72.0                              KDE Frameworks Version: 5.72.0
                Qt Version: 5.14.2                                          Qt Version: 5.14.2
            Kernel Version: 5.4.0-42-generic                            Kernel Version: 5.4.0-42-generic
    ...                                                         ...
        Graphics Processor: Mesa DRI Intel® UHD Graphics 630        Graphics Processor: Mesa Intel® UHD Graphics 630
    
     konsole 20.04.3                                             konsole 20.04.3
     dolphin 20.04.3                                             dolphin 20.04.3
        kate 20.04.3                                                kate 20.04.3
    gwenview 20.04.3                                            gwenview 20.04.3
    

    O Chromium (.deb) não foi removido, nem substituído pela versão .snap2. — Apenas, agora o apt / Synaptic o classifica como “obsoleto”, por não mais encontrá-lo nos repositórios. — No momento, tenho algum prazo para decidir o que vou fazer.

    O repositório do GoogleEarth foi automaticamente desabilitado, ao iniciar o upgrade, — e bastou habilitá-lo de novo, depois. — O GoogleEarth continua funcionando normalmente.

    Ainda não verifiquei o que mudou no Wine, — mas minha velha versão do Dreamweaver também continua funcionando como antes.

    corona-cli finalmente encontra as dependências requeridas

    Uma boa nova é que, agora, o corona-cli funciona, — o que antes não era possível.

    O Gimp passou da versão 2.8 para 2.10, — mas para isso eu já estava preparado, desde o final de 2018. — Conforme o esperado, algumas configurações foram preservadas, e outras tive de refazer.

    Upgrade


    Verificando atualizações, no início da sessão do KDE Neon

    Um requisito elementar, em distribuições Linux de versão fixa, é que a instalação deve estar atualizada, antes de se iniciar o upgrade para uma nova versão.

    Em situações normais, verifico manualmente as atualizações pelo apt, depois aplico pelo Synaptic, — e é claro que eu já tinha feito isso, mais cedo. — Apenas tornei a verificar, por via das dúvidas, antes de iniciar o upgrade.

    Última verificação de atualizações, antes de iniciar o upgrade do KDE Neon

    Mas o site oficial do KDE Neon tem recomendações próprias, — tais como a de usar o Rosa Writer para “queimar” suas imagens ISO em Pendrive, — e a de usar o PackageKit (pkcon) para verificar e aplicar as atualizações.

    Nunca encontrei uma explicação para essas idiossincrasias, — e nunca vi o pkcon discordar do apt / Synaptic, — afinal o PackageKit (tal como o Synaptic) é só uma interface amigável, que nas distros .deb usa o apt.

    Em honra a esse ritual não-explicado, de bom grado executei um pkcon após o apt, — e é óbvio que ele não encontrou mais nada para atualizar.

    Em seguida iniciei a execução do script, — que salva todas as saídas dos comandos em um arquivo “typescript”, na pasta do usuário:

    $ history
    ...
      283  2020-08-13_20-49-06 date && sudo apt update && date
      284  2020-08-13_20-49-30 sudo pkcon refresh
      285  2020-08-13_20-52-27 script
    

    Esse arquivo ~/typescript salvou nada menos que 62.972 linhas, — que resumo abaixo, com “...” para indicar as partes suprimidas, por serem muito extensas, ou repetitivas:

    Script started on 2020-08-13 20:52:27-0300
    ...
    $ date && sudo do-release-upgrade && date
    Thu 13 Aug 20:52:32 -03 2020
    ...
    Checking for a new Ubuntu release
    
    0% [Working]
    0% [Connecting to archive.neon.kde.org]
    ...
    authenticate 'focal.tar.gz' against 'focal.tar.gz.gpg'
    extracting 'focal.tar.gz'
    ...
    
    Updating repository information
    
    Third party sources disabled
    
    Some third party entries in your sources.list were disabled. You can
    re-enable them after the upgrade with the 'software-properties' tool
    or your package manager.
    
    To continue please press [ENTER]
    ...
    
    100% [Working]                    218 kB/s 0s
    Fetched 52.4 MB in 6s (218 kB/s)
    
    Checking package manager
    ...
    
    Reading state information... Done
    
    Calculating the changes
    ...
    
    Do you want to start the upgrade?
    
    31 packages are going to be removed. 641 new packages are going to be
    installed. 2132 packages are going to be upgraded.
    
    You have to download a total of 2118 M. This download should take
    about 1 hour 2 minutes with your connection.
    
    Installing the upgrade can take several hours. Once the download has
    finished, the process cannot be cancelled.
    
     Continue [yN]  Details [d] y
    
    Fetching
    ...
    0% [Working]
    ...
    100% [Working]                     1329 kB/s 0s
    
    Fetched 2118 MB in 6s (1329 kB/s)
    
    Upgrading
    
    Fetched 0 B in 0s (0 B/s)
      MarkInstall libc6:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib > FU=1
      Installing libgcc-s1 as Depends of libc6
        MarkInstall libgcc-s1:amd64 < none -> 10-20200411-0ubuntu1 @un uN Ib > FU=0
        Installing gcc-10-base as Depends of libgcc-s1
          MarkInstall gcc-10-base:amd64 < none -> 10-20200411-0ubuntu1 @un uN > FU=0
      Installing libcrypt1 as Depends of libc6
        MarkInstall libcrypt1:amd64 < none -> 1:4.4.10-10ubuntu4 @un uN Ib > FU=0
          MarkInstall libc6:i386 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib > FU=0
          Installing libgcc-s1 as Depends of libc6
            MarkInstall libgcc-s1:i386 < none -> 10-20200411-0ubuntu1 @un uN Ib > FU=0
            Installing gcc-10-base as Depends of libgcc-s1
              MarkInstall gcc-10-base:i386 < none -> 10-20200411-0ubuntu1 @un uN > FU=0
          Installing libcrypt1 as Depends of libc6
            MarkInstall libcrypt1:i386 < none -> 1:4.4.10-10ubuntu4 @un uN > FU=0
            MarkInstall locales:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib > FU=0
            Installing libc-bin as Depends of locales
              MarkInstall libc-bin:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU > FU=0
          new important dependency: libidn2-0:i386
          Installing libidn2-0 as Recommends of libc6
            MarkInstall libidn2-0:i386 < 2.0.4-1.1ubuntu0.2 -> 2.2.0-2 @ii umU Ib > FU=0
              MarkInstall libidn2-0:amd64 < 2.0.4-1.1ubuntu0.2 -> 2.2.0-2 @ii umU > FU=0
    Starting pkgProblemResolver with broken count: 1
    Starting 2 pkgProblemResolver with broken count: 1
    Investigating (0) libc6-dev:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib >
    Broken libc6-dev:amd64 Depends on libcrypt-dev:amd64 < none | 1:4.4.10-10ubuntu4 @un uH >
      Considering libcrypt-dev:amd64 1 as a solution to libc6-dev:amd64 11
      MarkKeep libc6-dev:amd64 < 2.27-3ubuntu1.2 -> 2.31-0ubuntu9 @ii umU Ib > FU=0
      Re-Instated manpages-dev:amd64
      Re-Instated libcrypt-dev:amd64
      Re-Instated libc6-dev:amd64
    Done
    
    Upgrading
    
    Fetched 0 B in 0s (0 B/s)
    Preconfiguring packages ...
    ...
    Selecting previously unselected package gcc-10-base:amd64.
    (Reading database ...
    (Reading database ... 5%
    ...
    (Reading database ... 100%
    (Reading database ... 240874 files and directories currently installed.)
    Preparing to unpack .../gcc-10-base_10-20200411-0ubuntu1_amd64.deb ...
    ...
    ...
    Preparing to unpack .../948-usb-modeswitch-data_20191128-3_all.deb ...
    Unpacking usb-modeswitch-data (20191128-3) over (20170806-2) ...
    Preparing to unpack .../949-youtube-dl_2020.03.24-1_all.deb ...
    Unpacking youtube-dl (2020.03.24-1) over (2018.03.14-1ubuntu18.04.1) ...
    Setting up libgme0:amd64 (0.6.2-1build1) ...
    Setting up libmono-system-servicemodel-internals0.0-cil (6.8.0.105+dfsg-2) ...
    Setting up libkf5codecs-data (5.72.0-0xneon+20.04+focal+build3) ...
    Setting up libssh-gcrypt-4:amd64 (0.9.3-2ubuntu2.1) ...
    Setting up libpwquality-common (1.4.2-1build1) ...
    Installing new version of config file /etc/security/pwquality.conf ...
    Setting up kdeplasma-addons-data (4:5.19.4-0xneon+20.04+focal+build7) ...
    Setting up memtest86+ (5.01-3.1ubuntu1) ...
    Sourcing file `/etc/default/grub'
    Sourcing file `/etc/default/grub.d/99_breeze-grub.cfg'
    Generating grub configuration file ...
    Found theme: /boot/grub/themes/breeze/theme.txt
    Found linux image: /boot/vmlinuz-5.4.0-42-generic
    Found initrd image: /boot/initrd.img-5.4.0-42-generic
    Found linux image: /boot/vmlinuz-5.3.0-62-generic
    Found initrd image: /boot/initrd.img-5.3.0-62-generic
    Adding boot menu entry for EFI firmware configuration
    done
    Setting up arj (3.10.22-23) ...
    Setting up cpio (2.13+dfsg-2) ...
    Setting up libavc1394-0:amd64 (0.5.4-5) ...
    Setting up powermgmt-base (1.36) ...
    ...
    ...
    Setting up kwin-wayland (4:5.19.4-0xneon+20.04+focal+build7) ...
    Setcap worked for /usr/bin/kwin_wayland!
    Setting up plasma-workspace-wayland (4:5.19.4-0xneon+20.04+focal+build6) ...
    Setting up kinfocenter (4:5.19.4-0xneon+20.04+focal+build7) ...
    Setting up konq-plugins (4:20.04.3-0xneon+20.04+focal+build4) ...
    Setting up sddm-theme-breeze (4:5.19.4-0xneon+20.04+focal+build6) ...
    Setting up plasma-desktop (4:5.19.4-0xneon+20.04+focal+build6) ...
    Setting up neon-desktop (4+p20.04+git20200803.1619) ...
    Processing triggers for install-info (6.7.0.dfsg.2-5) ...
    Processing triggers for hicolor-icon-theme (0.17-2) ...
    Processing triggers for libc-bin (2.31-0ubuntu9) ...
    Processing triggers for systemd (245.4-4ubuntu3.2) ...
    Processing triggers for ureadahead (0.100.0-21) ...
    ureadahead will be reprofiled on next reboot
    Processing triggers for ca-certificates (20190110ubuntu1.1) ...
    Updating certificates in /etc/ssl/certs...
    0 added, 0 removed; done.
    Running hooks in /etc/ca-certificates/update.d...
    
    done.
    Updating Mono key store
    Mono Certificate Store Sync - version 6.8.0.105
    Populate Mono certificate store from a concatenated list of certificates.
    Copyright 2002, 2003 Motus Technologies. Copyright 2004-2008 Novell. BSD licensed.
    
    Importing into legacy system store:
    I already trust 135, your new list has 127
    6 previously trusted certificates were removed.
    Certificate removed: C=TR, L=Ankara, O=TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş., CN=TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
    Certificate removed: C=SE, O=AddTrust AB, OU=AddTrust External TTP Network, CN=AddTrust External CA Root
    Certificate removed: C=US, O=VISA, OU=Visa International Service Association, CN=Visa eCommerce Root
    Certificate removed: C=FR, O=Certplus, CN=Certplus Root CA G1
    Certificate removed: C=FR, O=OpenTrust, CN=OpenTrust Root CA G2
    Certificate removed: C=FR, O=OpenTrust, CN=OpenTrust Root CA G1
    Import process completed.
    
    Importing into BTLS system store:
    I already trust 0, your new list has 127
    Certificate added: ...
    ...
    127 new root certificates were added to your trust store.
    Import process completed.
    Done
    done.
    Setting up mono-devel (6.8.0.105+dfsg-2) ...
    ...
    Processing triggers for linux-image-5.4.0-42-generic (5.4.0-42.46) ...
    /etc/kernel/postinst.d/initramfs-tools:
    update-initramfs: Generating /boot/initrd.img-5.4.0-42-generic
    I: The initramfs will attempt to resume from /dev/sdb14
    I: (UUID=2ae5ec7d-42bd-4d6b-9597-7473984c75fe)
    I: Set the RESUME variable to override this.
    /etc/kernel/postinst.d/zz-update-grub:
    Sourcing file `/etc/default/grub'
    Sourcing file `/etc/default/grub.d/99_breeze-grub.cfg'
    Sourcing file `/etc/default/grub.d/init-select.cfg'
    Generating grub configuration file ...
    Found theme: /boot/grub/themes/breeze/theme.txt
    Found linux image: /boot/vmlinuz-5.4.0-42-generic
    Found initrd image: /boot/initrd.img-5.4.0-42-generic
    Found linux image: /boot/vmlinuz-5.3.0-62-generic
    Found initrd image: /boot/initrd.img-5.3.0-62-generic
    Adding boot menu entry for UEFI Firmware Settings
    done
    Processing triggers for dictionaries-common (1.28.1) ...
    aspell-autobuildhash: processing: en [en-common].
    ...
    aspell-autobuildhash: processing: pt_BR [pt_BR].
    Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
    Processing triggers for libvlc-bin:amd64 (3.0.9.2-1) ...
    Processing triggers for initramfs-tools (0.136ubuntu6.2) ...
    update-initramfs: Generating /boot/initrd.img-5.4.0-42-generic
    I: The initramfs will attempt to resume from /dev/sdb14
    I: (UUID=2ae5ec7d-42bd-4d6b-9597-7473984c75fe)
    I: Set the RESUME variable to override this.
    Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.40.0+dfsg-3) ...
    Processing triggers for libgdk-pixbuf2.0-0:i386 (2.40.0+dfsg-3) ...
    Processing triggers for wine (5.0-3ubuntu1) ...
    
    Reading package lists... 0%
    ...
    Reading package lists... 97%
    
    Reading package lists... Done
    
    Building dependency tree... 0%
    ...
    Building dependency tree... 50%
    
    Building dependency tree
    
    Reading state information... 0%
    ...
    Reading state information... Done
    
    Searching for obsolete software
    
    Reading state information... 0%
    ...
    Reading state information... 99%
    
    Reading state information... Done
    
    Remove obsolete packages?
    
    296 packages are going to be removed.
    
    Removing the packages can take several hours.
    
     Continue [yN]  Details [d] d
    
    Remove: diffuse dolphin4 komparator libkonqsidebarplugin4a xxdiff
    
    Remove (was auto installed) command-not-found-data fonts-noto
      fonts-noto-cjk-extra fonts-noto-ui-extra fonts-noto-unhinted
      freepats fwupdate gcc-8-base:i386 gconf-service
      gconf-service-backend gconf2-common iputils-arping kde-runtime
      kde-runtime-data kdelibs-bin kdelibs5-data kdelibs5-plugins
    ...
      libreoffice-avmedia-backend-gstreamer libreoffice-librelogo
      libreoffice-ogltrans libreoffice-sdbc-hsqldb
    ...
      linux-headers-5.3.0-62 linux-headers-5.3.0-62-generic
      linux-headers-generic linux-headers-generic-hwe-18.04
      linux-hwe-5.4-headers-5.4.0-42 linux-image-5.3.0-62-generic
      linux-image-generic-hwe-18.04 linux-modules-5.3.0-62-generic
      linux-modules-extra-5.3.0-62-generic mlocate mono-jay
    ...
      python-webencodings python-zipp python3.6 python3.6-minimal qdbus
      qpdf qt-at-spi qtcore4-l10n qtdeclarative5-qtquick2-plugin
      rarian-compat ruby-did-you-mean ruby2.5 sextractor ureadahead
      xwayland-hwe-18.04
    
    Continue [yN]  Details [d] y
    
    Fetched 0 B in 0s (0 B/s)
    (Reading database ...
    (Reading database ... 5%
    ...
    (Reading database ... 100%
    (Reading database ... 287037 files and directories currently installed.)
    Removing command-not-found-data (18.04.5) ...
    Removing diffuse (0.4.8-3) ...
    Removing dolphin4 (4:16.04.3-0ubuntu1) ...
    ...
    Removing linux-image-5.3.0-62-generic (5.3.0-62.56~18.04.1) ...
    I: /boot/vmlinuz.old is now a symlink to vmlinuz-5.4.0-42-generic
    I: /boot/initrd.img.old is now a symlink to initrd.img-5.4.0-42-generic
    /etc/kernel/postrm.d/initramfs-tools:
    update-initramfs: Deleting /boot/initrd.img-5.3.0-62-generic
    /etc/kernel/postrm.d/zz-update-grub:
    Sourcing file `/etc/default/grub'
    Sourcing file `/etc/default/grub.d/99_breeze-grub.cfg'
    Sourcing file `/etc/default/grub.d/init-select.cfg'
    Generating grub configuration file ...
    Found theme: /boot/grub/themes/breeze/theme.txt
    Found linux image: /boot/vmlinuz-5.4.0-42-generic
    Found initrd image: /boot/initrd.img-5.4.0-42-generic
    Adding boot menu entry for UEFI Firmware Settings
    done
    Removing linux-image-generic-hwe-18.04 (5.4.0.42.46) ...
    Removing linux-modules-5.3.0-62-generic (5.3.0-62.56~18.04.1) ...
    Removing mlocate (0.26-3ubuntu3) ...
    ...
    Removing libntrack0 (016-1.3) ...
    Removing ntrack-module-libnl-0 (016-1.3) ...
    Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
    Processing triggers for mime-support (3.64ubuntu1) ...
    Processing triggers for hicolor-icon-theme (0.17-2) ...
    Processing triggers for cups (2.3.1-9ubuntu1.1) ...
    Processing triggers for libc-bin (2.31-0ubuntu9) ...
    Processing triggers for man-db (2.9.1-1) ...
    Processing triggers for libreoffice-common (1:6.4.4-0ubuntu0.20.04.1) ...
    Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
    Processing triggers for shared-mime-info (1.15-1) ...
    Processing triggers for sgml-base (1.29.1) ...
    Processing triggers for fontconfig (2.13.1-2ubuntu3) ...
    dpkg: warning: package not in status nor available database at line 1: command-not-found-data:amd64
    dpkg: warning: package not in status nor available database at line 3: dolphin4:amd64
    ...
    dpkg: warning: package not in status nor available database at line 295: xwayland-hwe-18.04:amd64
    dpkg: warning: package not in status nor available database at line 296: xxdiff:amd64
    dpkg: warning: found unknown packages; this might mean the available database
    is outdated, and needs to be updated through a frontend method;
    please see the FAQ 
    (Reading database ...
    (Reading database ... 5%
    ...
    (Reading database ... 100%
    (Reading database ... 220343 files and directories currently installed.)
    Purging configuration files for linux-image-5.3.0-62-generic (5.3.0-62.56~18.04.1) ...
    ...
    Purging configuration files for kde-runtime (4:17.08.3-0ubuntu1) ...
    Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
    
    System upgrade is complete.
    
    Restart required
    
    To complete the upgrade, a system restart is required.
    If you select 'y' the system will be restarted.
    
    Continue [yN] n
    Thu 13 Aug 23:31:19 -03 2020
    
    $ exit
    
    Script done on 2020-08-13 23:31:48-0300
    

    Note que eu mantenho desabilitada a detecção de outras distros (os-probe), — por isso as sucessivas atualizações do Grub detectam apenas as versões de Kernel do próprio KDE Neon.

    Teclar “d” para detalhar os arquivos que serão instalados, atualizados, removidos

    Ao final de alguns minutos, fui informado de que o upgrade do KDE Neon implicaria em remover 31 pacotes (na verdade, foram 296), instalar 641 pacotes novos, atualizar 2.132 pacotes, — download total de uns 2 GiB, — e demoraria cerca de 1 hora, a julgar pela velocidade da conexão até aquele momento.

    Infelizmente, eu tinha esquecido de uma precaução básica: — Desligar o Modem e tornar a ligar, após alguns minutos, para melhorar a conexão, que vem decaindo há alguns meses. — Um teste tardio, pelo speedtest-cli, mostrou que naquele momento eu não podia contar com mais do que 50 Mbit/s, do total de 200 “megas” contratados (26,3 MiB/s).

    Mas isso, até o PTT / IX mais “próximo”, — pois ainda ia depender da velocidade dos repositórios no Brasil (br.archive.ubuntu) e no exterior (archive.neon.kde, security.ubuntu), assim como das velocidades encontradas no caminho entre meu provedor e os repositórios. — Na prática, o download começou com uma média de 3,7 MiB/s (máximo 5,3 MiB/s), para os pacotes do repositório do KDE Neon; mas logo decaiu para uma faixa de 100 a 500 KiB/s, para os pacotes do repositório Ubuntu no Brasil; e o processo todo acabou demorando mais de 2h 30min (20:52 ~ 23:31).

    Capturas de tela falhadas, na fase final do upgrade do KDE Neon

    A navegação no Chromium, a música local no VLC, o monitoramento pelo Conky e quase tudo mais continuou funcionando normalmente, durante todo esse tempo. — Apenas a Captura de tela (shortcut PrtScn + gnome-screenshot) deixou de funcionar por alguns minutos, entre 23:00 e 23:20; e o Dolphin e o Gwenview (abertos desde o início) não recuperaram o acesso às pastas, depois disso; mas o Kate continuou salvando as anotações, até o final.

    xxxx

    Para uma lista dos 296 pacotes removidos:


    xxxx

    — … ≠ • ≠ … —

    PC desktop UEFI / GPT



    Ferramentas &tc.



    Debian's