ahmad316948

عدم بوت شدن لینوکس و نمایش خطا grub

ahmad316948 ۱۳۹۸/۱۱/۲۹ لینوکس

سلام. دوستان من از طریق ویندوز حدود 35 گیگ فضا آزاد کردم و بعدش لینوکس مینت رو در اون فضا نصب کردم. ولی وقتی سیستم رو روشن می کنم نه لینوکس بالا میاد نه ویندوز بلکه خطای grub میده. تو عکس خطا مشخصه. لطفا سریع کمکم کنید کارم خیلی گیره.

در صورت نیاز برای راهنمایی کامل به ایدی من در تلگرام پیام بدین

@Ahmad3169

دانلود عکس

پاسخ‌ها به این تاپیک
منصور احمدی
منصور احمدیهیچکس کامل نیست،همیشه درحال یادگیری باش
۱۳۹۸/۱۲/۰۷

سلام دوست عزیز،اگر در گوگل جستجو کنید (خطای grub) راه حل های زیادی رو برای رفع این خطا پیدا میکنید.

از آن‌جایی که شما دو چند سیستم‌عامل را در کنار یک دیگر روی دیسک سیستم خود نصب کرده‌اید، یک boot loader نیاز است که در ابتدای کار سیستم اجرا شده و به شما امکان انتخاب میان آن‌ها را فراهم سازد. احتمالاً این توصیه را شنیده‌اید که می‌گویند هنگام نصب Windows و GNU/Linux در کنار هم، بهتر است ابتدا اقدام به نصب Windows و سپس GNU/Linux نمایید؛ چرا که ظاهراً Windows گمان می‌کند که تنها سیستم‌عامل موجود در جهان است و به هنگام نصب، تنظیمات مربوط به boot را به کلّی عوض می‌‌کند. این اتّفاق به هنگام بروزرسانی یا ارتقا Windows نیز ممکن است رخ دهد.

لازم است Grub را مجدّداً بروزرسانی و نصب نمایید.

امّا برای این کار لازم است ابتدا وارد GNU/Linux شوید.

ابتدا با زدن دستور ls نگاه کنید که درکل چه دستگاه‌ها/پارتیشن‌هایی روی سیستم شماست.

با ورود دستور ls، لیستی از دستگاه‌ها و پارتیشن‌های در دسترس، شبیه حاصل زیر برای شما نمایان خواهد گشت:

(hd0) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos1) (fd0)

در این‌جا hdX نمایان‌گر هارد‌دیسک و آن‌چه در کنارش می‌آید نمایان‌گر پارتیشن است. دستگاه‌های دیگری نیز ممکن است نمایش داده شود. لازم است بدانید GNU/Linux در چه دستگاه و پارتیشنی است.

توجّه داشته باشید که Grub فقط پارتیشن‌ها را دیده و نمی‌تواند filesystem آن‌ها را تشخیص دهد. لذا اکثراً آن را تحت نام msdos معرّفی می‌نماید.

به هر حال اگر نمی‌دانید، تک‌تک آن‌چه برای شما لیست شده است را باید جستجو کنید. لذا از این دستور استفاده نمایید:

ls (hdX,X)/ 

برای مثال:

ls (hd0,msdos1)/
ls (hd0,msdos2)/
...

این بررسی را تا جایی ادامه دهید که حاصل دستور، چیزی شبیه این شود:

ls (hd0,msdos6)/ 
./ ../ lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ opt/ proc/ root/ run/ sbin/ selinux/ srv/ sys/ tmp/ usr/ var/

همین باید دستگاه و پارتیشن مربوط به GNU/Linux شما باشد که در این مثال، فرض می‌کنیم (hd0,msdos6) است. هنگامی که دستگاه و پارتیشن مورد نظر را یافتید، دستور زیر را جهت تخصیص مسیر (path) مرتبط با Grub وارد نمایید:

set prefix=(hd0,6)/boot/grub 

همچنین مسیر این دستور جهت تخصیص مسیر مرتبط با kernel:

set root=(hd0,6)

با ورود دستور زیر می‌توانید مطمئن شوید که دستور قبل را به درستی اجرا کرده‌اید:

ls /

باید همان محتوای پارتیشن - آن‌چه پیشتر به هنگام ورود دستور ls (hd0,msdos6)/ مشاهده کردید - را نمایش دهد. اگر این‌طور نبود، به احتمال زیاد در مراحل قبلی اشتباهی کرده‌اید. در غیر این صورت، دو دستور زیر را وارد نمایید:

insmod normal
normal

پس از آن Grub فعّال شده و می‌توانید سیستم‌عامل مورد نظر خورد را انتخاب نمایید. اگر Windows در حال بروزرسانی بود که این اتّفاق رخ داد، بهتر است وارد Windows شده اجازه دهید بروزرسانی را کامل کند و سپس سیستم را restart کنید (پس از restart نیز مجدّداً محیط grub rescue فعّال شده و باید مراحل قبلی را دوباره پیش بگیرید - البته این دفعه دیگر می‌دانید که GNU/Linux در کدام دستگاه و پارتیشن بوده و نیازی به جستجو مجدّد نیست). در غیر این صورت مستقیم وارد GNU/Linux شوید؛ چرا که باید تغییرات انجام شده را تثبیت کنید. در GNU/Linux، محیط ترمینال را باز کرده و دو دستور زیر را به ترتیب وارد و اجرا نمایید:

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

اگر پیش‌تر پارتیشن‌بندی سیستم خود را اصولی انجام داده باشید، محلّ نصب Grub باید در sda باشد. در غیر این صورت ممکن است در sda1 یا... پیدا شود. به هر حال در دستور دوّم، آن آدرسی که محلّ نصب Grub است را وارد نمایید.

انجام مراحل بالا باید مشکل را حل نماید. در غیر این صورت باید به جستجو در اینترنت ادامه داده و راه حلّ دیگری پیدا کنید. ضمناً شاید نرم‌افزارهایی نیز پیدا کنید که از یک دستگاه bootable اجرا شده همان مراحل بالا را به صورت اتوماتیک برای شما انجام دهند.

تندرست و پیروز باشید.🙂