Bug 2015972 - systemd-vconsole-setup.service fails on an arabic system
Summary: systemd-vconsole-setup.service fails on an arabic system
Alias: None
Product: Fedora
Classification: Fedora
Component: kbd
Version: 35
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
Assignee: Vitezslav Crhonek
QA Contact: Fedora Extras Quality Assurance
Whiteboard: AcceptedBlocker
Depends On:
Blocks: F35FinalBlocker
TreeView+ depends on / blocked
Reported: 2021-10-20 14:18 UTC by Kamil Páral
Modified: 2021-10-28 18:27 UTC (History)
16 users (show)

Fixed In Version: kbd-2.4.0-8.fc35
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2021-10-28 18:27:49 UTC
Type: Bug

Attachments (Terms of Use)
journal (246.45 KB, text/plain)
2021-10-20 14:19 UTC, Kamil Páral
no flags Details
rpm -qa (59.03 KB, text/plain)
2021-10-20 14:19 UTC, Kamil Páral
no flags Details

Description Kamil Páral 2021-10-20 14:18:45 UTC
Description of problem:
I installed F35 Workstation Live RC1 using the Arabic language and encrypting the disk. After booting the installed system, this is what I see:

$ systemctl --failed
  UNIT                           LOAD   ACTIVE SUB    DESCRIPTION          
● systemd-vconsole-setup.service loaded failed failed Setup Virtual Console

$ systemctl status systemd-vconsole-setup.service
× systemd-vconsole-setup.service - Setup Virtual Console
     Loaded: loaded (/usr/lib/systemd/system/systemd-vconsole-setup.service; static)
     Active: failed (Result: exit-code) since Wed 2021-10-20 16:08:07 CEST; 5min ago
       Docs: man:systemd-vconsole-setup.service(8)
    Process: 811 ExecStart=/usr/lib/systemd/systemd-vconsole-setup (code=exited, status=1/FAILURE)
   Main PID: 811 (code=exited, status=1/FAILURE)
        CPU: 18ms
أكت 20 16:08:06 fedora systemd[1]: Starting Setup Virtual Console...
أكت 20 16:08:07 fedora systemd-vconsole-setup[814]: loadkeys: Unable to open file: ara: No such file or directory
أكت 20 16:08:07 fedora systemd-vconsole-setup[811]: /usr/bin/loadkeys failed with exit status 1.
أكت 20 16:08:07 fedora systemd-vconsole-setup[811]: KD_FONT_OP_GET failed while trying to get the font metadata: Invalid argument
أكت 20 16:08:07 fedora systemd-vconsole-setup[811]: Fonts will not be copied to remaining consoles
أكت 20 16:08:07 fedora systemd[1]: systemd-vconsole-setup.service: Main process exited, code=exited, status=1/FAILURE
أكت 20 16:08:07 fedora systemd[1]: systemd-vconsole-setup.service: Failed with result 'exit-code'.
أكت 20 16:08:07 fedora systemd[1]: Failed to start Setup Virtual Console.

Version-Release number of selected component (if applicable):

How reproducible:
seems always

Steps to Reproduce:
(basically follow https://fedoraproject.org/wiki/QA:Testcase_Arabic_Language_Install )
1. boot the Workstation Live image
2. pick Arabic language in the installer, keep the dual keyboard layout (default US, secondary ARA)
3. encrypt your disk with some phrase (using the default US keyboard)
4. boot the system
5. everything works, but errors flash across the screen during boot, and systemd-vconsole-setup.service is marked as failed

Comment 1 Kamil Páral 2021-10-20 14:19:09 UTC
Created attachment 1835128 [details]

Comment 2 Kamil Páral 2021-10-20 14:19:14 UTC
Created attachment 1835129 [details]
rpm -qa

Comment 3 Kamil Páral 2021-10-20 14:21:13 UTC
Proposing for a blocker discussion. There's this criterion:
"All system services present after installation with one of the release-blocking package sets must start properly, unless they require hardware which is not present. "

I haven't seen any negative effects from the failed service (the system seems to work), but perhaps there are some? Still, the service *is* clearly failed.

Comment 4 Adam Williamson 2021-10-20 16:29:17 UTC
I don't *think* this is new. I checked back to F28 - https://koji.fedoraproject.org/koji/buildinfo?buildID=1030966 - and there's no 'ara' console layout in kbd-misc or kbd-legacy that I can see. The association has been in langtable since 0.0.15 in 2013, though I'm not sure where Mark got it?

I also have obviously been in this area before, though I don't entirely recall the context and I didn't provide many references (bad me): https://github.com/legionus/kbd/issues/14 . From that issue, it looks like Debian ships an 'ar' and an 'fa' map. The 'fa' map was added to kbd as a result of that issue.

There is a keyboard layout called 'ara', but it's only in xkb: /usr/share/X11/xkb/symbols/ara . We do not ship the kbd conversion of that layout in kbd-misc because it cannot input ASCII characters.

[time passes]

OK, so...in anaconda we expect that whatever 'native' layout name langtable gives us will exist as a kbd (console) layout. For Arabic, this just isn't true. As noted above, potentially valid console layout names are 'ar' and 'fa', but the xkb layout is called 'ara' and that's what langtable returns.

The practical upshot of this is that the console layout used for Arabic installs will be 'us'. Ideally we would probably use 'fa'. However, implementing this is slightly tricky - we either have to special-case it in anaconda, extend langtable to somehow support the concept of different keymap names for xkb and kbd, or just symlink 'fa.map.gz' to 'ara.map.gz' in kbd-legacy - and I don't think it's new. I would expect the result to be the same on all past Fedora releases at least as long as langtable and vconsole have been around (and we probably had the same problem before that even).

Comment 5 Ben Cotton 2021-10-21 18:39:19 UTC
In today's Go/No-Go meeting, we agreed: This is clear violation of the "If a particular keyboard layout has been configured for the system, that keyboard layout must be used: ... When logging in at a console" criterion

Comment 6 Adam Williamson 2021-10-21 18:59:27 UTC
This definitely isn't a systemd bug, btw. It's either in anaconda...or kbd...or langtable...but definitely not systemd. :D

I'm re-assigning to kbd for now as the easiest quick fix I can think of is in kbd. I'll try that out later today.

Comment 7 Fedora Update System 2021-10-21 22:29:43 UTC
FEDORA-2021-c2c76d4847 has been submitted as an update to Fedora 35. https://bodhi.fedoraproject.org/updates/FEDORA-2021-c2c76d4847

Comment 8 Fedora Update System 2021-10-23 02:23:25 UTC
FEDORA-2021-c2c76d4847 has been pushed to the Fedora 35 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2021-c2c76d4847`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-c2c76d4847

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 9 Kamil Páral 2021-10-25 11:15:14 UTC
(In reply to Fedora Update System from comment #7)
> FEDORA-2021-c2c76d4847 has been submitted as an update to Fedora 35.
> https://bodhi.fedoraproject.org/updates/FEDORA-2021-c2c76d4847

I installed Workstation RC1 using Arabic, and then updated kbd to kbd-2.4.0-8.fc35 in /mnt/sysroot before rebooting. After booting the installed system, I no longer see any failed services in "systemctl --failed", and systemd-vconsole-setup.service is running OK without any errors in the log. I don't know how to check the current console layout in VT, whether it is "fa" or not. But I see this output:

$ localectl 
   System Locale: LANG=ar_EG.UTF-8
       VC Keymap: ara
      X11 Layout: us,ara
     X11 Variant: ,
     X11 Options: grp:alt_shift_toggle

Comment 10 Adam Williamson 2021-10-25 16:07:53 UTC
You can test just by hitting alt+shift and then typing some stuff :) Most keys are bound to different characters, in fa. Some will be visible as Arabic characters, some will just be squares, because the console font doesn't have enough space to show them all.

Comment 11 Fedora Update System 2021-10-28 18:27:49 UTC
FEDORA-2021-c2c76d4847 has been pushed to the Fedora 35 stable repository.
If problem still persists, please make note of it in this bug report.

Note You need to log in before you can comment on or make changes to this bug.