सौंदर्य से संपादन grub.cfg


10

संपादित करें: (स्पष्टता के लिए) मैं ग्रब बूट मेनू की उपस्थिति को बदलना चाह रहा हूं, कॉन्फ़िगरेशन फ़ाइलों को संपादित करके (संभवतः लेकिन grub.cfg नहीं)।

इसलिए, किसी भी ubuntu उपयोगकर्ता को पता है कि कुछ कर्नेल उन्नयन के बाद बूट मेनू कैसे भरा जाता है। Menu.lst के दिनों में, आप अनचाहे विकल्पों को छिपाने के लिए मेनू को बदल सकते हैं लेकिन फिर भी उन्हें उपलब्ध रख सकते हैं।

उदाहरण के लिए, यदि आपका ग्रब मेनू इस तरह दिखता है:

A
B
C
D

आप बी और सी के बीच एक खाली विकल्प डालकर सी और डी को अदृश्य बना सकते हैं। इस तरह से, विकल्प सी और डी बूट अप के दौरान दिखाई नहीं देंगे, लेकिन बूट मेनू में उन्हें नीचे स्क्रॉल करने पर आप दृश्यमान हो जाएंगे।

Grub.cfg में इसी ट्रिक को आजमाने से कोई नतीजा नहीं निकला। इसलिए, मैं grub.cfg फ़ाइल को संपादित करके नए ग्रब मेनू के साथ इसी परिणाम को प्राप्त करने का एक तरीका ढूंढ रहा हूं। अन्य सौंदर्यवादी ट्विक्‍स का भी स्‍वागत है।

धन्यवाद

EDIT2: यदि मेनू प्रविष्टियों को छिपाना संभव नहीं है, तो मैं उनके बीच एक विभाजक डालने का एक तरीका चाहूंगा, ताकि मेनू इस तरह दिखाई दे:


--ओर्स -
सी
डी


क्या आप grub.cfg में सभी परिवर्तन करना चाहते हैं ? यदि आप अपडेट-ग्रब चला रहे हैं तो इसे ऑटो-जेनरेट करें जिसे आप /etc/grub.d के तहत स्क्रिप्ट को संपादित करना चाहते हैं ; एक संक्षिप्त अवलोकन के लिए superuser.com/questions/102692/… देखें ।
क्विकोट क्विकोट

@ ~ क्वैक: जो थोड़ा मदद करता है, और बहुत जानकारीपूर्ण है। मैं अभी भी मेनू प्रविष्टियों को छिपाने के लिए, या कम से कम उन दोनों के बीच एक विभाजक लगाने के लिए उम्मीद कर रहा हूं।
मालाबार

तो, मुझे लगता है कि पुराने कर्नेल की स्थापना रद्द करना एक विकल्प नहीं है?
बॉबी

जवाबों:


8

सबसे पहले, समझें कि कैसे Ubuntu Grub2 को कॉन्फ़िगर करता है।

  • /boot/grub/grub.cfg Grub2 मेनू है
  • अद्यतन-भोजन के आदेश है कि फाइल ऑटो उत्पन्न करता है
  • ... / etc / चूक / ग्रब से डिफ़ॉल्ट सेटिंग्स पढ़कर
  • ... और /etc/grub.d में गोले चलाना

इसलिए, यदि आप प्रत्येक कर्नेल अपडेट के बाद grub.cfg को संपादित नहीं करना चाहते हैं, तो आप स्क्रिप्ट को /etc/grub.d में ट्वीक करना चाहते हैं, ताकि आपके परिवर्तन कभी भी अपडेट हो जाएं- grub चलाया जाता है।


दूसरा, आपके पहले सवाल का सीधा जवाब देने के लिए, मैं विशिष्ट बूट विकल्पों को अदृश्य बनाने के किसी भी माध्यम से परिचित नहीं हूं, लेकिन ग्रब मेनू के माध्यम से अभी भी सुलभ है। Grub1 के बारे में बहुत कम चीजें हैं जो Grub2 में फिर से लागू नहीं हुईं, और यह मुझे आश्चर्यचकित नहीं करेगा अगर यह उनमें से एक था।

इसके बजाय, आप मेनू फ़ॉन्ट रंग को पृष्ठभूमि रंग के समान सेट करके सभी मेनू प्रविष्टियों को अदृश्य (हाइलाइट किए जाने तक) बना सकते हैं । में /etc/grub.d/05_debian_theme , परिवर्तन menu_color_normal तो पहला रंग (फ़ॉन्ट) दूसरे रंग (पृष्ठभूमि) से मेल खाता है। Menu_color_highlight को अलग छोड़ दें , इसलिए कर्सर के नीचे प्रविष्टि दिखाई देती है।

# 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

ग्रब मेनू में विभाजक प्राप्त करना।

Grub1 में आप इस तरह एक नई प्रविष्टि सम्मिलित करेंगे। जैसा कि मुझे याद है, आपको इसे वैध मेनू प्रविष्टि बनाने के लिए मूल घोषणा की आवश्यकता थी , अन्यथा Grub1 ने इसे अनदेखा कर दिया।

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

मुझे संदेह है कि Grub2 समान हो सकता है। एक बहुत ही मूल मेनू प्रविष्टि grub.cfg में इस तरह दिखती है :

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

चूंकि दोहरे उद्धरणों में "कुछ भी" शीर्षक के रूप में प्रदर्शित होता है, आप इसके साथ एक विभाजक नकली कर सकते हैं। Grub1 की तरह, Grub2 यह चाहता है कि linux कीवर्ड इसे वास्तविक मेनू प्रविष्टि के रूप में मानें, इसलिए सावधान रहें कि आप गलती से इसका चयन न करें।

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

दुर्भाग्य से, "कुछ भी" का मतलब कुछ भी नहीं है ; जब मैं यह परीक्षण कर रहा था तो मैंने डैश ("----------------") की एक लंबी स्ट्रिंग की कोशिश की और यह कभी काम नहीं किया। लेकिन यह ऊपर दिखाए गए डॉट्स के शॉर्ट स्ट्रिंग को पसंद करता है, इसलिए आप इसका उपयोग कर सकते हैं।

.....

अब, यह है कि एक विभाजक कैसे बनाया जाए। एक गुच्छा बनाने के लिए, और जहां आप उन्हें स्वचालित रूप से चाहते हैं, उन्हें रखने के लिए, आपको उन्हें /etc/grub.d में स्क्रिप्ट में जोड़ना होगा ।

इस उदाहरण के लिए, चलो grub.cfg के विभिन्न वर्गों के बीच एक साधारण विभाजक डालते हैं । यदि आप /etc/grub.d को देखते हैं, तो आप निम्न स्क्रिप्ट देखते हैं:

  • 00_header
  • 05_debian_theme
  • 10_linux - उबंटू गुठली और वसूली के लिए प्रविष्टियां
  • 20_memtest86 + - Memtest86 + के लिए प्रविष्टि
  • 30_os-prober - विंडोज और अन्य लिनक्स डिस्ट्रो के लिए प्रविष्टियां
  • 40_ कस्टम - डिफ़ॉल्ट रूप से कुछ भी नहीं; विशेष उपयोगकर्ता प्रविष्टियाँ यहाँ जा सकती हैं

हम एक नई स्क्रिप्ट बनाएंगे, विभाजक बनाएंगे , और उसमें निम्नलिखित को डालेंगे:

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

अब, उस स्क्रिप्ट को पहले विभाजक के लिए जगह में ले जाएँ, और इसे दूसरों के लिए जगह में लिंक करें। स्क्रिप्ट को क्रम में निष्पादित किया जाता है, इसलिए यदि आप चाहते हैं कि 10_linux से पहले आने वाला व्यक्ति इसे 09_सेपरेटर या कुछ और नाम दे ।

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

यदि आपके पास / / etc / default / grub में डिफ़ॉल्ट के रूप में एक विशिष्ट प्रविष्टि सेट है , तो आपको इसे अपडेट करने की आवश्यकता हो सकती है - Grub2 0 पर मेनू प्रविष्टियां गिनना शुरू करता है, और इनमें से प्रत्येक "विभाजक" एक वैध प्रविष्टि है, इसलिए वे भी गणना करते हैं। यदि आपकी पिछली डिफ़ॉल्ट प्रविष्टि 0 थी, और आपने इससे पहले एक विभाजक जोड़ा है, तो GRUB_DEFAULT को 1 में बदलना याद रखें

अब अपडेट-ग्रब चलाएं , और /boot/grub/grub.cfg की जांच करें - आपको वहां विभाजकों को देखना चाहिए। यदि आप करते हैं, तो रिबूट करें और उन्हें बाहर की जाँच करें।

....

यदि आप विभाजकों को कहीं और रखना चाहते हैं, तो अलग-अलग कर्नेल संस्करणों के बीच, सीधे 10_linux (या अन्य स्क्रिप्ट) को संपादित करने की आवश्यकता है , और विभाजक को जोड़ने के लिए उपयुक्त स्थान ढूंढें। आप ऊपर की स्क्रिप्ट से लाइनों का उपयोग कर सकते हैं; पहली #! / bin / sh लाइन को छोड़कर सब कुछ शामिल करें ।


यदि आप कुछ सुंदर चाहते हैं, तो ग्रब स्प्लैश चित्र या थीम का उपयोग करें। मुझे आपको उन विषयों पर एक रेनचेक देने की आवश्यकता है, लेकिन नीचे दिए गए संसाधनों की जांच करें।


संसाधन:

UbuntuForums पर दो बड़े Grub2 गाइड हैं जिन्हें मैंने जाना और प्यार किया है:

GNU ग्रब 2 एक और महान संसाधन है। उन्हें कर्म के ग्रब 2 ( पूर्ण प्रकटीकरण: मैंने उन्हें आज़माया नहीं है ) के लिए स्क्रिप्टिंग का एक सेट मिला है ।

Grub2 थीम पर हैकिंग के लिए Grub Wiki का थीम फॉर्मेट पेज होना आवश्यक है।


वाह, उत्तर के लिए धन्यवाद। कुछ सुविधाओं को देखने के लिए शर्म की बात यह इस संस्करण के लिए नहीं किया है। मैंने पहले ही एक विभाजक डालने की कोशिश की थी, यह काम नहीं किया क्योंकि मैंने इसे कोष्ठक के बीच खाली छोड़ दिया था। ऊपर वाला सब कुछ काम करता नजर आ रहा है। एक बार फिर धन्यवाद।
मालाबार

@ डी कनेक्टर - हाँ, कुछ चीजें हैं जो मुझे Grub1 के बारे में याद आती हैं, लेकिन कुल मिलाकर मुझे लगता है कि Grub2 का सुधार है। इसका अपना सीखने की अवस्था है। मुझे उम्मीद है कि पाठ मेनू की कीमत पर देवों ने Grub2 की चित्रमय क्षमताओं में अधिक प्रयास किया है, लेकिन शायद इस परियोजना के विकसित होते ही बदल जाएगा।
नीम हकीम क्विक्सोट

5

यदि इसका पहला वर्ण स्थान है, तो विभाजक डैश से बना हो सकता है। इसके अलावा, विभाजक अनुभाग के लिए लिनक्स कमांड का उपयोग करना आवश्यक नहीं है, आप इस तरह से किसी भी कमांड का उपयोग कर सकते हैं:

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

या चुपचाप लौटने के लिए भी "सच":

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

0

यदि आप अन्य कर्नेल का उपयोग नहीं करते हैं, तो आप उन्हें जो भी पैकेज मैनेजर इंटरफ़ेस सूट का उपयोग करके निकाल सकते हैं। यह स्वतः ही उन्हें grub.cfg से हटा देता है


मैं शायद ही कभी समस्या निवारण के लिए उनका उपयोग करता हूं, जब मैं वर्तमान स्थापना को खराब करने के लिए होता हूं। साथ ही, गुठली केवल एक उदाहरण था, मेरे पास 3 अन्य बूट करने योग्य विभाजन भी हैं जिन्हें मैं छिपाना चाहूंगा लेकिन फिर भी उन्हें उपलब्ध है।
मालाबार

(भ्रम से बचने के लिए। जब ​​मैंने कहा "छिपाने" का मेरा मतलब "विभाजन को छुपाना नहीं था", मेरा केवल यही अर्थ था "बूट मेन्यू से
रिस्पेक्टिव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.