۱ ماه شده اومدم روی Debian
اول از همه اینکه خیلی خیلی پیشرفت داشته Debian
واقعا متعجب شدم.
پس چرا توزیعهای بر پایهی Debian
اکثرا انقدر آشغال از کار در میاد ؟
اینجوری پیش رفت که ی بوت سالم برای سوییچ روی Rocky
دارم ولی فعلا اصلا دلم نمیخواد برگردم روی Rocky
با اینکه خیلی خوب پیشرفت حدود ۲ سال اخیر برام.
بگذریم:
متوجه شدم Debian
روی sleep
کردن مشکل شدید داره (البته همه میدونیم مشکل از Nvidia
هست نه توزیعهای لینوکسی)
توی این مدت خیلی وقتا باهاش کنار اومدم (مجبور بودم) مشکل اساسی این بود که سیستم از sleep
در نمیاد همه چیز شروع میکنه به کار کردن (پمپ - فنها - موس - کیبورد) اما فقط هیج کاری هم انجام نمیشه و هیچ خروجی display
ایی وجود نداره و هیچ لاگی هم وجود نداره.
کلی دلیل میتونه برای این موضوع وجود داشته باشه ولی چون لاگ نداشت نمیتونستم حلش کنم.
خلاصه گفتم با این فرض پیش برم که nvidia
ی جایی داره ی غلطی میکنه که نباید بکنه؛ پس هر جایی که اسکریپت به اسم sleep
داشت رو بررسی کردم و رسیدم به usr/lib/systemd/system-sleep/nvidia/
البته دروغ چرا اول با همین مسیرا شروع کردم همچین بررسی کردن خاصی هم نبود 😉
ولی بعد از بازکردنش دیدم نوشته :
#!/bin/sh
case "$1" in
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac
ازونجایی که pre نداشت تقریبا مطمئن شدم یکی از مشکلاتم همین هست؛ بجای اینکه خودم pre رو بنویسم (قبلا نوشتم و به اشتراک گذاشتم) رفتم یک نگاهی به
usr/bin/nvidia-sleep.sh/
که آدرس داده که :#!/bin/bash
if [ ! -f /proc/driver/nvidia/suspend ]; then
exit 0
fi
RUN_DIR="/var/run/nvidia-sleep"
XORG_VT_FILE="${RUN_DIR}"/Xorg.vt_number
PATH="/bin:/usr/bin"
case "$1" in
suspend|hibernate)
mkdir -p "${RUN_DIR}"
fgconsole > "${XORG_VT_FILE}"
chvt 63
if [[ $? -ne 0 ]]; then
exit $?
fi
echo "$1" > /proc/driver/nvidia/suspend
exit $?
;;
resume)
echo "$1" > /proc/driver/nvidia/suspend
#
# Check if Xorg was determined to be running at the time
# of suspend, and whether its VT was recorded. If so,
# attempt to switch back to this VT.
#
if [[ -f "${XORG_VT_FILE}" ]]; then
XORG_PID=$(cat "${XORG_VT_FILE}")
rm "${XORG_VT_FILE}"
chvt "${XORG_PID}"
fi
exit 0
;;
*)
exit 1
esac
که دیدم خودش تمیزکاری قبل از
sleep
رو هم داره همون بخش suspend
رو میگم؛ پس فایل اول رو آپدیت کردم :#!/bin/sh
case "$1" in
pre)
/usr/bin/nvidia-sleep.sh "suspend"
;;
post)
/usr/bin/nvidia-sleep.sh "resume"
;;
esac
خلاصه اگر مشکل این چنینی داشتید؛ مخصوصا روی سیستمهای
multi-GPU
ممکن راهکار بالا مشکل شمارو هم حل کنه.ازین به بعد این راهکارها رو روی
gist.github
هم میذارم چون بعضی وقتا پیدا کردنش برای خودم هم خیلی سخت میشه: Github Gist in English
>>Click here to continue<<