Gói phần mềm: Họ thực sự làm gì?


8

Trên CentOS của tôi, một thông yum updatebáo sau:

(6/38): iwl1000-firmware-39.31.5.1-62.el7_39.31.5.1-62.2.el7_5.noarch.drpm                                                                                                                                            
(7/38): iwl105-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm                                                                             
(8/38): iwl135-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm                                                                             
(9/38): iwl2000-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm                                                                            
(10/38): iwl2030-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm                                                                           
(11/38): iwl3160-firmware-22.0.7.0-62.el7_22.0.7.0-62.2.el7_5.noarch.drpm                                                                                                                                             

Vân vân.

Chúng được gọi là "gói phần mềm". Ví dụ: hãy tìm một vài trong số chúng được cài đặt:

rpm --query --all | grep firmware

và sau đó truy vấn thông tin của nó:

rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch

và chúng tôi nhận được:

Summary     : Firmware for Intel(R) Centrino Wireless-N 105 Series Adapters
Description :
This package contains the firmware required by the iwlagn driver
for Linux to support the iwl105 hardware.  Usage of the firmware
is subject to the terms and conditions contained inside the provided
LICENSE file. Please read it carefully.

Được rồi

Tôi thậm chí không có loại phần cứng đó, vì đây là VM.

Vì vậy, câu hỏi:

Các gói phần mềm thực sự làm gì?

Có phải chúng là các cài đặt "one-shot" chạy chương trình thực thi mờ (ngay lập tức? Trong lần khởi động tiếp theo?) Để kiểm tra xem phần cứng có tồn tại hay không, bơm mã nhị phân vào flash của phần cứng nếu phần cứng có ở đó (có thể trong khi hỏi người dùng; trên Windows tại ít nhất, flash phần cứng luôn luôn đầy các cửa sổ DOS bật lên, EULAs phải được nhấp qua và các thanh tiến trình phải chịu đựng), và sau đó đánh dấu gói là "đã cài đặt".

Họ có sửa đổi initramfs để một blob nhị phân được tải bởi mô-đun hạt nhân hoặc điều gì đó xảy ra ở lần khởi động tiếp theo không?



Trong firmware firmware thế nào là cứng trong thuật ngữ Linux? , Stephen Kitt viết: Vì vậy, các tệp phần sụn không được sử dụng bởi kernel, chúng được kernel nạp vào các phần cứng khác. Đây cũng là điều khiến cho phần mềm không có mã nguồn trong các hệ thống FLOSS được chấp nhận một cách mơ hồ: lập luận rằng nó không chạy trên CPU chính mà trên một thiết bị khác. Cười thầm, cười thầm.
David Tonhofer

Câu trả lời:


4

Phần sụn có thể tải thường không phải là cài đặt "one-shot" được ghi vào flash trên thiết bị. Phần sụn được tải vào bộ lưu trữ dễ bay hơi trên thiết bị và cần được thực hiện mỗi khi máy tính chủ được bật. Thiết bị không hoạt động trước khi phần sụn được tải. Phần sụn có thể được ghi vào RAM trên thiết bị, trong trường hợp nó chứa mã và dữ liệu cho bộ xử lý trên thiết bị, nhưng nó cũng có thể là một luồng bit xác định logic của mảng logic lập trình trường (FPGA) hoặc một số kết hợp của cả hai.

Mặt khác, phần sụn trong bộ nhớ flash thường được lập trình sẵn trên các thiết bị và chỉ cần viết lại nếu có bản cập nhật cho phần sụn từ nhà sản xuất. Điều này thường được thực hiện thông qua các cơ chế khác, giống như một tệp thực thi riêng được điều hành bởi người dùng.

Có một vài lý do tại sao các nhà sản xuất muốn sử dụng RAM thay vì bộ nhớ flash. Trước hết, nó có thể thiết kế một phiên bản phần cứng duy nhất, nhưng đồng thời cung cấp một số phiên bản của sản phẩm (ví dụ cho các khu vực thị trường khác nhau). Nếu sản phẩm được dự kiến ​​sẽ được nâng cấp trường thường xuyên, có thể dễ dàng xử lý các nâng cấp chương trình cơ sở theo cách này hơn là gặp phải sự cố khi tạo chương trình nâng cấp bộ nhớ flash trên thiết bị. Chương trình này nên có giao diện người dùng đẹp và được thiết kế sao cho thân thiện với người dùng nhất có thể, vì nó thường được điều hành bởi người dùng cuối của sản phẩm. Một số thiết bị có bộ lưu trữ flash thường chạy mã từ RAM và chúng chỉ sao chép nội dung của đèn flash vào RAM khi thiết bị được khởi động,


Nếu phần sụn không được tải vào RAM từ flash, phần sụn được nạp vào RAM sau khi thiết bị bật như thế nào?
Codebling

Nếu thiết bị không thể tự động tải phần sụn, máy chủ có thể lưu nó vào RAM của thiết bị, sử dụng xe buýt mà thiết bị được kết nối với máy chủ. Xe buýt điển hình là PCI và USB. Trình điều khiển thiết bị có trách nhiệm làm điều đó. Thiết bị không thể hoàn toàn "chết" sau khi bật nguồn, thiết bị phải chứa logic để tạo điều kiện cho việc tải firmware.
Johan Myréen

Tôi quên mất rằng chúng ta đã nói về các thiết bị ngoại vi ở đây, vì vậy nó sẽ luôn được gắn vào một chiếc xe buýt. Có ý nghĩa!
Codebling

5

Như Anthony Geoghegan đã đề cập , "phần sụn" trong thuật ngữ Linux là gì? tại sao một số trình điều khiển vẫn yêu cầu phần sụn? cung cấp nền tảng hữu ích.

Các gói phần sụn là các gói chứa các tệp phần sụn, tức là các tệp chứa mã dự định chạy trên các thiết bị trong hoặc được kết nối với hệ thống của bạn - ví dụ phổ biến bao gồm chipset wifi, như trong trường hợp của bạn. Họ không phải là những người cài đặt một lần và họ không quan tâm liệu phần cứng có khả dụng hay không. Các tệp mà chúng cung cấp có sẵn được sử dụng bởi các trình điều khiển hạt nhân tương ứng, nếu có phần cứng liên quan: trình điều khiển tải phần sụn vào bộ nhớ gắn với phần cứng đích, sau đó chạy phần sụn để vận hành.

Các gói phần sụn này không liên quan đến các trình cài đặt chương trình cơ sở mà bạn đang nghĩ đến, tải các bản cập nhật phần sụn vào bộ nhớ flash (chỉ cần thực hiện khi cần cập nhật). Quá trình đó thực sự kéo dài, thường phức tạp và dường như đầy nguy hiểm (ít nhất, nếu bạn căn cứ vào ấn tượng của mình về các cảnh báo của nhà sản xuất). Các gói phần sụn có trong các bản phân phối Linux chứa phần sụn cần thiết mỗi khi hệ thống khởi động, vì nó được nạp vào bộ nhớ dễ bay hơi.


2

Thêm vào các câu trả lời đã xuất sắc.

Các tập tin phần sụn, hay còn gọi là các đốm nhị phân độc quyền, được tải vào phần sụn của bạn ít nhất là tại thời điểm khởi động lại thiết bị.

Thiết bị đã được nghĩ ra để có phần sụn trong RAM thay vì có ROM + RAM để cắt giảm chi phí sản xuất. Ví dụ, bạn có một số chipset wifi Broadcom và chipset chuyển đổi nội bộ hoạt động theo cách đó.

Giải quyết vấn đề khác về câu hỏi của bạn về việc sử dụng các tập tin phần sụn trong máy ảo.

Khi bạn đang xử lý VM, bạn không cần các tập tin phần sụn. Chúng sẽ không được tải ở bất cứ đâu; ít tập tin ethernet hoặc wifi "firmware" hơn.

Tương tự như vậy, việc xem xét phần sụn là không cần thiết trong môi trường VM, đó là một sự bình dị lớn trong Debian phụ thuộc vào gói tệp phần sụn chung trong nhân Linux.


Đây là một idiosyncrasy lớn có trong Debian các phụ thuộc vào gói tệp phần sụn chung trong kernel Linux - ít nhất là phần sụn được gói kernel khuyên dùng thực sự không có DFSG ;-). (Nhưng bạn đã đúng, cả hai khuyến nghị - firmware-linux-freeirqbalance- đều vô dụng trong hầu hết các triển khai hiện nay.)
Stephen Kitt

Tôi luôn luôn chạy một playbook để gỡ cài đặt hành trình đó sau một đợt nâng cấp kernel
Rui F Ribeiro

1
Bạn cũng có thể định cấu hình aptđể nó không cài đặt các đề xuất theo mặc định ...
Stephen Kitt
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.