Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Zuwenig Speicher für consolefont?
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Sun Dec 31, 2017 5:14 pm    Post subject: Zuwenig Speicher für consolefont? Reply with quote

Hallo Zusammen,

beim Starten von consolefont, bekomme ich folgende Fehlermeldung:

Code:
consolefont       | * Setting console font [default8x16] ...                                                                                                                                                                            [ ok ]
consolefont       |getfont: KDFONTOP: Auf dem Gerät ist kein Speicherplatz mehr verfügbar


Das kann aber aber eigentlich gar nicht sein, denn Speicher ist genug frei:

Code:
server01 ~ # free -h
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:         15G        5,8G        4,0G         42M        5,5G        9,3G
Swap:           19G          0B         19G
server01 ~ #


Code:
server01 ~ # df -h
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda3        91G     60G   27G   70% /
devtmpfs         10M       0   10M    0% /dev
tmpfs           1,6G    3,8M  1,6G    1% /run
cgroup_root      10M       0   10M    0% /sys/fs/cgroup
shm             7,7G    8,0K  7,7G    1% /dev/shm
cachedir        4,0M    4,0K  4,0M    1% /lib64/splash/cache
/dev/sda1       124M     32M   87M   27% /boot
/dev/sdc1        26T    6,5T   18T   27% /mnt/storage
none            7,7G       0  7,7G    0% /run/user/0
server01 ~ #


Hat Jemand eine Idee, wo ich da mit dem Suchen anfangen könnte?
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Mon Jan 01, 2018 10:25 pm    Post subject: Reply with quote

Hallo 3PO,

das klingt sehr merkwürdig!

Ich habe mir den Quellcode von "sys-apps/kbd" angeschaut. Der Fehler passiert vermutlich in der Datei "src/kdfontop.c" ab Zeile 60:
Code:
i = ioctl(fd, KDFONTOP, &cfo);
[...]
if (errno != ENOSYS && errno != EINVAL) {
        perror("getfont: KDFONTOP");
        return -1;
}

Ich würde mich da mal reinhängen und mir vor dem Aufruf von ioctl() ausgeben lassen, auf welche Datei (welches Device) die Funktion ioctl() ausgeführt wird. Vermutlich bekommt man das auch mit strace raus.

Viele Grüße

Mike
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Tue Jan 02, 2018 4:37 pm    Post subject: Reply with quote

Ehrlich gesagt, verstehe ich nicht so richtig, was Du mir damit sagen willst?
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Jan 02, 2018 5:05 pm    Post subject: Reply with quote

Quote:
Ehrlich gesagt, verstehe ich nicht so richtig, was Du mir damit sagen willst?

Du hattest von einem Fehler berichtet und gefragt, was es sein könnte. Da Google keine brauchbaren Antworten liefert und auch noch niemand geantwortet hat, scheint es etwas "merkwürdiges" zu sein.

Also, ich würde in den Source-Code schauen und versuchen herauszufinden, was passiert. Die Datei und Zeile des Source Codes habe ich Dir genannt; offenbar passiert der Fehler bei einem ioctl() Aufruf. Die nächste Frage ist, auf welches Device dieser ioctl-Aufruf stattfindet und welche Parameter übergeben werden. Das kann man entweder mit strace herausfinden, oder in dem man im Source-Code ein paar printf()-Anweisungen vor den ioctl-Aufruf schreibt. Sobald man weiß, welche Parameter bei dem ioctl-Aufruf übergeben werden, dürfte auch klar sein, wer für das Problem verantwortlich ist und was den Fehler auslöst...

So würde ich es machen - aber es gibt bestimmt auch andere Methoden. Jedenfalls glaube ich nicht, dass Du zu wenig Speicher hast. Irgendetwas funktioniert nicht - und statt einer aussagekräftigen Fehlermeldung gibt es dann die "kein Speicherplatz mehr"-Meldung.
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Tue Jan 02, 2018 5:36 pm    Post subject: Reply with quote

Da ich leider kein C spreche, fällt das modifizieren des Codes erst mal aus. :)

Ich habe bei dem o.g. PC kein Keyboard angeschlossen und habe auch bisher nicht feststellen können, dass etwas nicht funktionieren würde. Mir ist halt beim Sichten des rc Los aufgefallen, dass consolefont wegen angeblichen Speichermangel nörgelt.

Seltsam ist auch, dass es noch 2 weiteren Servern auftritt und bei 3 anderen wiederum nicht.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Tue Jan 02, 2018 9:40 pm    Post subject: Reply with quote

OK, probieren wir es ganz anders. Wenn Du als "root" folgende Anweisung ausführst:
Code:
/etc/init.d/consolefont restart

Bekommst Du die Fehlermeldung dann auch? Oder erscheint die Fehlermeldung nur, wenn consolefont beim Starten des Systems ausgeführt wird?
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Tue Jan 02, 2018 10:01 pm    Post subject: Reply with quote

Die Meldung kommt auch beim Restart.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Wed Jan 03, 2018 12:06 am    Post subject: Reply with quote

Der Fehler ist also reproduzierbar - das ist schon mal gut! :-)

Das Script "/etc/init.d/consolefont" ruft verschiedene Programme auf. Kannst Du herausfinden, bei welcher Anweisung der Fehler ausgegeben wird?

Ich vermute, dass es bei einem der "setfont"-Aufrufe passiert. Du könntest also in dem Script "/etc/init.d/consolefont" vor die beiden "setfont"-Aufrufe echo-Anweisungen schreiben, um die genauen Parameter herauszufinden:

Code:
Zeile 55:
   if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then

wird zu:
    echo "setfont $consolefont $param -C $ttydev$x"
    if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then

Zeile 66:
    setfont -O "$RC_LIBEXECDIR"/console/font

wird zu
    echo "setfont -O $RC_LIBEXECDIR/console/font"
    setfont -O "$RC_LIBEXECDIR"/console/font

Wenn Du dann "/etc/init.d/consolefont restart" aufrufst, wird eine Reihe von Anweisungen ausgegeben, ungefähr folgendermaßen:
Code:
setfont default8x16  -C /dev/tty1
setfont default8x16  -C /dev/tty2
...
setfont default8x16  -C /dev/tty11
setfont default8x16  -C /dev/tty12
setfont -O /lib64/rc/console/font

Wenn Du die bei Dir ausgegebenen Anweisungen nun von Hand ausführst: Bei welcher Anweisung wird der Fehler ausgegeben?
Back to top
View user's profile Send private message
l3u
Advocate
Advocate


Joined: 26 Jan 2005
Posts: 2540
Location: Konradsreuth (Germany)

PostPosted: Wed Jan 03, 2018 10:06 am    Post subject: Reply with quote

Hilft das hier vielleicht?
https://forums.gentoo.org/viewtopic-t-134911-start-0.html
?
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Wed Jan 03, 2018 6:29 pm    Post subject: Reply with quote

Ich habe mal ein "set -x" eingebaut:

--> https://paste.pound-python.org/show/hk9bKKy5rHe5jLHqSOlW/

Wenn ich das richtig interpretiere, passiert der Fehler an dieser Stelle:

Code:
....
consolefont       |+ mkdir -p /lib64/rc/console
consolefont       |+ setfont -O /lib64/rc/console/font
consolefont       |getfont: KDFONTOP: Auf dem Gerät ist kein Speicherplatz mehr verfügbar
consolefont       |+ return 0
....
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Wed Jan 03, 2018 7:32 pm    Post subject: Reply with quote

OK, dann prüfe bitte noch einmal, dass der Fehler auftritt, wenn Du "setfont -O /lib64/rc/console/font" ausführst. Wenn das so ist, führe danach bitte folgende Anweisung aus:
Code:
strace -o /tmp/trace.txt -f setfont -O /lib64/rc/console/font

Bitte poste die Datei /tmp/trace.txt über https://paste.pound-python.org. Dann werden wir vermutlich sehen, wo der Fehler herkommt.
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Wed Jan 03, 2018 7:42 pm    Post subject: Reply with quote

https://paste.pound-python.org/show/T1YnsmEB1OoM3b6j65EX/
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Wed Jan 03, 2018 8:08 pm    Post subject: Reply with quote

Die spannenden Zeilen in dem Trace sind:

Quote:
open("/dev/tty0", O_RDWR) = 3
ioctl(3, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, KDGKBTYPE, 0x7ffd32d45f87) = 0
ioctl(3, KDGETMODE, 0x7ffd32d46014) = 0
[...]
ioctl(3, KDFONTOP, 0x7ffd32d35ee0) = -1 ENOSPC (No space left on device)

Bevor wir weitersuchen, zuerst noch zwei Fragen: Welche Version vom Linux-Kernel (uname -r -m) und welche Version von sys-apps/kbd hast Du installiert? Falls es eine ältere Version von sys-apps/kbd ist: Tritt der Fehler auch mit Version 2.0.4 auf?
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Wed Jan 03, 2018 8:12 pm    Post subject: Reply with quote

Code:
server01 ~ # uname -a
Linux server01 4.14.10-gentoo-r1 #1 SMP PREEMPT Sun Dec 31 14:43:56 CET 2017 x86_64 Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz GenuineIntel GNU/Linux
server01 ~ #

Code:
server01 ~ # eix sys-apps/kbd
[I] sys-apps/kbd
     Verfügbare Versionen:   1.15.5-r1 2.0.3 ~2.0.4 **9999 {nls pam test}
     Installierte Versionen: 2.0.3(00:03:10 02.01.2018)(nls pam -test)
     Startseite:             http://kbd-project.org/
     Beschreibung:           Keyboard and console utilities

server01 ~ #


Version 2.0.4 habe ich noch nicht getestet.
Back to top
View user's profile Send private message
mike155
Advocate
Advocate


Joined: 17 Sep 2010
Posts: 4438
Location: Frankfurt, Germany

PostPosted: Wed Jan 03, 2018 8:54 pm    Post subject: Reply with quote

Sieht eigentlich alles gut aus! Ich habe auch Kernel 4.14 und kbd 2.0.3 und bei mir tritt der Fehler nicht auf.

Wenn ein Wechsel auf kbd 2.0.4 das Problem nicht behebt, würde ich auf Linux Kernel ".config" tippen. Hast Du die Kernel Config selbst angepasst? Fehlt vielleicht ein Häkchen bei den Device Drivers (Character Devices oder Video)? Vielleicht kannst Du die Kernel Config zwischen den Servern, bei denen der Fehler auftritt und bei denen der Fehler nicht auftritt miteinander vergleichen?

PS: Falls jemand weitersuchen möchte: soweit ich sehe, tritt der Fehler in der Funktion con_font_get() in der Datei /usr/src/linux/drivers/tty/vt/vt.c auf. Leider wird ENOSPC an mehreren Stellen zurückgegeben - ohne weiteres Debuging ist deshalb nicht klar, weshalb ENOSPC zurückgegeben wird.
Back to top
View user's profile Send private message
3PO
Veteran
Veteran


Joined: 26 Nov 2006
Posts: 1110
Location: Schwabenländle

PostPosted: Wed Jan 03, 2018 9:07 pm    Post subject: Reply with quote

2.0.4 behebt den Fehler nicht.

Was mir aber aufgefallen ist, ist dass bei den Servern, bei denen es nicht funktioniert, eine Datei "fonts" in "/lib64/rc/console" mit 0 Byte angelegt wird, wenn "setfont -O /lib64/rc/console/font" aufgerufen wird.
Bei den Rechnern, wo es funktioniert, wird mit "setfont -O /lib64/rc/console/font" keine Datei angelegt.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum