Tại sao systemd bị treo trong khi khởi động lại?


13

1 trong 10 lần, systemd bị treo trong khi khởi động lại. Tôi không hiểu lý do. Tôi nên nhìn vào cái gì / ở đâu để khắc phục vấn đề? Tôi đang sử dụng systemd v196 và không thể nâng cấp nó lên phiên bản> = 198 vì sau này yêu cầu kernel gần đây (có hỗ trợ cho các nhóm), không thể cập nhật theo yêu cầu của khách hàng. Tôi tự hỏi liệu có một cách hợp lý để khám phá lý do của hành vi này và làm cho systemd khởi động lại hệ thống vô điều kiện.

Lưu ý rằng liên kết này không giúp ích: http://freedesktop.org/wiki/Software/systemd/Debugging/#index2h1

Như bạn có thể đọc ở đó:

Tắt máy không bao giờ kết thúc

Nếu khởi động lại hoặc tắt nguồn bình thường không bao giờ kết thúc ngay cả sau khi chờ vài phút, phương pháp trên để tạo nhật ký tắt máy sẽ không giúp ích và phải lấy nhật ký bằng các phương pháp khác. Hai tùy chọn hữu ích để gỡ lỗi các vấn đề khởi động cũng có thể được sử dụng cho các sự cố tắt máy:

use a serial console
use a debug shell - not only is it available from early boot, it also stays active until late shutdown.

Tôi đang sử dụng bảng điều khiển nối tiếp và vì một số lý do tôi thậm chí có thể đăng nhập, vì giao diện eth của anh ấy đã được nâng lên (sau khi mất kết nối trong các bước khởi động lại).

Tôi không thấy lý do.

# cat /etc/systemd/system/
basic.target.wants/                          getty.target.wants/                          multi-user.target.wants/                     sysinit.target.wants/                        
dbus-org.freedesktop.NetworkManager.service  local-fs-pre.target.wants/                   sockets.target.wants/                        syslog.service                               
display-manager.service                      local-fs.target.wants/                       swap.target

Lưu ý hoán đổi. Nó ở đó nhưng chúng tôi không sử dụng phân vùng trao đổi. Tôi đã cố gắng để che giấu trao đổi, nhưng vấn đề treo reamin. Dòng cuối cùng trong giao diện điều khiển là:

[OK] Stopped target shutdown.

EDIT: Như tôi đã nói, tôi có thể đăng nhập lại thông qua ssh qua eth.

Bây giờ tôi sẽ chỉ cho bạn hai bản ghi. Nhật ký đầu tiên xảy ra khi khởi động lại / shutdwon bị treo, trong khi nhật ký thứ hai là khi khởi động lại thành công:

Trường hợp treo, đầu ra luôn như thế này (nhật ký đầy đủ):

[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Modem and VPN c[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Unmounted /var/lib/opkg.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped Suspend manager.
         Stopping X Server...
[  OK  ] Stopped X Server.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[   77.580000] g_ether gadget: using random self ethernet address
[   77.580000] g_ether gadget: using random host ethernet address
[   77.590000] usb0: MAC 6e:0d:de:b0:33:4f
[   77.590000] usb0: HOST MAC 62:7a:81:02:f3:ff
[   77.600000] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[   77.600000] g_ether gadget: g_ether ready
[   77.610000] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
[   77.610000] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 2
[   77.620000] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[   77.630000] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   77.640000] usb usb2: Product: MUSB HDRC host driver
[   77.640000] usb usb2: Manufacturer: Linux 2.6.37 musb-hcd
[   77.650000] usb usb2: SerialNumber: musb-hdrc.0
[   77.650000] hub 2-0:1.0: USB hub found
[   77.660000] hub 2-0:1.0: 1 port detected
[   77.690000] ADDRCONF(NETDEV_UP): usb0: link is not ready
[  OK  ] Stopped target Reboot.
[  OK  ] Stopped Reboot.
[  OK  ] Stopped target Unmount All Filesystems.
[  OK  ] Stopped target Shutdown.
[   78.330000] <46>systemd-journald[328]: Received SIGUSR1
<hang>

Khởi động lại bình thường:

         Unmounting /var/lib/opkg...
[  OK  ] Stopped target Network.
         Stopping SSH Per-Connection Server...
[  OK  ] Stopped target Graphical Interface.
[  OK  ] Stopped target Multi-User.
         Stopping Monitoring free system resources...
         Stopping Monitoring dropbear socket...
         Stopping Network Time Service (one-shot ntpdate mode)...
[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Unmounted /var/lib/opkg.
         Stopping Network Manager...
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Stopped Suspend manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
         Stopping X Server...
         Stopping Permit User Sessions...
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped X Server.
[  OK  ] Stopped D-Bus System Message Bus.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Sockets.
[  OK  ] Closed dropbear.socket.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Stopped target System Initialization.
         Stopping Import configuration from SD card...
[  OK  ] Stopped Import configuration from SD card.
         Stopping Load Kernel Modules...
         Stopping Apply Kernel Variables...
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped target Local File Systems.
         Unmounting /var...
         Unmounting /tmp...
[  OK  ] Closed Syslog Socket.
[  OK  ] Failed unmounting /var.
[  OK  ] Unmounted /tmp.
[  OK  ] Stopped Load Kernel Modules.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
         Stopping Remount Root and Kernel File Systems...
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target Shutdown.
[   52.340000] omap_wdt: Unexpected close, not stopping!
Sending SIGTERM to remaining processes...
[   52.490000] <46>systemd-journald[335]: Received SIGTERM
Sending SIGKILL to remaining processes...
Unmounting file systems.
Unmounting /sys/fs/fuse/connections.
Unmounting /var.
All filesystems unmounted.
Deactivating swaps.
All swaps deactivated.

CẬP NHẬT:

Sau một số điều tra và gỡ lỗi, tôi phát hiện ra lý do gián đoạn tắt máy, mặc dù tôi vẫn không thể giải quyết nó. Điều gì xảy ra là vì một số lý do, một trong các dịch vụ tùy chỉnh được bắt đầu trước khi tắt máy hoàn tất, điều này làm cho thủ tục tắt máy bị treo. Đó là một trường hợp treo. Một kiểu treo khác là khi tắt máy không bị gián đoạn nhưng nó dừng lại ở một số điểm. Vì lý do này, trước khi giải quyết tất cả các xung đột và các lỗi khác có thể xảy ra cùng một lúc, tôi muốn kích hoạt vô điều kiện bộ giám sát phần cứng. Để thực hiện điều này thông qua systemd, tôi đã kích hoạt và thử nghiệm, riêng rẽ hoặc cùng nhau, RuntimeWatchdogSec và ShutdownWatchdogSec. Thật không may, họ đã không giúp đỡ. Bằng cách nhìn vào mã nguồn,

Tôi bị mắc kẹt. Những gì tôi yêu cầu bạn là tìm cách để: 1. cho phép cơ quan giám sát kích hoạt vô điều kiện ít nhất là bắt đầu từ thời điểm tắt máy bắt đầu 2. phát hiện và giải quyết tất cả các xung đột một cách dễ dàng

Giải pháp đầu tiên được ưa thích.


Có phải trên đường xuống nó treo? Bạn có thể chia sẻ với chúng tôi những dịch vụ nào được kích hoạt trên hệ thống không? Bất kỳ tùy chỉnh được thực hiện? Làm thế nào bạn kết luận rằng systemd treo?
MattBianco

@MattBianco Tôi đã chỉnh sửa câu hỏi. Có nhiều thông tin hơn.
Martin

Tại sao tôi không thấy bất kỳ dòng nào giống nhau giữa các bản ghi đầu tiên và thứ hai? Tôi có thể cung cấp thêm trợ giúp nếu tôi có thể thấy chúng bắt đầu khác nhau ở đâu.
BenjiWiebe

@BenjiWiebe bạn nói đúng. Tôi sẽ chỉnh sửa lại câu hỏi
Martin

cố gắng sử dụng tạp chí là root và tìm kiếm thời gian chờ, lỗi và lỗi phụ thuộc trong tạp chí systemd.
harrymc

Câu trả lời:


5

Tôi mạo hiểm đề xuất một giải pháp: thử thêm

  Before=basic.target

đến /usr/lib/systemd/system/dbus.service.

Tôi bị một sự kỳ lạ, trong nhật ký của bạn, điều đó nhắc nhở tôi về một tai nạn tôi đã đọc cách đây một thời gian, trên các diễn đàn Arch Linux : hệ thống này sẽ bị treo khi khởi động lại. Giải pháp đã được đưa ra như trên, trên mặt đất rằng việc treo máy sẽ do một số dịch vụ cố gắng nói chuyện với xe buýt sau khi nó bị dừng:

Vì vậy, bằng cách đặt hàng nó trước basic.target, nó không chỉ bắt đầu trước khi đạt được mục tiêu cơ bản, mà còn đảm bảo rằng nó sẽ tồn tại cho đến sau khi basic.target bị tắt trong khi tắt máy.

Trong nhật ký không lành mạnh của bạn , chúng tôi thấy rằng trên thực tế, Hệ thống cơ bản không bị dừng, trong khi nó được dừng đúng cách trong nhật ký lành mạnh .

Nếu điều này không hoạt động, và xem xét rằng bạn không thể nâng cấp, bạn đã xem xét hạ cấp?


1
Cảm ơn, tôi sẽ thử giải pháp của bạn. Tôi đã xem xét một sự thay thế cho SysV cũ tốt, vì systemd dường như bị lỗi bởi thiết kế.
Martin

Tôi nhận được điều này từ systemd khi khởi động sau khi áp dụng thay đổi đó: Đã tìm thấy chu kỳ đặt hàng, bỏ qua Bus tin nhắn hệ thống D-Bus. Bất kỳ ý tưởng?
Martin

@Martin 1: bạn có / và / usr trên các phân vùng riêng biệt không? 2) bạn có nhiều thứ trong /etc/init.d không? Hoặc trong /etc/rc.d?
MariusMatutiae

1
các công trình vĩ đại này trên Ubuntu 16.04, các tập tin đã ở /usr/lib/systemd/user/dbus.servicedưới [Unit]phần
Anwar

3

shutdown.targetxung đột với tất cả các đơn vị khác theo mặc định, để tự động dừng chúng khi quá trình tắt máy bắt đầu. Điều này cũng hoạt động theo cách khác - nếu một đơn vị khác bắt đầu, nó gây ra shutdown.targetbị dừng lại. Vì vậy, vấn đề là một cái gì đó gây ra một cái gì đó bắt đầu trong khi tắt máy, mà ghi đè quá trình tắt máy.

Điều này đã được sửa trong systemd v198, khiến công việc tắt máy "không thể thay thế".


Tôi không thể nâng cấp :(
Martin

Tôi phải khám phá các conflits và sửa chúng
Martin

1

Có thể trao đổi vẫn hoạt động khi đạt đến "Tắt máy mục tiêu"; Giải pháp của tôi là buộc hủy kích hoạt trao đổi trước khi khởi động lại:

swapoff -a
swapoff /dev/md6

Sau đó, khởi động lại tốt cho tôi mà không có bất kỳ tạm dừng.

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.