Tiếp tục ngủ đông không thành công trên kernel linux 4.9.0, Debian 9


9

Gần đây tôi đã nâng cấp kernel của mình từ 3.16.4 (Debian jessie) lên 4.9.0 (Debian căng). Mọi thứ đều ổn, cho đến khi tôi cố gắng "Hibernate" (tạm dừng vào đĩa).

Khi tôi sử dụng tùy chọn Hibernate trong LXDE, nó xuất hiện để ngủ đông. Tôi có thể nghe thấy trục chính đĩa đánh dấu và ghi dữ liệu. Nhưng các vấn đề xuất hiện khi nối lại từ ngủ đông. Nhân khôi phục thành công hình ảnh từ trao đổi, nhưng sau đó đóng băng và khởi động lại, với tất cả công việc bị mất. Tôi không thể tìm thấy câu trả lời ở bất cứ đâu trên internet. Mọi người chỉ giải quyết một số lỗi xung quanh việc không đặt /etc/initramfs-tools/conf.d/resume hoặc đã đặt tham số kernel hoặc có mục nhập sai trong / etc / fstab. Tôi có những điều này chính xác. UUID chính xác trong /etc/initramfs-tools/conf.d/resume, sửa lỗi fstab và không đặt paramter kernel kernel.

  • Tôi đã chuyển phân vùng trao đổi bên ngoài phân vùng mở rộng sang chính. UUID đã được lưu và áp dụng cho trao đổi mới.

  • Hệ thống đạt đến "Khôi phục hình ảnh 100%" và sau đó "Tạm dừng bảng điều khiển", sau đó hệ thống tắt và khởi động bình thường, với tất cả công việc bị mất.

  • Đã thử cài đặt sạch, nhưng không có may mắn.

  • Chỉ xảy ra trên i386 (32-bit x86), amd64 (64-bit x86) không bị.

Bố trí bảng phân vùng đĩa:

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

Sda2 là logic (nằm trong bên trong mở rộng) trước khi nâng cấp.

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>

Hạt nhân cmdline

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

Thông tin hệ thống:

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

(Tôi biết bộ xử lý là 64 bit nhưng ban đầu nó có hệ điều hành 32 bit, vì vậy tôi nghĩ rằng nó là 32 bit cho đến khi tôi kiểm tra / Proc / cpuinfo)

Câu trả lời:


4

Vấn đề là do mâu thuẫn giữa ngủ đông và kASLR trên x86-32 . Điều này có thể được giải quyết bằng cách vô hiệu hóa kASLR với tùy chọn khởi động kernel nokaslr . x86-64 không bị ảnh hưởng.

Đối với Grub, điều này có thể được thực hiện bằng cách chỉnh sửa / etc / default / grub và thêm nokaslr vào các tùy chọn khởi động, ví dụ: GRUB_CMDLINE_LINUX_DEFAULT = "quiet nokaslr "

Sau đó chạy update-grub để cập nhật cấu hình và khởi động lại để dùng thử.


Tôi đã có chính xác cùng một vấn đề và dường như chỉ có hạt nhân PAE bị ảnh hưởng bởi vấn đề đó. Nhân tương tự không có PAE hoạt động mà không có vấn đề.

Cách giải quyết cho tôi là cài đặt linux-image-686 và gỡ cài đặt linux-image-686-pae và linux-image-4.9.0-4-686-pae. Phiên bản kernel chính xác có thể thay đổi theo thời gian do nâng cấp, nhưng về cơ bản, hạt nhân PAE hiện đang chạy cần được thay thế bằng kernel không có PAE.

Nó thực sự không liên quan gì đến sự hỗ trợ PAE của CPU, vì CPU của tôi hỗ trợ PAE theo / Proc / cpuinfo. Nhưng PAE dù sao cũng không được sử dụng nhiều trên các notebook cũ.

Nó cũng không liên quan gì đến kernel 4.9 PAE vì vấn đề tương tự xảy ra với kernel 4.13 PAE từ backport Debian.


Câu trả lời tuyệt vời này sẽ xứng đáng được nhiều hơn, nhưng tôi chỉ có thể đưa ra một.
peterh - Phục hồi Monica

Vâng cảm ơn tôi nghĩ rằng trang web này là ra khỏi các chuyên gia. (Un) May mắn thay tôi đã tìm ra rằng phiên bản amd64 chạy không có vấn đề nên tôi nghĩ họ đã dừng để duy trì phiên bản 686, nhưng tôi không biết rằng có phiên bản 686 không có PAE. Tôi hy vọng debian sẽ sửa nó, nếu không mọi người sẽ phàn nàn.
Enginecrafter77

3

Có lẽ /etc/uswsusp.confmuốn một mục thay đổi cho 'thiết bị tiếp tục', nếu điều này không được sử dụng, myabe chỉ cần cố gắng grep UUID cũ của bạn trong tất cả các tệp /etcđể tìm một nơi cần thay đổi. Ngoài ra một điều update-initramfssẽ là cần thiết, tôi sẽ nói.


Không có gì trong số này giúp cố gắng cài đặt uswsusp và kiểm tra xem tập tin có đúng không, nhưng không có may mắn. Và không có tệp cấu hình nào trong / etc chứa UUID cũ của tôi.
Enginecrafter77

2

Tôi đã nhận được cùng một lỗi. Cài đặt lại với iso netinst mới nhất, tức là debian-9.1.0-amd64-netinst.iso đã sắp xếp nó ra. Lỗi dường như đã được sửa (ít nhất là đối với kiến ​​trúc này).


Có, tôi đồng ý, nó đã được sửa trong amd64 (tức là x64) nhưng lỗi vẫn còn ở i386 (bí danh 686 hoặc x86)
Enginecrafter77

1

Tôi loại bỏ uswsusp và ngủ đông hoạt động trở lại như một cơ duyên. BTW Tôi nghĩ rằng đó là trường hợp đã xảy ra trước Jessie khi tôi đang sử dụng trình điều khiển nvidia, tôi đã thử nghiệm bằng uswsusp và phải gỡ bỏ nó để hoạt động ngủ đông.


Tôi chưa cài đặt uswsusp khi kiểm tra máy tính 32 bit, nhưng chế độ ngủ đông vẫn không hoạt động.
Enginecrafter77

Quá tệ. Bạn đã thử loại bỏ trình điều khiển nvidia và sử dụng nouveau chưa?
Alain

Có, tôi đã thử hoàn toàn cài đặt Debian 9 (32 bit) nhưng vấn đề vẫn còn đó. Nó cũng xảy ra trên máy tính có đồ họa intel, vì vậy tôi nghĩ nó không liên quan gì đến GPU.
Enginecrafter77

1

Nếu bạn có phân vùng trao đổi (với kích thước chính xác) và nếu bạn chỉnh sửa "/etc/initramfs-tools/conf.d/resume" với kết quả "#blkid" và i386 sẽ không ngủ đông chính xác hơn đó là lỗi trên Debians i386 4.9 hạt nhân! Cập nhật kernel lên phiên bản lớn hơn 4.9 hoặc quay lại kernel 3.16.


0

Xin thứ lỗi cho bản chất chung của trả lời này. Tôi đã thấy những câu hỏi tương tự trên Web và quyết định viết một câu trả lời cho tất cả. Tôi gặp phải vấn đề tương tự khi bạn nâng cấp Debian-Jessie trên Hp2510. Tôi chuyển sang Ubuntu-desktop và cũng thấy nó ở đó. Sau đó tôi đã thử nghiệm trên Ubuntu và Hp2510 để nó có thể không hoàn toàn áp dụng cho tình huống của bạn.

Một số máy tính cũ được cập nhật hệ thống Linux mới gặp sự cố khởi động. Chúng có thể không khởi động được hoặc chúng có thể mất tới ba phút để khởi động. Thật trùng hợp, họ hoặc không ngủ đông hoặc mất quá nhiều thời gian để ngủ đông và khử nhiễu đến mức khả năng này là vô dụng. Thường thì điều này không phải vì máy tính cũ đơn giản là chậm mà là do sự thay đổi được giới thiệu trong nhân Linux 4,8, gây ra sự cố với chipset Intel rất phổ biến, bao gồm đầu ra svideo. Bắt đầu với kernel này, bất kỳ máy tính nào có chipset này sẽ gặp sự cố khởi động trừ khi đối số dòng lệnh Linux"video=SVIDEO-1:d"được bao gồm trong GRUB_CMDLINE_LINUX. Điều này sẽ rút ngắn đáng kể cả thời gian khởi động 64 bit và 32 bit nhưng chỉ khắc phục các sự cố ngủ đông đối với 64 bit. Không có hệ thống 32 bit nào hỗ trợ ngủ đông sau thời điểm này. Hơn nữa, thời gian khởi động cho tất cả các phiên bản kernel 4,8 và 4,9 là xấu (ngoại trừ 4,8.rc1-7). Điều này cuối cùng đã được giải quyết trong 4.10. Kernels 4.8 và 4.9 chỉ nên tránh (dù sao chúng cũng lỗi thời).

Nếu bạn muốn thời gian khởi động nhanh nhất, hãy sử dụng kernel trước 4.8. Tôi sẽ sử dụng Ubuntu-desktop 15.04 với kernel được cập nhật lên 4.7.10. Đây là cách duy nhất để có được chế độ ngủ đông trong hệ thống 32. Hệ thống 64 bit khởi động chậm hơn 7% so với 32 bit nhưng nó vẫn nhanh hơn bất kỳ phiên bản nào sau này. Nếu bạn muốn có một hệ thống 32 bit hiện được hỗ trợ và sẵn sàng từ bỏ chế độ ngủ đông, hãy sử dụng bất kỳ hệ thống nào được phát hành hoặc cập nhật lên kernel 4.10 trở lên. Bất kỳ phiên bản 64 bit nào cũng hoạt động sau 4,8 với sửa lỗi video nhưng để có hiệu suất tốt nhất, hãy tránh 4,8 và 4,9.

Để thêm sửa video làm sudo nano /etc/default/grub. Sau khi đóng nano làm sudo update-grub. Trừ khi GRUB_CMDLINE_LINUX_DEFAULT, được chèn sau GRUB_CMDLINE_LINUX, sẽ trống, "video=SVIDEO-1:d"sẽ không phải là đối số dòng lệnh Linux cuối cùng, mà một số người nói là cần thiết. Nó thực sự có thể là bất cứ nơi nào.

Bạn luôn có thể gọi chế độ ngủ đông bằng lệnh pm-hibernate trong một thiết bị đầu cuối (hoặc tty) nhưng để có tùy chọn GUI có sẵn, bạn cần tạo hoặc thêm vào tệp chính sách /etc/polkit-1/localauthority/50-local.d/ com.ubuntu.enable-hibernate.pkla(rõ ràng là phân biệt) văn bản sau:

[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

Đôi khi vấn đề không nằm ở grub hoặc UUID. Điều này cũng xảy ra khi bạn hết dung lượng lưu trữ. Sẽ không có không gian ghi còn lại do đó tiếp tục từ chế độ ngủ đông sẽ đóng băng.

Khi bạn gặp lỗi đó, bạn có thể nhấp vào alt+ f2/f3/f7hoặc ctrl+alt+ f2/f3/f7mở thiết bị đầu cuối. Đăng nhập vào tài khoản của bạn hoặc root bằng thiết bị đầu cuối.

Sau đó chạy lệnh sudo df -hđể kiểm tra dung lượng lưu trữ. Trong trường hợp của tôi, tôi không còn chỗ trống, /dev/sda1vì vậy hãy kiểm tra dung lượng trống trên các ổ đĩa trong danh sách.

Nếu bạn hết dung lượng, vui lòng thử xóa một số tệp để có dung lượng đáng kể.

Sau đó, bạn có thể nhấp vào alt+f1hoặc ctrl+alt+f1đợi gui đăng nhập xuất hiện hoặc nhậpreboot in the terminal to reboot


Vâng, cảm ơn cho nỗ lực của bạn, nhưng vấn đề này đã được giải quyết. Vấn đề là với hạt nhân 4.9.0 i386 + PAE. Sau đó tôi phát hiện ra PC của tôi có thể chạy phần mềm 64 bit (mặc dù PC luôn chạy 32 bit kể từ ngày tôi nhận được) và kernel 64 bit đã giải quyết vấn đề.
Enginecrafter77

Ok, bạn được chào đón.
David Kariuki
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.