Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

13. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 10/04/2024 - 21:14h

raulgrangeiro escreveu:
Bom dia, amigo. Por gentileza, o que a parte de debugação e configurações está fazendo exatamente? Não entendi essa parte.
Creia no Senhor Jesus Cristo e serás salvo!

Para saber leia os seguintes links.

Sobre variaveis:
https://cleitonbueno.com/shell-script-variaveis/

E sobre o SET:
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
O set só achei em inglês.

A configuração de cpu_cores eu deixei detecção automática, mas vc pode definir quantos núcleos do CPU você quer que use na compilação.
Ei tirei a ideia desta dica: https://www.vivaolinux.com.br/dica/Verificar-quantos-cores-e-processadores-existem-na-maquina
O código do cara esta quebrado mas eu corrige.


  


14. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

aguamole
aguamole

(usa KUbuntu)

Enviado em 10/04/2024 - 22:54h

Tinha como melhorar:
#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
#________________________________________________

[[ "$(id -u)" == "0" ]] && echo "Você é root!" || echo "Você não é root, execute como root!"; exit 1

[[ ! -d "${driver_battery}" ]] && mkdir ${driver_battery}

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"



15. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

Raul Lopes S. Grangeiro
raulgrangeiro

(usa Fedora)

Enviado em 11/04/2024 - 11:17h


aguamole escreveu:

raulgrangeiro escreveu:
Bom dia, amigo. Por gentileza, o que a parte de debugação e configurações está fazendo exatamente? Não entendi essa parte.
Creia no Senhor Jesus Cristo e serás salvo!

Para saber leia os seguintes links.

Sobre variaveis:
https://cleitonbueno.com/shell-script-variaveis/

E sobre o SET:
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
O set só achei em inglês.

A configuração de cpu_cores eu deixei detecção automática, mas vc pode definir quantos núcleos do CPU você quer que use na compilação.
Ei tirei a ideia desta dica: https://www.vivaolinux.com.br/dica/Verificar-quantos-cores-e-processadores-existem-na-maquina
O código do cara esta quebrado mas eu corrige.


Irei ler os links, mas uma última dúvida: porque eu iria querer mexer em configuração de cores para esse módulo? Desculpe se estiver sendo leigo aqui.

Creia no Senhor Jesus Cristo e serás salvo!


16. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 11/04/2024 - 11:21h

Justamente por não ter motivo é que eu coloquei detecção automática, quanto menos cores da CPU usar mais demorado fica a compilação o que torna uma desvantagem diminuir. Mas se você trocar a detecção automática definindo diretamente o quanto de cores da CPU isso vai tornar o código alguns milissegundos mais eficiente. A detecção automática causa consumo de recurso.


17. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

Raul Lopes S. Grangeiro
raulgrangeiro

(usa Fedora)

Enviado em 19/04/2024 - 12:12h


aguamole escreveu:

Tinha como melhorar:
#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
#________________________________________________

[[ "$(id -u)" == "0" ]] && echo "Você é root!" || echo "Você não é root, execute como root!"; exit 1

[[ ! -d "${driver_battery}" ]] && mkdir ${driver_battery}

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"


Boa tarde, amigo. Fiz o teste aqui deste script criado pelo senhor após uma atualização de kernel e ele não funcionou. Acredito que seja aquele bug que relatei anteriormente: ele somente compila o novo kernel quando o git baixa o arquivo na pasta de usuário, se baixar em outro local ele dá erro de compilação. Não vi nenhum erro, não apresentou nada após executar como root, apenas não copiou o arquivo compilado para a pasta onde deveria ter ido. O senhor saberia como corrigir?

Deus o abençoe!

Creia no Senhor Jesus Cristo e serás salvo!


18. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/04/2024 - 12:43h

Mais então, é por isso que existe as configurações, é para você poder alterar elas, o local onde o git vai baixar o código fonte é essa configuração "driver_battery="/tmp/acer-wmi-battery"" você pode alterar para o que quiser pó.
driver_battery="diretorio/desejado/aqui"

driver_battery="/home/raulgrangeiro/acer-wmi-battery"

Eu entende certo? é disso que vc esta falando?


19. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/04/2024 - 13:02h

Eu também percebe que o código tem um problema que é ele não informar ao usuário os processo de sua execuções, vê se assim fica melhor.

#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
log_da_execucao="/var/log/linux_bateria.log"
#________________________________________________

{
[[ "$(id -u)" == "0" ]] && echo "Você é root!" || echo "Você não é root, execute como root!"; exit 1

[[ ! -d "${driver_battery}" ]] && mkdir ${driver_battery}

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"
} >>"${log_da_execucao}" 2>&1
Toda a execução será gravada onde a variável de "log_da_execucao" apontar.
Modifiquei de novo.


20. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

Raul Lopes S. Grangeiro
raulgrangeiro

(usa Fedora)

Enviado em 19/04/2024 - 17:28h


aguamole escreveu:

Eu também percebe que o código tem um problema que é ele não informar ao usuário os processo de sua execuções, vê se assim fica melhor.

#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
log_da_execucao="/var/log/linux_bateria.log"
#________________________________________________

{
[[ "$(id -u)" == "0" ]] && echo "Você é root!" || echo "Você não é root, execute como root!"; exit 1

[[ ! -d "${driver_battery}" ]] && mkdir ${driver_battery}

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"
} >>"${log_da_execucao}" 2>&1
Toda a execução será gravada onde a variável de "log_da_execucao" apontar.
Modifiquei de novo.


Por algum motivo estranho continua sem funcionar. Alterei as configurações para as que preciso e tentei, o log apenas fala que sou root. Percebi que faltava indicar para o git onde baixar o arquivo, coloquei, mas mesmo assim não funciona. Vou te mostrar o log depois de algumas tentativas:

Você é root!
Você é root!
Você é root!
Você é root!
Você é root!


E esse é o script que mofiquei para usar e não funcionou:

#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/home/raulgrangeiro/"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
log_da_execucao="/home/raulgrangeiro/linux_bateria.log"
#________________________________________________

{
[[ "$(id -u)" == "0" ]] && echo "Você é root!" || echo "Você não é root, execute como root!"; exit 1

[[ ! -d "${driver_battery}" ]] && mkdir ${driver_battery}

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git "${driver_battery}"

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"
} >>"${log_da_execucao}" 2>&1


Creia no Senhor Jesus Cristo e serás salvo!


21. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/04/2024 - 18:56h

Cara, quando fui responder a energia aqui acabo.
Eu consegui reproduzir o erro e ele ocorre porque eu não usei um "if", eu usei uma forma de if mais simplificado, mas que eu esquece que quando usado com um "ponto e vírgula ';'" o ponto e vírgula não é contado na condicional sendo executado o que esta após não importando o resultado da condicional, isso fazia com que o bash interpretasse o "exit 1" independente do resultado da condicional o que finaliza a execução mesmo que o usuário seja root, o que não é desejado, apenas é desejado o "exit 1" se o usuário não for root. Agora eu coloquei o if.

#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
log_da_execucao="/var/log/linux_bateria.log"
#________________________________________________

{
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi

if [[ ! -e "${driver_battery}" ]]
then
mkdir -p "${driver_battery}"
else
if [[ ! -d "${driver_battery}" ]]
then
echo "${driver_battery} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
fi
fi

cd "${driver_battery}"

git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${cpu_cores}"

cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"

depmod

modprobe acer_wmi_battery

[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"
} >>"${log_da_execucao}" 2>&1

Agora eu percebe que tem outro problema na condição "[[ ! -d "${driver_battery}" ]]" não é fatal mas daria erro caso não fosse um diretório como por exemplo um arquivo.
Acabei de fazer mais 2 modificação porque permitia possíveis problemas de ocorrer. Adicionei o parâmetro -p no mkdir porque sem isso poderia dar erro na criação do diretório caso o diretório pai passado a variável não existir, e a outra foi para evitar do mkdir tentasse criai diretório por cima de "dispositivo de bloco" que é por exemplo o "/dev/sda1" o que daria um erro na criação do diretório.

É isso, abraço <3


22. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 19/04/2024 - 22:44h

#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.

## Depuração
set -e -u

#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery" # Variável que determina onde será a compilação.
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)" # Variável que define quantos núcleos será usada, detecta automaticamente.
log_da_execucao="/var/log/linux_bateria.log" # Variável que define onde o log será gerado.
#________________________________________________

# Tudo executado a partir daqui vai ser gravado em log_da_execucao
{
# Verifica se é superusuario e notifica, caso não seja aborta a execução
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi

# Verifica se o diretório driver_battery não existe
if [[ ! -e "${driver_battery}" ]] # Verifica se o diretório driver_battery não existe.
then
mkdir -p "${driver_battery}" # Se o diretório driver_battery não existir ele será criado
else
if [[ ! -d "${driver_battery}" ]] # Verifica se o driver_battery não é diretório
then
# Existe algum arquivo no diretório driver_battery e por isso é abortado
echo "${driver_battery} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
fi
fi

cd "${driver_battery}" # Entra no diretório

if [[ -f "${driver_battery}/acer-wmi-battery.ko" ]]
then
# Se o arquivo de modulo acer-wmi-battery.ko existir faz a copia do mesmo para o kernel carregado
cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
else
# Baixa o código fonte do driver no diretório driver_battery
git clone https://github.com/frederik-h/acer-wmi-battery.git
make -j"${cpu_cores}" # Inicia a compilação usando o numero de núcleos definido em cpu_cores
# Faz uma copia do arquivo do modulo compilado para os módulos do kernel carregado
cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
fi

depmod # Generate modules.dep and map files

modprobe acer_wmi_battery # Carrega o modulo do kernel

# Remove o diretório driver_battery caso ele seja um diretório
[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}" ||
echo "Falha ao remover, não é um diretório, escolha outro lugar ou delete o arquivo."
} >>"${log_da_execucao}" 2>&1

Adicionado comentários para explicar o código.
Mais algumas mudanças e comentários e reestruturação do código.


23. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticame

aguamole
aguamole

(usa KUbuntu)

Enviado em 24/04/2024 - 00:03h


#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de BATERIA de notebook Acer no Kernel Linux
# quando uma nova versão do kernel Linux for instalada.

# Versão: 1.0
# Licença: GPLv3 <https://www.gnu.org/licenses/gpl-3.0.html>

#________________________________________________
# NEWS
# * Mudança de nomes de variáveis.
# * Remoção de código inútil.
# * Simplificação de código para detectar numero de núcleos.
# * Adicionado versionamento
# * Bloco NEWS para registrar mudanças no programa.
# * Adicionado licenciamento de acordo com as regras do site vivaolinux.
#________________________________________________

## Depuração
set -e -u

#________________________________________________
## Configurações
BATERIA="/tmp/acer-wmi-battery" # Variável que determina onde será a compilação.
CPU_CORES="$(nproc)" # Variável que define quantos núcleos será usada, detecta automaticamente.
LOG_DA_EXECUCAO="/var/log/linux_bateria.log" # Variável que define onde o log será gerado.
#________________________________________________

# Tudo executado a partir daqui vai ser gravado em LOG_DA_EXECUCAO
{
# Verifica se é superusuario e notifica, caso não seja aborta a execução
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi

# Verifica se o diretório BATERIA não existe
if [[ ! -e "${BATERIA}" ]] # Verifica se o diretório driver_battery não existe.
then
mkdir -p "${BATERIA}" # Se o diretório driver_battery não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o driver_battery não é diretório
then
# Existe algum arquivo no diretório BATERIA e por isso é abortado
echo "${BATERIA} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
fi
fi

cd "${BATERIA}" # Entra no diretório BATERIA

if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
# Se o arquivo de modulo acer-wmi-battery.ko existir faz a copia do mesmo para o kernel carregado
cp "${BATERIA}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
else
# Baixa o código fonte do driver no diretório BATERIA
git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${CPU_CORES}" # Inicia a compilação usando o numero de núcleos definido em cpu_cores

# Faz uma copia do arquivo do modulo compilado para os módulos do kernel carregado
cp "${BATERIA}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
fi

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

} >>"${LOG_DA_EXECUCAO}" 2>&1



24. Re: Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel para iniciar automaticamente?

Raul Lopes S. Grangeiro
raulgrangeiro

(usa Fedora)

Enviado em 24/04/2024 - 08:12h


aguamole escreveu:


#!/bin/bash

# Script criado para automatizar procedimento de instalação de
# módulo de saúde de BATERIA de notebook Acer no Kernel Linux
# quando uma nova versão do kernel Linux for instalada.

# Versão: 1.0
# Licença: GPLv3 <https://www.gnu.org/licenses/gpl-3.0.html>

#________________________________________________
# NEWS
# * Mudança de nomes de variáveis.
# * Remoção de código inútil.
# * Simplificação de código para detectar numero de núcleos.
# * Adicionado versionamento
# * Bloco NEWS para registrar mudanças no programa.
# * Adicionado licenciamento de acordo com as regras do site vivaolinux.
#________________________________________________

## Depuração
set -e -u

#________________________________________________
## Configurações
BATERIA="/tmp/acer-wmi-battery" # Variável que determina onde será a compilação.
CPU_CORES="$(nproc)" # Variável que define quantos núcleos será usada, detecta automaticamente.
LOG_DA_EXECUCAO="/var/log/linux_bateria.log" # Variável que define onde o log será gerado.
#________________________________________________

# Tudo executado a partir daqui vai ser gravado em LOG_DA_EXECUCAO
{
# Verifica se é superusuario e notifica, caso não seja aborta a execução
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi

# Verifica se o diretório BATERIA não existe
if [[ ! -e "${BATERIA}" ]] # Verifica se o diretório driver_battery não existe.
then
mkdir -p "${BATERIA}" # Se o diretório driver_battery não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o driver_battery não é diretório
then
# Existe algum arquivo no diretório BATERIA e por isso é abortado
echo "${BATERIA} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
fi
fi

cd "${BATERIA}" # Entra no diretório BATERIA

if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
# Se o arquivo de modulo acer-wmi-battery.ko existir faz a copia do mesmo para o kernel carregado
cp "${BATERIA}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
else
# Baixa o código fonte do driver no diretório BATERIA
git clone https://github.com/frederik-h/acer-wmi-battery.git

make -j"${CPU_CORES}" # Inicia a compilação usando o numero de núcleos definido em cpu_cores

# Faz uma copia do arquivo do modulo compilado para os módulos do kernel carregado
cp "${BATERIA}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
fi

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

} >>"${LOG_DA_EXECUCAO}" 2>&1


Bom dia, amigo! Cara, esse script tá muito PRO!

Mas queria te dizer uma coisa sobre ele que, se for possível, seria bom ser corrigido: se compilar o código baixado do git em uma versão do kernel ele não ativa em outra, significando que necessita ser baixado e compilado novamente toda vez que um novo kernel é instalado, então precisa que ele apague todos os arquivos criados na compilação, deixando apenas o arquivo acer-wmi-battery.ko na pasta de módulos do kernel. E na próxima atualização do kernel ele baixa novamente do git o código fonte e recompila. O senhor me ajudaria com essa correção?

E se o senhor permitir, gostaria de escrever uma dica bem organizada sobre esse assunto para ajudar a comunidade e postar aqui no VOL referenciando esse post e o senhor nos créditos.

Deus o abençoe!

Creia no Senhor Jesus Cristo e serás salvo!



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts