امروز میخواهیم رفع خطای Kernel Panic که مربوط به عدم توانایی ماونت شدن فایل سیستم ریشه می باشد را با هم بررسی کنیم. ریشه پیدایش این خطا میتواند علت های متعددی داشته باشد. اما چیزی که موجب بروز این خطا میشود ایجاد اختلال در بسته initramfs می باشد.
بسته initramfs چیست؟
بسته initramfs یک فایل سیستمی مرتبط با کاربر ریشه است که در کرنل لینوکس وجود دارد. پروسه این بسته در همان ابتدای شروع لود سیستم عامل توسط بوت لودر و به همراه کرنل در مموری فعال و آغاز می گردد. اگر کرنل وجود initramfs را تایید کرد آن را روی / ماونت کرده و سپس برای لود شدن سیستم عامل init/ را به اجرا در می آورد. در اصل تمامی هدف initramfs ماونت شدن فایل سیستم root یا ریشه می باشد. دایرکتوری های موجود در این بسته به دنبال پیدا کردن فایل سیستم و ماونت کردن آن هستند.
ما با ارائه توضیحات بالا تلاش کردیم به صورت خیلی سریع شما را با این بسته آشنا ساخته و به شما بگوییم که مشکل اصلی سیستم شما با مشاهده این خطا چیست و چگونه آن را رفع کنید.
1 |
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) |
آموزش رفع خطا
برای اینکه بتوانید این خطا را رفع کنید نیاز به بوت لینوکس به صورت Live دارید. تفاوتی نمیکند که لینوکس لایو شما چه توزیعی باشد و لازم هم نیست که با توزیع فعلی شما که دچار مشکل شده است همخوانی داشته باشد. معمولا Ubuntu همراه نصب خود امکان استفاده لایو را نیز به شما میدهد. پس با مواجه شدن با این خطا میتوانید از اوبونتو لایو استفاده کرده و سیستم را بوت کنید. بعد از بوت شدن سیستم عامل شما می بایست با سطح دسترسی ریشه وارد ترمینال شوید.
نکته: کاری که شما باید انجام دهید این است که شما فایل های سیستم خود را ماونت میکنید و سپس با ساختن chroot در نهایت گراب خود را ترمیم و به روز رسانی میکنید.
ابتدا برای نمایش لیست پارتیشن های خود میتوانید از دستور زیر استفاده کنید:
1 |
root@arshatech:~# fdisk -l |
1 2 3 4 5 6 7 8 9 10 11 12 |
Disk /dev/sda: 640.1 GB, 640135028736 bytes 255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0000f3a0 Device Boot Start End Blocks Id System /dev/sda1 2048 15624191 7811072 82 Linux swap / Solaris /dev/sda2 * 15624192 210935807 97655808 83 Linux /dev/sda3 210935808 406247423 97655808 83 Linux /dev/sda4 406247424 1250263039 422007808 83 Linux |
حال که تشخیص دادید دستورات زیر را وارد کنید:
نکته: در این مثال ما به جای استفاده از sda2 از sdax استفاده کرده ایم چرا که مقدار آن میتواند برای هر ماشین متفاوت باشد.
1 2 3 4 5 6 |
root@arshatech:~# mount /dev/sdax /mnt root@arshatech:~# mount --bind /dev /mnt/dev root@arshatech:~# mount --bind /dev/pts /mnt/dev/pts root@arshatech:~# mount --bind /proc /mnt/proc root@arshatech:~# mount --bind /sys /mnt/sys root@arshatech:~# chroot /mnt |
در اینجا لازم است بدانید که نسخه کرنل لینوکس چند است.
بیشتر بخوانید:
حال به به روز رسانی بسته initramfs میپردازیم:
1 |
root@arshatech:~# update-initramfs -u -k 3.13.0-139-generic |
سپس در انتها گراب را به روز رسانی میکنیم:
1 |
root@arshatech:~# update-grub2 |
1 |
[root@arshatech ~]# grub2-mkconfig -o /etc/grub2.cfg |
بعد از به روز رسانی گراب ماشین خود را ریبوت کنید و بدون مشکل از آن استفاده کنید.
5 دیدگاه
Amir30c
یکم مطالب نامفهوم هست میشه یک فیلم آموزشی درست کنید یا اگه فیلمی در این باره است به ایمیل من بفرستید
ادمین
سلام و عرض ادب
تنها بخش نامفهوم برای شما باید دستور fdisk -l باشد. شما باید تشخیص دهید که بعد از اجرای این دستور گراب شما روی کدام Device نصب شده است. همیشه بهتر است هنگام نصب لینوکس /boot را جدا کنید تا در تشخیص دچار مشکل نشوید.
Amir30c
من میخواستم کالی رو به صورتlive اجرا کنم که به این مشکل برخوردم
(Unable to mount root fs on unknown-block(2,0
با این روش حل میشه
امیر
وقتی میخوام initramfs را اپدیت کنم خطای زیر نشان میده چطور رفع کنم؟
pigz: abort: write error on (No space left on device)
E: mkinitramfs failure cpio 141 pigz 28
update-initramfs: failed for /boot/initrd.img-5.6.0-2parrot1-amd64 with 1.
ادمین
سلام و عرض ادب
این خطا همانطور که در متن آن پیداست مربوط به کمبود فضای پارتیشن شماست. تلاش کنید نسخه های قبل را از پارتیشن boot حذف کنید و سپس مجددا امتحان نمائید. توجه داشته باشید که برای حذف آن ها حتما با فردی که آگاه است مشورت نمائید.