Thông tin ghi nhận :
https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key được dựa trên tác phẩm gốc của
Tín
Viết bởi Mydraal
Cập nhật bởi Adam Sulmicki
Cập nhật bởi Jeremy M. Dolan 2001/01/28 10:15:59
thêm đến bởi Crutcher Dunnavant
https://askubfox.com/a/11194/102029 mneiss cung cấp liên kết cho LaunchPad.
Nội dung
Sysrq là gì?
Tại sao RESIUB (O) không hoạt động?
1 Làm cách nào để có được sysrq để hành xử theo cách tôi muốn?
1.1 Phím SysRq ma thuật là gì?
1.2 Làm cách nào để bật khóa SysRq ma thuật?
1.3 Làm cách nào để sử dụng phím SysRq ma thuật?
1.4 Các phím 'lệnh' là gì?
1.5 Được rồi, vậy tôi có thể sử dụng chúng để làm gì?
1.6 Khắc phục sự cố
1.6.1 Treo trước khi initscripts chạy
1.6.2 Đôi khi SysRq dường như bị 'kẹt' sau khi sử dụng, tôi có thể làm gì?
1.6.3 Tôi đã nhấn SysRq, nhưng dường như không có gì xảy ra, có chuyện gì vậy?
1.6.4 Tôi muốn thêm các sự kiện quan trọng của SysRQ vào một mô-đun, làm thế nào để nó hoạt động?
1.6.5 Kết luận
1.6.6 PHỤ LỤC
Lưu ý.
Bạn có thể thấy việc sử dụng Ctrl+ Fđể sử dụng Mục lục hữu ích.
SysRq là gì?
Một nổi tiếng và sử dụng phương pháp phổ biến của lấy lại sử dụng máy sau khi nó đóng băng hoặc khóa với limitising nguy cơ tham nhũng đĩa dẫn đến thiệt hại hệ thống tập tin hoặc mất dữ liệu là sử dụng
Alt+ SysRq+ rvà sau đó svà sau đó evà sau đó ivà sau đó uvà sau đó bvà / hoặc nếu cần ( o)
Điều này đã không hoạt động như mong đợi đối với nhiều người (ví dụ như bản thân tôi và James) thông qua tất cả các hương vị từ> = 8.04LTS đến bản phát hành 13.04 hiện tại.
Tại sao RESIUB (O) không hoạt động?
Xem xét mô tả lỗi này được tìm thấy tại LaunchPad Bug 194676 :
Mô tả sự cố:
Theo mặc định, SysRq được bật theo mặc định trên các hệ thống máy tính để bàn Ubuntu, điều này là vô giá khi hệ thống bị khóa và bạn muốn dừng nó nhẹ nhàng nhất có thể hoặc gỡ lỗi sự cố. Tuy nhiên, nhiều người ngạc nhiên rằng bạn cũng có thể yêu cầu nó chuyển nội dung của bộ nhớ hiện tại vào bàn điều khiển (hoặc dmesg) mặc dù chỉ từ bàn phím.
openSUSE đặt bitmask mặc định là 176 trên SysRq của nó theo mặc định hạn chế bạn đồng bộ hóa, khởi động lại và "chỉ đọc lại". Điều này ngăn mọi người sử dụng sysrq theo mặc định để kiểm tra bộ nhớ nghe có vẻ hợp lý.
Các nhà phát triển Ubuntu thấy cần phải làm gì đó về vấn đề này và giải pháp tốt nhất để xem xét các biến chứng có thể có của quan sát được đề cập là áp dụng bitmask 176 sysrq theo mặc định tạo ra nhu cầu nhập liệu của người dùng để đặt sysrq theo ý muốn. Bitmask 176 chỉ cho phép S, U, Bđó là đồng bộ, remount gắn phân vùng và khởi động lại.
Đọc báo cáo và nhận xét lỗi đầy đủ sẽ nêu bật một số tùy chọn có thể áp dụng cho hệ thống của bạn.
Ảnh hưởng tích lũy của phần cứng, hạt nhân, bàn phím và bitmas khác nhau có nghĩa là sysrq đang hành xử khác nhau đối với những người khác nhau.
Một phương pháp để nhận đầu ra txt liên quan đến cách hệ thống của bạn đang sử dụng sysrq là áp dụng các lệnh sysrq từ tty (khi hệ thống không bị khóa / đóng băng). Làm điều này có thể cho thấy sysrq chưa bị vô hiệu hóa hoàn toàn nhưng đang sử dụng bitmask 176.
Tìm kiếm / Proc / sys / kernel / sysrq trên 13.04 Desktop amd64 liveDVD và 13.04 Desktop amd64 cài đặt xác nhận mặc định hiện đang để sysrq tại bitmask 176.
Nếu sysrq không làm việc cho bạn; có thể đáng để hỏi, "Nếu tôi không thay đổi cài đặt 10 ma thuật-sysrq thì ai đã làm.?"
1 Làm thế nào để tôi có được sysrq để hành xử theo cách tôi muốn?
Phần tiếp theo là bản sao và dán của https://fedoraproject.org/wiki/QA/Sysrq .
1.1 Phím SysRq ma thuật là gì?
Đó là một tổ hợp phím 'ma thuật' mà bạn có thể đạt được mà hạt nhân sẽ phản hồi bất kể nó đang làm gì, trừ khi nó bị khóa hoàn toàn.
1.2 Làm cách nào để bật khóa SysRq ma thuật?
sysrq được tích hợp vào kernel Ubuntu nhưng bị vô hiệu hóa khi khởi động, theo mặc định, sử dụng 10-magic-sysrq.conf.
Để kích hoạt lại nó khi khởi động, bạn phải chỉnh sửa tệp /etc/sysctl.d/10-magic-sysrq.conf. tức là bỏ ghi chú dòng này sẽ cho phép tất cả các chức năng của sysrq:
# 1 - enable all functions of sysrq
Khi chạy kernel với SysRq được biên dịch, / Proc / sys / kernel / sysrq sẽ điều khiển các chức năng được phép được gọi thông qua khóa SysRq. Dưới đây là danh sách các giá trị có thể có trong / Proc / sys / kernel / sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function description):
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
176 - allow only sync, reboot and "remount read-only"
256 - allow nicing of all RT tasks
Bạn có thể đặt giá trị trong tệp bằng lệnh sau.
echo "number" >/proc/sys/kernel/sysrq
Vì vậy, để kích hoạt đầy đủ nó sẽ được.
echo "1" > /proc/sys/kernel/sysrq
Hoặc cũng có thể kích hoạt nó bằng cách làm.
sysctl -w kernel.sysrq=1
Ghi chú.
Giá trị của / Proc / sys / kernel / sysrq chỉ ảnh hưởng đến việc gọi thông qua bàn phím. Yêu cầu bất kỳ hoạt động nào thông qua / Proc / sysrq-trigger luôn được cho phép (bởi người dùng có quyền quản trị - xem bên dưới).
1.3 Làm cách nào để sử dụng phím SysRq ma thuật?
Máy tính để bàn Ubuntu
Bạn nhấn tổ hợp phím Alt+ SysRq+ command key.
NB- Xem ghi chú trong phần này và trong phần Khắc phục sự cố để biết các cài đặt mặc định có thể khác cho các hệ thống và bàn phím khác.
Có thể đặt bất kỳ ký tự nào bạn chọn: Tất cả Kiến trúc
Viết một ký tự vào / Proc / sysrq-trigger:
echo t > /proc/sysrq-trigger
sẽ thiết lập Thành vi như SysRq
Lưu ý.
Một số bàn phím có thể không có khóa được dán nhãn SysRq. Các SysRqchìa khóa cũng được biết đến như là Print Screenchìa khóa. Ngoài ra, một số bàn phím không thể xử lý nhiều phím được nhấn cùng lúc, vì vậy bạn có thể gặp may mắn hơn với Alt+ SysRq- SysRqsau đó nhấn command keyrồi thả ra mọi thứ. Xem toàn bộ văn bản về QA mà hướng dẫn này dựa trên https://fedoraproject.org/wiki/QA/Sysrq#How_do_I_use_the_magic_SysRq_key.3F để biết thêm thông tin về điều này.
1.4 Các phím 'lệnh' là gì?
'b' - Will immediately reboot the system without syncing or unmounting your disks.
'c' - Will perform a kexec reboot in order to take a crashdump.
'd' - Shows all locks that are held.
'e' - Send a SIGTERM to all processes, except for init.
'f' - Will call oom_kill to kill a memory hog process.
'g' - Used by kgdb on ppc and sh platforms.
'h' - Will display help (any key that is not listed here will bring forth help )
'i' - Send a SIGKILL to all processes, except for init.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual terminal.
Ghi chú.
Xem ý kiến quan trọng dưới đây trong phần SAK.
'l' - Shows a stack backtrace for all active CPUs.
'm' - Will dump current memory info to your console.
'n' - Used to make RT tasks nice-able
'o' - Will shut your system off (if configured and supported).
'p' - Will dump the current registers and flags to your console.
'q' - Will dump a list of all running timers.
'r' - Turns off keyboard raw mode and sets it to XLATE.
's' - Will attempt to sync all mounted filesystems.
't' - Will dump a list of current tasks and their information to your console.
'u' - Will attempt to remount all mounted filesystems read-only.
'v' - Dumps Voyager SMP processor info to your console.
'w' - Dumps tasks that are in uninterruptable (blocked) state.
'x' - Used by xmon interface on ppc/powerpc platforms.
'0'-'9' - Sets the console log level, controlling which kernel messages will be printed to your console. ('0', for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.)
1.5 Được rồi, vậy tôi có thể sử dụng chúng để làm gì?
Un raw rất tiện dụng khi máy chủ X của bạn hoặc chương trình svgalib gặp sự cố.
Sa k(Khóa truy cập an toàn) rất hữu ích khi bạn muốn chắc chắn rằng không có chương trình trojan nào đang chạy trên bàn điều khiển có thể lấy mật khẩu của bạn khi bạn cố gắng đăng nhập. Nó sẽ giết tất cả các chương trình trên bảng điều khiển đã cho, do đó cho phép bạn đảm bảo rằng dấu nhắc đăng nhập mà bạn thấy thực sự là chương trình từ init chứ không phải chương trình trojan nào đó. Những người khác thấy nó hữu ích như (Khóa chú ý hệ thống) rất hữu ích khi bạn muốn thoát khỏi một chương trình không cho phép bạn chuyển đổi bảng điều khiển. (Ví dụ: X hoặc chương trình svgalib.)
Lưu ý.
Ở dạng thật, nó không phải là SAK thật như hệ thống tuân thủ c2 và không nên nhầm lẫn như vậy.
Re boot là tốt khi bạn không thể tắt.
Ghi chú.
Đó là chung được coi là một thực hành tốt để ugắn kết đầu tiên
Crashdump có thể được sử dụng để kích hoạt thủ công một phát cban khi hệ thống được treo.
Ghi chú.
Hạt nhân cần phải được xây dựng với CONFIG_KEXEC được kích hoạt!
Đồng bộ hóa là tuyệt vời khi hệ thống của bạn bị khóa, nó cho phép bạn sync các ổ đĩa của bạn và chắc chắn sẽ làm giảm nguy cơ mất dữ liệu và fscking.
Cảnh báo
Đồng bộ hóa chưa diễn ra cho đến khi bạn thấy "OK" và "Xong" xuất hiện trên màn hình. (Nếu kernel thực sự bị xung đột, bạn có thể không nhận được thông báo OK hoặc Done.
Umount về cơ bản là hữu ích theo cách tương tự như Sync.
Các loglevels 0- 9rất hữu ích khi bảng điều khiển của bạn đang tràn ngập các thông điệp kernel mà bạn không muốn xem. Việc chọn 0sẽ ngăn tất cả trừ các thông báo kernel khẩn cấp nhất đến được bảng điều khiển của bạn.
Ghi chú.
Chúng vẫn sẽ được ghi nếu syslogd / klogd còn sống
T erm và k isẽ hữu ích nếu bạn có một số quy trình chạy trốn mà bạn không thể giết bất kỳ cách nào khác, đặc biệt là nếu nó sinh ra các quy trình khác.
Ghi chú.
Khi gặp phải sự hoảng loạn hạt nhân xấu, hãy làm Alt+ Sysrq+ esau đó Alt+ Sysrq+ urồi Alt+ Sysrq+ ivà cuối cùng là Alt+ Sysrq+b
1.6 Khắc phục sự cố
1.6.1 Treo trước khi initscripts chạy
Nếu máy bị treo trước khi initscripts chạy, hãy khởi động với sysrq_always_enabled=1
1.6.2 Đôi khi SysRq dường như bị 'kẹt' sau khi sử dụng, tôi có thể làm gì?
Khai thác shift, altvà controltrên cả hai mặt của bàn phím và nhấn lại một chuỗi sysrq không hợp lệ sẽ khắc phục vấn đề. (nghĩa là một cái gì đó như alt+ sysrq+ z).
Chuyển sang bảng điều khiển ảo khác ( Ctrl+ Alt+ Fn1- Fn6) và sau đó quay lại Ctrl+ Alt+ Fn7cũng sẽ giúp ích.
1.6.3 Tôi đánh SysRq, nhưng dường như không có gì xảy ra, có chuyện gì vậy?
Có một số bàn phím gửi các scancodes khác nhau SysRqso với 0x54 được xác định trước. Vì vậy, nếu SysRqkhông hoạt động ngoài hộp cho một bàn phím nhất định, hãy chạy showkey -s
để tìm ra trình tự scancode thích hợp. Sau đó sử dụng setkeycodes <sequence> 84
để xác định chuỗi này theo SysRqmã thông thường (84 là số thập phân cho 0x54). Có lẽ tốt nhất để đặt lệnh này trong một kịch bản khởi động.
Cảnh báo
Bạn thoát showkey
bằng cách không gõ bất cứ điều gì trong mười giây.
1.6.4 Tôi muốn thêm SysRqcác sự kiện chính vào mô-đun, làm thế nào để nó hoạt động?
Để đăng ký một chức năng cơ bản với bảng, trước tiên bạn phải bao gồm tiêu đề include/linux/sysrq.h
, điều này sẽ xác định mọi thứ khác bạn cần. Tiếp theo, bạn phải tạo một cấu trúc sysrq_key_op và điền nó với ...
Chức năng xử lý chính bạn sẽ sử dụng.
Một chuỗi help_msg, sẽ in khi SysRQ in giúp
Một chuỗi action_msg, sẽ in ngay trước khi trình xử lý của bạn được gọi. Trình xử lý của bạn phải phù hợp với nguyên mẫu trong 'sysrq.h'
Sau khi sysrq_key_op được tạo, bạn có thể gọi hàm kernel register_sysrq_key (int key, struct sysrq_key_op * op_p); điều này sẽ đăng ký thao tác được trỏ bởi 'op_p' tại phím 'key' của bảng, nếu khe đó trong bảng trống. Tại thời điểm dỡ bỏ mô-đun, bạn phải gọi hàm unregister_sysrq_key (int key, struct sysrq_key_op * op_p), sẽ xóa khóa op được trỏ bởi 'op_p' từ khóa 'key', nếu và chỉ khi nó hiện được đăng ký trong khóa đó. chỗ. Đây là trong trường hợp vị trí đã bị ghi đè kể từ khi bạn đăng ký.
SysRqHệ thống Magic hoạt động bằng cách đăng ký các thao tác chính với bảng tra cứu op, được xác định trong 'trình điều khiển / char / sysrq.c'. Bảng khóa này có một số hoạt động được đăng ký vào thời gian biên dịch, nhưng có thể thay đổi và 2 hàm được xuất cho giao diện với nó là register_sysrq_key và unregister_sysrq_key. Tất nhiên, không bao giờ để lại một con trỏ không hợp lệ trong bảng. I E; khi mô-đun của bạn có tên register_sysrq_key () thoát, nó phải gọi unregister_sysrq_key () để dọn sạch mục nhập bảng khóa sysrq mà nó đã sử dụng.
Ghi chú.
Con trỏ Null trong bảng luôn an toàn.
Nếu vì một lý do nào đó mà bạn cảm thấy cần phải gọi hàm handle_sysrq từ bên trong một hàm được gọi bởi handle_sysrq, bạn phải lưu ý rằng bạn đang ở trong một khóa (bạn cũng đang ở trong một trình xử lý ngắt, có nghĩa là không ngủ!), Vì vậy thay vào đó, bạn phải gọi __handle_sysrq_nolock.
1.6.5 Kết luận
Sử dụng Alt+ SysRq+ Svà sau Uđó Bđể đồng bộ hóa, cố gắng kết nối lại tất cả các hệ thống tệp được gắn và sau đó khởi động lại nếu cần. Không thay đổi một điều cho các tập tin hệ thống.
Nếu Alt+ SysRq+ Bkhông khởi động lại hệ thống, có thể cần phải chỉnh sửa /etc/sysctl.d/10-magic-sysrq.conf để cho phép thử áp dụng Alt+ SysRq+ B(hoặc / và Osau khi chỉnh sửa / Proc / sys / kernel / sysrq bitmask để cho phép khởi động lại và tắt hệ thống bằng cách sử dụng sysrq. Bạn có thể thực hiện việc này bằng bất kỳ phương pháp nào được mô tả ở trên.
1.6.6 PHỤ LỤC:
Xem thêm - http://ubuntuforums.org/showthread.php?t=617349 và https://www.kernel.org/doc/Documentation/sysrq.txt
Đối với những người gặp rắc rối với bàn phím Apple MacBook liên quan đến sysrq, hãy xem: https://help.ubfox.com/community/ApplePal và https://bugs.launchpad.net/mactel-support/+orms/262408
Thông tin thú vị tương đối- Sau khi xem tập 17 08 2013 của chương trình BBC "Click" và bài báo "cyberwarfare" thực sự thu hút sự chú ý của tôi. Chương trình cũng có trang web riêng của họ Bấm nếu bạn không thể xem chương trình. FAWC