1

In my QEMU virtual machine (started with qemu-kvm -boot d arch-freebsd.img -m 4096) I'd like to access an agetty terminal, which I'd normally access with Ctrl+Alt+F2 (or F3 if I need tty3, F4 if tty4, etc.), unfortunately pressing these keys just merely changes me to an agetty terminal on my host (as opposed to the guest system I'm trying to go to tty2 in). If this were a VirtualBox VM I'd press Ctrl+F2 (specifically the Ctrl in the centre of my keyboard, i.e. my right Ctrl key) to access tty2, but this doesn't work with QEMU. If you suggest I press Ctrl+Alt+G to get the VM to grab all my keyboard and mouse inputs, then pressing the keys to access the agetty terminals I've tried doing that and it doesn't work.

EDIT: The proposed duplicate link doesn't list what solved my problem, pressing Alt+Fx. I've tried Ctrl+Alt+Fx that seems to be suggested there (although I'm having trouble getting my head around what it's about as what VNC is, is a mystery to me), that's kind of the problem here.

Josh Pinto
  • 3,493
  • What about the TTY you're on? Is it running agetty? – muru Aug 13 '18 at 08:54
  • I believe so. Does FreeBSD do so by default? If so yes. If not, no. I've tried this with Linux VMs too, with the same problem. – Josh Pinto Aug 13 '18 at 08:57
  • Then, assuming (a) it's showing a login prompt and (b) you can login, and (c) you can run commands as root, the chvt command could be used. – muru Aug 13 '18 at 08:58
  • Also, for the TTYS, Alt-Fx (without the Ctrl) might also work. – muru Aug 13 '18 at 08:59
  • Hey you're right it works! Write up an answer to this effect, that Alt-Fx works, and I'll accept it! – Josh Pinto Aug 13 '18 at 09:00
  • 1
    Potential answerers may be interested in https://askubuntu.com/questions/54814/ . – JdeBP Aug 13 '18 at 09:03
  • 1
  • Almost wrote an answer... Never mind though, I found a post that listed available options. – muru Aug 13 '18 at 09:07
  • 1
    It's generic VNC answers, muru, and doesn't list the QEMU monitor commands given in AskUbuntu. It is not agetty in FreeBSD, by the way BH2017. And the only chvt command on FreeBSD to my knowledge is the one that I wrote. – JdeBP Aug 13 '18 at 09:12
  • The same issue also occurs under Linux as I said JdeBP. Just tested with a PCLinuxOS live session QEMU VM and Alt-Fx didn't go to an agetty terminal. – Josh Pinto Aug 13 '18 at 09:19
  • @JdeBP I also tried the AskUbuntu solution and it didn't work as after following it I'm seeing a black screen in the QEMU session. – Josh Pinto Aug 13 '18 at 09:26
  • From the dupe's accepted: "On the console, you don't need Ctrl+Alt+F#, you can use Alt+F#". The other options - chvt and Alt+arrow-keys are also given in it. – muru Aug 13 '18 at 09:28
  • Ah OK. The PCLinuxOS live session doesn't seem to like running chvt 2 as root (sudo isn't pre-insalled on PCLinuxOS) as it gives me a blank, black screen, no login prompt. Alt-arrow key doesn't work either. – Josh Pinto Aug 13 '18 at 09:55
  • The question that you have flagged as a duplicate, muru, does not actually have an accepted answer, and as I said does not list the QEMU monitor commands. – JdeBP Aug 13 '18 at 11:02

1 Answers1

1

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

There are two errors in that, one of which points to an answer, one of several possible answers.

The first error is that FreeBSD does not have Wietse Venema's agetty ("alternative getty"). It has ordinary BSD getty. So that nomenclature is wrong. Indeed, there is not necessarily a getty running on every kernel virtual terminal, that depending from what is configured in /etc/ttys.

The second error is that one normally accesses the multiple kernel virtual terminals with just plain ⎇ Alt and a function key on FreeBSD. The ⎈ Control is superfluous, and only necessary when an X server is in the foreground. X servers only recognize chords that have both ⎈ Control+⎇ Alt, but the keyboard mappings given to kernel itself, which is what handles this when an X server is not in the foreground, only actually require ⎇ Alt, just as they did on SCO Multiscreen (where this originated):

% 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
%

Of course, one can send a ⎈ Control+⎇ Alt chord to the guest operating system, and there are two ways of doing this:

  • Turn on sticky keys in the guest. Use sticky keys to stick the ⎈ Control modifier down, and then press ⎇ Alt+F2. Sticky keys support is a GUI thing, note. This will not help if a GUI session is not in the foreground.
  • Switch to the QEMU Monitor Console, and use the sendkey command. That can send a wide range of chords to the guest operating system. In this particular case it would be sendkey ctrl-alt-f2. Then switch back from the monitor console, of course.

Ubuntu users, including muru here, have suggested the chvt command. That's Linux-think. There is no chvt command in FreeBSD. I wrote one, and provide it in the nosh toolset; but the operating system does not come with one out of the box.

My chvt is primarily for use with user-space virtual terminals, and defaults to head0, but it can handle the kernel virtual terminals as well. One would for this purpose invoke it (assuming that one has the privileges to access /dev/ttyv0) as:

chvt 1@ttyv0

The tool supplied out of the box is vidcontrol, which for this particular task one would invoke (assuming that one has the privileges to access /dev/ttyv0) as:

vidcontrol -s 2 < /dev/ttyv0

Further reading

JdeBP
  • 68,745
  • I noticed you missed the fact that sendkey ctrl-alt-f2 isn't working for PCLinuxOS, a Linux distro, I just get a black screen (no line cursor, no login prompt, nothing). I thought I mentioned it in the comments above, but apparently not. I tried it from the supposed duplicate answer and I experience this issue. – Josh Pinto Aug 13 '18 at 11:27
  • I didn't miss it. Read carefully. (-: – JdeBP Aug 13 '18 at 11:31
  • switch back from the monitor console

    What the ... does that mean? I ignored it as I didn't get what it meant. Ctrl-Alt-2 (what got me there) doesn't switch me back.

    – Josh Pinto Aug 13 '18 at 11:36