Làm thế nào để ngăn cập nhật-grub quét tất cả các ổ đĩa?


19

Mỗi lần update-grubchạy, tất cả các ổ cứng đều được quét. Mỗi ổ đĩa ở trạng thái chờ sẽ quay lên để không hoạt động. Đây là một sự lãng phí năng lượng. Chúng tôi sử dụng phiên bản cập nhật-grub 1.98:

# update-grub -v
grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1

hồi quy

  1. Có một GRUB_DISABLE_OS_PROBER=truetùy chọn trong /etc/default/grubtập tin. Nhưng điều đó dường như chỉ hoạt động từ phiên bản 2 trở lên. Ít nhất là nó không dừng quét tất cả các ổ đĩa trong phiên bản 1.98 của chúng tôi.

  2. Có một đoạn /etc/grub.d/20_linux_xenscript có thể được chạy như một phần của update-grub. Sau khi loại bỏ quyền thực thi cho tất cả người dùng với chmod a-x /etc/grub.d/20_linux_xentất cả các ổ đĩa vẫn quay.

Làm thế nào để ngăn chặn update-grubviệc quét từng ổ cứng?


Nó chỉ là một kịch bản shell ... Sửa đổi nó? Nó chỉ nên chạy sau khi cập nhật kernel, điều này không xảy ra rất thường xuyên.
jordanm

Một trong những dòng script thực thi /usr/sbin/grub-probe --target=device /. Lệnh đó cũng khiến tất cả các ổ đĩa quay lên. Đây /usr/sbin/grub-probekhông phải là một kịch bản shell.
Sao lưu chuyên nghiệp

Bạn có thường xuyên chạy update-grubkhông? Điều này chỉ xảy ra khi bạn cài đặt kernel mới, vậy ai quan tâm?
psusi

Tôi biết, toàn bộ picojoule mà nó sử dụng là một sự lãng phí - nếu bạn chạy update-grub 24/7 trong một tháng trên 1000 máy tính với 3 ổ cứng mỗi cái, nó có thể thêm một hoặc hai xu vào hóa đơn tiền điện của bạn.
tkbx

Câu trả lời:


14

Trong tệp /etc/grub.d/30_os-prober dòng

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

làm cho tất cả các ổ đĩa quay (chế độ chờ -> không hoạt động). Os-prober là một tiện ích để tìm các bản cài đặt Linux tại các ổ đĩa khác ổ đĩa khởi động của bạn. Đó là os-probercần phải được vô hiệu hóa.

  1. Một cách là loại bỏ gói : apt-get --purge remove os-prober.
  2. Một cách khác là loại bỏ các quyền thực thi cho os-prober . Đầu tiên tìm vị trí của os-prober bằng cách sử dụng $ which os-prober. Đầu ra có thể trông như : /usr/bin/os-prober. Việc xóa quyền thực thi cho tất cả người dùng cho tệp đó:# chmod a-x /usr/bin/os-prober
  3. Một cách khác là xóa quyền thực thi cho 30_os-prober . Tìm vị trí của 30_os-prober bằng cách sử dụng $ locate /30_os-prober. Đầu ra có thể trông như : /etc/grub.d/30_os-prober. Việc xóa quyền thực thi cho tất cả người dùng cho tệp đó:# chmod a-x /etc/grub.d/30_os-prober
  4. Tuy nhiên, một cách khác là để bỏ qua việc thực hiện các /etc/grub.d/30_os-prober. Ví dụ: bằng cách làm cho GRUB_DISABLE_OS_PROBER=truetùy chọn hoạt động trong phiên bản grub 1.98 của chúng tôi. Điều này có thể được thực hiện bằng cách chèn vào tệp /etc/grub.d/30_os-probermã bên dưới dòng set -e:

...

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi

5

Đối với những người tự hỏi nếu nó thực sự có giá trị nỗ lực, có nó là. Có lẽ không phải để tiết kiệm năng lượng nhưng hôm nay tôi gặp phải sự cố với update-grub vì nó muốn thăm dò cả / dev / sda (ổ cứng của tôi) và / dev / sdc (thẻ nhớ USB). Nếu không có cái sau được đưa vào máy tính xách tay của tôi, update-grub sẽ bị treo, mặc dù thực tế không có hệ điều hành nào trên thanh USB của tôi được cài đặt và tôi chưa bao giờ khởi động từ thanh này. Khi thanh USB gần đây bị hỏng, tôi cần một cách để update-grub tiếp tục (còn sống) mà không cần nó. Một cách ngẫu nhiên, GRUB_DISABLE_OS_PROBER=truechỉ cần thực hiện các mẹo. :)


1
Tôi gặp vấn đề nghịch đảo: update-grub không thành công nếu có thẻ USB. Thanh USB hơi bất thường, vì nó đã cài đặt Easy2Boot. Nhưng vì đây là trên một kiosk với lệnh update-grub được phát ra từ một tập lệnh được đặt trên thanh USB đó, nên giải pháp này rất được hoan nghênh.
noamik

3

(Điều này có thực sự đáng giá thời gian và công sức để sửa chữa không?)

Như bạn đã đề cập, việc thăm dò có thể xảy ra khi grub-mkconfigcác cuộc gọi grub-probe. Bạn có thể sửa đổi grub-mkconfigbằng cách mã hóa kết quả của các grub-probecuộc gọi. Nó được sử dụng để điền vào GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUID, và GRUB_FS.


1

Xem giải pháp của tôi ở đây để vô hiệu hóa có chọn lọc các phân vùng được kiểm tra bằng os-probermột cái nhỏ patch.

Cấu hình của GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"trong /etc/default/grub:

  • giảm số lượng thiết bị ${OSPROBED}được sử dụng bởi/etc/grub.d/30_os-prober

  • dừng kiểm tra với ${grub_probe} --target=fs_uuid --device


0

Tôi biết đây là một bài viết cũ, nhưng tôi đã tìm thấy một cách khác để thực hiện điều này mà không liên quan đến việc thay đổi các tập lệnh. trong /etc/grub.d/tôi đã đổi tên tệp 30_os-proberthành .30_os-prober(bắt đầu bằng dấu chấm) và nó bị bỏ qua trong quá trình cập nhật mặc dù nó hiển thị ở cùng một vị trí lsnếu bạn sử dụng -a.

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.