تعمیر گراب: تفاوت بین نسخهها
سطر ۱: | سطر ۱: | ||
ابتدا سیستم را با یک دیسک زنده گنو/لینوکس [[Boot]] کرده و ترمینال را باز نمایید. | ابتدا سیستم را با یک دیسک زنده گنو/لینوکس [[Boot]] کرده و ترمینال را باز نمایید. | ||
− | برای انجام عملیات [[chroot]] لازم است پارتیشن / (root) | + | برای انجام عملیات [[chroot]] لازم است بدانید که پارتیشن / (root) توزیع خود را در کجا نصب کردهاید، برای نمایش یک لیست از پارتیشنهای موجود از fdisk استفاده کنید: |
<pre>sudo fdisk -l</pre> | <pre>sudo fdisk -l</pre> | ||
سطر ۶: | سطر ۶: | ||
پس از وارد کردن دستور فوق در صورتی که رمز عبور سوال شد، آن را وارد نمایید، عموما در دیسکهای زنده رمزعبور خواسته نمیشود و در صورت نیاز در هنگام لاگین به سیستم یا باز کردن ترمینال رمز عبور دیسک زنده به شما نمایش داده خواهد شد. | پس از وارد کردن دستور فوق در صورتی که رمز عبور سوال شد، آن را وارد نمایید، عموما در دیسکهای زنده رمزعبور خواسته نمیشود و در صورت نیاز در هنگام لاگین به سیستم یا باز کردن ترمینال رمز عبور دیسک زنده به شما نمایش داده خواهد شد. | ||
− | در خروجی دستور فوق، پارتیشنی که به عنوان / (root) درنظر گرفته بودید را شناسایی نمایید، این نام باید مشابه <code>dev/sdXY/</code> باشد. X: یک حرف مانند a یا b و… Y: یک عدد. برای مثال پارتیشن روت ما dev/sda5/ است. حال پارتیشن / (root) را mount | + | در خروجی دستور فوق، پارتیشنی که به عنوان / (root) درنظر گرفته بودید را شناسایی نمایید، این نام باید مشابه <code>dev/sdXY/</code> باشد. X: یک حرف مانند a یا b و… Y: یک عدد. برای مثال پارتیشن روت ما dev/sda5/ است. حال پارتیشن / (root) را mount میکنید: |
<pre>sudo mount /dev/sda5 /mnt</pre> | <pre>sudo mount /dev/sda5 /mnt</pre> | ||
سطر ۱۴: | سطر ۱۴: | ||
<pre>sudo mount /dev/sda6 /mnt/boot</pre> | <pre>sudo mount /dev/sda6 /mnt/boot</pre> | ||
− | در دستور فوق فرض بر این است که dev/sda6/ پارتیشن boot میباشد. حال با ls یک لیست از شاخه mnt بگیرید تا اطمینان پیدا کنید که عملیات mount صحیح اجرا شده و آماده سایر مراحل | + | در دستور فوق فرض بر این است که dev/sda6/ پارتیشن boot میباشد. حال با ls یک لیست از شاخه mnt بگیرید تا اطمینان پیدا کنید که عملیات mount صحیح اجرا شده و آماده سایر مراحل هستید: |
<pre>ls /mnt</pre> | <pre>ls /mnt</pre> | ||
سطر ۳۲: | سطر ۳۲: | ||
<pre>abi-3.13.0-44-generic | <pre>abi-3.13.0-44-generic | ||
abi-3.13.0-45-generic | abi-3.13.0-45-generic | ||
− | vmlinuz-3.13.0-45-generic</pre> | + | vmlinuz-3.13.0-45-generic |
− | + | ...</pre> | |
− | حال باید شاخه های زیر را برروی شاخه مشابه در mnt به صورت bind سوار | + | حال باید شاخه های زیر را برروی شاخه مشابه در mnt به صورت bind سوار نمایید (mount کنید): |
<pre>/dev | <pre>/dev | ||
سطر ۵۰: | سطر ۵۰: | ||
<pre>sudo mount -B foo bar</pre> | <pre>sudo mount -B foo bar</pre> | ||
− | در نتیجه لازم است شاخه های مذکور را به صورت ذکر شده mount | + | در نتیجه لازم است شاخه های مذکور را به صورت ذکر شده mount نمایید، برای مثال نحوه مانت شاخه dev/ به صورت زیر خواهد بود: |
<pre>sudo mount -B /dev /mnt/dev</pre> | <pre>sudo mount -B /dev /mnt/dev</pre> | ||
سطر ۵۸: | سطر ۵۸: | ||
<pre>for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done</pre> | <pre>for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done</pre> | ||
− | حال با دستور زیر شاخه root را تغییر | + | حال با دستور زیر شاخه root را تغییر دهید (chroot). |
<pre>sudo chroot /mnt</pre> | <pre>sudo chroot /mnt</pre> | ||
سطر ۶۶: | سطر ۶۶: | ||
<pre>sudo update-grub</pre> | <pre>sudo update-grub</pre> | ||
− | حال برای نصب مجدد grub در [[MBR]] باید | + | حال برای نصب مجدد grub در [[MBR]] باید بدانید سیستم از کدام Disk برای بوت شدن استفاده میکند. برای این منظور میتوانید مجددا از fdisk -l استفاده نمایید. آدرس دیسک باید به صورت زیر باشد: |
<pre>/dev/sdX</pre> | <pre>/dev/sdX</pre> | ||
سطر ۷۴: | سطر ۷۴: | ||
<pre>/dev/sda</pre> | <pre>/dev/sda</pre> | ||
− | حال با دستور زیر گراب را بر MBR دیسک مدنظر نصب | + | حال با دستور زیر گراب را بر MBR دیسک مدنظر نصب نمایید: |
<pre>sudo grub-install /dev/sda</pre> | <pre>sudo grub-install /dev/sda</pre> | ||
− | سپس با دستور exit یا فشردن ctrl+d از chroot خارج شوید. حال نوبت آن است که پارتیشن و شاخههای mount شده را umount | + | سپس با دستور exit یا فشردن ctrl+d از chroot خارج شوید. حال نوبت آن است که پارتیشن و شاخههای mount شده را umount نمایید، به این منظور دستور زیر را در یک خط وارد و اجرا نمایید: |
<pre>for i in /dev/pts /dev /proc /sys; do sudo umount /mnt$i; done</pre> | <pre>for i in /dev/pts /dev /proc /sys; do sudo umount /mnt$i; done</pre> |
نسخهٔ ۱۱ تیر ۱۳۹۴، ساعت ۲۰:۵۱
ابتدا سیستم را با یک دیسک زنده گنو/لینوکس Boot کرده و ترمینال را باز نمایید. برای انجام عملیات chroot لازم است بدانید که پارتیشن / (root) توزیع خود را در کجا نصب کردهاید، برای نمایش یک لیست از پارتیشنهای موجود از fdisk استفاده کنید:
sudo fdisk -l
پس از وارد کردن دستور فوق در صورتی که رمز عبور سوال شد، آن را وارد نمایید، عموما در دیسکهای زنده رمزعبور خواسته نمیشود و در صورت نیاز در هنگام لاگین به سیستم یا باز کردن ترمینال رمز عبور دیسک زنده به شما نمایش داده خواهد شد.
در خروجی دستور فوق، پارتیشنی که به عنوان / (root) درنظر گرفته بودید را شناسایی نمایید، این نام باید مشابه dev/sdXY/
باشد. X: یک حرف مانند a یا b و… Y: یک عدد. برای مثال پارتیشن روت ما dev/sda5/ است. حال پارتیشن / (root) را mount میکنید:
sudo mount /dev/sda5 /mnt
اگر در هنگام نصب توزیع خود، پارتیشن مجزایی برای boot/ در نظر گرفته بودهاید با دستور زیر boot/ را هم mount نمایید:
sudo mount /dev/sda6 /mnt/boot
در دستور فوق فرض بر این است که dev/sda6/ پارتیشن boot میباشد. حال با ls یک لیست از شاخه mnt بگیرید تا اطمینان پیدا کنید که عملیات mount صحیح اجرا شده و آماده سایر مراحل هستید:
ls /mnt
خروجی باید مشابه زیر باشد:
bin etc initrd.img.old media proc sbin tmp vmlinuz boot home lib mnt root srv usr vmlinuz.old dev initrd.img lost+found opt run sys var
همینکار را برای شاخه boot/ تکرار نمایید:
ls /boot
خروجی مشابه زیر دریافت خواهید کرد:
abi-3.13.0-44-generic abi-3.13.0-45-generic vmlinuz-3.13.0-45-generic ...
حال باید شاخه های زیر را برروی شاخه مشابه در mnt به صورت bind سوار نمایید (mount کنید):
/dev /dev/pts /proc /sys
انجام عملیات Mount به همراه پارامتر bind باعث میشود محتویات شاخه های فوق در هر دو محل به صورت یکسان قابل دسترس باشند. نحوه mount کردن به صورت زیر خواهد بود:
sudo mount –bind foo bar
یا به صورت زیر:
sudo mount -B foo bar
در نتیجه لازم است شاخه های مذکور را به صورت ذکر شده mount نمایید، برای مثال نحوه مانت شاخه dev/ به صورت زیر خواهد بود:
sudo mount -B /dev /mnt/dev
برای راحتی و سرعت بخشیدن به کار میتوان از یک حلقه for استفاده کرد. کد زیر هر ۴ شاخه مذکور را در محل صحیح mount خواهد کرد، این دستور را در یک خط وارد و اجرا نمایید:
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
حال با دستور زیر شاخه root را تغییر دهید (chroot).
sudo chroot /mnt
دستور زیر فایل پیکربندی grub را برای سیستم ایجاد خواهد کرد:
sudo update-grub
حال برای نصب مجدد grub در MBR باید بدانید سیستم از کدام Disk برای بوت شدن استفاده میکند. برای این منظور میتوانید مجددا از fdisk -l استفاده نمایید. آدرس دیسک باید به صورت زیر باشد:
/dev/sdX
که x یک حرف مانند a یا b و یا … میباشد، یعنی آدرسی مشابه زیر:
/dev/sda
حال با دستور زیر گراب را بر MBR دیسک مدنظر نصب نمایید:
sudo grub-install /dev/sda
سپس با دستور exit یا فشردن ctrl+d از chroot خارج شوید. حال نوبت آن است که پارتیشن و شاخههای mount شده را umount نمایید، به این منظور دستور زیر را در یک خط وارد و اجرا نمایید:
for i in /dev/pts /dev /proc /sys; do sudo umount /mnt$i; done
در صورتی که پارتیشن boot/ را مجزا ایجاد و mount کرده بودید آن را umount نمایید، سپس mnt/ را umount کنید:
sudo umount /mnt
نهایتا سیستم را reboot نمایید:
sudo shutdown -r now