Estetik olarak düzenlenmiş grub.cfg


10

EDIT: (netlik için) yapılandırma dosyalarını düzenleyerek grub önyükleme menüsünün görünümünü değiştirmek istiyorum (muhtemelen ama mutlaka grub.cfg).

Bu nedenle, herhangi bir ubuntu kullanıcısı önyükleme menüsünün birkaç çekirdek güncellemesinden sonra ne kadar doldurulacağını bilir. Menu.lst günlerinde, istenmeyen seçenekleri gizlemek için hala menüyü çimdikleyebilirsiniz ama yine de kullanılabilir durumda tutuyorsunuz.

Örneğin, grub menünüz şöyle görünüyorsa:

bir
B
C
D

B ve C arasına boş bir seçenek ekleyerek C ve D seçeneklerini görünmez hale getirebilirsiniz. Bu şekilde, C ve D seçenekleri önyükleme sırasında görünmez, ancak önyükleme menüsünde aşağı doğru kaydırırsanız görünür hale gelir.

Bu aynı numarayı grub.cfg'de denemek hiçbir şekilde sonuç vermedi. Bu yüzden, grub.cfg dosyasını düzenleyerek bu aynı sonucu yeni grub menüsü ile elde etmenin bir yolunu arıyorum. Diğer estetik tweaks de açığız.

Teşekkürler

EDIT2: Menü girişlerini gizlemek mümkün değilse, aralarına bir ayırıcı yerleştirmenin bir yolunu istiyorum, böylece menü şöyle görünür:

bir
B

--Others--
C
D


tüm değişiklikleri yapmak ister misiniz grub.cfg ? eğer koşuyorsan update-grub otomatik olarak oluşturmak için muhtemelen altındaki komut dosyalarını düzenlemek istersiniz /etc/grub.d ; görmek superuser.com/questions/102692/... kısa bir genel bakış için.
quack quixote

@ ~ quack: Bu biraz yardımcı olur ve oldukça bilgilendirici. Hala menü girişlerini gizlemenin ya da en azından aralarına bir ayırıcı koymanın bir yolunu umuyorum.
Malabarba

Öyleyse, sadece eski çekirdekleri kaldırmak bir seçenek değil mi?
Bobby

Yanıtlar:


8

İlk önce, Ubuntu'nun Grub2'yi nasıl yapılandırdığını anlayın.

  • /boot/grub/grub.cfg Grub2 menüsü
  • update-grub komut otomatik olarak bu dosyayı oluşturur
  • ... tarafından varsayılan ayarları okuyarak / Etc / varsayılan / grub
  • ... ve çalışan kabuk komut dosyalarını /etc/grub.d

Yani, düzenlemek istemiyorsanız grub.cfg Her bir çekirdek güncellemesinden sonra, komut dosyalarını değiştirmek /etc/grub.d Böylece değişiklikleriniz her zaman uygulanır update-grub çalıştırıldı.


İkincisi, ilk sorunuza doğrudan cevap vermek için, belirli önyükleme seçeneklerini görünmez hale getirme yöntemlerine aşina değilim, ancak Grub menüsünde hala erişilebilir. Grub1 ile Grub2'de yeniden hayata geçmeyen pek çok küçük şey var ve bu onlardan biri olsaydı beni şaşırtmazdı.

Bunun yerine, yapabilir herşey menü yazı tipi rengini arka plan rengiyle aynı olacak şekilde ayarlayarak görünmez (vurgulanana kadar). İçinde /etc/grub.d/05_debian_theme , değişiklik menu_color_normal Böylece ilk renk (yazı tipi) ikinci renkle (arka plan) eşleşir. Ayrılmak menu_color_highlight farklı olduğundan, imlecin altındaki giriş görünür.

# 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

Grub menüsüne ayırıcı alma.

Grub1'de bunun gibi yeni bir giriş eklersiniz. Hatırladığım kadarıyla, ihtiyacın vardı. kök geçerli bir menü girişi yapmak için yapılan beyanda, aksi takdirde Grub1 bunu görmezden geldi.

# separator
title  --------------------
root

Grub2'nin benzer olabileceğinden şüpheleniyorum. Çok basit bir menü girişi bu gibi görünüyor grub.cfg :

# basic example
menuentry "Memory test (memtest86)" {
        linux   /boot/memtest86+.bin
}

Çift tırnak içindeki "herhangi bir şey" başlık olarak görüntülendiğinden, bununla bir ayırıcı taklit edebilirsiniz. Grub1 gibi, Grub2 de istiyor linux Anahtar kelimeyi gerçek bir menü girişi olarak ele aldığınızdan, yanlışlıkla seçmemeye dikkat edin.

# a separator!  no, really!
menuentry "....." {
        linux   /boot/memtest86+.bin
}

Ne yazık ki, "bir şey" demek değildir her şey ; Bunu test ederken uzun bir çizgi dizisi denedim ("----------------") ve hiç çalışmadı. Ancak yukarıda gösterilen kısa nokta dizgisini sever, böylece onu kullanabilirsiniz.

.....

Şimdi, bir ayırıcı nasıl yapılır. Bir demet yapmak ve onları otomatik olarak istediğiniz yere yerleştirmek için bunları komut dosyalarına eklemeniz gerekir. /etc/grub.d .

Bu örnekte, çeşitli bölümlerin arasına basit bir ayırıcı koyalım. grub.cfg . Bakarsan /etc/grub.d , aşağıdaki komut dosyalarını görüyorsunuz:

  • 00_header
  • 05_debian_theme
  • 10_linux - Ubuntu çekirdekleri için girişler & amp; kurtarma
  • 20_memtest86 + - Memtest86 + için giriş
  • 30_os-prober - Windows için girişler & amp; diğer Linux dağıtımları
  • 40_custom - varsayılan olarak hiçbir şey; Özel kullanıcı girişleri buraya gidebilir

Yeni bir komut dosyası oluşturacağız ayırıcı ve aşağıdakileri içine yerleştirin:

#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
  linux /boot/memtest86+.bin
}
EOF

Şimdi, bu betiği ilk ayırıcı için yerine getirin ve onu diğerleri için yerine bağlayın. Komut dizileri sırayla yürütülür, bu nedenle ilkinin gelmesini istiyorsanız 10_linux , Adını sen koy 09_separator ya da başka birşey.

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

Varsayılan olarak belirlenmiş belirli bir girişiniz varsa, / Etc / default / grub güncellemeniz gerekebilir - Grub2, 0'da menü girişlerini saymaya başlar ve bu "ayırıcılar" her biri geçerli bir giriştir, bu yüzden de sayılır. Önceki varsayılan girişiniz 0 ise ve daha önce bir ayırıcı eklediyseniz, değiştirmeyi unutmayın. GRUB_DEFAULT 1'e

Şimdi koş update-grub ve incelemek /boot/grub/grub.cfg - orada ayırıcıları görmelisin. Bunu yaparsanız, yeniden başlatın ve kontrol edin.

....

Ayırıcıları başka bir yere yerleştirmek istiyorsanız, örneğin, farklı çekirdek sürümleri arasına 10_linux (veya başka bir komut dosyası) doğrudan ve ayırıcı eklemek için uygun yeri bulun. Yukarıdaki betiğin satırlarını kullanabilirsiniz; ilki hariç her şeyi dahil et #! / Bin / sh hat.


Daha güzel bir şey istiyorsanız, Grub açılış resimlerini veya temalarını kullanın. Bu konularda sana bir yağmur damlası vermem gerekiyor, ama aşağıdaki kaynakları kontrol et.


Kaynaklar:

UbuntuForum'larda tanıdığım ve sevdiğim iki büyük Grub2 rehberi var:

GNU Grub 2 Başka bir büyük kaynak. O bir komut dizileri Karmic's Grub2’yi ayarlamak için ( tam açıklama: Onları denemedim ).

Grub Wiki'nin Tema Biçimi Sayfa Grub2 temalarını hacklemek için bir zorunluluktur.


Vay, cevap için teşekkürler. Bazı özelliklerin bu sürüme ulaşmadığını görmek için utanç verici. Bir ayırıcı takmayı denemiştim, işe yaramadı çünkü braketler arasında boş bıraktım. Yukarıdaki her şey çalışıyor gibi görünüyor. Tekrar teşekkürler.
Malabarba

@D Connors - evet, Grub1 hakkında özlediğim birkaç şey var, ama genel olarak Grub2'nin bir gelişme olduğunu düşünüyorum. kendi öğrenme eğrisine sahiptir. devs grubunun metin menüsünün pahasına Grub2'nin grafiksel yeteneklerine daha fazla çaba harcamasını bekliyorum, ancak proje geliştikçe değişebilir.
quack quixote

4

Ayırıcı, ilk karakteri boşluk ise kesik çizgilerden oluşabilir. Ayrıca, ayırıcı bölüm için linux komutunu kullanmak gerekmez, böyle bir komut kullanabilirsiniz:

menuentry " -----------------------------------------------------------" {
  echo "It is just a separator, select another item!"
}

Veya sessizce geri dönmek için "gerçek" bile:

menuentry " -----------------------------------------------------------" {
  true
}

0

Diğer çekirdekleri kullanmazsanız, bunları hangi paket yöneticisi arabiriminin size uygun olduğunu kullanarak kaldırabilirsiniz. Bu onları otomatik olarak grub.cfg'den kaldırır


Geçerli yüklemeyi mahvettiğimde, sorun giderme için nadiren kullanıyorum. Üstelik, çekirdekler sadece bir örnekti, ayrıca saklamak istediğim fakat yine de hazır bulundurmak istediğim 3 önyüklenebilir bölümüm var.
Malabarba

(karışıklığı önlemek için. "Gizle" derken, "bölümü gizle" demek istemedim, sadece "önyükleyici OS girişini önyükleme menüsünden gizle" demek istedim)
Malabarba
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.