Tùy chọn --hint trong lệnh tìm kiếm của grub2 làm gì?


10

Tôi đang xem các tài liệu GRUB2 chính thức cho searchlệnh, như được tìm thấy trên http://www.gnu.org/software/grub/manual/grub.html#index-search

Command: search [--file|--label|--fs-uuid] [--set [var]] [--no-floppy] name

Search devices by file (-f, --file), filesystem label (-l, --label),
or filesystem UUID (-u, --fs-uuid).

If the --set option is used, the first device found is set as the
value of environment variable var. The default variable is ‘root’.

The --no-floppy option prevents searching floppy devices, which can be slow.

The ‘search.file’, ‘search.fs_label’, and ‘search.fs_uuid’ commands are aliases
for ‘search --file’, ‘search --label’, and ‘search --fs-uuid’ respectively.

Trong phần 5.3 có nhiều ví dụ

menuentry "FreeBSD" {
      insmod zfs
      search --set=root --label freepool --hint hd0,msdos7
      ...
}

Nó xuất hiện --hinttùy chọn không có giấy tờ khác hơn là một ví dụ. Làm gì chính xác? Định dạng chính xác của đối số là gì?

Câu trả lời:


6

--hintđược sử dụng để chọn phân vùng sẽ chọn khi có nhiều phân vùng phù hợp. Theo mặc định, kết quả khớp thứ 1 được chọn.

Giả sử có 2 thiết bị lưu trữ với nhãn khởi động như sau

hd0,msdos1
hd1,msdos7

sau đó là lệnh:

search --set=root --label freepool --hint hd1,msdos7

sẽ chọn hd1, msdos7 thay vì hd0, msdos1


6
Bất kỳ ý tưởng tại sao tồn tại các tùy chọn --hint-efi, --hint-baremetal, vv riêng biệt?
Michael Scheper

Và nếu search --fs-uuidđược sử dụng, sử dụng là --hintgì?
Saad Malik

@SaadMalik, UUID không phải là duy nhất. Các UUID của hệ thống tệp hoạt động giống như các nhãn nhưng UUID thường được tạo khi tạo FS.
jiwopene

1

Điều này không được mô tả trong Hướng dẫn GRUB nhưng có tài liệu được tìm thấy trong chính GRUB ( search --helptrên vỏ GRUB):

--hint
    First try the device HINT.
    If HINT ends in comma, also try subpartitions

--hint-ieee1275
    First try the device HINT if currently running on IEEE1275.
    If HINT ends in comma, also try subpartitions

--hint-bios
    First try the device HINT if currently running on BIOS.
    If HINT ends in comma, also try subpartitions

--hint-baremetal
    First try the device HINT if direct hardware access is supported.
    If HINT ends in comma, also try subpartitions

--hint-efi
    First try the device HINT if currently running on EFI.
    If HINT ends in comma, also try subpartitions

--hint-arc
    First try the device HINT if currently running on ARC.
    If HINT ends in comma, also try subpartitions

Bây giờ quan điểm của "Thiết bị thử đầu tiên" là gì?

Bạn phải hiểu rằng đó searchlà một hoạt động có khả năng chậm.

Có thể bạn có 50 ổ đĩa, mỗi ổ có 100 phân vùng và bây giờ searchphải trải qua tất cả ... cho đến khi cuối cùng nó tìm thấy UUID mà bạn đang tìm kiếm trong lần thử thứ 2356.

Hoặc có thể bạn có một thiết bị rất chậm và kiểm tra nguyên nhân UUID của nó searchbị kẹt trong một thời gian. Có --no-floppyđể tránh trường hợp phổ biến nhất, tôi đoán vậy - nhưng các thiết bị khác cũng có thể bị chậm.

Với --hint, bạn đặt một thiết bị để kiểm tra trước. Với điều kiện là gợi ý chính xác, bạn hoàn toàn bỏ qua thao tác tìm kiếm có khả năng kéo dài. Vì vậy, đây là một tối ưu hóa tốc độ. (Có lẽ sẽ không đáng chú ý chỉ với một ổ đĩa, ba phân vùng)

Hiệu ứng được mô tả trong câu trả lời của @ totti về việc ưu tiên cho một thiết bị cụ thể khi có hai thiết bị có cùng LABEL hoặc UUID, đó chỉ là tác dụng phụ.

Chắc chắn, nếu bạn kiểm tra một thiết bị trước, không nên tìm thấy bản sao trên thiết bị khác. Mặc dù vậy, sẽ tốt hơn nếu không có những bản sao như vậy ngay từ đầu. Vì các UUID trùng lặp (hoặc LABEL) có thể được coi là lỗi cấu hình và trong trường hợp --hinthóa ra là sai, nó vẫn có thể trả về thiết bị sai.

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.