การดำเนินการไฮเบอร์เนตต่อล้มเหลวบนเคอร์เนล linux 4.9.0, Debian 9


9

ฉันเพิ่งอัพเกรดเคอร์เนลจาก 3.16.4 (Debian jessie) เป็น 4.9.0 (ยืด Debian) ทุกอย่างเรียบร้อยจนกระทั่งฉันพยายาม "ไฮเบอร์เนต" (พักดิสก์)

เมื่อฉันใช้ตัวเลือกไฮเบอร์เนตใน LXDE มันจะปรากฏขึ้นเพื่อไฮเบอร์เนต ฉันได้ยินเสียงการหมุนแกนของดิสก์และการเขียนข้อมูล แต่ปัญหาจะปรากฏขึ้นเมื่อกลับมาทำงานจากโหมดไฮเบอร์เนต เคอร์เนลกู้คืนรูปภาพจากการสลับสำเร็จแล้วจากนั้นหยุดการทำงานและรีบูตโดยที่การทำงานทั้งหมดหายไป ฉันไม่สามารถหาคำตอบได้ทุกที่บนอินเทอร์เน็ต ผู้คนกำลังแก้ไขข้อผิดพลาดบางอย่างโดยไม่ตั้งค่า /etc/initramfs-tools/conf.d/resume หรือตั้งค่าพารามิเตอร์ของเคอร์เนลหรือมีรายการผิดใน / etc / fstab ฉันมีสิ่งเหล่านี้ถูกต้อง แก้ไข UUID ใน /etc/initramfs-tools/conf.d/resume แก้ไข fstab และไม่ได้ตั้งค่าตัวตรวจสอบเคอร์เนลต่อ

  • ฉันย้ายพาร์ทิชัน swap นอกพาร์ทิชันเสริมเป็นหลัก UUID ได้รับการบันทึกและนำไปใช้กับการแลกเปลี่ยนใหม่

  • ระบบเข้าถึง "กู้คืนรูปภาพ 100%" จากนั้น "ระงับคอนโซล" จากนั้นจะปิดและบู๊ตตามปกติโดยที่งานทั้งหมดหายไป

  • พยายามทำความสะอาดติดตั้ง แต่ไม่มีโชค

  • เกิดขึ้นเฉพาะใน i386 (32- บิต x86), amd64 (64- บิต x86) เท่านั้นที่ไม่ได้รับผลกระทบ

เค้าโครงตารางดิสก์พาร์ติชัน:

NAME   FSTYPE LABEL    UUID                                 MOUNTPOINT
sda                                                         
├─sda1 ext4   HDD      <ROOT-UUID> /
└─sda2 swap   HDD-SWAP <SW-UUID> [SWAP]
sr0

sda2 เป็นแบบลอจิคัล (อยู่ภายในขยาย) ก่อนการอัพเกรด

fstab:

UUID=<ROOT-UUID> / ext4 errors=remount-ro 0 1
UUID=<SW-UUID> none swap sw 0 0

/etc/initramfs-tools/conf.d/resume

RESUME=UUID=<SW-UUID>

เคอร์เนล cmdline

BOOT_IMAGE=/boot/vmlinuz-4.9.0-3-686-pae root=UUID=<ROOT-UUID> ro quiet

ข้อมูลระบบ:

Computer: Compaq CQ60-120ec
Swap Size: 3.5GiB
Processor: AMD Athlon X2 64 QL-66
GPU: Nvidia Geforce 8200M G
Memory: 2G DDR2 667MHz
Desktop Environment: LXDE
Debian Version: 9 (stretch)
Kernel version: 4.9.0-3
Graphics Driver: nvidia legacy 304xxx

(ฉันรู้ว่าโปรเซสเซอร์คือ 64 บิต แต่มันมาพร้อมกับ 32 บิตระบบปฏิบัติการเดิมดังนั้นฉันคิดว่ามันเป็น 32 บิตจนกว่าฉันจะตรวจสอบ / proc / cpuinfo)

คำตอบ:


4

ปัญหาที่เกิดจากการขัดแย้งระหว่างจำศีลและkASLRบนx86-32 สิ่งนี้สามารถแก้ไขได้โดยการปิดใช้งาน kASLR ด้วยตัวเลือกการบูตเคอร์เนลnokaslr x86-64ไม่ได้รับผลกระทบ

สำหรับด้วงนี้สามารถทำได้โดยการแก้ไข / etc / default / grub และเพิ่มnokaslrในตัวเลือกการบูตเช่น: GRUB_CMDLINE_LINUX_DEFAULT = "quiet nokaslr "

จากนั้นเรียกใช้update-grubเพื่ออัปเดตการกำหนดค่าและรีบูตเพื่อลอง


ฉันมีปัญหาเดียวกันทั้งหมดและดูเหมือนว่าเฉพาะเคอร์เนล PAE เท่านั้นที่ได้รับผลกระทบจากปัญหานั้น เคอร์เนลเดียวกันโดยไม่มี PAE ทำงานได้โดยไม่มีปัญหา

วิธีแก้ปัญหาสำหรับฉันคือการติดตั้ง linux-image-686 และถอนการติดตั้ง linux-image-686-pae และ linux-image-4.9.0-4-686-pae รุ่นเคอร์เนลที่แน่นอนอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไปเนื่องจากการอัพเกรด แต่โดยทั่วไปเคอร์เนล PAE ที่ทำงานอยู่ในปัจจุบันจำเป็นต้องถูกแทนที่ด้วยเคอร์เนลที่ไม่มี PAE

มันไม่มีอะไรเกี่ยวข้องกับการรองรับ PAE ของ CPU เนื่องจาก CPU ของฉันรองรับ PAE ตาม / proc / cpuinfo แต่ PAE นั้นไม่ค่อยได้ใช้กับโน้ตบุ๊กรุ่นเก่ามากนัก

นอกจากนี้ยังไม่มีอะไรเกี่ยวข้องกับเคอร์เนล 4.9 PAE เนื่องจากปัญหาเดียวกันนี้เกิดขึ้นกับเคอร์เนล 4.13 PAE จากแบ็คเดเบียน Debian


คำตอบที่ยอดเยี่ยมนี้จะสมควรได้รับมากขึ้น แต่ฉันสามารถให้เพียงหนึ่งเดียว
peterh - Reinstate Monica

ใช่ขอบคุณฉันคิดว่าเว็บไซต์นี้เป็นของผู้เชี่ยวชาญ (ไม่) โชคดีที่ฉันพบว่ารุ่น amd64 ทำงานโดยไม่มีปัญหาดังนั้นฉันคิดว่าพวกเขาหยุดเพื่อรักษารุ่น 686 แต่ฉันไม่รู้ว่ามีรุ่น 686 ที่ไม่มี PAE ฉันหวังว่าเดเบียนจะแก้ไขไม่เช่นนั้นคนจะบ่น
Enginecrafter77

3

อาจ/etc/uswsusp.confต้องการเปลี่ยนรายการสำหรับ 'ดำเนินการต่ออุปกรณ์' ถ้าไม่ได้ใช้ myabe เพียงพยายาม grep UUID เก่าของคุณในไฟล์ทั้งหมดใน/etcเพื่อหาสถานที่ที่จำเป็นต้องเปลี่ยน นอกจากนี้ยังupdate-initramfsจะเป็นสิ่งที่จำเป็นฉันจะบอกว่า


สิ่งนี้ไม่ช่วยลองติดตั้ง uswsusp และตรวจสอบว่าไฟล์ถูกต้อง แต่ไม่มีโชค และไม่มีไฟล์กำหนดค่าใน / etc ไม่มี UUID เก่าของฉัน
Enginecrafter77

2

ฉันได้รับข้อผิดพลาดเดียวกัน การติดตั้งใหม่ด้วย netinst iso ล่าสุดเช่น debian-9.1.0-amd64-netinst.iso ข้อผิดพลาดดูเหมือนจะได้รับการแก้ไข (อย่างน้อยสำหรับสถาปัตยกรรมนี้)


ใช่ฉันเห็นด้วยมันได้รับการแก้ไขใน amd64 (เช่น x64) แต่ข้อผิดพลาดยังคงอยู่ใน i386 (นามแฝง 686 หรือ x86)
Enginecrafter77

1

ฉันลบ uswsusp และไฮเบอร์เนตอีกครั้งเหมือนมีเสน่ห์ BTW ฉันคิดว่ามันเป็นกรณีก่อนที่เจสซี่เมื่อฉันใช้ไดรเวอร์ NVIDIA ฉันทดสอบการใช้ uswsusp และต้องลบมันออกเพื่อให้ไฮเบอร์เนตทำงานได้


ฉันไม่ได้ติดตั้ง uswsusp ในการทดสอบคอมพิวเตอร์ 32 บิต แต่การจำศีลก็ยังไม่ทำงาน
Enginecrafter77

เลวร้ายเกินไป. คุณลองลบไดร์เวอร์ nvidia และใช้นูโวหรือไม่?
Alain

ใช่ฉันพยายามทำความสะอาดการติดตั้ง Debian 9 อย่างสมบูรณ์ (32 บิต) แต่ปัญหายังคงอยู่ มันเกิดขึ้นบนคอมพิวเตอร์ที่มีกราฟิก Intel ดังนั้นฉันคิดว่ามันไม่เกี่ยวข้องกับ GPU
Enginecrafter77

1

หากคุณมีพาร์ทิชัน swap (มีขนาดที่ถูกต้อง) และหากคุณแก้ไข "/etc/initramfs-tools/conf.d/resume" ด้วยผลลัพธ์ "#blkid" และ i386 จะไม่จำศีลถูกต้องมากกว่าเป็นบั๊กบน Debians i386 4.9 เคอร์เนล! อัพเดตเคอร์เนลเป็นเวอร์ชันที่มากกว่า 4.9 หรือย้อนกลับเป็น 3.16 เคอร์เนล


0

โปรดแก้ตัวลักษณะทั่วไปของคำตอบนี้ ฉันเห็นคำถามที่คล้ายกันทั่วทั้งเว็บและตัดสินใจที่จะเขียนคำตอบเดียวสำหรับทุกคน ฉันพบปัญหาเดียวกันกับที่คุณอัพเกรด Debian-Jessie ใน Hp2510 ฉันเปลี่ยนไปใช้ Ubuntu-desktop แล้วก็พบว่าที่นั่นด้วย ต่อมาฉันทำการทดสอบกับ Ubuntu และ Hp2510 ดังนั้นจึงอาจไม่เหมาะกับสถานการณ์ของคุณ

คอมพิวเตอร์รุ่นเก่าบางเครื่องได้รับการปรับปรุงด้วยระบบ Linux ใหม่ประสบปัญหาการบูต อาจไม่สามารถบู๊ตได้เลยหรืออาจใช้เวลานานถึงสามนาทีในการบู๊ต บังเอิญพวกเขาทั้งสองไม่สามารถจำศีลหรือใช้เวลานานในการจำศีลและยกเลิกการที่ความสามารถไม่มีประโยชน์ บ่อยครั้งที่สิ่งนี้ไม่ใช่เพราะคอมพิวเตอร์เก่า ๆ นั้นช้า แต่เป็นเพราะมีการเปลี่ยนแปลงในเคอร์เนล 4.8 Linux ทำให้เกิดปัญหากับชิปเซ็ต Intel ทั่วไปซึ่งรวมถึง svideo เอาท์พุท เริ่มต้นด้วยเคอร์เนลนี้คอมพิวเตอร์ทุกเครื่องที่มีชิปเซ็ตนี้จะประสบปัญหาการบู๊ตเว้นแต่อาร์กิวเมนต์บรรทัดคำสั่ง Linux"video=SVIDEO-1:d"รวมอยู่ใน GRUB_CMDLINE_LINUX สิ่งนี้จะสั้นลงอย่างมากทั้งเวลาบูตแบบ 64- บิตและ 32- บิต แต่แก้ไขปัญหาการจำศีลเฉพาะสำหรับ 64- บิตเท่านั้น ไม่มีระบบ 32 บิตที่สนับสนุนการไฮเบอร์เนตหลังจากจุดนี้ นอกจากนี้เวลาบูตสำหรับเคอร์เนลเวอร์ชัน 4.8 และ 4.9 ทั้งหมดนั้นไม่ดี (ยกเว้น 4.8.rc1-7) ในที่สุดนี้ได้รับการแก้ไขใน 4.10 ควรหลีกเลี่ยงเมล็ด 4.8 และ 4.9 (พวกมันล้าสมัยแล้ว)

หากคุณต้องการเวลาบูตเร็วที่สุดให้ใช้เคอร์เนลก่อน 4.8 ฉันจะใช้ Ubuntu-desktop 15.04 กับเคอร์เนลที่อัพเดตเป็น 4.7.10 นี่เป็นวิธีเดียวที่จะได้รับการไฮเบอร์เนตในระบบ 32 ระบบ 64- บิตเริ่มระบบ 7% ช้ากว่า 32 บิต แต่ยังเร็วกว่ารุ่นที่ใหม่กว่า หากคุณต้องการระบบ 32 บิตที่ได้รับการสนับสนุนในปัจจุบันและยินดีที่จะจำศีลก่อนหน้านี้ให้ใช้สิ่งที่ได้รับการเผยแพร่หรืออัปเดตเป็นเคอร์เนล 4.10 หรือใหม่กว่า เวอร์ชัน 64 บิตใด ๆ จะทำงานหลังจาก 4.8 ด้วยการแก้ไขวิดีโอ แต่เพื่อประสิทธิภาพที่ดีที่สุดให้หลีกเลี่ยง 4.8 และ 4.9

sudo nano /etc/default/grubเมื่อต้องการเพิ่มจะแก้ไขวิดีโอ หลังจากปิดนาโนsudo update-grubแล้ว ยกเว้นว่า GRUB_CMDLINE_LINUX_DEFAULT ซึ่งถูกแทรกหลังจาก GRUB_CMDLINE_LINUX ว่างเปล่า"video=SVIDEO-1:d"จะไม่ใช่อาร์กิวเมนต์บรรทัดคำสั่ง Linux ล่าสุดซึ่งบางคนบอกว่าจำเป็น มันสามารถอยู่ได้ทุกที่

คุณสามารถเรียกใช้จำศีลได้ตลอดเวลาด้วยคำสั่ง pm-hibernate ในเทอร์มินัล (หรือ tty) แต่เพื่อให้มันมีตัวเลือก GUI ที่มีอยู่คุณต้องสร้างหรือเพิ่มไฟล์นโยบาย/etc/polkit-1/localauthority/50-local.d/ com.ubuntu.enable-hibernate.pkla(ชัดแจ้งเฉพาะ distro):

[Re-enable hibernate by default for login1]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate
    ResultActive=yes
[Re-enable hibernate for multiple users by default in logind]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate-multiple-sessions
    ResultActive=yes

0

บางครั้งปัญหาไม่ได้อยู่ในด้วงหรือ UUID สิ่งนี้จะเกิดขึ้นเมื่อคุณมีพื้นที่เก็บข้อมูลไม่เพียงพอ จะไม่มีพื้นที่เขียนเหลือดังนั้นการกลับมาทำงานจากโหมดไฮเบอร์เนตจะหยุดลง

เมื่อคุณได้รับข้อผิดพลาดคุณสามารถคลิกalt+ f2/f3/f7หรือctrl+alt+ f2/f3/f7เปิดเทอร์มินัล เข้าสู่ระบบบัญชีของคุณหรือรูทโดยใช้เทอร์มินัล

จากนั้นรันคำสั่งsudo df -hเพื่อตรวจสอบพื้นที่เก็บข้อมูล ในกรณีของฉันฉันไม่มีที่ว่างบน/dev/sda1ดังนั้นตรวจสอบพื้นที่ว่างบนไดรฟ์ในรายการ

หากคุณว่างโปรดลองลบไฟล์บางไฟล์เพื่อให้มีพื้นที่เพียงพอ

หลังจากนั้นคุณสามารถคลิกalt+f1หรือctrl+alt+f1และรอให้ gui ล็อกอินปรากฏขึ้นหรือพิมพ์reboot in the terminal to reboot


ดีขอบคุณสำหรับความพยายามของคุณ แต่ปัญหานี้ได้รับการแก้ไขแล้ว ปัญหาเกิดขึ้นกับเคอร์เนล 4.9.0 i386 + PAE ต่อมาฉันค้นพบว่าพีซีของฉันสามารถเรียกใช้ซอฟต์แวร์ 64 บิตได้ (แม้ว่าพีซีจะใช้งาน 32 บิตจากวันที่ฉันได้รับเสมอ) และเคอร์เนล 64 บิตสามารถแก้ไขปัญหาได้
Enginecrafter77

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