Khởi động chậm, thời gian tải kernel dài, do thiết bị tiếp tục sai


43

Đôi khi, quá trình khởi động của tôi mất quá nhiều thời gian (gần 1 phút).

systemd-analyse time 

cho thấy kernel đang dùng 35.765

Nhìn vào dmesg, có vẻ như vấn đề là với hệ thống tập tin gắn kết:

...
[    2.186084]  sdb: sdb1 sdb9
[    2.186919] sd 2:0:0:0: [sdb] supports TCG Opal
[    2.186922] sd 2:0:0:0: [sdb] Attached SCSI disk
[    2.499795] ata5: SATA link down (SStatus 0 SControl 300)
[    2.844320] clocksource: Switched to clocksource tsc
[   35.670493] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[   35.782128] ip_tables: (C) 2000-2006 Netfilter Core Team
[   35.803610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
...

Tôi /etc/fstabtrông như thế này:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=3996-2381  /boot/efi       vfat    umask=0077      0       1
#/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Làm thế nào tôi có thể khắc phục sự cố này?

EDIT: nhìn kỹ các thông báo khởi động (sau khi loại bỏ tùy chọn im lặng trong grub), tôi phát hiện ra một dòng đáng ngờ:

gave up waiting for suspend/resume device

Tôi nghĩ rằng hoán đổi của tôi được mã hóa và tôi cũng nghĩ rằng UUID trong /etc/initramfs/conf.d/resumekhông tương ứng với bất kỳ thiết bị nào.

Tôi có nên vô hiệu hóa sơ yếu lý lịch / đình chỉ? và làm thế nào để làm điều đó?


6
Vấn đề thực sự nằm ở `` `Begin: Running / scripts / local-Premount` `` Nó được hiển thị trong quá trình khởi động (nếu bạn tắt chế độ im lặng). Do một số lý do, kịch bản đầu tiên này mất 30 giây hoặc lâu hơn.
Sudhanshu

1
Câu hỏi / câu trả lời này rất có giá trị vì nó giúp giải quyết một lỗi trong Lubfox Bionic, vì vậy vui lòng giúp mở lại :-)
sudodus

Câu trả lời:


58

Ok, tôi đã tìm thấy giải pháp, nhờ nhận xét của Sudhanshu.

Vấn đề là do trao đổi của tôi được mã hóa. Vì vậy, local-premounttập lệnh trong initramfs đang chờ một thiết bị trao đổi không có sẵn, cho đến khi nó hết thời gian. Các thông điệp có liên quan là gave up waiting for suspend/resume device.

Để vô hiệu hóa điều này (vì việc nối lại từ trao đổi là không thể với trao đổi được mã hóa và dù sao tôi cũng không sử dụng chế độ ngủ đông), tôi đã sửa đổi tệp này : /etc/initramfs-tools/conf.d/resume.

Trong tập tin này, một dòng với

RESUME=none

(thay vì UUID đã ở đây) sẽ vô hiệu hóa việc chờ thiết bị tiếp tục.

Chạy

sudo update-initramfs -u

để áp dụng các thay đổi.

Hệ thống bây giờ khởi động bình thường.


1
Tôi nghĩ rằng bạn bị ảnh hưởng bởi Bug # 1763611, Lubion bionic khởi động chậm hơn so với các hương vị Ubuntu khác với một số ổ SSD . Và bạn đã chỉ ra làm thế nào để
dẹp

3
Xuất sắc! Cảm ơn đã sửa chữa. Nó đã cho tôi kéo tóc ra!
Murray

Cảm ơn đã sửa chữa
Adhikari Bishwash

Có vấn đề từ một thời gian dài gây ra bởi zram (không có phân vùng trao đổi). Tôi chỉ sửa nó, cảm ơn!
Pierre-Damien

3

Tôi cũng đã thấy điều này trong Linux Mint (dựa trên Ubuntu) và đã dành thời gian để tìm ra những gì đang xảy ra.

Điều này xảy ra nếu hệ thống của bạn được cài đặt trên LVM và đang sử dụng âm lượng LVM làm đĩa trao đổi.

Có một lỗi tồn tại lâu dài, trong đó tệp sơ yếu lý lịch không chính xác có UUID (không hợp lệ đối với LVM) thay vì đường dẫn thiết bị cần có. Xem https://bugs.launchpad.net/ubfox/+source/initramfs-tools/+orms/1768230

Bạn có thể sửa nó bằng cách chỉnh sửa /etc/initramfs-tools/conf.d/resumetệp và thay thế UUID bằng đường dẫn thiết bị của ổ đĩa trao đổi. Đoạn mã sau sẽ thực hiện điều này cho bạn, sử dụng ổ đĩa trao đổi đầu tiên được tìm thấy và báo cáo bởi blkid:

sudo bash -c 'mv /etc/initramfs-tools/conf.d/resume /tmp/resume.bak; echo RESUME=$(blkid | \grep -I swap | head -n 1 | cut -d : -f 1) > /etc/initramfs-tools/conf.d/resume'

2

Không có giải pháp nào ở trên hoặc ở nơi khác phù hợp với tôi nhưng tôi đã tìm ra giải pháp giúp giảm thời gian khởi động xuống 40 giây từ 2 phút và 10 giây.

Tôi đã sử dụng để tạo và xóa các phân vùng trao đổi và bằng cách nào đó các bản ghi này vẫn ở trong tệp etc / fstab. Vì vậy, hệ thống của tôi đã cố gắng gắn kết các phân vùng trao đổi được tạo trước đó không còn tồn tại. Vì vậy, xin vui lòng để tôi giải thích những gì tôi đã làm từng bước.

  1. Tôi đã chạy lệnh này sudo blkid | grep swapđể tìm ra các phân vùng trao đổi của tôi. Có hai nhưng một không thực sự tồn tại (nó không đề cập đến bất kỳ phân vùng nào của tôi).

  2. Vì vậy, tôi đã đi đến chỉnh sửa tập tin / etc / fstab bằng cách gõ sudo gedit /etc/fstab

  3. Sau đó, tôi nhận ra có rất nhiều tệp hoán đổi mà tôi đã xóa nhưng bằng cách nào đó đã tiếp tục tồn tại trong tệp này. Vì vậy, tôi đã đề cập đến bước 1 và xóa các phân vùng không còn tồn tại .

Vui lòng xem hai ảnh chụp màn hình tập tin trước & sau / etc / fstab. Sau khi dọn dẹp, mọi thứ hoạt động như bình thường.

Đây là tập tin chưa được chỉnh sửa / etc / fstab chưa được chỉnh sửa / etc / fstab

và ở đây sau khi xóa sạch các phân vùng trao đổi không tồn tại sạch / etc / fstab


Điều này làm việc cho tôi. Cảm ơn.
Abanoub Hanna

2

Tôi gặp vấn đề này sau khi cài đặt 2 distro linux khác nhau. Bằng cách nào đó, trên một bản phân phối, phân vùng trao đổi đã nhận được một UUID khác được gán cho nó. Giải pháp của tôi là: Đầu tiên, hãy chạy sudo blkidđể lấy UUID đúng cho phân vùng trao đổi. Sao chép UUID của trao đổi. Dán nó vào /etc/initramfs-tools/conf.d/resumeđể bạn có được RESUME=_the_correct_UUID_. Bây giờ chạy sudo update-initramfs -uđể áp dụng thay đổi này.

Tiếp theo, kiểm tra / etc / fstab và thay đổi UUID của phân vùng trao đổi ở đó nếu cần. (Tôi phải)


Điều này đã giúp tôi. Cảm ơn.
Abanoub Hanna
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.