Como acessar terminais agetty (por exemplo, TTY2, 3, 4, etc.) da VM do QEMU

0

Na minha máquina virtual QEMU (iniciada com qemu-kvm -boot d arch-freebsd.img -m 4096 ) eu gostaria de acessar um terminal agetty, que eu normalmente acessaria com Ctrl + Alt + F2 (ou F3 se eu precisar de tty3, F4 se tty4, etc. ), infelizmente pressionando estas teclas apenas apenas me muda para um terminal agetty no meu host (em oposição ao sistema convidado que eu estou tentando ir para tty2 em). Se fosse uma VM do VirtualBox, eu pressionaria Ctrl + F2 (especificamente a Ctrl no centro do meu teclado, ou seja, minha direita Tecla Ctrl para acessar o tty2, mas isso não funciona com o QEMU. Se você sugerir que eu pressione Ctrl + Alt + G para fazer com que a VM pegue todas as entradas do meu teclado e mouse, pressione as teclas para acessar os terminais agetty eu tentei fazer isso e não funciona.

EDIT: O link duplicado proposto não lista o que resolveu meu problema, pressionando Alt + Fx . Eu tentei Ctrl + Alt + Fx que parece ser sugerido lá (embora eu esteja tendo problemas para entender o que é como o que é VNC, é um mistério para mim), esse é o tipo de problema aqui.

    
por Brenton Horne 13.08.2018 / 10:19

1 resposta

2

I'd like to access an agetty terminal, which I'd normally access with ⎈ Control+⎇ Alt+F2

Existem dois erros, um dos quais aponta para uma resposta, uma das várias respostas possíveis.

O primeiro erro é que o FreeBSD não possui agetty ("getty alternativo") do Wietse Venema. Tem BSD getty comum. Então essa nomenclatura está errada. Na verdade, não há necessariamente um getty em execução em cada terminal virtual do kernel, dependendo do que está configurado em /etc/ttys .

O segundo erro é que normalmente se acessam os múltiplos terminais virtuais do kernel com apenas ⎇ Alt e uma tecla de função no FreeBSD. O ⎈ Control é supérfluo e necessário apenas quando um servidor X está em primeiro plano. Os servidores X só reconhecem acordes que tenham tanto ⎈ Controle + ⎇ Alt , mas os mapeamentos de teclado dados ao próprio kernel, que é o que manipula isso quando um servidor X não está no primeiro plano, só na verdade requerem ⎇ Alt , como fizeram no SCO Multiscreen (onde isso se originou):

% sed -n -e '1,4p;/ 068 /p' /usr/share/vt/keymaps/uk.kbd
# $FreeBSD$
#                                                         alt
# scan                       cntrl          alt    alt   cntrl lock
# code  base   shift  cntrl  shift  alt    shift  cntrl  shift state
  068   fkey10 fkey22 fkey34 fkey46 scr10  scr10  scr10  scr10   O
%

É claro que um pode enviar um acorde ⎈ Controle + ⎇ Alt para o sistema operacional convidado, e há duas maneiras de fazer isso:

  • Ative as teclas adesivas no convidado. Use as teclas de aderência para colocar o modificador ⎈ Control para baixo e, em seguida, pressione ⎇ Alt + F2 . O suporte a chaves pegajosas é uma coisa da GUI, note. Isso não ajudará se uma sessão da GUI não estiver em primeiro plano.
  • Alterne para o console do monitor do QEMU e use o comando sendkey . Isso pode enviar uma grande variedade de acordes para o sistema operacional convidado. Neste caso em particular, seria sendkey ctrl-alt-f2 . Então mude de volta do console do monitor, é claro.

Os usuários do Ubuntu, incluindo o muru aqui, sugeriram o comando chvt . Isso é pensar no Linux. Não há nenhum comando chvt no FreeBSD. Eu escrevi um e forneci-o no conjunto de ferramentas; mas o sistema operacional não vem com um fora da caixa.

Meu chvt é principalmente para uso com terminais virtuais de espaço do usuário e o padrão é head0 , mas ele também pode manipular os terminais virtuais do kernel. Um seria para esse propósito invocá-lo (supondo que alguém tenha os privilégios para acessar /dev/ttyv0 ) como:

chvt 1@ttyv0

A ferramenta fornecida fora da caixa é vidcontrol , que para essa tarefa específica seria invocada (supondo que alguém tenha os privilégios para acessar /dev/ttyv0 ) como:

vidcontrol -s 2 < /dev/ttyv0

Leitura adicional

por 13.08.2018 / 13:16