Làm cách nào để cài đặt nút nguồn để tắt máy thay vì tạm dừng?


17

Tôi đang sử dụng Gnome 3.18.1 trên Arch Linux 4.2.5-1-ARCH x86_64 trên máy tính xách tay Dell E6530. Kể từ khi tôi cài đặt HĐH này nhiều năm trước, nút nguồn trên máy tính xách tay của tôi luôn khiến hệ điều hành của tôi bị tắt nguồn hoàn toàn.

Tuy nhiên, trong vài tuần qua, hành vi này đã thay đổi, do đó, việc nhấn nút nguồn bây giờ sẽ đưa máy tính xách tay của tôi vào chế độ tiết kiệm năng lượng. Tôi đã không thay đổi cài đặt sức mạnh của tôi. pacman -SyyuTuy nhiên, tôi luôn cập nhật hệ thống của mình bằng cách sử dụng , vì vậy tôi nghi ngờ rằng một bản cập nhật đã thay đổi chức năng này.

Trong cài đặt nguồn không có tùy chọn cho việc này.

Làm cách nào tôi có thể khôi phục hành vi ban đầu, để nhấn nút đó sẽ tắt hệ thống?


2
@Konrad Là bước thứ hai, bạn có thể muốn xác minh rằng thực sự Gnome là thủ phạm. Đó là một giả định. Nếu bạn thử thay đổi vỏ, bạn có thể học được điều gì đó. Bạn cũng có thể liệt kê những bước bạn đã làm để gỡ lỗi vấn đề này.
Sarah Weinberger

1
Những gì đã thay đổi? Bạn đã nâng cấp cái gì? Bạn đang chạy hệ điều hành nào (bao gồm cả phiên bản)? Trên phần cứng nào? Bạn đã chạy gì khi nó hoạt động?
Gilles 'SO- ngừng trở nên xấu xa'

Xin lỗi vì thông tin còn thiếu, tôi đã cập nhật bài viết của mình.
Konrad Höffner

Câu trả lời:


16

Điều đó gây ra bởi các bản gnome-settings-daemoncập nhật mới nhất ...
Không có tùy chọn nào như vậy trong cài đặt nguồn vì nó đã bị xóa bởi các nhà phát triển Gnome ( shutdown/power offhành động được coi là "quá phá hoại" ).
Điểm mấu chốt: bạn không còn có thể tắt nguồn máy tính xách tay của mình bằng cách nhấn nút tắt nguồn.


Tuy nhiên, bạn có thể thêm một tùy chọn dconf/ mới gsettings(tức là shutdown) vào plugin sức mạnh daemon cài đặt nếu bạn sẵn sàng vá và xây dựng lại gnome-settings-daemon:

--- gnome-settings-daemon-3.18.2/data/gsd-enums.h   2015-11-10 09:07:12.000000000 -0500
+++ gnome-settings-daemon-3.18.2/data/gsd-enums.h   2015-11-11 18:43:43.240794875 -0500
@@ -114,7 +114,8 @@
 {
   GSD_POWER_BUTTON_ACTION_NOTHING,
   GSD_POWER_BUTTON_ACTION_SUSPEND,
-  GSD_POWER_BUTTON_ACTION_HIBERNATE
+  GSD_POWER_BUTTON_ACTION_HIBERNATE,
+  GSD_POWER_BUTTON_ACTION_SHUTDOWN
 } GsdPowerButtonActionType;

 typedef enum
--- gnome-settings-daemon-3.18.2/plugins/media-keys/gsd-media-keys-manager.c    2015-11-10 09:07:12.000000000 -0500
+++ gnome-settings-daemon-3.18.2/plugins/media-keys/gsd-media-keys-manager.c    2015-11-11 18:47:52.388602012 -0500
@@ -1849,6 +1849,9 @@

         action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
         switch (action_type) {
+        case GSD_POWER_BUTTON_ACTION_SHUTDOWN:
+                do_config_power_action (manager, GSD_POWER_ACTION_SHUTDOWN, in_lock_screen);
+                break;
         case GSD_POWER_BUTTON_ACTION_SUSPEND:
                 do_config_power_action (manager, GSD_POWER_ACTION_SUSPEND, in_lock_screen);
                 break;

Khi bạn cài đặt các bản vá, mới shutdownlựa chọn sẽ có mặt tại dconf-editordưới org> gnome đặt> Cài đặt-daemon> plugins> điện> power-nút-action :

nhập mô tả hình ảnh ở đây

vì vậy hãy chọn tắt máy qua nút nguồn hoặc, nếu bạn thích CLI, hãy chạy trong thiết bị đầu cuối:

gsettings set org.gnome.settings-daemon.plugins.power power-button-action shutdown

Chắc chắn, để làm việc ở trên, bạn cũng cần có các cài đặt phù hợp trong /etc/systemd/logind.conf:

HandlePowerKey=poweroff
PowerKeyIgnoreInhibited=yes

Hãy nhớ rằng nhấn nút nguồn sẽ tắt hệ thống của bạn mà không có bất kỳ cảnh báo nào.


6
Điều đó rất đáng thất vọng, tôi luôn nghĩ Linux là HĐH nơi người dùng quyết định những gì anh ta muốn ngay cả khi nó nguy hiểm. Nhưng cảm ơn bạn rất nhiều vì đã tìm ra điều này, ít nhất là tôi không lãng phí thời gian của mình vào việc tìm kiếm một bản sửa lỗi chưa có.
Konrad Höffner

Cảm ơn bạn rất nhiều cho các giải pháp chi tiết. Mặc dù có gnome-settings-daemon 3.18.2-1, tuy nhiên cài đặt của tôi có các tệp khác nhau: gsd-enums.hnằm trong thư mục /usr/include/gnome-settings-daemon-3.0/gnome-settings-daemon/gsd-media-keys-manager.choàn toàn không tồn tại.
Konrad Höffner

Dev đã đảo ngược quyết định của mình và khôi phục tùy chọn tương tác trong gnome-settings-daemon 3.20 . (Tôi nghĩ. Tôi chưa cập nhật lên phiên bản đó.)
idbrii

1
@idbrii - tốt, tôi có một số tin xấu cho bạn: Tôi đang ở 3.22 và không có tùy chọn tắt máy.
don_crissti

6

Như @don_crissti đã giải thích, tình huống này thật ngớ ngẩn vì thực sự không thể tắt máy mà không cần xác nhận bằng các cài đặt thông thường.

Tuy nhiên, có một cách giải quyết: nếu loại khung máy của máy được đặt thành "vm" (máy ảo), hành vi tắt máy ngay lập tức cũ sẽ đảm nhận mọi cài đặt. Chỉ cần nhập bằng root:

hostnamectl set-chassis vm

và khởi động lại một lần. Tôi không biết bất kỳ tác dụng phụ nào của cài đặt này.


1
Tôi đã theo này vấn đề quyền lực nút trong một thời gian dài liên kết ứng dụng của chúng tôi có một keyboardless / cấu hình mouseless "chỉ xem" chế độ mà cần phải được tắt theo nhân viên phi kỹ thuật mỗi đêm. Khi mất khả năng tắt bằng nút nguồn, họ chỉ cần rút phích cắm. Giải pháp này hoạt động rất tốt cho chúng tôi và cho đến nay là cách tiếp cận dễ dàng nhất đối với chúng tôi.
MikeV

4

Trong Ubuntu 18.04 hoặc bất kỳ biến thể Linux tương tự nào có acpi (nếu không bạn có thể cài đặt), hãy tạo một tệp được gọi /etc/acpi/events/powerbằng

sudo nano /etc/acpi/events/power

và đặt

event=button/power
action=/sbin/poweroff

trong tập tin, đóng nó lại

sudo service acpid restart

Đây có lẽ là giải pháp đơn giản nhất chắc chắn hoạt động.


1
Giải pháp này hoạt động rất tốt trong tình huống của tôi: máy chủ Ubuntu 18.04 với máy tính để bàn gnome được cài đặt và ở chế độ không đầu (không cần thiết khi màn hình được kết nối). Cảm ơn !
M-Jack

3

Thay vào đó, bạn có thể mở cửa sổ cài đặt bàn phím và gán phím tắt tùy chỉnh cho lệnh gnome-session-quit --power-off, thao tác này sẽ hiển thị menu tắt máy. Tôi có nó được thiết lập để kích hoạt bởi Super+ q.


2

Bước đầu tiên, bạn nên đảm bảo rằng Cài đặt | Nguồn (giả sử Gnome v3) "Tạm dừng và tắt nguồn" / "Tạm dừng tự động" được đặt thành tắt. Về cơ bản, vô hiệu hóa các tính năng cài đặt nguồn của Gnome và chỉ để hệ thống tiếp quản.


0

Phím tắt tùy chỉnh hoạt động, tôi cài đặt nó gnome-session-quit --power-off --forcebằng cách chỉ nhấn nút nguồn, đó là tất cả những gì tôi muốn.


1
Có thật không? Đối với tôi điều này không hoạt động. Nút vẫn hoạt động theo power-button-actiontùy chọn. Tôi có thể đặt Ctrl+PowerOfflàm phím tắt tuy nhiên.
Alexey

Vấn đề tương tự đối với tôi. @Alexey
Konrad Höffner

0

Tôi tìm thấy một tùy chọn khác để thực hiện điều này trên Debian Stretch. Tôi đã cài đặt gói acpi-support-basevà chỉnh sửa tệp /etc/acpi/powerbtn-acpi-support.shthêm các dòng sau theo nhận xét tiêu đề và trước bất kỳ mã nào.

## Bypass logic to force shutdown on power button
/sbin/shutdown -h -P now "Power button pressed"
exit 0

Đây là một chút của một công cụ cùn nhưng làm việc cho tôi trên máy tính để bàn và nên hoạt động trên máy tính xách tay. Nó cũng bỏ qua cài đặt Gnome3 nhưng dễ dàng hơn so với vá Gnome và biên dịch lại.

Theo trang Arch Wiki về acpidđiều này có lẽ có thể được thực hiện bằng cách sửa đổi /etc/acpi/handler.shtrên Arch.


0

Tôi đã giải quyết vấn đề này trên một máy chủ của mình bằng cách theo dõi đầu ra nhật ký của systemd-logindviệc tinh chỉnh các giải pháp được trình bày trong các câu trả lời khác.

Cách giải quyết này yêu cầu hai tệp. Kịch bản kích hoạt sự kiện tắt máy thực tế

$ cat /usr/local/bin/shutdown_button_monitor.sh
#!/bin/sh

# ansible managed

# systemd-logind prints a line of the form 
# Dez 21 11:12:10 box03.yeepa.de systemd-logind[748]: Power key pressed.
# on key press, but doesn't handle the button because gnome3 blocks systemd from doing so.
# See `systemd-inhibit` for that.

# first sleep a minute so we have chance to disable this scritp if it runs amok
sleep 1m

# so we workaround gnome a bit here.
journalctl -u systemd-logind --follow --lines=0 | \
while read line ; do
    if echo "$line" | grep --quiet 'Power key pressed'
    then
        systemctl poweroff
    fi
done

và tệp dịch vụ khởi động / khởi động lại nó

$ cat /etc/systemd/system/shutdown_button_monitor.service
# ansible managed

[Unit]
Description=Power off the machine if the power button is pressed
# Workaround for gnomes block of the shutdown button
# /unix/242129/gnome-3-how-to-set-power-button-to-shutdown-instead-of-suspend#242452
# Monitor these blocks yourself with `systemd-inhibit`

[Service]
User=root
ExecStart=/usr/local/bin/shutdown_button_monitor.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
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.