Задать вопрос
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый

Из-за чего возникает kernel panic при добавлении утилит?

Из-за чего возникает kernel panic при добавлении утилит?
Собираю в образовательных целях самопальный дистрибутив linux. Пока только ядро и initrd. В initrd набор утилит busybox, mc, либы и init. Ну и файлики по мелочи для mc. init печатает приветствие и запускает /bin/sh. Решил добавить утилиты mkfs.ext4, grub-install и grub-mkconfig.
Делал следующим образом:
Сначала
cp /sbin/mkfs.ext4 initrd/bin/
cp /usr/sbin/grub-install initrd/usr/bin/
cp /usr/sbin/grub-mkconfig initrd/usr/bin/

Затем сделал ldd для каждой (кроме grub-mkconfig) и все найденные либы ручками скопировал в initrd/lib/x86_64-linux-gnu.
После этого ядро стало выдавать ошибку:
[   12.723299] /dev/root: Can't open blockdev
[   12.729577] VFS: Cannot open root device "" or unknown-block(0,0): error -6
[   12.730955] Please append a correct "root=" boot option; here are the available partitions:
[   12.732713] 0b00         1048575 sr0 
[   12.733226]  driver: sr
[   12.734156] List of all bdev filesystems:
[   12.734539]  ext3
[   12.734622]  ext2
[   12.734789]  ext4
[   12.735345]  squashfs
[   12.735532]  vfat
[   12.735719]  fuseblk
[   12.736165] 
[   12.736949] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[   12.738153] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.8.0-45-generic #45-Ubuntu
[   12.739057] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[   12.740487] Call Trace:
[   12.743510]  <TASK>
[   12.745903]  dump_stack_lvl+0x27/0xa0
[   12.747451]  dump_stack+0x10/0x20
[   12.747832]  panic+0x366/0x3c0
[   12.748166]  mount_root_generic+0x1a5/0x360
[   12.748808]  mount_root+0x98/0x100
[   12.749218]  ? __pfx_kernel_init+0x10/0x10
[   12.749573]  prepare_namespace+0x6c/0x2f0
[   12.749863]  kernel_init_freeable+0x1c6/0x210
[   12.750166]  kernel_init+0x1b/0x200
[   12.750468]  ret_from_fork+0x47/0x70
[   12.750756]  ? __pfx_kernel_init+0x10/0x10
[   12.751092]  ret_from_fork_asm+0x1b/0x30
[   12.751612]  </TASK>
[   12.753174] Kernel Offset: 0xe00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[   12.754630] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

Если вернуть всё обратно - работает
Заметил также особенность - если скопировать из /bin в /home mc, то ядро выдаст ту же ошибку! А если из home удалить его, то опять все работатет. Из-за чего так? Казалось бы, все есть, работает, а если скопировать, то уже все...
Может кто-то объяснить?
initrd
Ядро
Чтобы работало без ошибок, удалите mc из /home
  • Вопрос задан
  • 309 просмотров
Подписаться 5 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы