[systemd-devel] systemd-vconsole-setup fails very slowly
Andy Lutomirski
luto at amacapital.net
Wed Apr 1 14:19:40 PDT 2015
On Wed, Apr 1, 2015 at 1:53 PM, Kay Sievers <kay at vrfy.org> wrote:
> On Wed, Apr 1, 2015 at 10:45 PM, Andy Lutomirski <luto at amacapital.net> wrote:
>> On Apr 1, 2015 12:56 PM, "Kay Sievers" <kay at vrfy.org> wrote:
>
>>> Do you have an idea why the VM does not accept the custom font? If
>>> that is something obvious, and we can detect it, we could make
>>> vconsole-setup check for it. But then again, fixing setfont seems like
>>> the obvious fix here.
>>
>> I assume it's because the VM has no graphical console at all.
>
> We check the existence of the corresponding /dev/vcs%i, to check if
> the tty is allocated where we want to apply the font to. Do these
> devices exist on the running machine?
Yes:
# ls /dev/vcs*
/dev/vcs /dev/vcs2 /dev/vcs4 /dev/vcsa1 /dev/vcsa3
/dev/vcs1 /dev/vcs3 /dev/vcsa /dev/vcsa2 /dev/vcsa4
Looking at the code, the vc_screen.c code seems to create those
devices unconditionally.
>
> And what does this say?
> grep . /sys/class/tty/tty0/active /sys/class/tty/console/active
# grep . /sys/class/tty/tty0/active /sys/class/tty/console/active
/sys/class/tty/tty0/active:tty1
/sys/class/tty/console/active:ttyS0
vcs1 has, roughly:
early console in decompress_kernel
Decompressing Linux... Parsing ELF... done.
Booting the kernel.
Now I'm wondering how that buffer came to be.
In any event, some tracing of the code suggests that I have
vga_video_type == VIDEO_TYPE_CGA, and that fails "if (vga_video_type <
VIDEO_TYPE_EGAM)" in vgacon_font_set.
Indeed, /proc/ioports has:
03d4-03d5 : cga
and dmesg says:
[ 0.000000] Console: colour *CGA 80x25
I don't see this information in sysfs anywhere. Perhaps checking for
an active console and detecting -EINVAL from vgacon_font_get would
work.
/proc/fb is empty on this VM, so maybe that would help. Grr, this
stuff is really old and crufty.
The offending qemu command line args appear to be -vga none -display
none. I assume I have "CGA" because it's the fallback case in
vgacon.c if nothing matches.
--Andy
More information about the systemd-devel
mailing list