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