Có thể khởi động lại hệ điều hành Linux mà không cần khởi động lại phần cứng không?


89

Có cách nào để khởi động lại hệ thống Linux (cụ thể là Debian) mà không cần khởi động lại phần cứng không?

Tôi có một bộ điều khiển RAID cần một chút để tự chạy trước khi HĐH khởi động và tôi muốn nó nếu có cách nhanh chóng khởi động lại HĐH Linux mà không phải trải qua toàn bộ quá trình khởi động lại bộ điều khiển RAID, Vân vân.


6
Tất cả các hệ thống dựa trên UEFI đều có thể chuyển đổi hệ thống khởi động lại hệ điều hành. Bạn cũng có kexec()cái giống như vậy exec(), nhưng đối với nhân Unix.
dùng2284570

Câu trả lời:


98

Tôi sử dụng kexec-restart trên gần như tất cả các hệ thống sản xuất của mình.

Nó hoạt động cực kỳ tốt, cho phép tôi bỏ qua thời gian POST dài trên các máy chủ HP ProLiant và giảm chu kỳ khởi động từ 5 phút xuống ~ 45 giây.

Xem: https://github.com/error10/kexec-reboot

Nhắc nhở duy nhất là nó dường như không hoạt động trên các hệ thống RHEL / CentOS 6.x khởi động UEFI. Nhưng hầu hết các kết hợp hệ điều hành / phần cứng lành mạnh.


62
Tôi đã viết điều đó! Nhưng nó vẫn hoạt động khá tốt ...
Michael Hampton

1
Lôi cuốn, hấp dẫn, quyến rũ. Vậy quá trình thực tế trông như thế nào? Theo một bài viết của Hariprasad Nellitheertha (được liên kết đến từ trang wikipedia của kexec), "Không giống như quá trình khởi động lại thông thường, kexec không thực hiện tắt hệ thống trước khi khởi động lại. trước khi thử khởi động lại kexec. " Tôi nhận thấy một số điều đáng nghi ngờ, ví dụ, Wim Coekaerts nói rằng "đồng bộ hóa, umount -a; kexec -e" sẽ thực hiện khởi động lại rất nhanh. Nhưng bạn không thể vượt qua một hệ thống tập tin bận rộn. Lướt qua web, có vẻ như nhiều người bỏ qua phần 'giết tất cả các ứng dụng'.
Mike S

2
@MikeS Đây không phải kexec. Đó là kexec-reboottiện ích. Mô tả Github phác thảo sự khác biệt và những gì tiện ích thêm vào quy trình.
ewwhite

4
@MikeS Sau khi dàn dựng kexec, bạn chỉ cần làm một shutdown -r. Kịch bản hệ thống của bạn sẽ nhận thấy rằng kexec đã được dàn dựng và thực hiện đúng. Nó trông như thế nào? Ba hoặc bốn hoặc mười lăm phút ngắn hơn. Tôi có một video chất lượng rất khủng khiếp tôi đã gỡ bỏ bảng điều khiển iDRAC, nhưng bạn thực sự không muốn chịu đựng điều đó ... kexec-rebootKịch bản có nghĩa là tự động hóa quá trình đưa các đối số dòng lệnh đúng vào kexec, có thể rất khó .
Michael Hampton

1
@MichaelHampton - tuyệt vời. Tôi thấy rằng trên CentOS 6.5 gần cuối /etc/rc3d/rc6.d/S01reboot có : [ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null. Vì vậy, nếu một kernel được tải bởi kexec -l, hệ thống sẽ khởi động lại vào nó mà không cần hoàn thành / sbin / restart ... kexec được đưa vào! Tôi không biết điều đó, cảm ơn. Tôi cho rằng các bản phân phối hiện đại hơn cũng được bảo hiểm. BTW, nếu kexec trước đây không chạy với -l, tập lệnh khởi động lại sẽ nói "Không có gì đã được tải!" đó là lý do tại sao đầu ra được gửi đến / dev / null và tại sao tôi không bao giờ biết về cơ sở này.
Mike S

17

Vâng, nó là có thể. kexec sẽ cho phép nhân Linux được khởi động trực tiếp từ Linux mà không cần thông qua quy trình khởi động BIOS.


Ngoài ra, UEFI cho phép chuyển đổi hệ điều hành mà không cần khởi động lại.
dùng2284570

1
@ user2284570 Theo như tôi biết, UEFI không cung cấp cơ chế như vậy.
Jonathon Reinhart

15

Đúng. Bạn phải sử dụng các công cụ kexec. Để làm cho cuộc sống dễ dàng hơn, tôi sử dụng kexec-restart .

$sudo apt-get install kexec-tools
$wget https://raw.githubusercontent.com/vadmium/kexec-reboot/master/kexec-reboot
$chmod +x kexec-reboot
$sudo mv kexec-reboot /usr/local/sbin/kexec-reboot
$sudo /usr/local/sbin/kexec-reboot

13
Vì vậy, không có nhầm lẫn, tôi đã không viết này.
Michael Hampton

Đây chỉ là Ubuntu / Debian, phải không?
ewwhite

1
@ewwhite Nó có thể hoạt động trên RHEL / CentOS, nhưng khi đọc mã tôi đã tìm thấy một số điểm có vấn đề trong đó các trường hợp cạnh có thể khiến nó bị lỗi. Và nguồn tin dường như thừa nhận điều này với một bình luận:# The error checking is very basic.
Michael Hampton
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.