qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issues with -vnc on 5.0-rc0 with qemu-system-aarch64 -machine virt


From: Peter Maydell
Subject: Re: Issues with -vnc on 5.0-rc0 with qemu-system-aarch64 -machine virt
Date: Tue, 31 Mar 2020 22:38:49 +0100

On Tue, 31 Mar 2020 at 21:52, Jesus Sanchez-Palencia <address@hidden> wrote:
> I've built the 5.0-rc0 tag here for testing the aarch64-softmmu target, and 
> I'm having issues when running qemu-system-aarch64 -machine virt with -vnc. 
> The error I get is:
>
> "qemu-system-aarch64: -vnc 1: could not read keymap file: 'en-us'"
>
> en-us is my default keymap, so this is not the -k option missing.
>
> strace shows me that qemu is trying to stat 
> /usr/share/locale/en_US/LC_MESSAGES/messages.mo, which is not available on my 
> system and thus fails with ENOENT.

messages.mo will be part of the system's text-localization support,
and it should be harmless that it doesn't find it. It's not related
at all to the error about the keymap file. The file that QEMU is
looking for is named "en-us"; we look for it in several places,
which is why the error message doesn't give a full pathname, but
you should be able to find where we're looking for it in
strace if you grep for it. Here's an example part of an
strace from when I run QEMU:

access("en-us", R_OK)                   = -1 ENOENT (No such file or directory)
access("/usr/local/share/qemu-firmware/keymaps/en-us", R_OK) = -1
ENOENT (No such file or directory)
access("/home/petmay01/linaro/qemu-from-laptop/qemu/build/x86/aarch64-softmmu/../pc-bios/keymaps/en-us",
R_OK) = 0

You can get QEMU to tell you where it's looking by running
  qemu-system-aarch64 -M virt -L help
which will print a list of directories. Keymaps are looked for
in the curent working directory, and then in the keymaps/
subdirectory of each directory the -L help output lists.
The directories we search in have defaults, but you
can change them with configure arguments.

Probably there is a mismatch between where the firmware
is for you and where configure has told QEMU to look for it.
(Though if you are doing an install of QEMU it ought to
be installing the keymaps in the same place, and if you
are running QEMU from within the build directory then
it ought to be finding the keymaps by looking in the
source directory's pc-bios subdirectory, though I've
just noticed the latter code is not very clever and will
be wrong if your build directory wasn't a direct subdirectory
of the source directory. How are you building and
running QEMU exactly?)

In more detail, the directory list is constructed from:
 * any "-L somedir" options you pass to QEMU
 * the 'firmware path' (default usually /usr/local/share/qemu-firmware,
   changeable with configure's --firmwarepath option)
 * the directory '../pc-bios/' relative to the location
   of the executable
 * the directory '$datadir$confsuffix' where both parts
   can be set using configure --datadir and --confsuffix
   arguments, defaulting to '/usr/local/share' and '/qemu' so
   we look in '/usr/local/share/qemu'

I'm not sure if any of that changed from 4.2 -- the
general mechanism is pretty longstanding but maybe
we changed one of the defaults? You should be able to
ask the working 4.2 binary where it's looking...

Hopefully some combination of the above will help.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]