helio.loureiro.eng.br
  • Home
  • Unix
  • Linux
  • Blog
  • Python
  • Programação
  • Tudo
  • Suécia
  1. You are here:  
  2. Home
  3. Unix
  4. Linux

Os artigos mais lidos de 2024

  • linux-br.org num ritmo mais lento
  • Criando um serviço de relay de DNS-over-HTTPS
  • Minha palestra sobre a história do Unix na IX BSD Day
  • Pedal forte de 2023 em dados do Google
  • Linux vs GNU/Linux

Aumentando o swap com zfs no Ubuntu 24.04

Details
Written by: Helio Loureiro
Category: Linux
Published: December 16, 2024
Hits: 902
  • zfs
  • swap
  • Ubuntu
  • Ubuntu 24.04

Acabei tendo problemas de memória no laptop de trabalho. Então resolvi aumentar o tamanho do swap. Ou melhor, adicionar um volume lógico no zfs pro swap.

Após uma pesquisa rápida, achei a forma e fazer isso. Sem grandes surpresas, extremamente fácil.

  
    root@silverhand$ zfs create -V 64G \
    -b (getconf PAGESIZE) \
    -o compression=zstd-fast \
    -o logbias=throughput \
    -o sync=always -o primarycache=metadata \
    -o secondarycache=none \
    -o com.sun:auto-snapshot=false \
    rpool/swap
    root@silverhand$ mkswap /dev/zvol/rpool/swap
    root@silverhand$ swapon /dev/zvol/rpool/swap
  

O resultado foi rápido e fácil. Com 32 GB de RAM eu não esperava precisar tanto assim de swap. Mas o chrome insiste em tomar toda memória livre possível.

Não necessariamente relacionado, mas fiz upgrade do meu laptop pro Ubuntu 24.10. Como também está com zfs, fiz snapshots de cada volume antes de atualizar. Então fica fácil voltar se algo der errado. Por enquanto parece estar funcionando como esperado. E devo escrever sobre isso em breve.

Ferramentas modernas de Unix

Details
Written by: Helio Loureiro
Category: Linux
Published: September 06, 2024
Hits: 2277
  • linux
  • Unix
  • console
  • command line
  • linha de comando
  • unix power tools
  • modern unix

modern unix livros 

Quando comecei a aprender Linux e Unix, no século passado, esses dois livros eram meus referenciais sobre ferramentas pra usar.  Unix Power Tools e Unix System Administration Handbook.  Foram e continuam excelentes livros, mas as ferramentas passaram a ser muito melhores.  A grande maioria re-escrita em rust ou em Go! pra maior velocidade e até mesmo segurança.

Eu usava uma ferramenta aqui e outra ali até ler um artigo sobre o assunto e depois achar uma boa referência no GitHub.  O artigo que li no começo eu já não lembro e não tenho o link, mas as ferramentas eu fui pegando por essa referência aqui:

https://github.com/ibraheemdev/modern-unix

Então vou listar as ferramentas que uso atualmente.  Pegue a pipoca e sente bem confortavelmente que são várias.  Não existe ordem de preferência e eu geralmente não adoto duas ferramentas pra mesma coisa.  Mostro aqui o que é de uso no dia à dia de trabalho.

Eu estou colocando o link pra cada uma na imagem, mas a grande maioria funciona pelo sistema de pacotes das distros.  Dê uma olhada nisso antes de baixar do site.

Fish shell

modern unix fishshell

Eu sinta uma pena muito grande de ver quem fica preso ao bash nos dias de hoje.  Não me entenda mal se você é uma dessas pessoas: bash é excelente.  Mas existem alternativas muito superiores.  Uma delas é o fish.  Eu ouvi falar pela primeira vez do fish através do Kov na mesa do Debian numa das edições do FISL.  E confesso que achei... aquilo não era pra mim. Eu estava confortável no meu bash.   Eu não poderia estar mais enganado.

Na segunda tentativa, eu me forcei a usar o fish por no mínimo 6 meses.  E o que aconteceu?  Não consigo mais ficar sem ele.  É o meu shell de linha de comando em todo lugar.  Eu ainda uso o bash pra scripts, mas pra linha de comando, fish shell.

Starship

modern unix starship

Esse eu conheci mais recentemente por uma dica do Mastodon.  Eu sinceramente não lembro quem recomendou, mas lembro de bastante gente elogiando.  Testei e gostei.  É um formatador de prompt.  Ao invés de ficar configurando temas no shell, é só botar o starship pra carregar no login e tá pronto.

Bat

modern unix bat

O bat é um substituto bem legal ao cat.  É mais lento que o cat, mas traz ferramentas visuais com cores que facilitam olhar um arquivo. Isso te faz achar que a pequena lentidão pra ler o resultado vale o esforço, ou tempo.

Nota: por alguma motivo bizarro, no Ubuntu o binário instalado é batcat.  Eu geralmente faço um link simbólico pra apenas bat.

Htop

modern unix htop

Esse é um excelente substituto ao "top".  Bem mais gráfico e colorido.  Eu nem considero algo tão moderno assim porque uso já faz mais de 10 anos.  Mas recentemente descobri que tem gente que não sabe de sua existência.  Então fica aqui na lista registrado.

Duf

modern unix duf

Um programa que subtitui o "df" pra ver o tamanho e uso de partições.

Dust

modern unix dust

Usa o "du" pra ver qual o tamanho de arquivos e/o ou diretórios?  Pois chegou sua evolução.

Exa/Eza

modern unix exa

Esses são substitutos ao "ls".  A sintaxe não é 100% compatível.  Por exemplo "-tr" não funciona neles, mas você pode usar algo mais simples como "--sort=created".  O programa começou como exa, que tem disponível no Ubuntu 24.04, mas no Archlinux passaram pra eza.  Imagino que foi um fork porque o primeiro deve ter parado o desenvolvimento.

Procs

modern unix procs

Ainda usa "ps" pra listar processos?  E fica bolado que quando manda um "grep", o mesmo aparece na listagem?  Pois o procs resolve esse problema.

Ripgrep

modern unix ripgrep

O ripgrep, que apesar do nome tem como binário apenas "rg", é um excelente substituto do grep pra procurar em arquivos de determinado diretório.  Ou diretórios.  E bem mais rápido.

Glances

modern unix glances summary

O glances é escrito em python.  Legal, mas isso o torna lento pra iniciar.  Mas depois que inicia, funciona bem.  Ele é um melhoramento do "htop" com mais informação.

Jq

modern unix jq

Se você mexe com kubernetes ou com arquivos json, jq é a ferramenta.  Ajuda a filtrar e dá o resultado num formato colorido, o que ajuda a visualizar.  E você pode construir filtros pros resultados.  Existe uma outra ferramenta que é mais rápida, mas eu acabo usando o jq por causa da saída colorida (que ajuda demais).

Tldr

modern unix tldr

Sabe aquele problema de ler manpage e não ter exemplos?  O tldr resolve essa parte.  Baixa exemplos do comando que quiser usar. 

Fd

modern unix fd 

No Ubuntu o pacote chama-se fd-find.  E instala o binário como fdfind.  Eu renomeio pra fd, tal qual é no archlinux e no macOS.  É um melhoramento do find.  Mais rápido e mais fácil de usar.

McFly

modern unix mcfly

Esse entra aqui como uma menção quase que honrosa porque atualmente eu já não uso mais.  Ele é prático se você usar outro shell que não seja o fish, como bash ou zsh.  Ele faz a busca no histórico ser de  uma forma bem mais simples.  Tal como já é por padrão no fish.

Zsh

modern unix zsh

A imagem é do oh-my-zsh, que deixa o terminal mais bonitinho.  O zsh mesmo não tem imagem na página do projeto.  Se é que é um projeto.

O zsh é o padrão no macOS e eu resolvi experimentar por 6 meses na máquina que peguei no refresh da Ericsson.  A vantagem do zsh é que é a mesma sintaxe do bash, então você reaproveita muita coisa.  Agora sobre trocar zsh por bash... no final eu achei bem parecido.  Existem algumas vantagens do zsh, mas no uso do dia à dia, pra mim pelo menos, não fez tanta diferença assim.

Update

O Patola lembrou bem que existem comportamentos distintos entre bash e zsh.

Em bash:

patola@risadinha:/dados$ echo a | read b ; echo $b
patola@risadinha:/dados$

Em zsh:

[19:03] [9665] [patola@risadinha /dados]% echo a | read b ; echo $b
a
[19:03] [9666] [patola@risadinha /dados]%

O resultado é diferente porque a sintaxe é diferente. O bash tem right-side fork, o zsh tem left-side fork. Isso não é controverso. É uma diferença de sintaxe conhecida, explicada e verificável.
        -- Patola

K9s

modern unix k9s 

Essa não é bem uma dica pra quem mexe com kubernetes.  Ao invés de ficar mandando "kubectl" pra tudo quanto é lado, o melhor é usar o k9s.  Ele mostra de forma visual o seu cluster e namespace.  E todos os atributos que consegue ver pelo "kubectl".

E acabamos aqui...

E assim terminamos o artigo.  Se eu lembrar de mais alguma coisa que uso e esqueci, acrescento aqui.

 

 

Estado dos processadores em termos de vulnerabilidade com Linux

Details
Written by: Helio Loureiro
Category: Linux
Published: August 23, 2024
Hits: 1429

Estávamos discutindo sobre upgrade de firmware no grupo Linux Brasil eu resolvi dar uma revisitada no artigo que escrevi sobre vulnerabilidades de CPU: falhas de segurança em CPU nas distros com linux-libre.

Olhando aqui meu desktop, estou até que bem protegido.

  
root@goosfraba ~# for v in /sys/devices/system/cpu/vulnerabilities/*
                      echo -n "$v:"; cat $v
                  end
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling:Not affected
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:Not affected
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Not affected
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling:Not affected
/sys/devices/system/cpu/vulnerabilities/retbleed:Mitigation: untrained return thunk; SMT disabled
/sys/devices/system/cpu/vulnerabilities/spec_rstack_overflow:Not affected
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Retpolines; STIBP: disabled; RSB filling; PBRSB-eIBRS: Not affected; BHI: Not affected
/sys/devices/system/cpu/vulnerabilities/srbds:Not affected
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
    
  

Eu fiz recentemente um upgrade de firmware aqui usando o fwupgrmgr. Não salvei o resultando, mas salvei o que fiz no sh1bb0l33t.

E falando sh1bb0l33t:

  
root@sh1bb0l33t ~# for v in /sys/devices/system/cpu/vulnerabilities/*
                                             echo -n "$v:"; cat $v
                                         end
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling:Mitigation: Microcode
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: VMX disabled
/sys/devices/system/cpu/vulnerabilities/l1tf:Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/mds:Mitigation: Clear CPU buffers; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Mitigation: Clear CPU buffers; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling:Not affected
/sys/devices/system/cpu/vulnerabilities/retbleed:Mitigation: IBRS
/sys/devices/system/cpu/vulnerabilities/spec_rstack_overflow:Not affected
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: IBRS; IBPB: conditional; STIBP: conditional; RSB filling; PBRSB-eIBRS: Not affected; BHI: Not affected
/sys/devices/system/cpu/vulnerabilities/srbds:Mitigation: Microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Mitigation: TSX disabled
  

Se estranharem a sintaxe do comando no shell, é porque estou usando fish pra shell interativo. Adotei e não largo mais.

Voltando ao assunto de updates de firmwares, fwupdmgr faz tudo pra você hoje em dia. Os tempos de ter um disco com Windows ou Dos ou FreeDOS pra atualizar são coisa do passado.

Existe a possibilidade de dar algo errado? Claro. Sempre. Estamos falando de firmware de placa-mãe e HDDs/SSDs. Se o processo parar no meio pode dar errado. E alguns updates acabam provocando efeitos indesejados como lentidão (exemplo de correções pra ataques de side channel de processador). Então algumas pessoas preferem escolher mais meticulosamente os updates antes de aplicar.

Mas se esse não é seu caso, eu fortemente recomendo usar o fwupdmgr e atualizar os firmwares de seu computador.

E deixo aqui a frase dita e escrita pelo grande Kevlin Henney durante uma palestra em Estocolmo na Ericsson, e registrada muito péssimamente pela minha câmera do celular (Kevlin, se estiver lendo isso aqui, eu peço desculpas pela fotografia tão borrada).

Melhorando a previsão do ano do Linux no desktop

Details
Written by: Helio Loureiro
Category: Linux
Published: August 23, 2024
Hits: 1475
  • linux
  • python
  • desktop
  • previsão

Eu resolvi melhorar a previsão e o modelo pra tal sobre o Linux no desktop, uma realidade inegável.  Então escrevi algo em python pra fazer isso pra mim o trabalho e usar de algum modelo já pronto.


(venv) helio@goosfraba ~/D/linux-desktop-dominance-forecast (main)> ./forecasting.py
            Windows  OS X  Unknown  Linux  Chrome OS  iOS  Android  \
Date                                                                 
2009-01-01    95.42  3.68     0.17   0.64        0.0  0.0      0.0   
2009-02-01    95.39  3.76     0.14   0.62        0.0  0.0      0.0   
2009-03-01    95.22  3.87     0.16   0.65        0.0  0.0      0.0   
2009-04-01    95.13  3.92     0.17   0.66        0.0  0.0      0.0   
2009-05-01    95.25  3.75     0.24   0.65        0.0  0.0      0.0   

            Playstation  Other  
Date                            
2009-01-01         0.08   0.02  
2009-02-01         0.07   0.02  
2009-03-01         0.08   0.02  
2009-04-01         0.10   0.02  
2009-05-01         0.09   0.02  
            Windows   OS X  Unknown  Linux  Chrome OS  iOS  Android  \
Date                                                                  
2024-01-01    73.00  16.11     5.33   3.77       1.78  0.0      0.0   
2024-02-01    72.17  15.42     6.10   4.03       2.27  0.0      0.0   
2024-03-01    72.47  14.68     6.52   4.05       2.27  0.0      0.0   
2024-04-01    73.50  14.70     5.34   3.88       2.56  0.0      0.0   
2024-05-01    73.91  14.90     4.87   3.77       2.54  0.0      0.0   
2024-06-01    72.81  14.97     6.23   4.05       1.93  0.0      0.0   
2024-07-01    72.10  14.92     7.13   4.44       1.41  0.0      0.0   

            Playstation  Other  
Date                            
2024-01-01          0.0   0.01  
2024-02-01          0.0   0.01  
2024-03-01          0.0   0.01  
2024-04-01          0.0   0.01  
2024-05-01          0.0   0.01  
2024-06-01          0.0   0.01  
2024-07-01          0.0   0.01  
/home/helio/DEVEL/linux-desktop-dominance-forecast/venv/lib/python3.12/site-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: No frequency information was provided, so inferred frequency MS will be used.
  self._init_dates(dates, freq)
/home/helio/DEVEL/linux-desktop-dominance-forecast/venv/lib/python3.12/site-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning: No frequency information was provided, so inferred frequency MS will be used.
  self._init_dates(dates, freq)
/home/helio/DEVEL/linux-desktop-dominance-forecast/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/sarimax.py:978: UserWarning: Non-invertible starting MA parameters found. Using zeros as starting parameters.
  warn('Non-invertible starting MA parameters found.'
RUNNING THE L-BFGS-B CODE

           * * *

Machine precision = 2.220D-16
 N =           11     M =           10
 This problem is unconstrained.

At X0         0 variables are exactly at the bounds

At iterate    0    f=  2.00575D-01    |proj g|=  1.24633D+00

At iterate    5    f= -1.49635D-01    |proj g|=  1.77236D-01

At iterate   10    f= -3.64537D-01    |proj g|=  1.24837D-01

At iterate   15    f= -3.84843D-01    |proj g|=  1.22570D-01

At iterate   20    f= -4.20877D-01    |proj g|=  9.71167D-02

At iterate   25    f= -4.29351D-01    |proj g|=  1.13565D-01

At iterate   30    f= -4.33425D-01    |proj g|=  9.06436D-02

At iterate   35    f= -4.34142D-01    |proj g|=  3.98871D-02

At iterate   40    f= -4.36192D-01    |proj g|=  4.26757D-01

At iterate   45    f= -4.37801D-01    |proj g|=  6.82859D-02

At iterate   50    f= -4.37938D-01    |proj g|=  1.67285D-02

           * * *

Tit   = total number of iterations
Tnf   = total number of function evaluations
Tnint = total number of segments explored during Cauchy searches
Skip  = number of BFGS updates skipped
Nact  = number of active bounds at final generalized Cauchy point
Projg = norm of the final projected gradient
F     = final function value

           * * *

   N    Tit     Tnf  Tnint  Skip  Nact     Projg        F
   11     50     55      1     0     0   1.673D-02  -4.379D-01
  F = -0.43793754789434586     

STOP: TOTAL NO. of ITERATIONS REACHED LIMIT                 
/home/helio/DEVEL/linux-desktop-dominance-forecast/venv/lib/python3.12/site-packages/statsmodels/base/model.py:607:
  ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals
  warnings.warn("Maximum Likelihood optimization failed to "
The year of Linux on the Desktop: 2036-11-30 00:00:00

Se ignorarmos os pequenos erros e avisos que aparecem, coisa pouca e irrelevante como valor divergir demais, podemos ver claramente quando o ano do Linux no desktop acontece: 2036-11-30

Então a previsão revisada é que logo estaremos em todos os lugares. Aguardem-nos!

E claro que publiquei isso tudo no GitHub:

https://github.com/helioloureiro/linux-desktop-dominance-forecast

E usei o seguinte artigo como referência (e código, diga-se de passagem):

https://builtin.com/data-science/time-series-forecasting-python

Bom ano do Linux no desktop pra todos vocês.

O ano do Linux no desktop está chegando!

Details
Written by: Helio Loureiro
Category: Linux
Published: August 22, 2024
Hits: 1431

Parece que finalmente acordaram pra aquilo que era óbvio: Linux chegou pra dominar também o desktop!

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed molestie scelerisque ultrices. Nullam venenatis, felis ut accumsan vestibulum, diam leo congue nisl, eget luctus sapien libero eget urna. Duis ac pellentesque nisi.

Foram meros 4%, mas a tendência é de crescimento e não tem volta.  Até mesmo peguei os dados diretamente do site statcounter.

Claramente Linux está em plena ascensão.  Seja porque razão for, o importante é estar lá.  E vai chegar ao 100% com certeza.  Eu até fiz uma checagem usando uma função forecast do libreoffice pra ver quantos anos serão necessários.

Ou seja, Linux dominará completamente o desktop em outubro de 2151.  Marquem em suas agendas pois será uma data inesquecível.  E não temos meta, mas quando chegarmos na meta nós dobraremos a meta.  Aguardem-nos!

  1. Ataques de força bruta no login do linux-br.org
  2. Linux vs GNU/Linux
  3. Resolvendo o problema de conexão ssh travando no raspberry pi
  4. Renderizando as fotos da GoPro em vídeo mpeg4 com ffmpeg e NVIDIA

Page 2 of 20

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Estatísticas

  • Users 2
  • Articles 468
  • Articles View Hits 3356518

Imagem aleatória