Pertama, pahami bagaimana Ubuntu mengkonfigurasi Grub2.
- /boot/grub/grub.cfg adalah menu Grub2
- perintah update-grub secara otomatis menghasilkan file itu
- ... dengan membaca pengaturan default dari / etc / defaults / grub
- ... dan menjalankan shellscripts di /etc/grub.d
Jadi, jika Anda tidak ingin mengedit grub.cfg setelah setiap pembaruan kernel, Anda ingin mengubah skrip di /etc/grub.d sehingga perubahan Anda diterapkan kapan saja pembaruan-grub dijalankan.
Kedua, untuk menjawab pertanyaan pertama Anda secara langsung, saya tidak terbiasa dengan cara apa pun yang membuat opsi boot spesifik tidak terlihat tetapi masih dapat diakses melalui menu Grub. Ada banyak hal kecil tentang Grub1 yang tidak dapat diimplementasikan kembali di Grub2, dan itu tidak akan mengejutkan saya jika ini salah satunya.
Sebagai gantinya, Anda bisa membuat semua entri menu tidak terlihat (sampai disorot) dengan mengatur warna font menu sama dengan warna latar belakang. Di /etc/grub.d/05_debian_theme , ubah menu_color_normal sehingga warna pertama (font) cocok dengan warna kedua (latar belakang). Biarkan menu_color_highlight berbeda, sehingga entri di bawah kursor muncul.
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Mendapatkan pemisah ke menu Grub.
Di Grub1 Anda akan memasukkan entri baru seperti ini. Seingat saya, Anda membutuhkan deklarasi root untuk membuatnya entri menu yang valid, jika tidak Grub1 mengabaikannya.
# separator
title --------------------
root
Saya menduga Grub2 mungkin serupa. Entri menu yang sangat mendasar terlihat seperti ini di grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Karena "apa pun" dalam tanda kutip ganda ditampilkan sebagai judul, Anda dapat memalsukan pemisah dengan itu. Seperti Grub1, Grub2 ingin kata kunci linux memperlakukannya sebagai entri menu nyata, jadi berhati-hatilah agar Anda tidak sengaja memilihnya.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
Sayangnya, "apa pun" tidak berarti apa - apa ; sementara saya menguji ini, saya mencoba untaian panjang ("----------------") dan tidak pernah berhasil. Tetapi suka string pendek dari titik-titik yang ditunjukkan di atas, sehingga Anda dapat menggunakannya
.....
Nah, begitulah cara membuat satu pemisah. Untuk membuat banyak, dan menempatkannya di tempat yang Anda inginkan secara otomatis, Anda perlu menambahkannya ke dalam skrip di /etc/grub.d .
Untuk contoh ini, mari kita tempatkan pemisah sederhana antara berbagai bagian grub.cfg . Jika Anda melihat /etc/grub.d , Anda melihat skrip berikut:
- 00_header
- 05_debian_theme
- 10_linux - entri untuk kernel Ubuntu & pemulihan
- 20_memtest86 + - entri untuk Memtest86 +
- 30_os-prober - entri untuk Windows & distro Linux lainnya
- 40_custom - tidak ada yang secara default; entri pengguna khusus dapat pergi di sini
Kami akan membuat skrip, pemisah baru , dan menempatkan yang berikut ke dalamnya:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Sekarang, pindahkan skrip itu ke tempatnya untuk pemisah pertama, dan hubungkan skrip itu ke tempat lain. Skrip dieksekusi secara berurutan, jadi jika Anda ingin yang pertama datang sebelum 10_linux , beri nama 09_separator atau sesuatu.
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
Jika Anda memiliki entri tertentu yang ditetapkan sebagai default di / etc / default / grub , Anda mungkin perlu memperbaruinya - Grub2 mulai menghitung entri menu pada 0, dan masing-masing "pemisah" ini adalah entri yang valid, sehingga mereka juga menghitung. Jika entri default Anda sebelumnya adalah 0, dan Anda telah menambahkan satu pemisah sebelumnya, ingatlah untuk mengubah GRUB_DEFAULT menjadi 1
Sekarang jalankan pembaruan-grub , dan periksa / boot / grub / grub.cfg - Anda akan melihat pemisah di sana. Jika Anda melakukannya, reboot dan periksa.
....
Jika Anda ingin menempatkan pemisah di tempat lain, katakanlah, di antara versi kernel yang berbeda, Anda harus mengedit 10_linux (atau skrip lain) secara langsung, dan menemukan tempat yang tepat untuk menambahkan pemisah. Anda dapat menggunakan baris dari skrip di atas; sertakan semuanya kecuali baris #! / bin / sh pertama.
Jika Anda menginginkan sesuatu yang lebih cantik, gunakan Grub splash gambar atau tema. Saya perlu memberi Anda tanda centang pada topik-topik itu, tetapi periksa sumber daya di bawah ini.
Sumber:
Ada dua panduan Grub2 besar di UbuntuForums yang saya kenal dan sukai:
GNU Grub 2 adalah sumber hebat lainnya. Dia punya satu set skrip untuk mengubah Grub2 Karmic ( pengungkapan penuh: Saya belum mencobanya ).
Halaman Format Tema Grub Wiki adalah suatu keharusan untuk meretas tema Grub2.