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

25. 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 - 12:50h

#!/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.1
# Licença: GPLv3 <https://www.gnu.org/licenses/gpl-3.0.html>

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#________________________________________________

set -e -u # Não editar

#________________________________________________
## Configurações do programa
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa

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
DEPURACAO="0" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Baixa o código fonte do driver no diretório BATERIA
[[ "$(echo *)" == "*" ]] &&
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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

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

Será que funciona? eu não tenho como testar.
Postar o log da execução ajudaria. Eu dei um tiro no escuro.
Modificação versão 1.2


  


26. 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 - 17:18h

raulgrangeiro escreveu:
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!

Esse programa é software livre licenciado na GPLv3 conforme as regras deste site o que significa que eu não posso impedir você a redistribuir ou modificar... este programa. A licença GPL é baseada em 4 liberdades leia mais no site abaixo:
https://napoleon.com.br/glossario/o-que-e-gpl-gnu-general-public-license/

Esse site diz que as 4 liberdades são "Com o GPL, os usuários têm a liberdade de usar, estudar, modificar e distribuir o software de acordo com suas necessidades." então mesmo que eu quisesse te impedir, as regras do site define que os programas são licenciados na GPLv3, o que eu fiz colocando isso no cabeçalho do código fonte, foi reconhecer as regras deste site.

A pagina web do contrato da GPLv3 esta no cabeçalho do programa se quiser ler.


27. 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 - 22:12h

#!/bin/bash

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

# Implementação inicial por "raulgrangeiro" <https://www.vivaolinux.com.br/~raulgrangeiro>
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro" <https://www.vivaolinux.com.br>
# Tópico para o qual o programa foi escrito:
# <https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente?pagina=01>

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

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa

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á usado, detecta automaticamente
LOG_DA_EXECUCAO="/var/log/linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="0" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="1" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
#
testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
#
testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
#________________________________________________

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estajam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(testar_essential)" != 'build-essential' || "$(testar_headers)" != "linux-headers-$(uname -r)" || "$(testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
[[ "$(echo *)" == "*" ]] &&
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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

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



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

aguamole
aguamole

(usa KUbuntu)

Enviado em 25/04/2024 - 18:26h

@raulgrangeiro rapais, como vc executa esse script? você disse que é automático, então ele é iniciado pelo sistema ou você invoca ele manualmente no terminal?


29. 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 29/04/2024 - 18:18h


aguamole escreveu:

@raulgrangeiro rapais, como vc executa esse script? você disse que é automático, então ele é iniciado pelo sistema ou você invoca ele manualmente no terminal?


Meu amigo, eu executo ele manualmente após as atualizações de kernel. Porque assim, esse módulo que é compilado só funciona exatamente na versão de kernel para o qual foi compilado, então eu entendi que precisava fazer o parte do procedimento toda vez que atualizava o kernel, pra facilitar fiz um procedimento inicial documentado (que esse sim se faz somente uma vez no sistema, independente das atualizações de kernel) e depois apenas executo o script que ele faz todo o procedimento de recompilação e move o novo módulo para a pasta correta do novo kernel, depois apaga as sobras pra limpar o sistema, aí basta reiniciar a máquina que o sistema de saúde da bateria do Acer começa a funcionar.

Esse script que o senhor fez está muito bonito visualmente, chega dá gosto de usar kkk. Um dia ainda aprendo a fazer! Vou fazer o teste dele e em breve posto aqui o log para o senhor ver! Estando tudo certo vou escrever a dica e postar os créditos!

Em breve dou retorno dele!

Deus o abençoe!

Creia no Senhor Jesus Cristo e serás salvo!


30. 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 29/04/2024 - 18:33h

Se executar o script sem alterar o local de salvamento do arquivo git baixado para /home/seu_usuario ele dá esse erro:

++ id -u
+ [[ 0 == \0 ]]
+ echo 'Você é root!'
Você é root!
+ [[ ! -e /tmp/acer-wmi-battery ]]
+ mkdir -p /tmp/acer-wmi-battery
+ cd /tmp/acer-wmi-battery
+ [[ 0 == \0 ]]
++ testar_essential
++ dpkg --list
++ grep build-essential
++ sed 's/ .*//;s/.* //'
+ [[ build-essential != \b\u\i\l\d\-\e\s\s\e\n\t\i\a\l ]]
++ testar_headers
++ dpkg --list
++ sed 's/ .*//;s/.* //'
+++ uname -r
++ grep linux-headers-6.5.0-28-generic
++ uname -r
+ [[ linux-headers-6.5.0-28-generic != \l\i\n\u\x\-\h\e\a\d\e\r\s\-\6\.\5\.\0\-\2\8\-\g\e\n\e\r\i\c ]]
++ testar_git
++ type git
++ echo 0
+ [[ 0 != \0 ]]
++ echo '*'
+ [[ * == \* ]]
+ git clone https://github.com/frederik-h/acer-wmi-battery.git
Cloning into 'acer-wmi-battery'...
+ make -j16
make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.


Alterando para minha pasta de usuário:

++ id -u
+ [[ 0 == \0 ]]
+ echo 'Você é root!'
Você é root!
+ [[ ! -e /home/raulgrangeiro ]]
+ [[ ! -d /home/raulgrangeiro ]]
+ [[ -f /home/raulgrangeiro/acer-wmi-battery.ko ]]
+ cd /home/raulgrangeiro
+ [[ 0 == \0 ]]
++ testar_essential
++ dpkg --list
++ grep build-essential
++ sed 's/ .*//;s/.* //'
+ [[ build-essential != \b\u\i\l\d\-\e\s\s\e\n\t\i\a\l ]]
++ testar_headers
++ dpkg --list
++ sed 's/ .*//;s/.* //'
+++ uname -r
++ grep linux-headers-6.5.0-28-generic
++ uname -r
+ [[ linux-headers-6.5.0-28-generic != \l\i\n\u\x\-\h\e\a\d\e\r\s\-\6\.\5\.\0\-\2\8\-\g\e\n\e\r\i\c ]]
++ testar_git
++ type git
++ echo 0
+ [[ 0 != \0 ]]
++ echo Applications 'Área de trabalho' Bricsys cv_debug.log Documentos Downloads Dropbox Imagens Modelos Músicas OneDrive pCloudDrive 'Projeto Teste.pod' Público snap Vídeos
+ [[ Applications Área de trabalho Bricsys cv_debug.log Documentos Downloads Dropbox Imagens Modelos Músicas OneDrive pCloudDrive Projeto Teste.pod Público snap Vídeos == \* ]]
+ make -j16
make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.


Acredito que o problema não seja nem o script, e sim o código baixado do git. Ele somente compila se o arquivo for baixar sem alterações para /home/seu_usuario/(aqui ele mesmo cria a pasta acer-wmi-battery e compila diretamente dentro dela).

Vou fazer mais uns testes e postar.

Creia no Senhor Jesus Cristo e serás salvo!


31. 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 29/04/2024 - 18:38h

Fiz todos os testes possíveis, ele sempre retorna esse mesmo erro:

++ id -u
+ [[ 0 == \0 ]]
+ echo 'Você é root!'
Você é root!
+ [[ ! -e /home/raulgrangeiro ]]
+ [[ ! -d /home/raulgrangeiro ]]
+ [[ -f /home/raulgrangeiro/acer-wmi-battery.ko ]]
+ cd /home/raulgrangeiro
+ [[ 0 == \0 ]]
++ testar_essential
++ dpkg --list
++ grep build-essential
++ sed 's/ .*//;s/.* //'
+ [[ build-essential != \b\u\i\l\d\-\e\s\s\e\n\t\i\a\l ]]
++ testar_headers
++ dpkg --list
++ sed 's/ .*//;s/.* //'
+++ uname -r
++ grep linux-headers-6.5.0-28-generic
++ uname -r
+ [[ linux-headers-6.5.0-28-generic != \l\i\n\u\x\-\h\e\a\d\e\r\s\-\6\.\5\.\0\-\2\8\-\g\e\n\e\r\i\c ]]
++ testar_git
++ type git
++ echo 0
+ [[ 0 != \0 ]]
++ echo Applications 'Área de trabalho' Bricsys cv_debug.log Documentos Downloads Dropbox Imagens Modelos Músicas OneDrive pCloudDrive 'Projeto Teste.pod' Público snap Vídeos
+ [[ Applications Área de trabalho Bricsys cv_debug.log Documentos Downloads Dropbox Imagens Modelos Músicas OneDrive pCloudDrive Projeto Teste.pod Público snap Vídeos == \* ]]
+ make -j16
make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.


O código tenta criar alguma pasta pra colocar o código fonte baixado dentro?

Deus abençoe, parceiro!

Creia no Senhor Jesus Cristo e serás salvo!


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

aguamole
aguamole

(usa KUbuntu)

Enviado em 29/04/2024 - 22:52h

#!/bin/bash

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

# Implementação inicial por "raulgrangeiro" <https://www.vivaolinux.com.br/~raulgrangeiro>
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro" <https://www.vivaolinux.com.br>
# Tópico para o qual o programa foi escrito:
# <https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente?pagina=01>

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

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#
# Versão: 1.4
# * Bug ao baixar o código fonte corrigido
# * Agora além do log também vai aparecer a execução no terminal
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa

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á usado, detecta automaticamente
LOG_DA_EXECUCAO="/tmp/linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="0" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="1" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
#
testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
#
testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
#________________________________________________

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estajam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(testar_essential)" != 'build-essential' || "$(testar_headers)" != "linux-headers-$(uname -r)" || "$(testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
if [[ "$(echo *)" == "*" ]]
then
git clone https://github.com/frederik-h/acer-wmi-battery.git
cp -r "${BATERIA}"/acer-wmi-battery/* "${BATERIA}/"
rm -d -r "${BATERIA}/acer-wmi-battery/"
fi

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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

} 2>&1 | tee -a "${LOG_DA_EXECUCAO}"



33. 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 01/05/2024 - 23:59h


aguamole escreveu:

#!/bin/bash

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

# Implementação inicial por "raulgrangeiro" <https://www.vivaolinux.com.br/~raulgrangeiro>
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro" <https://www.vivaolinux.com.br>
# Tópico para o qual o programa foi escrito:
# <https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente?pagina=01>

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

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#
# Versão: 1.4
# * Bug ao baixar o código fonte corrigido
# * Agora além do log também vai aparecer a execução no terminal
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa

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á usado, detecta automaticamente
LOG_DA_EXECUCAO="/media/adm1/bc887882-cbd4-4718-9759-e26fe62350ac/@raiz/script_shell/baixados/toch/linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="0" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="1" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
#
testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
#
testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
#________________________________________________

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estajam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(testar_essential)" != 'build-essential' || "$(testar_headers)" != "linux-headers-$(uname -r)" || "$(testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
if [[ "$(echo *)" == "*" ]]
then
git clone https://github.com/frederik-h/acer-wmi-battery.git
cp -r "${BATERIA}"/acer-wmi-battery/* "${BATERIA}/"
rm -d -r "${BATERIA}/acer-wmi-battery/"
fi

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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

} 2>&1 | tee -a "${LOG_DA_EXECUCAO}"


Parceiro, acabei de testar aqui, funciona perfeitamente agora. Esse é o log:

++ id -u
+ [[ 0 == \0 ]]
+ echo 'Você é root!'
Você é root!
+ [[ ! -e /home/raulgrangeiro/acer-wmi-battery ]]
+ mkdir -p /home/raulgrangeiro/acer-wmi-battery
+ cd /home/raulgrangeiro/acer-wmi-battery
+ [[ 0 == \0 ]]
++ testar_essential
++ dpkg --list
++ grep build-essential
++ sed 's/ .*//;s/.* //'
+ [[ build-essential != \b\u\i\l\d\-\e\s\s\e\n\t\i\a\l ]]
++ testar_headers
++ dpkg --list
++ sed 's/ .*//;s/.* //'
+++ uname -r
++ grep linux-headers-6.5.0-28-generic
++ uname -r
+ [[ linux-headers-6.5.0-28-generic != \l\i\n\u\x\-\h\e\a\d\e\r\s\-\6\.\5\.\0\-\2\8\-\g\e\n\e\r\i\c ]]
++ testar_git
++ type git
++ echo 0
+ [[ 0 != \0 ]]
++ echo '*'
+ [[ * == \* ]]
+ git clone https://github.com/frederik-h/acer-wmi-battery.git
Cloning into 'acer-wmi-battery'...
+ cp -r /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery/acer-wmi-battery.c /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery/LICENSE /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery/Makefile /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery/README.md /home/raulgrangeiro/acer-wmi-battery/
+ rm -d -r /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery/
+ make -j16
make -C /lib/modules/6.5.0-28-generic/build M=/home/raulgrangeiro/acer-wmi-battery modules
make[1]: aviso: jobserver indisponível: usando -j1. Inclua '+' na regra pai.
make[1]: Entrando no diretório '/usr/src/linux-headers-6.5.0-28-generic'
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
You are using: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
CC [M] /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.o
MODPOST /home/raulgrangeiro/acer-wmi-battery/Module.symvers
CC [M] /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.mod.o
LD [M] /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko
BTF [M] /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko
Skipping BTF generation for /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko due to unavailability of vmlinux
make[1]: Saindo do diretório '/usr/src/linux-headers-6.5.0-28-generic'
++ uname -r
+ cp /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko /lib/modules/6.5.0-28-generic
+ depmod
+ modprobe acer_wmi_battery
+ [[ -f /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko ]]
+ rm /home/raulgrangeiro/acer-wmi-battery/acer-wmi-battery.ko


Uma observação fica para o seguinte: na configuração é preciso que seja configurado manualmente para a pasta BATERIA ser /home/pasta_do_usuario/acer-wmi-battery, caso seja diferente disso vai dar o erro de compilação.

Uma outra coisa é que o script deixa a pasta baixada do git lá, apagando apenas o arquivo de módulo. No uso não atrapalha, mas é uma pasta criada como root, então para apagar precisa usar o terminal como sudo, seria mais interessante se ele apagasse a pasta com tudo que há nela.

Deus abençoe você, parceiro! Muito obrigado pela ajuda com um script tão bem feito! Acredito que já dê pra publicar a dica com o conteúdo para outros usuários de Acer. Irei fazer isso em breve.

Creia no Senhor Jesus Cristo e serás salvo!


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

aguamole
aguamole

(usa KUbuntu)

Enviado em 02/05/2024 - 01:12h

Ou eu testei aqui e esta compilando na pasta "/tmp/fazerteste/gosto/" tem certeza que você testo em outra pasta sem ser a sua pasta pessoal?

Outra coisa é que não é legal que um programa exclua aquilo que o próprio usuário crio, ou seja se excluir o diretório BATERIA e o usuário tiver definido como diretório a baixar o código fonte como a "/home/$USER/" como BATERIA e eu colocar para excluir BATERIA a pasta de usuário vai de vala. Um programa deve evitar todos os problemas possíveis, e não criar um problema para o usuário. Você vai ter que ajustar isso dai.

A mais você podia colocar uma verificação se o diretório que o usuário digito pode ser deletado.
Bom ate da, mas não da para confiar de que o usuário vai definir apenas cenários que eu imaginei em minha cabeça, o usuário sempre arruma um meio de bagunçar a bagaça.
O que da para fazer é definir a pasta temporária como diretório BATERIA, com isso da para deletar 100% das vezes, mas você esta dizendo que compila apenas na pasta de usuário, verifica ai se é isso mesmo? aqui esta dando certo na tmp sim.


35. 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 02/05/2024 - 10:55h


aguamole escreveu:

Ou eu testei aqui e esta compilando na pasta "/tmp/fazerteste/gosto/" tem certeza que você testo em outra pasta sem ser a sua pasta pessoal?

Outra coisa é que não é legal que um programa exclua aquilo que o próprio usuário crio, ou seja se excluir o diretório BATERIA e o usuário tiver definido como diretório a baixar o código fonte como a "/home/$USER/" como BATERIA e eu colocar para excluir BATERIA a pasta de usuário vai de vala. Um programa deve evitar todos os problemas possíveis, e não criar um problema para o usuário. Você vai ter que ajustar isso dai.

A mais você podia colocar uma verificação se o diretório que o usuário digito pode ser deletado.
Bom ate da, mas não da para confiar de que o usuário vai definir apenas cenários que eu imaginei em minha cabeça, o usuário sempre arruma um meio de bagunçar a bagaça.
O que da para fazer é definir a pasta temporária como diretório BATERIA, com isso da para deletar 100% das vezes, mas você esta dizendo que compila apenas na pasta de usuário, verifica ai se é isso mesmo? aqui esta dando certo na tmp sim.


Amigo, testei aqui usando a pasta /tmp/BATERIA e funcionou perfeitamente! Já testei em outras pastas dentro da minha pasta home e sempre dá erro de compilação, inclusive em versões anteriores do script e dava erro mesmo na /tmp. Essa foi a primeira vez que deu certo fora do diretório de usuário. E o bom é que dessa maneira é possível deixar fixado um local sem ser necessário o usuário alterar essa configuração.

Realmente, se o usuário for desatento pode dar algo muito errado. Vou incluir essa informação na dica.

Tomei a liberdade de modificar o código chegando na versão 1.5 e alterando o diretório padrão para o citado acima: /tmp/BATERIA, não sendo mais necessário que o usuário altere o diretório padrão, e o log de execução ficará salvo em /tmp/linux_bateria.log. O script exclui o diretório de compilação e deixa apenas o log caso o usuário peça que isso aconteça.

Vou deixar o código do script abaixo:

#!/bin/bash

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

# Implementação inicial por "raulgrangeiro" <https://www.vivaolinux.com.br/~raulgrangeiro>
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro" <https://www.vivaolinux.com.br>
# Tópico para o qual o programa foi escrito:
# <https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente?pagina=01>

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

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#
# Versão: 1.4
# * Bug ao baixar o código fonte corrigido
# * Agora além do log também vai aparecer a execução no terminal
#
# Versão: 1.5
# * Modificação do diretório padrão de compilação para não ser dependente da pasta do usuário, sem dar erro de compilação.
# * Remoção automática do diretório padrão de compilação após execução.
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa
## Altere o diretório de compilação somente se necessário, esse diretório será excluído ao final da execução

BATERIA="/tmp/BATERIA" # Variável que determina onde será a compilação (SOMENTE ALTERE SE SOUBER O QUE ESTÁ FAZENDO)
CPU_CORES="$(nproc)" # Variável que define quantos núcleos será usado, detecta automaticamente
LOG_DA_EXECUCAO="/tmp/linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="1" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="0" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
#
testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
#
testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
#________________________________________________

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estajam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(testar_essential)" != 'build-essential' || "$(testar_headers)" != "linux-headers-$(uname -r)" || "$(testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
if [[ "$(echo *)" == "*" ]]
then
git clone https://github.com/frederik-h/acer-wmi-battery.git
cp -r "${BATERIA}"/acer-wmi-battery/* "${BATERIA}/"
rm -d -r "${BATERIA}/acer-wmi-battery/"
fi

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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório, \
isso não é fatal"

# Remove o diretório de compilação completamente já que não é mais necessário
rm -rf ${BATERIA}

} 2>&1 | tee -a "${LOG_DA_EXECUCAO}"



Creia no Senhor Jesus Cristo e serás salvo!


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

aguamole
aguamole

(usa KUbuntu)

Enviado em 03/05/2024 - 21:18h

#!/bin/bash

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

# Implementação inicial por "raulgrangeiro" <https://www.vivaolinux.com.br/~raulgrangeiro>
# Testado no Ubuntu 23.10 pelo usuário "raulgrangeiro" <https://www.vivaolinux.com.br>
# Tópico para o qual o programa foi escrito:
# <https://www.vivaolinux.com.br/topico/Kernel-Linux/Como-adicionar-um-modulo-ao-kernel-para-iniciar-automaticamente?pagina=01>

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

#________________________________________________
## Changelog:
#
# Versão: 1.0
# * 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.
#
# Versão: 1.1
# * Agora a compilação vai acontecer independente do arquivo acer-wmi-battery.ko já existir.
# * Bloco NEWS foi substituído pelo bloco changelog.
#
# Versão: 1.2
# * Adicionado configuração de habilitar ou desabilitar a depuração(habilite antes de reportar)
#
# Versão: 1.3
# * Novas e primeiras funções criadas
# * Adicionado configuração que permite selecionar sistema operacional
# * Agora se configurar Ubuntu e Debian algumas dependências serão instaladas automaticamente
#
# Versão: 1.4
# * Bug ao baixar o código fonte corrigido
# * Agora além do log também vai aparecer a execução no terminal
#
# Versão: 1.5
# * Modificação do diretório padrão de compilação para não ser dependente da pasta do usuário, sem dar erro de compilação.
# * Remoção automática do diretório padrão de compilação após execução.
#
# Versão: 1.6
# * Adicionado condições para excluir BATERIA
# * Novas funções adicionadas
# * Mudança nos nomes de funções para começar o nome com F_*** para diferenciar de variáveis
# * Mudança no conteúdo de variáveis e nova variável de configuração para deletar o diretório BATERIA
#________________________________________________

set -e -u # Não editar esta parte do programa

#________________________________________________
## Configurações do programa "driver_acer-wmi-battery_install.sh"
## Para facilitar a configuração do usuário comum
## Essas configurações são opcionais você pode manter a configuração já definida
## Habilite a depuração caso for reportar um erro no programa

BATERIA="$(mktemp)" # Variável que determina onde será a compilação
CPU_CORES="$(nproc)" # Variável que define quantos núcleos será usado, detecta automaticamente
LOG_DA_EXECUCAO="/var/log/acer_linux_bateria.log" # Variável que define onde o log será gerado
DEPURACAO="0" # O valor 1(um) habilita a depuração e o valor 0(zero) desabilita
QUAL_E_O_GNU_LINUX="1" # Valor 0(zero) para Debian e Ubuntu e valor 1 para outros GNU/Linux
EXCLUIR_BATERIA="1" # O valor 1(um) determina que o diretório BATERIA deve ser excluído

### Fim da configuração
### A partir daqui para baixo não edite o programa
#________________________________________________

## Depuração
if [[ "${DEPURACAO}" == "1" ]]
then
set -x -e -u
fi

#________________________________________________
## Funções
# Detecta se a dependências build-essential esta instalada
F_testar_essential() {
dpkg --list | grep 'build-essential' | sed 's/ .*//;s/.* //'
}
# Detecta se a dependências linux-headers esta instalado
F_testar_headers() {
dpkg --list | grep "linux-headers-$(uname -r)" | sed 's/ .*//;s/.* //'
}
# Verifica se o GIT esta instalado
F_testar_git() {
if type git >/dev/null 2>&1
then
echo "0"
fi
}
# Filtrar se o diretório BATERIA no segundo delimitador contem "tmp"
F_delimitador() {
echo "${BATERIA}" | cut -d'/' -f2
}
# Filtrar se o conteúdo da variável BATERIA tem "/" como primeiro caractere
F_barra() {
echo "${BATERIA}" | sed 's/^\(.\).*/\1/p'
}
#________________________________________________

# 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 BATERIA não existe
then
mkdir -p "${BATERIA}" # Se o diretório BATERIA não existir ele será criado
else
if [[ ! -d "${BATERIA}" ]] # Verifica se o BATERIA 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
else
# Se o arquivo acer_wmi_battery existir ele será deletado
if [[ -f "${BATERIA}/acer-wmi-battery.ko" ]]
then
rm "${BATERIA}/acer-wmi-battery.ko"
fi
fi
fi

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

# Instalar as dependências de compilação segundo github do projeto "acer-wmi-battery" caso ainda não estejam instaladas
if [[ "${QUAL_E_O_GNU_LINUX}" == "0" ]]
then
if [[ "$(F_testar_essential)" != 'build-essential' || "$(F_testar_headers)" != "linux-headers-$(uname -r)" || "$(F_testar_git)" != "0" ]]
then
apt-get -y install build-essential linux-headers-"$(uname -r)" git
fi
fi

# Baixa o código fonte do driver no diretório BATERIA
if [[ "$(echo *)" == "*" ]]
then
git clone https://github.com/frederik-h/acer-wmi-battery.git
cp -r "${BATERIA}"/acer-wmi-battery/* "${BATERIA}/"
rm -d -r "${BATERIA}/acer-wmi-battery/"
fi

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)"

depmod # Gerar arquivos modules.dep e map

modprobe acer_wmi_battery # Carrega o módulo do kernel

# Remove o arquivo acer-wmi-battery.ko caso ele seja um arquivo
[[ -f "${BATERIA}/acer-wmi-battery.ko" ]] && rm "${BATERIA}/acer-wmi-battery.ko" ||
echo "Falha ao remover acer-wmi-battery.ko, arquivo não existe ou é um diretório!"

# Se as 4 condições for verdadeiro remove o diretório de compilação completamente
if [[ "${EXCLUIR_BATERIA}" == "1" && -d "${BATERIA}" && "$(F_delimitador)" == "tmp" && "$(F_barra)" == "/" ]]
then
rm -r -d "${BATERIA}"
else
echo "O diretório ${BATERIA} não foi excluído, dever ser um diretório dentro de /tmp/ para que seja excluído!"
fi

} 2>&1 | tee -a "${LOG_DA_EXECUCAO}" # Usa o tee para gravar o log







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts