เหตุใดหนึ่งในสอง HDD จึงตื่นจากโหมดสลีประหว่างการลงชื่อเข้าใช้แบบกราฟิก Linux ครั้งแรก


2

ฉันมี HDDs เก็บถาวรสองอันซึ่งฉันใช้ไม่บ่อยนัก (ฉันติดตั้งพาร์ติชันด้วยตนเองโดยเฉลี่ยน้อยกว่าหนึ่งครั้งต่อสัปดาห์) ตั้งแต่ผมเปิดคอมพิวเตอร์ของฉันออกในเวลากลางคืนผมพยายามที่จะป้องกันไม่ให้พวกเขาจากการปั่นขึ้นในการบูตของชีวิตประจำวัน แต่ที่ดูเหมือนว่าวิธีที่ยากเกินไป: ต้อง patching เคอร์เนลลินุกซ์ เป็นทางเลือกที่แย่กว่า แต่ง่ายกว่าฉันสร้าง systemd unit อย่างง่ายที่ทำให้ HDD เข้าสู่โหมดสลีปทันทีหลังจากบู๊ต ( ExecStart=/usr/bin/hdparm -Y /dev/disk/by-id/...และWantedBy=multi-user.target) สิ่งนี้เกือบจะได้ผล: ดิสก์ทั้งคู่หมุนลงเมื่อบู๊ต ฉันรับการตรวจสอบนี้โดยการเข้าสู่ระบบขั้วใน tty2: รายงานsudo hdparm -C /dev/sd[bc]drive state is: standby

อย่างไรก็ตามเมื่อฉันเข้าสู่ระบบในเปลือกกราฟิกหนึ่งในดิสก์หมุนขึ้นอย่างชัดเจนและhdparmรายงานdrive state is: active/idleมัน สิ่งนี้เกิดขึ้นกับทั้ง XFCE และ KDE Plasma 5 (Manjaro GNU / Linux พร้อมการอัพเดทล่าสุด) และกับผู้ใช้อื่นในระบบเดียวกัน หลังจากที่ดิสก์ตื่นขึ้นฉันจะให้เข้าสู่โหมดสลีปด้วยตนเอง ( hdparm -Y ...) และจะไม่กลับมาทำงานอีกจนกว่าฉันจะรีบูตคอมพิวเตอร์ การออกจากระบบแม้ในฐานะผู้ใช้รายอื่นจะไม่ปลุกดิสก์ใด ๆ อีก

ดิสก์ที่กระตุ้นการทำงานนี้จะเหมือนกันเสมอ ฉันพยายามที่จะสลับสาย SATA ของ HDD สองตัวนี้ซึ่งแลกเปลี่ยน ID ของพวกเขา (sdb <-> sdc) แต่ยังคงมีอยู่จริง HDD เดียวกันถูกปลุกให้ตื่นขึ้นเมื่อเข้าสู่ระบบกราฟิกครั้งแรก ดิสก์ที่ถูกกระตุ้นนี้ไม่ได้พูดถึงทุกที่ในแฟ้มการกำหนดค่าของฉันโดยใช้ ID ถาวรเพราะฉันเพิ่งซื้อมาเมื่อเร็ว ๆ นี้ (มือสอง) โดยเฉพาะอย่างยิ่งดิสก์ที่ช่วยให้การนอนหลับเป็นซัมซุง HD103UJและดิสก์ที่ตื่นขึ้นมาเมื่อเข้าสู่ระบบกราฟิกแรกคือซัมซุง HD154UI

ฉันกำลังตรวจสอบ/ dev / SD [BC]เข้าถึงกับauditd บันทึกจะเหมือนกันจริงสำหรับดิสก์ทั้งสอง ครั้งแรกที่ฉันเข้าสู่คอนโซล tty2 และเรียกใช้sudo hdparm -C /dev/sd[bc]: ดิสก์ทั้งสองกำลังนอนหลับ; จากนั้นฉันเปลี่ยนเป็น tty7 และเข้าสู่ XFCE จากหน้าจอ lightdm; ฉันเปลี่ยนเป็น tty2 อย่างรวดเร็วและตอนนี้หนึ่งในดิสก์ไม่ได้นอนหลับอีกต่อไป สาระสำคัญของsudo ausearch -f /dev/sdbเอาต์พุตคำสั่งที่สอดคล้องกับเหตุการณ์เหล่านี้:

comm="hdparm" exe="/usr/bin/hdparm"
comm="udisksd" exe="/usr/lib/udisks2/udisksd"
comm="hdparm" exe="/usr/bin/hdparm"
comm="udisksd" exe="/usr/lib/udisks2/udisksd"
comm="pool" exe="/usr/lib/udisks2/udisksd"
comm="pool" exe="/usr/lib/udisks2/udisksd"
...

และอื่น ๆ comm="pool"เส้นปรากฏขึ้นทุก 10 นาทีในบันทึกหรือบ่อยขึ้นในขณะที่gnome-ดิสก์ทำงานอยู่ แต่comm="udisksd"สายไม่ปรากฏจนกว่าจะรีบูต สมมติว่าauditdรายงานการเข้าถึงดิสก์ทั้งหมดนี้comm="udisksd"จะต้องรับผิดชอบในการตื่นขึ้น แต่ทำไมจึงมี HDD เพียงหนึ่งในสองตัว บางที HDD ที่ละเมิดอาจถูกกำหนดค่าโดยhdparmไม่ให้ตื่น

ฉันเปรียบเทียบhdparm -I /dev/sdbและhdparm -I /dev/sdcส่งออกด้วย meld นอกจากนี้ยังพยายาม-Iv, -iและตัวเลือกแทน-iv -Iความแตกต่างนั้นค่อนข้าง จำกัด กับตัวระบุเฉพาะขนาดดิสก์รูปทรงเรขาคณิต ข้อแตกต่างที่อาจก่อให้เกิดความไม่สอดคล้องกันนี้ปลุกเป็นเฟิร์มแว Revision: 1A 01118บนดิสก์ที่ไม่ตื่นและ1A G 01118ในตื่นหนึ่ง


1
ฉันจะเดาได้udisksจากคำอธิบายเริ่มต้นของคุณเพราะนั่นคือสิ่งที่ทำให้ HD หมุนลงของฉันหมุน เนื่องจากฉันไม่ได้ใช้เดสก์ท็อป Gnome / KDE โซลูชันของฉันคือปิดใช้งาน udisks ฉันไม่รู้ว่าทำไมมันถึงพยายามหมุนดิสก์หนึ่งแผ่นในระบบของคุณ - สิ่งที่ udisks ทำคือการพยายามรับข้อมูลเกี่ยวกับดิสก์
dirkt

ใช่udisksอาจเป็นความผิดที่นี่ ฉันเขียนหน่วย systemd อื่นที่ทำให้ดิสก์ที่ละเมิดนั้นเข้าสู่โหมดสลีหลังจากเซอร์วิส udisks2 เริ่มทำงาน ( After=udisks2.service, WantedBy=udisks2.service) วิธีแก้ปัญหานี้ป้องกันการตื่น
vedg

อย่างไรก็ตามการแก้ปัญหาเปิดออกมาจะไม่สมบูรณ์เพราะ HDD ที่กระทำผิดเดียวกันตื่นขึ้นมาทุกครั้งที่ผมติดหรือเลิกเมานท์พาร์ทิชันที่ใช้ XFCE / GNOME GUI udisksctlหรือ HDD ตัวอื่นยังคงหลับอยู่ ในทำนองเดียวกันกับunix.stackexchange.com/questions/457729/...ปกติmount, unmountคำสั่งและยังsystemd-mount, systemd-umountไม่ตื่น HDDs ใด ๆ
vedg

คำตอบ:


1

udisksdเรียกdumpe2fs -h /dev/sd??คำสั่งสำหรับแต่ละพาร์ติชัน ext2, ext3 และ ext4 เมื่อเริ่มต้นบริการและเมื่อเมาท์ / unmount ดิสก์ใด ๆ ตื่นนอนของฉัน HDD มีพาร์ทิชัน ext4 และเพื่อให้เป็นที่ตื่นโดยudisksddumpe2fs => อื่น ๆ HDD ไม่ได้ต่อ * พาร์ทิชันใด ๆ และเพื่อให้เป็นที่ไม่เคยตื่นโดยudisksd

มากรายละเอียดเพิ่มเติมสามารถพบได้ในความคิดเห็นนี้udisksข้อผิดพลาด: https://github.com/storaged-project/udisks/issues/611 ข้อผิดพลาดได้รับการแก้ไขในudisks 2.8.4ดังนั้นจึงไม่ปลุก HDD ใด ๆ อีกต่อไปเมื่อมีการติดตั้งหรือยกเลิกการต่อเชื่อมพาร์ติชันที่ไม่เกี่ยวข้อง HDD เดียวกันยังคงทำงานเมื่อudisksdเริ่มทำงานดังนั้นฉันต้องเก็บยูนิต systemd ตัวที่สองที่ทำให้ HDD นี้เข้าสู่โหมดสลีปหลังจากบริการudisks2เริ่มทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.