Cách xác định chính xác tại sao Systemd vào chế độ khẩn cấp


10

Máy tính để bàn của tôi chạy Debian Jessie bắt đầu rơi vào vỏ chế độ khẩn cấp mỗi khi khởi động. Màn hình cho biết sử dụng journalctl -xbđể tìm lý do và sử dụng systemctl defaultđể tiếp tục khởi động. Khi tôi thực thi systemctl default, hệ thống tiếp tục khởi động và sau một vài tuần sử dụng hệ thống, không có gì sai rõ ràng.

Nhìn qua journalctl -xb, không có gì nổi bật là lý do để rơi vào vỏ khẩn cấp. Có cách nào dễ dàng để xác định chính xác lý do khiến nó quyết định chuyển sang chế độ khẩn cấp không? Có các cờ hoặc tùy chọn khởi động khác sẽ làm rõ vấn đề ở đâu không?


2
Nó sẽ được hiển thị trong tạp chí nhưng với thông tin hạn chế bạn cung cấp, không có cách nào để hướng dẫn bạn. Bạn có một bản sao journalctl -xb khi nó xảy ra?
Julie Pelletier

3
Khởi động ở chế độ ghi nhật ký systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1Mchi tiết cho chi tiết cấp độ pháp y ...
jasonwryan

2
Nhật ký hiện tại sẽ cung cấp cho bạn lý do. Có rất nhiều lý do mà rất khó đoán.
Giacomo Catenazzi

1
Tôi có cùng một vấn đề trên phiên bản Ubuntu 16.04. Được cài đặt, sử dụng, sửa chữa rất nhiều hệ thống Linux trong 20 năm qua. Không có gì đặc biệt trên màn hình và lần này không có gì nổi bật trong nhật ký. Màn hình cho biết Ctrl-D để tiếp tục khởi động, nhưng điều đó chỉ dẫn trở lại cùng một dấu nhắc sau một lát. Không một manh mối. Bực bội phải không?
Stéphane Gourichon

Bạn đã thử tất cả các bước từ phần "Chẩn đoán sự cố khởi động" trong hệ thống gỡ lỗi chưa?
Siosm

Câu trả lời:


6

Lỗi nên hiển thị màu đỏ [ FAIL ]trên bảng điều khiển (thay vì [ OK ]), với mô tả của đơn vị bên cạnh. Điển hình là những thất bại đầu tiên là quan trọng nhất. Sử dụng shift + pageup trên bảng điều khiển để cuộn lên và xem một vài màn hình đầu ra trước đây. Điều này có thể không hoạt động nếu có quá nhiều đầu ra.

Điều này hoạt động ngay cả khi bạn không thường thấy [ OK ]các tin nhắn, ví dụ như do quiettrên dòng lệnh kernel như Debian sử dụng. Trong lần thất bại đầu tiên, systemd chuyển sang chế độ dài dòng.

Nếu không, bạn có thể sử dụng systemctl. Không có bất kỳ tùy chọn nào, nó hiển thị một danh sách lớn các đơn vị đã biết với các lỗi được tô sáng màu đỏ. Để chỉ những người thất bại, sử dụng systemctl --state=failedhoặc systemctl --failed.


Nếu bạn tìm kiếm thông qua các tập tin đơn vị, chỉ có một vài cách để khởi động trở lại emergency.target. Đó thường là khi một .mountđơn vị cho một hệ thống tập tin cục bộ bị lỗi, gây ra local-fs.targetlỗi. Hoặc khi initramfs của bạn không thể gắn kết hệ thống tập tin gốc, nếu initramfs của bạn sử dụng systemd.

local-fs.targetOnFailure=emergency.target. Và nó bị lỗi vì các đơn vị cho các hệ thống tệp cục bộ được tự động thêm vào danh sách Yêu cầu của local-fs.target (trừ khi chúng có DefaultDependencies=no).

$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount

2

Thỉnh thoảng tôi lại chạy vào một dấu nhắc "chế độ bảo trì" và tôi cũng phải cuộn qua journald để tìm lỗi. Vì tạp chí sử dụng ít hơn như máy nhắn tin, bạn sẽ có thể áp dụng bất kỳ phím tắt nào cho tìm kiếm của mình.

Thông thường, tôi sẽ dựa vào chức năng tìm kiếm (/) và tìm kiếm mọi thứ tương đương với "lỗi", "cảnh báo" hoặc "không thành công". Và hãy chắc chắn -i để buộc tìm kiếm không nhạy cảm trường hợp.

Vì vậy, tổ hợp phím của tôi sẽ có xu hướng trông như sau:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)

Về mặt kỹ thuật, đây không phải là một tìm kiếm toàn diện hay chính xác cho vấn đề chính xác, nhưng tôi chưa bao giờ bỏ lỡ vấn đề khởi động theo cách này.

Một số phím tắt ít liên quan dưới đây:

http: //www.thegeek ware.com/2010/02/unix-less-command-10-tips-for-effective-navulation/


Tôi tin rằng cũng có thể nhanh chóng chuyển qua trang và tìm kiếm các thông báo màu đỏ (LOG_ERR trở lên). systemdsẽ ghi lại các thông báo màu đỏ cho các lỗi khi khởi động một đơn vị dịch vụ, hoặc quan trọng hơn là không thể gắn kết một hệ thống tệp.
sourcejedi
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.