গ্রাব-প্রোব: ত্রুটি: / গরুর ক্যানোনিকাল পথ পেতে ব্যর্থ


15

আমি একটি ইউএসবি ড্রাইভ থেকে গ্রাবটি পুনরায় ইনস্টল করার চেষ্টা করছি। আমি নিম্নলিখিত চালাতে:

sudo mount /dev/sda6 /mnt
sudo grub-install --root-directory=/mnt /dev/sda

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

grub-probe: error: failed to get canonical path of /cow.

কেউ কি ত্রুটিটি ব্যাখ্যা করতে পারে, এবং কীভাবে এটি সমাধান করবেন?

সম্পাদন করা

আমি লিনাক্স পুদিনাযুক্ত ইউএসবি থেকে চালিত একটি ভাঙা দ্বৈত-বুট সিস্টেমটি মেরামত করার চেষ্টা করছি।


ঠিক আছে, সম্পাদনাটি সঠিক দিকের এক ধাপ। আমরা কি ধরে নিতে পারি যে আপনি ইতিমধ্যে একটি লিনাক্স সিস্টেম ইনস্টল করেছেন? এটি থেকে বুট হয় না sda6? আমার উত্তর এখানে সাহায্য করে?
টেরডন

উত্তর:


10

এই পদক্ষেপগুলি অনুসরণ করুন:

  1. লাইভ লিনাক্স সেশনে বুট করুন।

  2. /আপনার ইনস্টল করা ওএসের পার্টিশনটি মাউন্ট করুন/mnt

    sudo mount /dev/sda6 /mnt
    
  3. একটি সেট আপ করুন chrootপরিবেশ:

    sudo chroot /mnt
    
  4. আপনি এখন একটি "নকল" লিনাক্স ইনস্টল করছেন যা সে /mntহিসাবে কাজ করে /। এর অর্থ হ'ল GRUB- র জন্য প্রয়োজনীয় সমস্ত ফাইলগুলি /bootযেখানে সিস্টেমটি তাদের প্রত্যাশা করে এবং আপনি GRUB ঠিক তেমন ইনস্টল করতে পারেন যেমন আপনি বাস্তবে আপনার ইনস্টলড সিস্টেমটি চালাচ্ছেন:

    sudo update-grub
    sudo grub-install /dev/sda
    

এখন পুনরায় বুট করুন এবং আপনার GRUB মেনুটি স্বাভাবিকভাবে উপস্থিত হওয়া উচিত।


আমি ইউএসবি ডিভাইস থেকে ইনস্টল করার চেষ্টা করছি । যে কোনও উপায়ে, আমি মাউন্ট না করেও চেষ্টা করেছি - একই ত্রুটি। আপনি ত্রুটি ব্যাখ্যা করতে পারেন?
ইলিয়াশিব

@ ইলিয়াশিব দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন এবং আপনি কী চেষ্টা করছেন তা ব্যাখ্যা করুন। আপনি কি একটি ভাঙ্গা সিস্টেম উদ্ধার করার চেষ্টা করছেন? আপনি কি ইউএসবি থেকে কোনও লাইভ সিস্টেম বুট করছেন? যদি তা হয় তবে আমাদের বলুন । আপনি কোন ওএস ব্যবহার করছেন? আপনি কী ভাবেন যে GRUB এর একটি root-deviceবিকল্প রয়েছে এবং আপনি কী সেই বিকল্পটি করবেন বলে আশা করছেন? আপনি একটি chrootপরিবেশ স্থাপন করেছেন ? আপনি যখনই কোনও প্রশ্ন জিজ্ঞাসা করেন, আপনি ঠিক কী কী করার চেষ্টা করছেন তা ব্যাখ্যা করা দরকার, আমরা অনুমান করতে পারি না।
টেরডন

ওফ, আমার অর্থ-মূল-ডিরেক্টরি
ইলিয়াশিব

@ ইলিয়াশিবও নেই --root-directoryএখানে আমার উত্তরটি পড়ুন যা গ্রাবটি পুনরায় ইনস্টল করবেন তা ব্যাখ্যা করে।
টেরডন


1

যদি গ্রাব বলে যে এটি কোনও কিছুর মূল পথটি সমাধান করতে পারে না, তবে এর অর্থ এটি বিদ্যমান বা realpath()ব্যর্থ নয়।

এই ক্ষেত্রে, চেষ্টা করুন:

$ realpath /cow
$ ls -la /cow

উভয় কমান্ড যদি "ফাইল বা ডিরেক্টরি খুঁজে না পায়" বলে থাকে, তবে আপনাকে একটি তৈরি করতে হবে।

যদি দ্বিতীয় কমান্ডটি কাজ করে তবে প্রথমটি কাজ করে না, কেন realpath()কাজ করে না তা পরীক্ষা করুন । এর অন্যতম কারণ হতে পারে যে /procমাউন্ট করা হয়নি। Libc- র কিছু বাস্তবায়নে /proc/self/fdকোনও ফাইলের ক্যানোনিকাল পাথ পেতে ব্যবহৃত হয়।


0

যা লেখা হয়েছিল তার উপর ভিত্তি করে, দেখে মনে হচ্ছে আপনি / dev / sda তে GRUB ইনস্টল করার চেষ্টা করছেন। আপনি ডিস্কটি মাউন্ট করতে চান না।

আপনি সম্ভবত খুঁজছেন: grub-install /dev/sda

রেফারেন্সের জন্য GRUB ম্যান পেজ, বা আপনি man grub-installআপনার সিস্টেম থেকে পারেন : http://linux.die.net/man/8/grub-install


0

আমি এই ত্রুটিটি পেয়েছি এবং আমি মনে করি না এটি একটি ক্রট হিসাবে ঘটে।

পটভূমি

আমি মনে করি এটি তখনই যখন সিস্টেমেড কোনও ডিরেক্টরিতে মাউন্ট করা কারণ পথটি খুঁজে না পায়। সুতরাং, পার্থক্যটি যখন আপনি একটি ক্রুট সেটআপ করেন আপনি ইতিমধ্যে ড্রাইভ সহ হার্ডওয়্যারটিতে অ্যাক্সেস কনফিগার করেছেন।

যদিও আপনি এই অ্যাক্সেসটি সিস্টেমডের ভিতরে কনফিগার করতে পারবেন তার অর্থ এই নয় যে আপনি সেইগুলি চালনার জন্য অনুমতিগুলি একইভাবে কনফিগার করতে পারেন।

উদাহরণস্বরূপ, আমি এই ফাইলটি তৈরি করেছি:

/etc/systemd/system/systemd-nspawn@.service.d/override.conf

এবং এটিতে এই সেটিংস রয়েছে:

[Service]
DeviceAllow=char-usb_device rwm
DeviceAllow=char-usb
[Files]
Bind=/var/cache/apt/pkgcache.bin
Bind=/var/cache/apt/srcpkgcache.bin

এটি এখনও ডেবিয়ান স্ট্রেচের সাথে পাই ডিবুটস্ট্র্যাপড ইউএসবি ব্যবহার করার সময় grub-install /dev/sdaবা এর update-grubজন্য কার্যকর হয় না । এমনকি গ্রাব-উবুট এবং গ্রাব-এফি-আর্ম ব্যবহার করে এখনও ত্রুটি রয়েছে যে ত্রুটিটি আধ্যাত্মিক grub-probeপথটি খুঁজে পায় না।

কেবল update-grubএটিই নয় তবে এটি অপারেটিং সিস্টেমগুলি কী তা দেখতে এবং জানতে পারবে তবে আকর্ষণীয়ভাবে grub-installডিবিয়ান অপারেটিং সিস্টেমটি ইউএসবিতে রয়েছে তা স্বীকৃতি দেয় না।

উদাহরণ

root@raspixmc:/home/pi# grub-install /dev/sda
Installing for arm-uboot platform.
grub-install: warning: no hints available for your platform. Expect 
reduced performance.
grub-install: warning: WARNING: no platform-specific install was 
performed.
Installation finished. No error reported.
root@raspixmc:/home/pi#

মজার বিষয়, আমি যখন একটি ক্রুট তৈরি করি এবং চালাতে পারি update-grub, যদিও আমি ইউএসবিতে অপারেটিং সিস্টেমটি ডিবুটস্ট্র্যাপ করেছিলাম তখন এটি নিজের অপারেটিং সিস্টেমটি দেখতে পায় না!

root@raspixmc:/home/pi# mount /dev/sda1 /mnt
root@raspixmc:/home/pi# cd /mnt
root@raspixmc:/mnt# mount --bind /dev dev/
root@raspixmc:/mnt# mount --bind /sys sys/
root@raspixmc:/mnt# mount --bind /proc proc/
root@raspixmc:/mnt# mount --bind /dev/pts dev/pts
root@raspixmc:/mnt# chroot . bin/bash
root@raspixmc:/# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
done
root@raspixmc:/#

এটি কেবল রাস্প্বিয়ান দেখায়। কনটেইনারটির ভিতরে GRUB ইনস্টল এবং আপডেট করার চেষ্টা করার সময়ই এটি ঘটে থাকে, তবে যখন আমি ক্রট থেকে প্রস্থান করি।

এটি এখন কীভাবে কাজ করে তা দেখুন কারণ আমি ক্রুট ডিরেক্টরিগুলি আনমাউন্ট করি নি:

/dev dev/
/sys sys/
/proc proc/
/dev/pts dev/pts

ধারক বাহিরের বাইরে থেকে আপনি মনে করুন, আমি এই কমান্ডটি grub-ubootরাস্পবিয়ান এবং ইনস্টলড ইউএসবিতে কোনও গ্রুব ডিবুটস্ট্র্যাপড দেবিয়ান সহ চালাচ্ছি।

root@raspixmc:/mnt# update-grub
Generating grub configuration file ...
Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2
Found Debian GNU/Linux 9 (stretch) on /dev/sda1
done
root@raspixmc:/mnt#

এটি দেবিয়ান এআরএম-এর জন্য একটি অনানুষ্ঠানিকভাবে উপলব্ধ চিত্রগুলির ব্যবহার করে ঘটে না , তবে স্পষ্টতই এটি এখনও একটি কাস্টমাইজেশন যা এখনও ডিবুটস্ট্র্যাপিংয়ের জন্য উপলভ্য নয়।

সমস্যা সমাধান

সত্যিই এমন সময় আসে যখন কেবল কোনও পথ তৈরি করা ভাল। কেবলমাত্র পরবর্তী সম্ভাবনা (এবং একটি সম্ভাব্য) হ'ল কেবল GRUB লিখুন। এবং তার জন্য আমি এই পৃষ্ঠায় পড়তে যাচ্ছি।

https://www.dedoimedo.com/computers/grub-2.html

এই সমস্যাটি নিয়ে আমি আরেকটি জিনিস ভাগ করতে চাই এটি এমন একটি সমাধান যা কাজ করতে পারে তবে মাইক্রোএসডি কার্ডগুলি বুঝতে খুব সংবেদনশীল। আমি আমার নিজস্ব লিনাক্স চিত্রগুলি তৈরি করেছি এবং এটি দ্রুত শিখেছি। করণীয় হ'ল সবচেয়ে ভাল কাজ হ'ল আপনি যখনই পারবেন কেমু ব্যবহার করুন তবে কোনও পুরানো পার্টিশন টেবিল সাফ করার চেষ্টা করার জন্য আপনি sgdisk --zap-allড্রাইভে চালানোর চেষ্টা করতে পারেন ।

sgdisk --zap-all /dev/sdd

আসলে, কখনও কখনও এটি একটি ত্রুটি প্রথমবার দেয় এবং এটা করা হয় না শুধুমাত্র পাঠযোগ্য ত্রুটি, আপনি কি এটা আবার চালাতে পারেন এবং এটা করবে পরিশেষে সব পার্টিশন টেবিল নতুন বা পুরাতন।

এবং আপনি একটি স্ট্যান্ডার্ড এএমডি / ইন্টেল-ভিত্তিক পিসিতে রাস্পবেরি পাই অনুকরণ করতে কেমু ব্যবহার করতে পারেন । আমি এটি সুপারিশ করবে। আমি জানি এটি মূল পোস্টের সাথে সম্পর্কিত আরও তথ্য, তবে আমি মনে করি যে সম্ভবত এই ত্রুটিটি কীভাবে উদ্ভূত হয়েছে। এটা ধারক বয়স।


0

যার সাথে লড়াই করা হচ্ছে যিনি গ্রাবটি পুনরায় ইনস্টল করতে বা ইনস্টল করার জন্য লাইভ ইউএসবি বা ক্রুটের অন্য কোনও উপায়ে ব্যবহার করার চেষ্টা করছেন - আমি কয়েকবার এর সাথে ডিল করেছি এবং ইচ্ছা করার আগেও এটি নথিটি ভুলে গিয়েছি।

গ্রাবটি আপনি যে সমস্যার মুখোমুখি হচ্ছেন তাতে আপনার যে উত্সটি (/ বুট) বা গন্তব্য হিসাবে উল্লেখ করা হচ্ছে সে পথে অ্যাক্সেস নেই (আপনার সিস্টেম এবং ক্রুট /dev/sdaউদাহরণ হিসাবে দেখতে পাবে ?) বা উভয়ই। আপনি যখন ক্রুট করার প্রস্তুতি নিবেন আপনি বাইন মাউন্টগুলি তৈরি করুন যা ক্রুট পরিবেশে অ্যাক্সেসযোগ্য, বা আপনি মাউন্ট-টি ব্যবহার করে ক্রুটের অভ্যন্তরে এটি করেন। অনলাইনে এমন অনেক গাইড রয়েছে যেগুলি এটি কোনওভাবেই করে।

আপনাকে নিশ্চিত করতে হবে যে আপনি / ডিভ মধ্যে বা বুট ফাইলগুলি (যেমন / dev / sda1) -র মধ্যে থাকা নির্দিষ্ট পার্টিশনটি বেঁধে রাখছেন just / বুট হয় পৃথক পার্টিশন বা ডিরেক্টরিতে / ডিরেক্টরিতে ক্রুটটির অ্যাক্সেসের প্রয়োজন যা আপনি আউটপুটে তালিকাভুক্ত ডিভাইসটি দেখতে পাচ্ছেন তা নিশ্চিত করার জন্য ক্রুটটিতে গ্রাড ইনস্টল করতে হবে (আবার) গ্রাব ইনস্টল করতে হবে re আরও মনে রাখবেন, আপনার যদি পৃথক বুট পার্টিশন না থাকে তবে বুট ফাইলগুলি (কেবল একটি মাউন্ট পয়েন্ট নয়) এর সাথে / রুটে আপনার একটি বুট ডিরেক্টরি থাকে তবে আপনাকে কেবল রুটযুক্ত পার্টিশনটি মাউন্ট করতে হবে। তারপরে আপনাকে / রুট / বুটে কোনও কিছুই মাউন্ট করতে হবে না।

এছাড়াও আপনি নিশ্চিত করতে হবে যে আপনি প্রকোপ ফাইল সিস্টেম এবং সিস্টেমে ফাইল সিস্টেমকে আবদ্ধ করেন, তবে আমি যে প্রতিটি গাইড দেখেছি সেগুলিতে দুটি আছে। আমি মাঝে মাঝে মাঝে / দেবকে মিস করেছি। আপনার যখন প্রয়োজন হবে না এমন কিছু ক্ষেত্রে থাকতে পারে তবে আমি সেগুলি সম্পর্কে জানি না।

tl; dr: নিশ্চিত করুন যে আপনি মাউন্ট / দেবকে বাঁধছেন


chrootপ্রশ্নটি ক্রোটি সম্পর্কে নয় কেন আপনি কেন কথা বলছেন ?
জি-ম্যান

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