تعمیر گراب: تفاوت بین نسخه‌ها

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