- পার্টিশন পরিবর্তন, অন্যান্য সিস্টেম ইনস্টলেশন বা আপডেটের পরে প্রায়শই GRUB ভেঙে যায়, তবে এটি প্রায় সবসময় পুনরুদ্ধারযোগ্য।
- GRUB কনসোল নিজেই আপনাকে /boot/grub সনাক্ত করতে, কার্নেলটি ম্যানুয়ালি লোড করতে এবং LiveCD এর উপর নির্ভর না করেই বুট করতে দেয়।
- সিস্টেমটি শুরু হয়ে গেলে, ব্যর্থতার পুনরাবৃত্তি রোধ করার জন্য Linux থেকে GRUB পুনরায় ইনস্টল এবং আপডেট করা অপরিহার্য।
- আরও গুরুতর ক্ষেত্রে, LiveUSB, chroot এবং Boot-Repair এর মতো সরঞ্জাম ব্যবহার করে আরও গভীর মেরামত করা সম্ভব।
আপনি যদি কখনও আপনার কম্পিউটার চালু করার পর অপারেটিং সিস্টেমের লোগোর পরিবর্তে একটি কালো স্ক্রিন এবং "error: no such device" বা "grub rescue "-এর মতো কোনো বার্তা দেখে থাকেন, তাহলে আপনি ঠিকই বুঝতে পারবেন যে ব্যাপারটা কতটা আতঙ্কজনক। হঠাৎ করেই মনে হয় যেন আপনি আপনার পুরো সিস্টেমটিই হারিয়ে ফেলেছেন, আপনাকে ফরম্যাট করতে হবে এবং আপনার ডেটা ঝুঁকির মুখে... কিন্তু বাস্তবতা হলো, বেশিরভাগ ক্ষেত্রেই এমন কঠোর পদক্ষেপ না নিয়েই এটি ঠিক করা সম্ভব।
সুখবরটি হলো যে, যদিও এটিকে একটি গুরুতর সমস্যা বলে মনে হতে পারে, ডিস্কের ক্ষতি মারাত্মক না হলে লাইভসিডি ছাড়াই সরাসরি গ্রাব কনসোল ব্যবহার করে গ্রাব মেরামত করা সম্পূর্ণ সম্ভব। সামান্য ধৈর্য, কয়েকটি সঠিকভাবে টাইপ করা কমান্ড এবং নেপথ্যে কী ঘটছে তা বোঝার মাধ্যমে, আপনি আপনার লিনাক্স সিস্টেম রিস্টার্ট করতে, বুট ম্যানেজার পুনরায় ইনস্টল করতে এবং ভবিষ্যতের রিবুটের জন্য এটিকে প্রস্তুত রাখতে পারবেন।

আমরা দ্রুত টাইপ করা শুরু করার আগে, আপনার কম্পিউটার বুট করার ক্ষেত্রে GRUB-এর ভূমিকা বোঝা জরুরি । GRUB 2 হলো বেশিরভাগ আধুনিক GNU/Linux ডিস্ট্রিবিউশনে ব্যবহৃত বুট ম্যানেজার: এটি সাধারণত MBR-এ বা পার্টিশনের শীর্ষে ইনস্টল করা হয় এবং এর দায়িত্ব হলো উপলব্ধ অপারেটিং সিস্টেমগুলোর মেনু প্রদর্শন করা ও উপযুক্ত প্যারামিটারসহ লিনাক্স কার্নেল লোড করা।
এই বুট ম্যানেজারটি আপনার ইনস্টলেশনের /boot/grub ডিরেক্টরিতে থাকা ফাইলগুলির উপর নির্ভর করে : যেমন মডিউল, কনফিগারেশন ফাইল, কার্নেল ইমেজ, initrd, ইত্যাদি। যদি এই ডিরেক্টরিটি অ্যাক্সেসযোগ্য না থাকে, স্থানান্তরিত হয়, নষ্ট হয়ে যায়, বা GRUB-এর অলক্ষ্যে ডিস্ক পরিবর্তন করা হয়, তাহলে আপনি "no such device," "unknown filesystem," বা সেই ভয়ংকর grub rescue> প্রম্পটের মতো ত্রুটি দেখতে শুরু করবেন ।
ম্যানেজার বিকল হওয়ার সাধারণ কারণগুলো বেশ সুপরিচিত: লিনাক্সের পরে উইন্ডোজ ইনস্টল করে MBR ওভাররাইট করা , GParted বা অনুরূপ টুল ব্যবহার করে পার্টিশন নিয়ে নাড়াচাড়া করা (যেমন আকার পরিবর্তন, সরানো, মুছে ফেলা বা নতুন পার্টিশন তৈরি করা), অথবা এমন কোনো কার্নেল বা সিস্টেম আপডেট যা কোনো কারণে GRUB কনফিগারেশনে অসামঞ্জস্যপূর্ণ রেফারেন্স রেখে যায়।
এই সবকিছুর পাশাপাশি, কিছু ব্যবহারকারী /boot একটি আলাদা পার্টিশনে ইনস্টল করতে পছন্দ করেন , যা উন্নত কনফিগারেশন বা এমন পরিবেশে একটি প্রচলিত অভ্যাস যেখানে ডিস্কের বাকি অংশ এনক্রিপ্ট করা হবে। এই ক্ষেত্রে, সেই পার্টিশন বা তার ডিস্ক নম্বরে কোনো পরিবর্তন হলে GRUB তার নিজের মডিউল এবং কনফিগারেশন খুঁজে পেতে অক্ষম হতে পারে।
GRUB ত্রুটির ধরণ এবং কনসোল মোড
যখন GRUB বিকল হয়, তখন এটি সাধারণত এমনি এমনি অদৃশ্য হয়ে যায় না: এটি সাধারণত আপনাকে কোনো এক ধরনের কনসোল বা রেসকিউ মেনুতে নিয়ে যায় , যা ব্যবহার করে আপনি ম্যানুয়ালি সিস্টেমটি বুট করতে পারেন। সমস্যার তীব্রতা এবং আপনার ইনস্টল করা GRUB-এর সংস্করণের উপর নির্ভর করে এর আচরণে সামান্য ভিন্নতা দেখা যায়।
অনেক ডিস্ট্রিবিউশনে আপনি দেখতে পাবেন যে সিস্টেমটি GRUB লোড করার চেষ্টা করে এবং শেষ পর্যন্ত ক্র্যাশ করে। "grub rescue>" লেখা সহ একটি প্রম্পটএই মোডটি বেশ সীমিত, তবে এটি আপনাকে কিছু কী কমান্ড চালু করতে দেয় যেমন ls, set o insmod, সঠিক পার্টিশনটি সনাক্ত করতে এবং লিনাক্স মডিউলটি লোড করতে জোর করার জন্য যথেষ্ট।
অন্যান্য ক্ষেত্রে, আপনি সাধারণ GRUB মেনু (অপারেটিং সিস্টেমের তালিকা) দেখতে পাবেন, কিন্তু বুট করার চেষ্টা ব্যর্থ হবে, অথবা মেনুটি বিকৃতভাবে প্রদর্শিত হবে। সেখান থেকে, আপনি 'c' কী চেপে সম্পূর্ণ GRUB কমান্ড লাইনে প্রবেশ করতে পারেন, যা রেসকিউ মোডের চেয়ে অনেক বেশি শক্তিশালী এবং এতে আরও বিস্তৃত পরিসরের কমান্ড উপলব্ধ থাকে।
পুরোনো ইনস্টলেশনগুলিতে, কিছু সিস্টেম এখনও GRUB Legacy (GRUB 2 নয়) ব্যবহার করে, যেমন CentOS 5/6-এর নির্দিষ্ট কিছু সংস্করণ বা অন্যান্য পুরোনো ডিস্ট্রিবিউশন। এই ক্ষেত্রে, কমান্ড সিনট্যাক্স সামান্য পরিবর্তিত হয়, কিন্তু মূল ধারণাটি একই: /boot ডিরেক্টরিটি খুঁজে বের করা, GRUB-কে তার রুট ডিরেক্টরি কোথায় তা জানিয়ে দেওয়া, এবং ম্যানুয়ালি কার্নেল ও initrd লোড করা।
রেসকিউ মোড ব্যবহার করে লাইভসিডি ছাড়া GRUB কীভাবে মেরামত করবেন
যখন কম্পিউটার সঠিকভাবে কনফিগার করা বুট ম্যানেজার খুঁজে পায় না, তখন প্রায়শই “Error: no such device” এর মতো একটি বার্তার পরে “grub rescue>” দেখা যায় । এর মানে হলো, GRUB চলতে সক্ষম হয়েছে, কিন্তু এর কনফিগারেশন ফাইল বা প্রয়োজনীয় মডিউলগুলো কোথায় অবস্থিত তা এটি জানে না।
এই ক্ষেত্রে, আপনার কাছে একটি মিনি কমান্ড ইন্টারপ্রেটার থাকে যা আপনাকে পার্টিশনগুলো খুঁজে বের করতে, /boot/grub সনাক্ত করতে এবং ম্যানুয়ালি কার্নেল লোড করতে সাহায্য করে । প্রক্রিয়াটি দীর্ঘ মনে হতে পারে, কিন্তু এটি বেশ পদ্ধতিগত।
উপলব্ধ ডিস্ক এবং পার্টিশনের তালিকা তৈরি করুন
প্রথম ধাপ হলো আপনার মেশিনে GRUB কোন কোন ডিস্ক এবং পার্টিশন দেখতে পাচ্ছে তা খুঁজে বের করা। এটি করার জন্য, ` grub rescue> ` প্রম্পটে টাইপ করুন:
ls
কমান্ডটি অনুরূপ কিছু প্রদর্শন করবে (hd0) (hd0,1) (hd0,2) (hd0,3) (hd1) (hd1,1) (hd1,2)। প্রতি hdX একটি ভিন্ন হার্ড ড্রাইভ প্রতিনিধিত্ব করে: hd0 হবে প্রথম ভৌত ডিস্ক, দ্বিতীয়টি hd1ইত্যাদি। কমা সহ ভেরিয়েন্টগুলি, যেমন (hd0,1), সেই ডিস্কের সংখ্যাযুক্ত পার্টিশনগুলি নির্দেশ করে।
আপনার কম্পিউটারের উপর নির্ভর করে, আপনি (hd0)-এর মতো দুই বা তিনটি পার্টিশন সহ একটি একক ডিস্ক দেখতে পারেন, অথবা একাধিক ডিস্ক দেখতে পারেন: (hd0,1) (hd1,1) (hd1,5) (hd2,1) (hd3,1) । যাই হোক না কেন, এখন লক্ষ্যটি সহজ: প্রতিটি পার্টিশন খুলুন যতক্ষণ না আপনি /boot/grub ডিরেক্টরি ধারণকারী পার্টিশনটি খুঁজে পান ।
/boot/grub ব্যবহার করে পার্টিশনটি সনাক্ত করুন
একটি পার্টিশনের বিষয়বস্তু পরীক্ষা করার জন্য, আমরা আবার ব্যবহার করি ls কিন্তু পার্টিশনের নাম এবং একটি ট্রেলিং স্ল্যাশ যোগ করা হচ্ছে। উদাহরণস্বরূপ: বিষয়বস্তু পরীক্ষা করা এটি আপনাকে সঠিক কিনা তা সনাক্ত করতে সাহায্য করবে।
ls (hd0,1)/
যদি সেই পার্টিশনে GRUB-এর চেনা কোনো ফাইল সিস্টেম থাকে, তবে এটি একটি ডিরেক্টরি তালিকা প্রদর্শন করবে: আপনি bin, home, boot, root ইত্যাদির মতো নাম দেখতে পাবেন। সেক্ষেত্রে, সিস্টেমটি ইনস্টল করার সময় আপনার যে কাঠামো ছিল, তার উপর নির্ভর করে ওই পার্টিশনটি আপনার রুট (/) অথবা /boot থেকে একটি আলাদা পার্টিশন হতে পারে। যদি তালিকাটি GRUB-এর চেনা কোনো ফাইল সিস্টেম নির্দেশ করে , তবে আপনি সঠিক পথেই আছেন।
পূর্ববর্তী কমান্ডটি চালানোর পর যদি আপনি ' boot' নামের কোনো ডিরেক্টরি দেখতে পান , তাহলে আপনি আরও গভীরে গিয়ে পরীক্ষা করে দেখতে পারেন যে এর মধ্যে 'grub' ফোল্ডারটি আছে কি না:
ls (hd0,1)/boot/grub
যখন আপনি linux.mod-এর মতো মডিউল বা অন্যান্য সাধারণ GRUB ফাইলসহ একটি ফাইলের তালিকা খুঁজে পাবেন , তার মানে আপনি আপনার কাঙ্ক্ষিত পার্টিশনটি খুঁজে পেয়েছেন। যদি কিছুই না আসে বা কোনো ত্রুটি দেখা দেয়, তাহলে সঠিক পার্টিশনটি খুঁজে না পাওয়া পর্যন্ত অন্যান্য পার্টিশনগুলোতে চেষ্টা করতে থাকুন: ls (hd0,2)/ , ls (hd1,1)/ , ইত্যাদি।
GRUB কে বলুন আপনার ফাইলগুলি কোথায় অবস্থিত।
সঠিক পার্টিশনটি শনাক্ত হয়ে গেলে, GRUB-কে জানাতে হবে এর মডিউল এবং কনফিগারেশন কোথায় অবস্থিত । ধরা যাক, আমরা জানতে পেরেছি যে /boot (hd0,1)-এ রয়েছে। পরবর্তী ধাপ হলো প্রিফিক্স সেট করা:
set prefix=(hd0,1)/boot/grub
এই নির্দেশের মাধ্যমে, সিস্টেম ম্যানেজার জানতে পারবে যে তার সাপোর্ট ফাইলগুলি সেই পথে অবস্থিত। কার্নেল এবং বাকি সিস্টেম ডেটা খুঁজে পেতে কোন রুট পার্টিশন ব্যবহার করতে হবে তাও আমাদের জানাতে হবে:
set root=(hd0,1)
জোড়াটি সঠিকভাবে লেখা গুরুত্বপূর্ণ। (ডিস্ক, পার্টিশন) এবং সর্বদা ট্রেলিং স্ল্যাশ ব্যবহার করুন / যখন আমরা বিষয়বস্তু তালিকাভুক্ত করি lsএছাড়াও মনে রাখবেন যে GRUB কনসোল কীবোর্ড লেআউট সাধারণত আমেরিকান হয়, তাই বন্ধনী এবং স্ল্যাশ কীগুলি আপনি যেটিতে মুদ্রিত দেখছেন তার সাথে মিল নাও থাকতে পারে। একটি ভাল অনুশীলন হল নিশ্চিত করা যে উপসর্গ সেট করুন মডিউল লোড করার চেষ্টা করার আগে সঠিকভাবে।
GRUB মডিউল এবং Linux কার্নেল লোড করুন
প্রিফিক্স কনফিগার করা হয়ে গেলে, পরবর্তী ধাপ হলো GRUB লিনাক্স মডিউলটি জোরপূর্বক লোড করা। অনেক গাইডে আপনি এইরকম কিছু দেখতে পাবেন:
insmod (hd0,1)/boot/grub/linux.mod
অনেক আধুনিক সিস্টেমে, উপযুক্ত মডিউল হতে পারে normal.mod সম্পর্কে অথবা অন্যদের জন্য, কিন্তু ধারণাটি একই: যদি আপনি সঠিক নাম সম্পর্কে নিশ্চিত না হন, তাহলে কমান্ডটি ব্যবহার করুন ls (hd0,1)/boot/grub ফাইলগুলি তালিকাভুক্ত করতে, আপনার GRUB সংস্করণের উপর ভিত্তি করে উপযুক্ত মডিউলটি নির্বাচন করুন। এর কার্যকারিতা insmod এর জন্য বুট প্রক্রিয়া চালিয়ে যাওয়ার জন্য প্রয়োজনীয় মডিউল লোড করা প্রয়োজন। অনুগ্রহ করে মনে রাখবেন যে insmod এটি নির্দেশ যা আসলে লোডারের মধ্যে মডিউলটি অন্তর্ভুক্ত করে।
পরবর্তী আপনি করতে হবে লিনাক্স কার্নেল ইমেজ লোড করুন ফাইল সিস্টেমের মধ্যে এর পথ নির্দেশ করে। স্টার্টআপের উদাহরণ: linux /boot/vmlinuz-4.13.3-generic root=/dev/sda1
আপনার মেশিনে সঠিক কার্নেলের নাম ভিন্ন হবে (এটি হতে পারে vmlinuz-2.6.32-23-জেনেরিক, vmlinuz-6.1.0-10-amd64 সম্পর্কে অথবা অন্য কোন সংস্করণ)। আপনি আবার ব্যবহার করতে পারেন, ls /boot আপনার কাছে কোন ছবিগুলো আছে তা দেখতে এবং সাম্প্রতিকতমটি বেছে নিতে। গুরুত্বপূর্ণ বিষয় হল প্যারামিটারটি ভুলে যাওয়া নয়। রুট=/ডেভ/এসডিএক্সএন সঠিক রুট পার্টিশন সহ।
GRUB এবং Linux-এর নামকরণের রীতির মধ্যেকার সমতা নিয়ে বিভ্রান্তি এড়াতে, মনে রাখবেন যে hd0 হলো /dev/sda, hd1 হলো /dev/sdb, hd2 হলো /dev/sdc , ইত্যাদি। পার্টিশন নম্বরের ফরম্যাটও পরিবর্তিত হয়: (hd0,1) হলে হয় /dev/sda1, (hd1,2) হলে হয় /dev/sdb2, ইত্যাদি।
কিছু ক্ষেত্রে, কার্নেল ইমেজ লোড করার পর, আপনার ডিস্ট্রিবিউশনের প্রয়োজন হলে initrd ইমেজ (প্রাথমিক র্যাম ডিস্ক) লোড করার পরামর্শ দেওয়া হয়। সাধারণ কমান্ডটি হবে:
initrd /initrd.img
কার্নেলের মতো, আপনি কোন initrd ফাইলগুলি উপলব্ধ তা পরীক্ষা করতে পারেন ls / o ls /boot এবং ব্যবহার করুন TAB কী নামগুলি স্বয়ংক্রিয়ভাবে সম্পূর্ণ করতে এবং বানান ত্রুটি এড়াতে।
সিস্টেম বুট করুন এবং লিনাক্স থেকে GRUB পুনরায় ইনস্টল করুন
কার্নেল এবং যেকোনো initrd লোড হয়ে গেলে, আপনাকে শুধু GRUB-কে বুট প্রক্রিয়া শুরু করতে বলতে হবে । এটি করার জন্য, কেবল টাইপ করুন:
শুরু করা: boot
সবকিছু ঠিকঠাক থাকলে, কার্নেল নিয়ন্ত্রণ নেবে, অপারেটিং সিস্টেম স্বাভাবিকভাবে বুট হবে এবং আপনি আপনার লিনাক্স সিস্টেমে লগ ইন করতে পারবেন। এই পর্যায়ে, আপনি কোনো লাইভসিডি ছাড়াই পরিস্থিতি সামাল দিতে সক্ষম হবেন, কিন্তু এখনও একটি গুরুত্বপূর্ণ পদক্ষেপ বাকি আছে: পরবর্তী রিবুটে যাতে এটি আবার নষ্ট না হয়, সেজন্য GRUB পুনরায় ইনস্টল করা ।
সিস্টেমের ভিতরে প্রবেশ করার পর, সুপারইউজার সুবিধা সহ একটি টার্মিনাল খুলুন (রুট বা ব্যবহার করে) sudo) এবং চালান: grub-install /dev/sdX
এখানে /dev/sdX হলো সেই ডিস্ক (পার্টিশন নয়) যেখানে আপনি বুট ম্যানেজারটি রাখতে চান, উদাহরণস্বরূপ /dev/sda অথবা /dev/sdb যদি আপনি অন্য কোনো ডিস্কে থাকেন। মনে রাখবেন যে, এখানে পার্টিশন নম্বর উল্লেখ করা উচিত নয়: এই কমান্ডটি বুট ম্যানেজারকে সম্পূর্ণ ডিস্কের MBR বা বুট এরিয়াতে লিখে দেয়।
অনেক ডেবিয়ান- বা উবুন্টু-ভিত্তিক ডিস্ট্রিবিউশনে, GRUB কনফিগারেশন ফাইলটি পুনরায় তৈরি করার জন্য জোরালোভাবে সুপারিশ করা হয় , যাতে এটি ইনস্টল করা সমস্ত সিস্টেমকে সঠিকভাবে সনাক্ত করতে পারে। আপনি এটি করতে পারেন:
চালান: update-grub o update-grub2
এবং, আপনি যদি প্রাথমিক বুট ইমেজটিও আপডেট করতে চান, তাহলে নিম্নলিখিত কমান্ড দিয়ে initramfs আপডেট করুন :
আদেশ: update-initramfs -u
অন্যান্য ক্ষেত্রে, GRUB-এর সমস্যাটি এতটা গুরুতর নয় এবং আপনি বুট মেনুটি দেখতেও পান , কিন্তু কিছু সিস্টেম বুট হয় না, কোনো নির্দিষ্ট এন্ট্রি নির্বাচন করার সময় একটি ত্রুটি দেখা দেয়, অথবা আপনার কেবল সন্দেহ হয় যে মেনুটি ভুলভাবে কনফিগার করা হয়েছে।
এই ক্ষেত্রে, কম্পিউটার চালু করার পর যখন আপনি GRUB মেনুটি দেখতে পাবেন, তখন আপনি স্বয়ংক্রিয় বুট কাউন্টডাউন বন্ধ করতে ডিরেকশন অ্যারো (উপর বা নিচের) চাপতে পারেন এবং তারপর সম্পূর্ণ কমান্ড লাইন অ্যাক্সেস করতে 'c' কী চাপতে পারেন।
সেই উন্নত কনসোল থেকে, কমান্ডগুলি মূলত একই রকম। রেসকিউ মোডের তুলনায়, কিন্তু সিস্টেমটি পরিদর্শন করার জন্য আপনার কাছে আরও সরঞ্জাম থাকবে। উদাহরণস্বরূপ, আপনি ব্যবহার করতে পারেন ls ডিস্ক এবং পার্টিশন তালিকাভুক্ত করতে, set GRUB পরিবেশ ভেরিয়েবল দেখতে এবং সংশোধন করতে, insmod অতিরিক্ত মডিউল বা এমনকি কমান্ড লোড করতে cat টেক্সট ফাইলের বিষয়বস্তু পড়ার জন্য।
একই স্কিম অনুসরণ করে, আপনি প্রথমে নির্ধারণ করবেন যে আপনার কোন ডিস্ক এবং পার্টিশন আছে:
ls
এবং আপনার পার্টিশন টেবিলটি MBR (msdos) নাকি GPT, এবং কম্পিউটারে কতগুলো ডিস্ক আছে তার উপর নির্ভর করে আপনি (hd0) (hd0,msdos1) (hd0,msdos5) অথবা (hd0,1) (hd1,1) (hd1,5) (hd2,1) এই ধরনের একটি আউটপুট দেখতে পাবেন।
তারপর আপনি প্রতিটি পার্টিশন পরীক্ষা করবেন যেমন কমান্ড দিয়ে:
ls (hd0,msdos1)/
যতক্ষণ না আপনি বুট ডিরেক্টরি এবং এর মধ্যে গ্রাব ফোল্ডারটি খুঁজে পান। একবার শনাক্ত হয়ে গেলে, আপনি নিম্নলিখিত কমান্ড ব্যবহার করে প্রিফিক্স এবং রুট সেট করার প্রক্রিয়াটি পুনরাবৃত্তি করবেন :
set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)
সেখান থেকে, আপনি /boot এর বিষয়বস্তু তালিকাভুক্ত করে উপলব্ধ কার্নেলগুলি সন্ধান করবেন:
/বুট তালিকা: ls /boot
এবং আপনি লোড করার জন্য তাদের মধ্যে একটি বেছে নেবেন:
linux /boot/vmlinuz-6.1.0-10-amd64 root=/dev/sda1
আপনার নির্দিষ্ট পরিস্থিতি অনুযায়ী কার্নেল সংস্করণ এবং রুট পার্টিশন পরিবর্তন করুন। ডিস্ক ম্যাপিংগুলো মনে রাখবেন: hd0 → /dev/sda, hd1 → /dev/sdb, hd2 → /dev/sdc , ইত্যাদি। পাথ এবং ফাইলের নাম স্বয়ংক্রিয়ভাবে পূরণ করতে আপনি TAB কী ব্যবহার করতে পারেন।
অবশেষে, প্রয়োজনে আপনি initrd লোড করবেন এবং কমান্ডটি কার্যকর করবেন নৌকা সিস্টেমটি চালু করতে। লগ ইন করার পর, পূর্ববর্তী দৃশ্যকল্পের মতোই কাজটি করতে হবে: ডিস্কে GRUB পুনরায় ইনস্টল করুন এবং এর কনফিগারেশন আপডেট করুন ব্যবহার grub-install /dev/sda y update-grub.
GRUB Legacy সহ সিস্টেমে GRUB মেরামত করা হচ্ছে
যদিও বর্তমানে বেশিরভাগ ডিস্ট্রিবিউশন GRUB 2 গ্রহণ করেছে, তবুও আপনি এখনও পুরানো মেশিন বা নির্দিষ্ট সিস্টেম খুঁজে পেতে পারেন যেগুলো GRUB Legacy ব্যবহার করে । এই ক্ষেত্রে ইন্টারফেসটি কিছুটা ভিন্ন, কিন্তু মূল ধারণাটি একই থাকে: আপনি একটি ইন্টারেক্টিভ বুটলোডার শেল ব্যবহার করে সিস্টেমটি পুনরায় চালু করতে পারেন।
শুরু করার সময়, এই ক্লাসিক GRUB সাধারণত অনুমতি দেয় আপনার কমান্ড লাইন অ্যাক্সেস করুন একটি নির্দিষ্ট কী টিপে (প্রায়শই কী) c বা চাবি e (এন্ট্রি সম্পাদনা করতে)। প্রম্পটে একবার, আপনার কাছে কমান্ড থাকবে যেমন find যা বিশেষভাবে কার্যকর।
উদাহরণস্বরূপ, যদি আপনি /boot ডিরেক্টরিটি খুঁজে বের করতে চান যেখানে কার্নেল ইমেজ এবং initrd গুলো থাকে, তাহলে আপনি এটি ব্যবহার করতে পারেন:
কমান্ড খুঁজুন: find /boot/grub/stage1 অথবা অনুরূপ রুট
কিনা তার উপর নির্ভর করে /boot একটি পৃথক পার্টিশন অথবা এটি মূলের মধ্যে থাকে, তাহলে পথটি হবে /boot বা সহজভাবে / অন্যান্য সাবফোল্ডার সহ। যখন আপনি সঠিক পার্টিশনটি খুঁজে পান, তখন GRUB Legacy সাধারণত এরকম কিছু প্রদর্শন করে (এইচডি0,0) অথবা অন্য কোনও ডিস্ক/পার্টিশন জোড়া যা আপনি পুনরায় ব্যবহার করতে পারেন।
এরপরে, আপনাকে এই ধরনের একটি কমান্ডের সাহায্যে GRUB রুট নির্ধারণ করতে হবে:
মূলের উদাহরণ: root (hd0,0)
এবং কার্নেল ও ইনিটআরডি কোথায় অবস্থিত তা জানিয়ে দিন। আবারও বলছি, সাধারণত পুরো ফাইলের নাম টাইপ করার প্রয়োজন হয় না, কারণ ট্যাব কী স্বয়ংক্রিয়ভাবে তা পূরণ করে দেয় এবং দীর্ঘ পাথের ক্ষেত্রে টাইপিংয়ের ভুল এড়াতে সাহায্য করে।
আরও উন্নত করার জন্য, আপনি কমান্ডটি ব্যবহার করতে পারেন cat GRUB কনফিগারেশন ফাইলটি পড়ার জন্য (উদাহরণস্বরূপ, /boot/grub/menu.lstএবং রুট ডিরেক্টরিতে কোন ডিভাইসটি মাউন্ট করা আছে, কোন কার্নেল প্যারামিটারগুলি পাস করা হয়েছে ইত্যাদি পরীক্ষা করুন। এটি একটি খুব ব্যবহারিক উপায় সিস্টেমটি যখন সঠিকভাবে কাজ করছিল তখন যে কনফিগারেশনটি ব্যবহার করেছিল সেই একই কনফিগারেশনটি অনুলিপি করুন।.
অবশেষে, যখন তোমার কাছে লাইনগুলো থাকবে শিকড়, শাঁস e initrd- র তালিকার জন্য, কেবল কমান্ডটি চালান boot সিস্টেম বুট করার জন্য। একবার ভিতরে ঢুকলে, চূড়ান্ত ধাপ হবে লিনাক্সের মধ্যেই GRUB পুনরায় ইনস্টল করা। grub-install সংশ্লিষ্ট ডিস্কে, নিশ্চিত করুন যে পরবর্তী পুনঃসূচনাগুলিতে আপনাকে ম্যানুয়াল প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে না।
অন্যান্য সাধারণ পদ্ধতি (লাইভসিডি, ক্রুট এবং বুট-রিপেয়ার ব্যবহার করে)
এখন পর্যন্ত আমরা দেখেছি, কোনো বাহ্যিক মাধ্যম ব্যবহার না করে শুধুমাত্র GRUB কনসোল ব্যবহার করে কীভাবে পরিস্থিতিটির সমাধান করা যায় । তবে, LiveCD/LiveUSB এবং গ্রাফিক্যাল টুলস ব্যবহার করে প্রচলিত পদ্ধতিগুলোও জেনে রাখা দরকার, কারণ কিছু ক্ষেত্রে ক্ষতি এতটাই ব্যাপক হয় যে একটি বুটেবল সিস্টেম থেকে বুট করাই একমাত্র উপায় হয়ে দাঁড়ায়।
ডেবিয়ান এবং উবুন্টু-ভিত্তিক ডিস্ট্রিবিউশনগুলিতে সাধারণত ব্যবহৃত একটি কৌশল হলো একটি লাইভসিডি বা লাইভইউএসবি (উদাহরণস্বরূপ, একটি উবুন্টু, লিনাক্স মিন্ট, ডেবিয়ান লাইভ ইমেজ, ইত্যাদি) থেকে বুট করা, ক্ষতিগ্রস্ত সিস্টেমের রুট পার্টিশন মাউন্ট করা, যদি /boot একটি আলাদা পার্টিশন হয় তবে সেটিও মাউন্ট করা, এবং তারপর সেই ফাইল সিস্টেমে chroot করে GRUB পুনরায় ইনস্টল করা, ঠিক যেন আমরা সরাসরি ইনস্টলেশনটি থেকেই কাজ করছি।
বিস্তৃতভাবে বলতে গেলে, প্রক্রিয়াটি হল পার্টিশনগুলি চিহ্নিত করা যার সাহায্যে fdisk -l, মূলটি কী তা নির্ধারণ করুন (উদাহরণস্বরূপ, আপনার / dev / sda2) এবং যদি এটি বিদ্যমান থাকে তবে বুট পার্টিশনটি কোনটি (উদাহরণস্বরূপ, আপনার / dev / sda7তারপর এগুলি একত্রিত করা হয়:
পার্টিশন মাউন্ট করা (যেমন):sudo mount /dev/sda2 /mntsudo mount /dev/sda7 /mnt/boot (যদি আপনার একটি পৃথক /boot ফাইল থাকে)
এবং /dev, /dev/pts, /proc ও /sys-এর বাইন্ড মাউন্ট /mnt-এর ভিতরে করা হয় :
বাঁধাই মাউন্ট:sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
এখান থেকে, আপনি নিম্নলিখিত পদ্ধতি ব্যবহার করে ইনস্টল করা সিস্টেমটি অ্যাক্সেস করতে পারবেন:
লগইন করুন: sudo chroot /mnt
এবং এর ভেতর থেকে, আপনি ডিস্কটি নির্দেশ করে grub-install চালাতে পারেন :
chroot থেকে ইনস্টলেশন: grub-install --boot-directory=/boot/ --recheck /dev/sda
MBR অথবা সমতুল্য এলাকায় বুট ম্যানেজার পুনরায় লোড করতে, তারপর:
কনফিগারেশন তৈরি করুন: grub-mkconfig -o /boot/grub/grub.cfg
কনফিগারেশন ফাইলটি পুনরায় তৈরি করতে। chroot থেকে প্রস্থান করার সময় exit এবং কম্পিউটার পুনরায় চালু করুন (sudo reboot), সাধারণত GRUB মেনুটি স্বাভাবিকভাবে পুনরায় প্রদর্শিত হবে।.
যেসব ব্যবহারকারী টার্মিনাল এড়িয়ে চলতে পছন্দ করেন, তাদের জন্য আরেকটি অত্যন্ত সুবিধাজনক বিকল্প হলো বুট-রিপেয়ার টুল (Boot-Repair tool) , যা একটি লাইভ উবুন্টু পরিবেশে ইনস্টল করা যায় এবং একটি গ্রাফিক্যাল ইন্টারফেস প্রদান করে। এটি অপারেটিং সিস্টেম ইনস্টলেশন শনাক্ত করতে এবং প্রায় স্বয়ংক্রিয়ভাবে গ্রাব (GRUB) মেরামত করতে সক্ষম । শুধু টুলটি চালান, "প্রস্তাবিত মেরামত" (recommended repair) নির্বাচন করুন এবং এটিকে বুটলোডার বিশ্লেষণ ও পুনর্লিখন করতে দিন।
যদিও লাইভসিডি বা বাহ্যিক ইউটিলিটির উপর ভিত্তি করে তৈরি এই সমাধানগুলো খুবই কার্যকরী, তবে শুরুতে দেখা কৌশলগুলো আয়ত্ত করার সুবিধা হলো, আপনাকে হাতের কাছে একটি ইউএসবি ড্রাইভ বা ডিস্ক থাকার উপর নির্ভর করতে হয় না । অনেক পরিস্থিতিতে আপনি সরাসরি গ্রাব কনসোল দিয়েই কাজ চালিয়ে নিতে পারবেন, বিশেষ করে যখন সমস্যাটি কেবল এই হয় যে, বুট ম্যানেজার /boot থাকা পার্টিশনটির সঠিক রেফারেন্স হারিয়ে ফেলেছে।
এতকিছুর পরেও এটা স্পষ্ট যে, GRUB নষ্ট হয়ে গেলেই যে সিস্টেমটি অকেজো হয়ে যাবে, এমনটা নয় । বুটলোডারের ভেতরেই, কমান্ড লাইনে এবং লাইভ এনভায়রনমেন্টে এমন টুলস রয়েছে, যার মাধ্যমে আপনি সঠিক পার্টিশন খুঁজে বের করতে, ম্যানুয়ালি কার্নেল লোড করতে, আপনার GNU/Linux বুট করতে এবং বুট ম্যানেজার পুনরায় ইনস্টল করতে পারবেন, যাতে এটি আবার নতুনের মতো কাজ করে।