Hệ thống: Ubuntu 20.04 với khởi động EFI.
Làm rõ lý do tại sao tôi cần điều này
Tôi đã cấu hình hai tráo đổi
phân vùng:
- Một trao đổi chính trên ổ cứng thứ hai. Nó được sử dụng để ngủ đông. (Chức năng ngủ đông tốt hơn nên sử dụng trên ổ cứng để kéo dài tuổi thọ cho SSD.)
- Phân vùng trao đổi thứ hai trên SSD với hệ thống. Đây là trường hợp nếu tôi sử dụng SSD làm đĩa đơn - khi ổ cứng thứ hai bị tháo và thiếu. Trong trường hợp này, tôi chỉ muốn hệ thống hoạt động bình thường - ngay cả khi không có chức năng ngủ đông (hoặc với một chức năng sử dụng trao đổi trên SSD).
Tôi đã làm gì:
- Đã tạo phân vùng trao đổi trên ổ cứng.
- Đặt UUID của nó làm sơ yếu lý lịch cho
sâu bọ
.
/etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="sơ yếu lý lịch giật gân yên tĩnh=UUID=25d5d4af-736a-4232-a4bb-492499bc1038"
- Đặt cả hai phân vùng trao đổi thành
fstab
ưu tiên trao đổi trên HDD và không thất bại
và x-systemd.device-timeout=3s
tùy chọn. Tùy chọn này cho trường hợp thiếu ổ cứng. Nếu không có tùy chọn này và khi thiếu ổ cứng, hệ thống sẽ bị treo trong khi khởi động trong 90 giây.
/etc/fstab
config cho phân vùng trao đổi:
#hoán đổi trên ổ cứng
UUID=25d5d4af-736a-4232-a4bb-492499bc1038 không hoán đổi nofail,pri=20,x-systemd.device-timeout=3s 0 0
#hoán đổi trên SDD
UUID=e78a171a-3c52-4cd1-b86a-17709f4b49d9 không hoán đổi pri=10 0 0
Tôi có vấn đề gì:
Khi SSD và HDD được kết nối với máy tính xách tay, mọi thứ đều ổn.
Khi ổ cứng bị thiếu trong quá trình khởi động hệ thống sâu bọ
cố gắng tìm phân vùng có trao đổi trên ổ cứng và bị treo trong khoảng 33 giây.
Sau khi hệ thống khởi động trong nhật ký, có các thông báo sau về thời gian chờ đợi ổ cứng bị thiếu (mà tôi đã cố tình xóa) với phân vùng trao đổi:
/var/log/boot.log:[ESC[0;1;31m TIME ESC[0m] Đã hết thời gian chờ thiết bị ESC[0;1;39m/dev/disk/by-uuid/46e39f74-e1b3-4705-9bac -84ee2593b4d
4ESC[0m.
/var/log/syslog:Feb 23 14:23:26 Device-2 kernel: [ 0.032426] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.13.0-28-generic root=UUID=a59635ec-2cef-4396- bdf3-be7e4b23fc73 ro sơ yếu lý lịch giật gân yên tĩnh=UUID=25d5d4af-736a-4232-a4bb-492499bc1038 vt.handoff=7
/var/log/syslog:Ngày 23 tháng 2 14:56:14 Thiết bị-2 systemd[1]: dev-disk-by\x2duuid-25d5d4af\x2d736a\x2d4232\x2da4bb\x2d492499bc1038.device: Job dev-disk-by\x2duuid -25d5d4af\x2d736a\x2d4232\x2da4bb\x2d492499bc1038.device/start đã hết thời gian chờ.
Những gì tôi muốn:
Để đặt thời gian chờ cho ổ cứng bị thiếu không quá 5 giây. Bây giờ nó được đặt mặc định ở đâu đó trong hệ thống trong 30-33 giây.
Tôi đã thử như sau:
- Để tìm thuộc tính thời gian chờ trong
sâu bọ
cấu hình.
Trong /etc/default/grub
có thể được chỉ định hai tùy chọn liên quan:
GRUB_HIDDEN_TIMEOUT
GRUB_RECORDFAIL_TIMEOUT
Nhưng chúng không dành cho trường hợp này. Thông tin về các tùy chọn này có thể được tìm thấy ở đây:
Tôi đã cố gắng phân tích mã cho sâu bọ
Trong /etc/grub.d/
và hiểu rằng thời gian chờ đó có thể được chỉ định trong cấu hình khởi động hệ thống - trong hệ thống
.
Tôi đã cố gắng tìm tùy chọn thời gian chờ tương ứng trong hệ thống
cấu hình:
Sudo grep -iR hết thời gian /etc/systemd/
/etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/network-online.target.want/NetworkManager-wait-online.service:ExecStart=/usr/bin/nm-online -s -q --timeout=30
/etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.want/ua-reboot-cmds.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.want/unattends-upgrades.service:TimeoutStopSec=1800
/etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service:# chặn khởi động dịch vụ cho đến khi phát hiện thấy kích hoạt hoặc hết thời gian chờ
/etc/systemd/system/sleep.target.wants/grub-initrd-fallback.service:TimeoutSec=0
/etc/systemd/system.conf:#DefaultTimeoutStartSec=90s
/etc/systemd/system.conf:#DefaultTimeoutStopSec=90s
/etc/systemd/system.conf:#DefaultTimeoutAbortSec=
/etc/systemd/user.conf:#DefaultTimeoutStartSec=90s
/etc/systemd/user.conf:#DefaultTimeoutStopSec=90s
/etc/systemd/user.conf:#DefaultTimeoutAbortSec=
/etc/systemd/logind.conf:#HoldoffTimeoutSec=30s
Đã thử thay đổi tùy chọn với giá trị 30 giây thành 5 giây:
/etc/systemd/system/network-online.target.want/NetworkManager-wait-online.service:ExecStart=/usr/bin/nm-online -s -q --timeout=5
/etc/systemd/logind.conf:#HoldoffTimeoutSec=5s
Nhưng điều này đã không cho kết quả mong đợi.
Ngoài ra tôi đã cố gắng thiết lập tương tự nhãn
cho các phân vùng hoán đổi và để chỉ định tiếp tục phân vùng hoán đổi bằng nhãn này (/dev/đĩa/theo nhãn/...
), không phải bởi UUID. Nhưng trong trường hợp như vậy, không có quyết định phân vùng trao đổi nào từ cả hai sẽ được sử dụng để tải hệ thống từ trạng thái ngủ đông.
Tôi tìm thấy câu hỏi tương tự:
Cách đặt thời gian chờ cho công việc bắt đầu systemd "dev-md125.device" (mdadm)
Nhưng trong đó không có chi tiết cách định cấu hình thời gian chờ trong hệ thống
cho ổ cứng.
Đây có ví dụ làm thế nào để thiết lập Thời gian chờBắt đầuSec
vì httpd.service
Có thể chỉ định thời gian chờ như vậy để gắn ổ cứng trong khi khởi động hệ thống không?
Cảm ơn.