Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

תמיכת לינוקס כללית - gdm הפסיק לעלות אוטומטית

חתול - 12/01/2021 - 19:12
נושא ההודעה: gdm הפסיק לעלות אוטומטית
אני משתמש בארץ׳ מעודכן.
לפני כמה שבועות gdm הפסיק לעלות אוטומטית וכשאני מפעיל את המחשב אני מגיע למסך שחור. כשאני עובר ל־tty אחר ומריץ sudo systemctl start gdm הסביבה הגרפית עולה בלי בעיה.
ניסיתי לחטט בלוגים אבל לא מצאתי שום שגיאה שלדעתי תסביר את הבעיה.
הנה הפלט של journalctl -b ואשמח אם יש מי שיבין בו יותר ממני.
https://pastebin.com/K509bKYj

ניסיתי גם להחליף מ־Wayland ל־Xorg לפי כמה פוסטים שנשמעו דומים לבעיה שלי אבל הבעיה המשיכה.

תודה לעוזרים
Anonymous - 13/01/2021 - 14:27
נושא ההודעה:
תוודא שהשירות GDM נמצא במצב ENABLED. אם כן, יכול להיות שהוא קורס ואז תסתכל בלוגים שלו כדי להבין מה קורה. אם לא - תדליק אותו.
אגב, לחטט בלוגים זה לא בדיוק עוזר. אתה צריך למצוא את הלוג של GDM, משהו כמו
/var/log/gdm או משהו דומה - גוגל ימצא עבורך הכל Wink
חתול - 13/01/2021 - 19:30
נושא ההודעה:
מובן שהוא enabled, ישר הלכתי לבדוק.
הלוגים כבר מזמן לא נמצאים ב־var/log הם עברו עם systemd ל־journalctl. בסינון ל־gdm לא ראיתי משהו מיוחד, לכן הבאתי את הלוג המלא.
Anonymous - 13/01/2021 - 22:15
נושא ההודעה:
חתול :
מובן שהוא enabled, ישר הלכתי לבדוק.
הלוגים כבר מזמן לא נמצאים ב־var/log הם עברו עם systemd ל־journalctl. בסינון ל־gdm לא ראיתי משהו מיוחד, לכן הבאתי את הלוג המלא.

צודק לגבי הלוגים, שכחתי לגמרי.

הסתכלתי בפלט של הלוג, שורה 1478 מראה שאין מסכים מוגדרים ומשום מה זה גורם לקריסה ראשונית. זה שאתה מצליח להעלות את GDM ידני, גורם לי לחשוב שאולי משהו אחר נטען בינתיים ואז GDM מצליח לעבור את המחסור של SCREEN בשלום. אני רק מנחש פה.
Anonymous - 31/01/2021 - 15:02
נושא ההודעה:
מצאתי את הפתרון
חיפוש מצא אשכול ברדיט שהפנה גם לדיון בפורום של ארץ׳.
הבעייה היא ש־gdm נטען לפני הדרייבר הגרפי.
הפתרון המוצע הוא להוסיף את המודול i915 לקרנל (זה מה שעשיתי) או להוסיף השהייה לטעינה של gdm.
Anonymous - 01/02/2021 - 11:33
נושא ההודעה:
אי אפשר להוסיף תלות לשירות בטעינת המודול?

בצורה הכי מכוערת:
ExecStartPre=/sbin/modprobe i195

כמובן שאפשר להוסיף את זה כקובץ נפרד תחת /etc/systemd/gdm.service.d ואז לא משנים את הקובץ המקורי.
Anonymous - 01/02/2021 - 18:15
נושא ההודעה:
אני מניח שאפשר, אבל למה עדיף?
Anonymous - 01/02/2021 - 18:55
נושא ההודעה:
מה שהפריע לי בעין היה ההמלצה להכניס השהיה. אחד העקרונות של systemd הוא להגדיר במפורש יחסים בין פעולות שונות. אם אתה מסתמך על תזמון אתה מצד אחד יוצר השהיה מיותרת בזמן העליה ומצד שני מתישהו ההשהיה הזו לא תהיה מספיק ארוכה ולכן זהו באג חבוי.

ובדיקה קצרה מעלה שאמנם יש דרך מסודרת. לאחר חיפוש בעזרת grep -r modprobe /lib/systemd/ במערכת שלי (דביאן) מצאתי אם modprobe@.service שנועד בדיוק למטרה הזו מוגיע כחלק מהחבילה systemd. לדוגמה, ביחידה sys-fs-fuse-connections.mount תחת [Unit] כתוב:
קוד:

# These dependencies are used to make certain that the module is fully
# loaded. Indeed udev starts this unit when it receives an uevent for the
# module but the kernel sends it too early, ie before the init() of the module
# is fully operational and /sys/fs/fuse/connections is created, see issue#17586.

After=modprobe@fuse.service
Requires=modprobe@fuse.service

אז בקיצור, הפתרון צריך להיות משהו בסגנון:
קוד:

cat <<EOF >/etc/systemd/gdm.service.d/i915.conf
[Unit]
After=modprobe@i915.service
After=modprobe@i915.service
EOF

ואז המודול ייטען לפני העלאת השירות.
Anonymous - 02/02/2021 - 07:58
נושא ההודעה:
תיקון טעות: בדוגמה האחרונה, השורה השלישית צריכה להיות כמובן Requires במקום After .
חתול - 02/02/2021 - 14:13
נושא ההודעה:
תודה, אני אבדוק את האפשרות הזו.
זה עדיף על mkinitcpio.conf?
Anonymous - 02/02/2021 - 14:20
נושא ההודעה:
מה שנוח לך. להעלות את המודול ב־initramfs בהחלט יעבוד ואין כאן שום בעיית תזמון.
Anonymous - 03/02/2021 - 02:28
נושא ההודעה:
חתול :
תודה, אני אבדוק את האפשרות הזו.
זה עדיף על mkinitcpio.conf?

אאז"נ החסרון היחיד הוא שהמודול תמיד יטען, גם אם תעלה את המערכת במצב טקסטואלי (מי עוד עושה את זה בכלל?). למעט זאת, לא יהיה הבדל, ואפילו פתרון זה פשוט יותר ואלגנטי לדעתי.

ולצפריר - תודה, השכלתי על שימוש של modprobe ב systemd.
כל הזמנים הם GMT + 2 שעות