Làm cách nào để ẩn menu GRUB của tôi và các phím shift hoặc esc hiển thị menu GRUB bị ẩn khi khởi động


10

Tôi đang chạy Ubuntu 16.10 và tôi đang cố gắng ẩn menu GRUB của mình khi bật nguồn / thời gian khởi động và muốn menu chỉ xuất hiện khi tôi nhấn Shifthoặc Escphím.

Tôi thay đổi các tùy chọn thích hợp /etc/default/grubvà nó vẫn không ẩn menu.

Trong nghiên cứu này, tôi thấy bài đăng này từ menu ẩn GRUB 2013 không hoạt động cho thấy vấn đề đã tồn tại được một thời gian và gợi ý một sự thay đổi /etc/grub.d/30_os-probermà tôi không nên làm. Mã đó cho thấy rằng vì đã tìm thấy nhiều hệ điều hành, nên nó sẽ thiết lập GRUB_TIMEOUT=10mọi cách.

Đây là một đoạn của những gì tôi có trong /etc/default/grub... một menu có đếm ngược 10 giây ...

GRUB_DEFAULT = đã lưu
GRUB_SAVEDEFAULT = đúng
GRUB_HIDDEN_TIMEOUT_QUIET = đúng
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIME hiện = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || tiếng vang Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "giật gân yên tĩnh"

Nếu tôi không chú ý #GRUB_HIDDEN_TIMEOUT=0, sau đó sudo update-grubnhấn mạnh rằng tôi cũng đặt GRUB_TIMEOUT=10ra GRUB_TIMEOUT=0. Tôi làm điều đó, và tôi vẫn thấy menu GRUB.

Trong terminal, gõ info -f grub -n 'Simple configuration'mô tả các tùy chọn khác nhau và ở phần cuối của thông tin, nó cho thấy rằng một số lệnh hiện tại đã bị khấu hao và gợi ý rằng các thay thế mới hơn là tốt hơn.

Có ai biết làm thế nào tôi có thể để menu GRUB của mình ẩn trong 16.10 để nó nhận ra Shifthoặc Esccác phím khi khởi động không?


Tôi rất vui vì bạn đã hỏi điều này. Tôi cũng không thể làm cho tôi hoạt động được, và điều này xác nhận rằng đó là do chiếc hộp là một booter kép.
Đá cẩm thạch hữu cơ

1
@OrganicMarble Vấn đề phải làm với nhiều hệ điều hành. Để kiểm tra, tôi đã sửa đổi phần mã đó trong /etc/grub.d/30_os-prober và mặc dù tôi không có menu, tôi không thể buộc một menu có shift hoặc esc khi khởi động. Vẫn đang làm việc trên nó.
heynnema

Tôi đã thêm một số thông tin về các lỗi liên quan đến câu trả lời của bạn, chúng có thể giúp bạn hiểu bản chất của vấn đề kỹ hơn. Tôi cũng đang xem mã
Grub2

Hãy thử sử dụng Grub Customizer nếu bạn chưa có, Tab Cài đặt chung theo thứ tự này - 1 Bỏ chọn hộp "tìm hệ điều hành khác" và 2 Bỏ chọn "hiển thị menu" rồi lưu. Kiểm tra điều đó và xem liệu "Shift" sẽ hiển thị menu và sau đó những gì sẽ xảy ra nếu không có gì được nhấn.
xtrchessreal

Tôi có thể hiểu rằng bạn không muốn sửa đổi /etc/grub.d/30_os-probernhưng tôi thực sự không thấy tác hại. Bạn có thể giữ một bản sao dự phòng hoặc #Ver các thay đổi của bạn để bạn có thể đảo ngược chúng nếu cần. Cách giải quyết bạn thấy có vẻ là giải pháp hợp lý nhất vào lúc này.
Anh Cả Geek

Câu trả lời:


7

OK mọi người, đây là câu trả lời ... để có được menu GRUB ẩn trong cấu hình khởi động kép ... hai chỉnh sửa ... và sudo update-grub...

Chỉnh sửa số 1

Để có được menu GRUB ẩn trong cấu hình đa khởi động, trước tiên chúng ta cần chỉnh sửa /etc/default/grub. Mở tệp này bằng lệnh dưới đây:

sudo editor /etc/default/grub

Khi tệp được mở, thay thế các dòng này

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

với những điều này:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

Điều này sẽ khiến GRUB hiển thị đồng hồ đếm ngược 3 giây trên màn hình. Bằng cách này, người dùng có thể nhấn Escphím để hiển thị menu mặc định. Nếu không, hệ điều hành mặc định sẽ khởi động.

Nếu bạn muốn hệ điều hành mặc định được đặt thành HĐH khởi động lần cuối, hãy thêm hai dòng dưới đây vào "GRUB_TIMEOUT = 3" được hiển thị ở trên:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

Chỉnh sửa # 2

Tiếp theo, prober OS cần được cập nhật để tắt tính năng quick_boot. Để thực hiện việc này, hãy mở /etc/grub.d/30_os-probertrình soạn thảo yêu thích của bạn và thay đổi dòng dưới đây (dòng 23 trong 17.04) bằng cách thay thế 1bằng 0:

quick_boot="1"

Khi bạn hoàn thành, dòng nên đọc như sau:

quick_boot="0"

Lưu các tệp và sau đó chạy lệnh dưới đây để cấu hình lại bộ tải khởi động và áp dụng các thay đổi của bạn:

sudo update-grub

Điều đó đã làm nó! +1.
Đá cẩm thạch hữu cơ

Trông giống như một giải pháp tốt :) Bây giờ tôi có một câu hỏi đơn giản về nó. Nếu bạn thay đổi GRUB_TIMEOUT từ "3" thành "1", bạn sẽ khởi động nhanh hơn. Và bạn có thể cung cấp các liên kết, nếu có, nơi người ta có thể đọc cách mã này hoạt động. Tôi muốn hiểu những gì mã này đang làm và chuỗi các cuộc gọi chức năng của nó, vv Rất nhiều đánh giá cao. Thật tuyệt khi bạn có thể giải quyết các câu hỏi của riêng mình - làm tốt công việc đó.
xtrchessreal

@xtrchessreal có, thay đổi 3 thành 1 làm cho nó ngắn hơn 2 giây. Tôi đoán rằng 3 giây là thời gian đủ để tôi có thể chạm tay vào phím Esc, nếu tôi muốn. Bạn có thể nhìn vào info -f grub -n 'Simple configuration'để biết thêm.
heynnema

+1 cho Q và +1 cho A. Hai đêm qua tôi đã làm điều này với tất cả các loại sửa đổi tóc thành 30_os phù hợp, tạo 31_blah_blah và tạo ra 40_custom tất cả đều vô ích. Đây là ở AU, ArchLinux, Fedora và nhiều nơi khác. Nếu bạn muốn có nhiều phiếu hơn, tôi khuyên bạn nên theo dõi tất cả các câu trả lời sai ở đây trong AU (có rất nhiều) và bỏ phiếu để đóng chúng dưới dạng trùng lặp của câu hỏi này sau đó ping tôi ( @ tôi) trong phòng chat chung của AU có liên kết đến bản sao và tôi cũng sẽ bình chọn. Cảm ơn cho giải pháp nghiên cứu và làm việc tuyệt vời này! :)
WinEunuuchs2Unix

@ WinEunuuchs2Unix cảm ơn vì nhận xét hay và bình chọn! Bản thân tôi đã thực hiện rất nhiều nghiên cứu trước khi tôi thấy rằng không ai có một giải pháp tao nhã, hay bất kỳ giải pháp nào cả ... nhưng tôi đã quyết tâm :-)
heynnema

3

Tôi tin rằng vấn đề này có thể là do nhiều hệ điều hành theo đoạn trích này từ wiki Grub2 :

Nếu không phát hiện thấy hệ điều hành nào khác, GRUB 2 sẽ khởi động thẳng vào hệ điều hành mặc định và không có menu nào được hiển thị. Nếu hệ điều hành khác được phát hiện, menu GRUB 2 sẽ hiển thị.

Việc lưu hệ điều hành có thể đạt được bằng cách chạy sudo grub-set-default nếu GRUB_DEFAULT = đã lưu được đặt trong / etc / default / grub. Nó cũng có thể được lưu nếu GRUB_SAVEDEFAULT = true cũng được đặt trong / etc / default / grub. Trong trường hợp này, HĐH mặc định vẫn duy trì cho đến khi một HĐH mới được chọn thủ công từ menu GRUB 2 hoặc lệnh grub-set-default được thi hành.

Wiki Grub2 cũng nêu rõ: Lưu ý: Có một lỗi đã được xác nhận từ lâu trên tính năng menu ẩn trong GRUB 1.97 đến GRUB 1.99. Menu có thể không ẩn như được chỉ định trong mô tả trên trang này. Trong khi chỉnh sửa tập lệnh 30_os-prober có thể khắc phục sự cố này, nó nằm ngoài phạm vi của trang này.

Vì công việc xung quanh bạn có thể thiết lập GRUB_TIMEOUT="1"và bạn sẽ chỉ thấy menu trong 1 giây. Nếu tôi cần chuyển sang một hệ điều hành khác, tôi chỉ cần nhấn phím mũi tên xuống trong giây đó và menu sẽ xuất hiện cho đến khi tôi đưa ra lựa chọn.

Có thể có một vấn đề cú pháp tiềm năng liên quan đến lỗi. Tôi không phải là chuyên gia Grub2 nhưng trong tệp grub của tôi, mỗi dòng lệnh kết thúc bằng = "một số cài đặt được trích dẫn" Tôi nhớ từ ngày mã hóa của mình rằng "dấu ngoặc kép" đã chuyển một chuỗi trong đó các dấu ngoặc kép không chuyển các giá trị số đơn giản cho các biến. Tôi không TĂNG trong các kỹ thuật mã mới. ví dụ: Đây là một số đầu ra grub của tôi:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="1"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

Tôi đang tìm hiểu về Gruborms này :) để biết thêm thông tin cũng như Lỗi này Cả hai đều là Grub2 2yrs cũ. Một số điều này có thể liên quan đến mã MBR trước khi bàn giao cho Grub2


Cám ơn phản hồi của bạn. Tôi đã sử dụng phương pháp SAVEDEFAULT. TIMEOUT = 1 chắc chắn rút ngắn thời gian xuất hiện menu. Vấn đề phải làm với nhiều hệ điều hành. Để kiểm tra, tôi đã sửa đổi phần mã đó /etc/grub.d/30_os-probervà mặc dù tôi không có menu, tôi không thể buộc một menu có shift hoặc esc khi khởi động.
heynnema

Những lỗi bạn liên kết dường như không liên quan hoặc tôi đang thiếu thứ gì đó?
Anh Cả Geek

@ElderGeek liên quan đến lỗi # 1401318 người lỗi được gán cho TJ giải thích hành vi từ MBR đến Grub khi anh ta nói "ngủ - gián đoạn $ timeout", v.v. Nếu bạn đọc tất cả các phát biểu của anh ta trong các nhận xét về lỗi tôi nghĩ bạn sẽ thấy ít nhất một phần của vấn đề là gì. Anh ta cũng được gán cho lỗi # 425979, vấn đề tương tự. Cả hai lỗi liên quan đến việc giữ phím shift để đưa menu Grub KHÔNG hoạt động khi được đặt thành ẩn. Đây là những gì OP đang cố gắng tìm ra. Tôi hy vọng điều này làm rõ lý do tại sao các liên kết trong câu trả lời được đăng của tôi.
xtrchessreal

Xin thứ lỗi cho tôi. Tôi đọc câu hỏi như nói "làm thế nào tôi có thể ẩn menu GRUB của mình" Cảm ơn bạn đã làm rõ. Tôi đã phải bỏ lỡ bình luận đó.
Anh Cả Geek

@ElderGeek thực sự, câu hỏi là, "làm cách nào để ẩn menu GRUB của tôi các phím shift hoặc esc hiển thị menu GRUB bị ẩn khi khởi động". Tôi đã nhận được nó để ẩn. Tôi đã không nhận được sự thay đổi hoặc phím esc để làm việc. Rõ ràng vấn đề này có từ năm 2013 trở về trước và chỉ ảnh hưởng đến cấu hình đa khởi động.
heynnema

3
  1. Tôi đoán bạn muốn thử 'mọi thứ' có sẵn thông qua /etc/default/grub. Bạn đã đọc liên kết này,

    help.ubfox.com/community/Grub2/setup#Configuring_GRUB_2

  2. Tôi đề nghị bạn thử xóa các dòng sau khỏi /boot/grub/grub.cfg,

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    Vâng, tôi biết, bạn sẽ phải làm điều đó mỗi khi update-grubchạy, nhưng bạn có thể tạo một kịch bản cho nó.


Cám ơn phản hồi của bạn. Tôi sẽ xem liên kết đó. Tôi cũng đã tìm ra cách sửa đổi /etc/grub.d/30_os-prober để tôi không phải chỉnh sửa grub.cfg mỗi lần.
heynnema

Điều này có ý nghĩa với tôi, vì trong một hệ thống multiboot, có vẻ như mã này thay đổi thời gian chờ trở lại thành 10 từ 0 Điều này dường như đánh bại HIDDEN_TIMEOUT ....
Elder Geek

@heynnema bạn có thể đăng những thay đổi của bạn lên os-prober không? Khi tôi nhìn vào liên kết trong câu hỏi của bạn và so sánh nó với mã trong os-prober của tôi, các số dòng không có ý nghĩa gì, vì vậy tôi cho rằng os-prober đã thay đổi kể từ đó và tôi sợ làm hỏng nó.
Đá cẩm thạch hữu cơ

1
@OrganicMarble xem bản cập nhật cho câu hỏi của tôi. Có lẽ bạn có thể thử một số / tất cả các mod của tôi và xem những gì bạn nghĩ ra.
heynnema

@sudodus vui lòng xem câu trả lời của tôi
heynnema
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.