تولید مجدد دایرکتوری boot/

چند وقت پیش با یه سرور کار میکردم که محتوای دایرکتوری boot/ ش پاک شده بود و بعد از ریبوت تنها چیزی که روی صفحه میومد یه کرسر چشمک زن بود.

این روش رو شخصا روی CentOS 5.9 تست کردم و نتیجه گرفتم.

  • با یه لینوکس بوتیبل (ترجیحا همون نسخه‌ای روی سیستمتون نصبه)  سیستم رو بالا بیارید و به حالت Rescue برید. برای مثال توی CentOS بعد از اینکه ایمیج بوت شد بنویسید linux rescue.
  • دایرکتوری / رو ماونت کنید. توی CentOS این کار به صورت پیشفرض اتفاق میوفته و دایرکتوری / شما توی mnt/sysimage/ ماونت میشه.
  • دستور chroot زیر رو اجرا کنید تا بتونید تغییرات رو روی ریشه قدیمی اجرا کنید:
chroot /mnt/sysimage
  • اون ایمیجی که ازش برای بوت شدن استفاده کردید رو ماونت کنید (اینجا فرض کردم از CD بوت شده سیستم):
mkdir /media/cdrom
mount -o loop,ro /dev/hdc /media/cdrom
  • خب حالا باید فایل‌های RPM مرتبط رو نصب کنید، مطمعن بشید که کرنل درست رو برای سیستمتون انتخاب کنید:
cd /media/cdrom/CentOS (this will vary depending on the distro) 
rpm -ivh --force kernel-2.6.18-164.el5.i686.rpm 
rpm -Uvh --force grub-0.97-13.5.i386.rpm 
rpm -Uvh --force redhat-logos-4.9.99-11.el5.centos.noarch.rpm

 

  • گراب رو نصب کنید (فرض میکنیم دایرکتوری boot/ توی dev/sda/ قرار داره:
grub-install /dev/sda1
  • اگه دایرکتوری boot/grub/grub.conf/ از بین رفته باید اون رو دستی درست کنید:
vim /boot/grub/<span data-scayt_word="grub.conf" data-scaytid="47">grub.conf</span></pre>
default=0
timeout=5
<span data-scayt_word="splashimage" data-scaytid="55">splashimage</span>=(<span data-scayt_word="hd0" data-scaytid="56">hd0</span>,0)/grub/<span data-scayt_word="splash.xpm.gz" data-scaytid="48">splash.xpm.gz</span>
<span data-scayt_word="hiddenmenu" data-scaytid="59">hiddenmenu</span>
title <span data-scayt_word="CentOS" data-scaytid="49">CentOS</span>
root (<span data-scayt_word="hd0" data-scaytid="57">hd0</span>,0)
kernel /<span data-scayt_word="vmlinuz-6.18-164.el5" data-scaytid="50">vmlinuz-6.18-164.el5</span> <span data-scayt_word="ro" data-scaytid="51">ro</span> root=/<span data-scayt_word="dev" data-scaytid="52">dev</span>/<span data-scayt_word="VolGroup00" data-scaytid="64">VolGroup00</span>/<span data-scayt_word="LogVol00" data-scaytid="65">LogVol00</span>
<span data-scayt_word="initrd" data-scaytid="66">initrd</span> /<span data-scayt_word="initrd-2.6.18-164.el5.img" data-scaytid="53">initrd-2.6.18-164.el5.img</span>
<pre>
  • در آخر به grub.conf یه soft link ایجاد کنید:
cd /boot/grub
ln -s grub.conf menu.lst

در نهایت سیستم رو ریبوت کنید و اگه همه مراحل رو درست انجام داده باشید سیستمتون باید بوت بشه. اگه نسخه قدیمی تر کرنل رو از روی ایمیج نصب کردید، اول از همه سیستم رو آپدیت کنید.

 

 

منبع:

 

 

 

پاسخ دهید