Làm thế nào để cập nhật trình điều khiển linux hoạt động?


7

Theo tôi biết không có bản cập nhật trên máy linux yêu cầu khởi động lại. Tuy nhiên, Windows cần phải khởi động lại nhiều lần để cập nhật hoàn tất, điều này có thể hiểu được vì hiện tại phần cứng có thể đang được sử dụng và khởi động lại đảm bảo rằng không có phần mềm nào sử dụng trình điều khiển.

Nhưng làm thế nào một hệ điều hành (hoặc linux làm ví dụ) có thể xử lý một tình huống như vậy mà bạn muốn cập nhật trình điều khiển nhưng nó hiện đang được sử dụng?

Câu trả lời:


9

Các bản cập nhật trên Linux yêu cầu khởi động lại nếu chúng ảnh hưởng đến kernel. Trình điều khiển là một phần của kernel. Đôi khi có thể nâng cấp trình điều khiển trên Linux mà không cần khởi động lại, nhưng điều đó không xảy ra thường xuyên: bộ điều khiển ngoại vi của trình điều khiển không thể được sử dụng trong quá trình cập nhật và phiên bản trình điều khiển mới phải tương thích với kernel đang chạy.

Nâng cấp trình điều khiển lên hệ thống đang chạy trong đó thiết bị ngoại vi được điều khiển bởi trình điều khiển đang sử dụng yêu cầu trình điều khiển cũ rời khỏi thiết bị ngoại vi ở trạng thái mà trình điều khiển mới có thể bắt đầu. Trình điều khiển cũ và mới cũng phải quản lý việc chuyển giao các kết nối từ khách hàng. Điều này có thể làm được nhưng khó khăn; Làm thế nào khó khăn phụ thuộc vào những gì người lái xe đang lái xe. Ví dụ, một bản cập nhật hệ thống tệp mà không ngắt kết nối hệ thống tệp yêu cầu chuyển giao một số cấu trúc dữ liệu rất phức tạp nhưng dễ đối phó với phần cứng (chỉ cần xóa bộ đệm trước khi cập nhật và bắt đầu lại với bộ đệm trống). Ngược lại, trình điều khiển đầu vào chỉ phải truyền danh sách các mô tả mở hoặc tương tự ở phía máy khách,

Cập nhật trình điều khiển trên hệ thống trực tiếp là một cách phổ biến trong quá trình phát triển trên các hệ điều hành nơi trình điều khiển có thể được tải và tải động, nhưng thường thì không sử dụng trong khi thiết bị ngoại vi được sử dụng. Cập nhật trình điều khiển trong sản xuất không được thực hiện phổ biến trên các HĐH như Linux và Windows; Tôi cho rằng nó được thực hiện trên các hệ thống có tính sẵn sàng cao mà tôi không quen thuộc.

Một số trình điều khiển không có trong kernel (ví dụ hệ thống tập tin FUSE ). Điều này giúp dễ dàng cập nhật chúng mà không cần cập nhật phần còn lại của hệ thống, nhưng vẫn yêu cầu trình điều khiển không được sử dụng (ví dụ: các phiên bản của hệ thống tập tin FUSE phải được ngắt kết nối và gắn lại để sử dụng phiên bản trình điều khiển mới).

Linux có các cơ chế để nâng cấp kernel mà không cần khởi động lại: Ksplice , Kpatch , KGraft . Điều này là khó khăn về mặt kỹ thuật vì phiên bản cập nhật phải tương thích với phiên bản cũ ở mức độ lớn; đặc biệt, cấu trúc dữ liệu của nó phải có cùng bố cục nhị phân. Một vài bản phân phối cung cấp dịch vụ này để cập nhật bảo mật. Các tính năng này không có sẵn (chưa?) Trong nhân Linux chính. Trên nhân Linux chính, chỉ có thể cập nhật trình điều khiển nếu được tải dưới dạng mô-đun và nếu mô-đun có thể được tải và mô-đun mới tương thích với hạt nhân đang chạy.


7

Tôi muốn thêm vào câu trả lời của Gilles khi nói rằng không giống như trong Windows nơi trình điều khiển được tải và tải khi cài đặt trong hầu hết các trường hợp, trong cài đặt trình điều khiển Linux chủ yếu bao gồm thêm nhị phân và cấu hình vào hệ thống tệp và đặt chúng làm phiên bản mới nhất.

Điều này có nghĩa là không giống như trong Windows yêu cầu bạn khởi động lại vì hệ thống của bạn ở trạng thái không ổn định / không xác định, trong Linux, hầu hết bạn chỉ ở trạng thái như trước khi cài đặt trình điều khiển.

Ngoài ra, việc thêm trình điều khiển "mới" trong Linux bao gồm tải các mô-đun hạt nhân, vì vậy khi thêm trình điều khiển mới, không cần phải khởi động lại thường xuyên. Trong Windows, hầu hết các thiết bị đều được xử lý bởi trình điều khiển chung, do đó trình điều khiển cũng không được tải khi thêm thiết bị mới.

Cuối cùng, kernel không có cờ "cần khởi động lại", do đó, đề xuất khởi động lại phụ thuộc vào nhà phát triển tiện ích trình trợ giúp trình điều khiển, điều đó có nghĩa là có thể có trường hợp bạn nên khởi động lại, bạn chỉ không nhận được dấu hiệu mà bạn nên

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.