GRUB এ ডিফল্ট কার্নেল সেট করুন


49

ডিফল্টরূপে কার্নেল GRUB2 লোড করা উচিত আমি কীভাবে তা চয়ন করতে পারি? আমি সম্প্রতি একটি লিনাক্স রিয়েলটাইম কার্নেল ইনস্টল করেছি এবং এখন এটি ডিফল্টরূপে লোড হয়। আমি নিয়মিত একটি ডিফল্ট লোড করতে চাই।

এখনও অবধি আমি কেবল ডিফল্ট ওএস বাছাই করতে পেরেছি .. এবং কিছু কারণে /boot/grub.cfgইতিমধ্যে ধরে নেওয়া হয়েছে যে আমি আরটি-কার্নেলটি লোড করতে এবং জেনেরিক লিনাক্স মেনু এন্ট্রিতে রাখতে চাই (আমার ক্ষেত্রে আর্ক লিনাক্স)।


2
grub2-set-default <শিরোনাম বা নম্বর>?
টালিজিন

1
তবে আমি কীভাবে নম্বরটি জানব? grub.cfgকেবলমাত্র ওএসগুলির সাথে সংখ্যার সাথে কার্নেলের সাথে নয়।
টমটম

কিছু ক্ষেত্রে এটি কাজ করে: Askubuntu.com/questions/216398/… আপনি এই ফাইলটির মাধ্যমে মেনুটির নামগুলি খুঁজে পেতে পারেন: /boot/grub/grub.cfg
টেকপস

উত্তর:


41

আমার মনে হয় বেশিরভাগ ডিস্ট্রিবিউশনগুলি এই মুহুর্তে উন্নত বিকল্পগুলির সাব মেনুতে অতিরিক্ত কার্নেলগুলি স্থানান্তরিত করেছে, কারণ টমটমকে তার আর্কের ক্ষেত্রে দেখা গেছে।

পূর্ববর্তী কার্নেলটি ডিফল্ট হিসাবে নির্বাচন করতে আমি আমার শীর্ষ স্তরের মেনু কাঠামোটি পরিবর্তন করতে চাইনি। আমি উত্তর এখানে পেয়েছি:

http://www.humans-enabled.com/2014/08/how-to-set-default-grub-kernel-boot.html

সংক্ষেপ:

1) $menuentry_idসাবমেনুটির জন্য শীর্ষস্থানীয় অনুসন্ধান করুন:

$ grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {

2) $menuentry_id_optionআপনি যে কার্নেলটি ব্যবহার করতে চান তার জন্য মেনু প্রবেশের সন্ধান করুন:

$ grep gnulinux /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {

3) আপনার বর্তমান ডিফল্ট গ্রাবটি মন্তব্য করুন /etc/default/grubএবং এটিকে সাব-মেনুতে প্রথম $menuentry_id_optionধাপ থেকে এবং দ্বিতীয়টি $menuentry_id_optionধাপে নির্বাচিত কার্নেল দ্বারা পৃথক করুন >

আমার ক্ষেত্রে পরিবর্তিতটি GRUB_DEFAULTহ'ল:

#GRUB_DEFAULT=0

GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"

4) পরিবর্তনগুলি করতে আপডেট গ্রাব। ডেবিয়ানদের জন্য এটি এমনভাবে করা হয়:

$ sudo update-grub

সম্পন্ন. এখন আপনি যখন বুট করবেন, উন্নত মেনুতে একটি নক্ষত্রযুক্ত হওয়া উচিত এবং আপনার নির্বাচিত কার্নেলটি বুট করা উচিত। আপনি uname দিয়ে এটি নিশ্চিত করতে পারেন।

$ uname -a
Linux NAME 4.18.0-0.bpo.1-amd64 #1 SMP Debian 4.18.0-0 (2018-09-13) x86_64 GNU/Linux

একে একে সাম্প্রতিক কার্নেলের সাথে পরিবর্তন করা যেমন নতুন লাইনটি মন্তব্য করা এবং উদ্বেগজনক #GRUB_DEFAULT=0, তারপরে পুনরায় কাজ করার মতোই সহজ update-grub


31

2 ঘন্টা লড়াই করার পরে, আমি এটি অর্জনের জন্য আরও একটি সহজ উপায় খুঁজে পেয়েছি। আমি শুধু আরটিএফএম। ;)

/ Etc / default / grub এ দুটি লাইন যুক্ত করুন

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

কি sudo update-grub, রিবুট করুন, আপনার GRUB মেনু ঢোকা এবং যেটা মেনু বা সাবমেনু আইটেম প্রয়োজন তা নির্বাচন করুন। পছন্দটি সংরক্ষণ করা হবে এবং পরের বার আপনার কম্পিউটার এটি স্বয়ংক্রিয়ভাবে বুটে যাবে।


2
চমৎকার! খুবই সোজা!
Egor Skriptunoff

ওহ, এত সহজ। ধন্যবাদ.
ব্যবহারকারী 207863

21

মন্তব্যে উল্লিখিত হিসাবে, আপনি grub-set-default Xকমান্ডটি ব্যবহার করে বুট করার জন্য ডিফল্ট কার্নেলটি সেট করতে পারেন , যেখানে আপনি বুট করতে চান সেই কার্নেলের সংখ্যাটি এক্স কিছু বিতরণে আপনি /etc/default/grubফাইলটি সম্পাদনা করে এবং সেটিংস করে GRUB_DEFAULT=X, এবং তারপরে চালিয়েও এই নম্বরটি সেট করতে পারেন update-grub

নম্বরটি বুট চলাকালীন GRUB মেনুতে প্রদর্শিত কার্নেল / কার্নেল সেটিংসের একটি অ্যারের সূচক হয়, 0 টি প্রথম (সর্বাধিক সর্বাধিক) এন্ট্রি থাকে। আপনি সাধারণত menuentryলাইনগুলি সন্ধান করে সঠিক সংখ্যাটি সন্ধান করতে /boot/grub/grub.cfgপারেন:

grep menuentry /boot/grub/grub.cfg

GRUB বুট মেনুতে প্রদর্শিত নামের সাথে আপনি তালিকাভুক্ত প্রতিটি কার্নেল দেখতে পাবেন। প্রথমটির মান 0, দ্বিতীয়টি 1 এবং আরও অনেক কিছু।


1
ফেডোরা 21 এ এটি /boot/grub2/grub.cfg
কিছু কিছু 0

3
এটি আমার জন্য কাজ করছে না। আমার ইনস্টলেশনের সর্বশেষতম কার্নেলটি 4.4.0-64-জেনেরিক (মেনুয়েণ্ট্রি 0) তবে আমি চাই 4.4.0-59-জেনেরিক (মেনুয়েণ্ট্রি 9) ডিফল্ট বুট কার্নেল হোক। আমি দৌড়ে এসে grub-set-default 9তখন আবার grub-updateরিবুট করেছিলাম । আমি ডিফল্ট কার্নেল দিয়ে গ্রাব বুট করতে দিয়েছিলাম এবং এটি এখনও 4.4.0-64-জেনেরিকের সাথে বুট হয় । আমি এডিটিং চেষ্টা করে /etc/default/grubসেট করে GRUB_DEFAULT=9দৌড়ে এসেছি grub-update। রিবুট করার পরে কিছুই পরিবর্তন হয় না, সিস্টেমটি এখনও 4.4.0-64-জেনেরিকের সাথে বুট করে । হয়তো আমি কিছু মিস করেছি, কেউ কি আমাকে সাহায্য করতে পারেন?
দ্রোণাচার্য

এটি আমার পক্ষেও কার্যকর হয়নি। আমি এখানে বর্ণিত অযাচিত কার্নেলটি মুছে ফেলেছি
লুইস

8

খালি grep 'menuentry' /boot/grub/grub.cfgকার্নেল বা ওএস সংস্করণের সাথে সম্পর্কিত নয় এমন অতিরিক্ত এন্ট্রিগুলি কেবল তালিকাবদ্ধ করে। উদাহরণস্বরূপ, এটি তালিকাবদ্ধ করে

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option

আমি সেই ফাইলটি অনুসন্ধানের পদ্ধতিতে একটি ছোট উন্নতির প্রস্তাব করতে চাই: ব্যবহার করুন awk

$ awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg                                            
0****menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-86df21bf-d95f-435c-9292-273bdbcba056' {
1****   menuentry 'Ubuntu, with Linux 3.19.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
2****   menuentry 'Ubuntu, with Linux 3.19.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {
3****   menuentry 'Ubuntu, with Linux 3.13.0-62-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
4****   menuentry 'Ubuntu, with Linux 3.13.0-62-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {

কমান্ড বেলো এবং এর আউটপুট সহ, আপনি awkকোডটি মিলিয়ে দেখতে পারেন আসল ওএস সংস্করণটি, এবং /etc/default/grubফাইলের পরে আপনি যে নম্বরটি ব্যবহার করতে পারেন তা আপনাকে দিতে পারে ।

/etc/default/grubহাতে হাতে ফাইল সম্পাদনা করার পাশাপাশি , আমি ব্যবহার করার পরামর্শ দিই sed। কমান্ড বেলোতে, X টি প্রতিস্থাপন করুন যথাযথ নম্বর সহ আপনি উপরের awk কমান্ড থেকে পেয়েছেন:

sudo sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=X/g' /etc/default/grub; sudo update-grub


2
এটি কোনও উত্তর নয়। এটি একটি মতামত মত পড়ে। একটি উত্তরে বলা উচিত, "GRUB এ এটিই ডিফল্ট এন্ট্রি সেট করতে হয়", "আমাকে অন্য উত্তরে একটি সংযোজন করতে দেওয়া উচিত নয়"। আপনি এটিকে সহজেই একটি যথাযথ উত্তরে সম্পাদনা করতে পারেন তবে গ্রেপের পরিবর্তে অ্যাজকে ব্যবহার সম্পর্কে jkt123 এর উত্তরের উপর কেবল একটি মন্তব্য করা বুদ্ধিমান হতে পারে।
আলেকসান্দ্র ডাবিনস্কি

2

jkt123 এর আমার অনুমান বেশিরভাগ বিতরণের জন্য কাজ করবে। তবে আর্চ লিনাক্সের জন্য এটি কাজ করে না, অন্তত আমার যে প্যাকেজগুলি পাওয়া যায় তা দিয়ে নয়।

সূচকগুলি আপনি কেবল grub-set-defaultপ্রধান মেনু এন্ট্রিগুলির সাথে মিল রেখে সেট করতে পারেন । কার্নেল বিকল্পগুলি একটি সাবমেনুতে রয়েছে। সুতরাং হয় আপনি কার্নেল এন্ট্রি সাবমেনু থেকে মুখ্য মেনুতে সরান অথবা আপনি এন্ট্রি সাবমেনু তালিকার উপরে রেখে সাবমেনু নির্বাচন করুন।

আমার গ্রাব মেনু

  • আর্চ লিনাক্স
  • আর্চ লিনাক্সের জন্য উন্নত বিকল্প
    • কার্নেল ঘ
    • কার্নেল 2
  • উইন্ডোজ

কার্নেল 2 বুট করতে সক্ষম হতে আপনাকে এটিকে কার্নেল 1 দিয়ে অদলবদল করতে হবে বা আপনি এটি আর্ম লিনাক্স বা উইন্ডোজের সমান স্তরে সাবমেনুর বাইরে রেখে দিতে হবে। এবং তারপরে মূল মেনু সূচকের একটিতে ডিফল্ট নম্বর সেট করুন। উদাহরণস্বরূপ উপরের মেনুতে "0" বুট "আর্চ লিনাক্স" এবং "1" বুট কার্নেল 1।

শ্রেণিবিন্যাস ও অদলবদল পরিবর্তন করতে, আপনি যে প্রবেশটি /boot/grub/grub.cfgসরাতে চান সেটি খুলুন এবং সরিয়ে দিন। একটি এন্ট্রি এর মত দেখতে পারে

menuentry 'ENTRY NAME'
   ... some code ...
}

তারপরে আপনার পরিবর্তনগুলি প্রয়োগ করতে হবে। আমার ক্ষেত্রে grub-mkconfig। তবে এটি সিস্টেম থেকে অন্য সিস্টেমে পরিবর্তিত হতে পারে।


0

সম্প্রতি CentOS-6.6 grub.conf দেখে মনে হচ্ছে ডিফল্ট নির্বাচন পরিবর্তন করতে ম্যানুয়ালি এডিট করা যেতে পারে:

default=1
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

0

দেবিয়ান স্ট্রেচ:

কনফিগারেশন ফাইলগুলির সাথে ঘোরাঘুরি করার পরিবর্তে, একটি ফোল্ডার তৈরি করুন /noot(এটি যা চান তা কল করুন), ম্যানুয়াল কনফিগারেশন এবং সিস্টেম ফাইলগুলির সাথে আপনার পছন্দসই কর্নেলটি রেখে দিন এবং /bootএই নতুন ফোল্ডারে রেখে দিন to

চালান update-grub

/bootআপনার কার্নেল সংস্করণ এবং ম্যাচিংয়ের কনফিগারেশন এবং সিস্টেম ফাইলগুলি এখনও রয়েছে এমন ফোল্ডারটি ডাবল পরীক্ষা করে দেখুন (আপনি যদি না থাকা উচিত এমন কিছু অনুলিপি করেছেন) এবং পুনরায় বুট করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.