Câu trả lời trên mô tả cách làm cho máy chủ / hộp Linux / GRUB2 khởi động sang chế độ một người dùng làm tùy chọn mặc định vĩnh viễn . Người ta cũng có thể biến điều này thành một tùy chọn vĩnh viễn nhưng {không mặc định, có thể chọn menu}. Một thủ tục cho việc này (đó không phải là ngu ngốc, như chỉnh sửa /boot/grub/grub.cfg
) là thêm một menuentry /etc/grub.d/40_custom
(nhưng xem ghi chú @ end trên thứ tự menu):
1. (an toàn thứ 1!) Sao lưu hiện tại của bạn /etc/grub.d/40_custom
. (IIUC, đây là một phần của thiết lập GRUB2 mặc định / chung.) Một bản sao lưu hệ thống tập tin thực sự là tối ưu ở đây, nhưng người ta cũng có thể chỉ sử dụng thành ngữ backup-to-.0 cũ :
FP_TO_BACKUP='/etc/grub.d/40_custom'
BACKUP_FP="${FP_TO_BACKUP}.0"
sudo ls -al "${FP_TO_BACKUP}*" # checking that you don't already have one
cp "${FP_TO_BACKUP}" "${BACKUP_FP}"
sudo chmod a-wx "${BACKUP_FP}" # non-executable files not used by GRUB2
2. Trong trình chỉnh sửa của bạn, mở hiện tại của bạn /boot/grub/grub.cfg
và /etc/grub.d/40_custom
. Trong Emacs với TRAMP , bạn có thể thực hiện việc này từ một phiên bình thường với các chuỗi sau (sau C-x C-f
hoặc M-x find-file
)
/sudo::/boot/grub/grub.cfg
/sudo::/etc/grub.d/40_custom
3. Tìm menuent mặc định hiện tại của bạn trong grub.cfg bằng cách tìm kiếm từ đầu tệp với regapi =^menuentry
4. Sao chép toàn bộ khổ thơ cho menu đó (bao gồm cả thiết bị đầu cuối '}'!) Vào của bạn40_custom
5. Trong bạn /etc/grub.d/40_custom
,
5.1. Cung cấp cho các menuentry một tiêu đề hữu ích. Ví dụ, nối (console)
vào bất cứ thứ gì bạn đã có.
5.2. Ít nhất là cho bây giờ, xóa hầu hết các mã từ menuentry gốc, chỉ giữ lại các dòng bắt đầu với set root
, linux
, initrd
, và 2 can thiệp echo
dòng. (Bạn cũng có thể thêm một nhận xét giải thích.)
5.3. Phần quan trọng: trong dòng bắt đầu của bạn linux
, thay thế mã ở cuối (thường là sau ro
) bằng single
. Ví dụ
- linux /vmlinuz-3.16.0-4-amd64 root=/dev/mapper/LVM2_crypt-root ro nomodeset nouveau.modeset=0
+ linux /vmlinuz-3.16.0-4-amd64 root=/dev/mapper/LVM2_crypt-root ro single
Điều này sẽ làm cho menu mới của bạn một cái gì đó đơn giản hơn nhiều so với người tiền nhiệm của nó, như
menuentry 'LMDE 2 Cinnamon 64-bit (console)' {
set root='hd0,msdos3'
echo 'Loading Linux 3.16.0-4-amd64 ...'
linux /vmlinuz-3.16.0-4-amd64 root=/dev/mapper/LVM2_crypt-root ro single
echo 'Loading initial ramdisk ...'
initrd /initrd.img-3.16.0-4-amd64
}
5.3. Lưu 40_custom
và thoát khỏi trình soạn thảo của bạn.
6. Đừng quên sudo update-grub
7. Khởi động lại: bây giờ bạn sẽ thấy một mục / menu liên tục ở cuối màn hình khởi động GRUB2 ban đầu của bạn.
Lưu ý về thứ tự menu: mục mới hiển thị ở cuối update-grub
menu khởi động GRUB2 được tạo (bởi ), bởi vì quy trình này chỉnh sửa (tồn tại trước) /etc/grub.d/40_custom
. Người ta có thể thay đổi vị trí của mục trong menu bằng cách thay đổi tiền tố số của tệp. Một GRUB2 chung /etc/grub.d/
sẽ chứa tên tệp như
00_header
mà bạn có thể không muốn chỉnh sửa
- ... tiếp theo là các chủ đề và trang trí menu khác
10_linux
- ... tiếp theo là các menu liên quan đến Linux
30_os-prober
- ... theo sau là các hệ điều hành không phải Linux để khởi động (ví dụ: Windows)
40_custom
- ... Tiếp theo là các menu tùy chỉnh không thuộc các thùng chức năng trước đó
Nhưng người ta có thể lật đổ lược đồ trên theo ý muốn. Ví dụ,
- để trình đơn tùy chỉnh của bạn hiển thị trên tất cả các mục khác, hãy đặt tiền tố số <10. Ví dụ: tạo một tệp mới
09_custom
- để trình đơn menu tùy chỉnh của bạn hiển thị sau menu Linux của bạn nhưng trước các menu cho Windows của bạn, hãy đặt cho nó 10 <tiền tố số <30. Ví dụ: tạo một tệp mới
29_custom
Lưu ý rằng
- các giá trị tiền tố số chính xác mà bạn phải sử dụng để đạt được một vị trí nhất định sẽ phụ thuộc vào các giá trị đã được sử dụng trên máy chủ / hộp của bạn, vì vậy hãy nhớ
ls -al /etc/grub.d/
- nếu bạn tạo một tệp mới, bạn phải làm cho nó thực thi được trước khi bạn
update-grub