Preservar o estado numlock durante o prompt de senha de boot cryptdisk em plymouth

1

Toda vez que meu computador inicializa, há uma solicitação de senha para descriptografar o disco rígido (o Ubuntu está usando o plymouth). Eu gostaria de usar o teclado numérico, mas infelizmente plymouth muda o status do numlock para off ignorando minhas configurações da bios para habilitar o numlock na inicialização (o que é um pouco irritante). Existe algum "truque" para preservar as configurações do numlock em vez de ser forçado a alterar o numlock para "on state" manualmente?

    
por DevilaN 08.04.2016 / 13:19

1 resposta

0

O Plymouth inicia a partir do initrd, muito antes de seus arquivos de configuração no diretório / etc serem acessados e lidos. Somente arquivos dentro do initrd podem ser acessados quando o plymouth solicitar a senha para descriptografar sua partição raiz.

Nenhuma das soluções clássicas para ativar o numlock com os arquivos de configuração mdm, lightdm, etc. funcionará. Porque essas saudações começam após Plymouth. Quando tentei soluções baseadas em "numlockx", nenhuma delas funciona. Então presumo que o plymouth, pelo menos nas versões recentes, comece antes do serverX.

Depois de ler algumas páginas man e muitas tentativas, finalmente consigo ativar o numlock quando o Plymouth solicita a senha. Por favor, note que eu sou um usuário Mint 17.3 e minha solução pode precisar de algumas adaptações dependendo da distribuição Linux (consulte as páginas de manual "initramfs-tools" e "setleds"). O Mint e o Ubuntu são muito próximos, então, na verdade, o procedimento descrito abaixo pode ser idêntico ou, pelo menos, muito semelhante.

Eu não sou um novato no Linux, mas mesmo assim eu não sou um especialista na fase "initramfs" ... então eu ficaria feliz de qualquer melhoria sugerida que pudesse tornar meu método mais seguro.

CUIDADO: Certifique-se de saber exatamente como iniciar seu sistema operacional a partir de um initrd alternativo ou de backup para evitar ficar preso se o initrd gerado pelas instruções a seguir se recusar a inicializar!

Usaremos o binário setleds para ativar o numlock. Portanto, devemos ter certeza de que está disponível dentro da imagem do initrd. Crie um arquivo "numlock" no diretório " / etc / initramfs-tools / hooks " (ou seu equivalente, de acordo com o seu Linux Distrib.) Com as seguintes linhas:

#! /bin/sh -e

PREREQ=""

prereqs () {
    echo "$PREREQ"
}

case $1 in
prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

# Add setleds to initrd
if test -x /usr/bin/setleds ; then
   copy_exec /usr/bin/setleds /usr/bin/setleds
fi

exit 0

Marque este arquivo como executável:

# chmod 0755 numlock

O binário setleds estará acessível dentro do initrd nas próximas vezes que iremos reconstruir o "initramfs".

Agora, só precisamos escrever um pequeno script para usar setleds para ativar o numlock ... O principal problema é escolher o momento certo para executar o script. Se for executado em breve, eu acho que o tty onde o Plymouth avisa ainda não estará disponível ou a configuração do teclado corre o risco de sobrescrever o status do numlock. Se o script for executado após o prompt do Plymouth, o numlock será ativado tarde demais ...

De acordo com minhas próprias experiências, tudo ficará bem se o script for colocado no diretório "/ etc / initramfs-tools / scripts / init-top" com "console_setup" e "brltty" como pré-requisitos (não totalmente certos de que esses pré-requisitos são necessárias, mas funciona para mim. Possivelmente, corrija-o de acordo com os scripts de configuração de teclado que você tem em seu diretório "/ usr / share / initramfs-tools / scripts / init-top".

Basta criar em seu " / etc / initramfs-tools / scripts / init-top " um script "numlock" com as seguintes linhas:

#!/bin/sh

PREREQ="console_setup brltty"
prereqs()
{
    echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
    prereqs
    exit 0
    ;;
esac

if [ -x /usr/bin/setleds ] ; then
   INITTY=/dev/tty[1-8]
   for tty in $INITTY ; do 
       setleds -D +num < $tty 
       done 
fi

exit 0

Claro, marque este arquivo como executável:

# chmod 0755 numlock

Re-construa seu initrd:

# update-initramfs -u

Se você tiver sorte, o numlock deve estar ativo automaticamente no prompt do plymouth na próxima vez que você inicializar. Nota: Eu reproduz com sucesso este método em poucos computadores de produção. Apenas um deles foi um pouco devagar na primeira reinicialização ... mas suspeito que isso ocorreu devido a outro pequeno bug nos arquivos de configuração do initramfs.

    
por 06.06.2016 / 00:36