LINUX.ORG.RU

Не грузятся модули при загрузки системы

 


0

2

В поисках приключений решил скомпилять и установить ядро. Воспользовался вот этой инструкцией https://fedoraproject.org/wiki/Building_a_custom_kernel#Building_the_kernel Все скомпилялось, установилось, загрузилось. Только теперь система не грузится с ядрами из дистрибутива (скомпилированное без проблем грузится). Федора 32. При загрузке система виснет.

journalctl -u systemd-modules-load.service показывает вот такое

Jul 10 20:47:21 localhost.localdomain systemd-modules-load[788]: Failed to look up module alias 'fuse': Function not implemented
Jul 10 20:47:21 localhost.localdomain systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
Jul 10 20:47:21 localhost.localdomain systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
Jul 10 20:47:21 localhost.localdomain systemd[1]: Failed to start Load Kernel Modules.

Пробовал переустанавливать ядро дистрибутива, но безуспешно. Загуглить решение тоже не удалось. Помогите криворукому.

Только теперь система не грузится с ядрами из дистрибутива

А как ты пробуешь грузиться с дистрибутивными ядрами?

Указанные тобой ошибки указывают на то, что systemd «не видит» модули загружаемого ядра.

И с большой долей вероятности эти ошибки возникают ещё на этапе работы initramfs, в котором тоже должны присутствовать модули загружаемого ядра.

Если ты не удалял директории с модулями дистриьивыных ядер в /lib/modules, не пересобирал их initramfs и не пробуешь загружать дистрибутивное ядро с initramfs от собранного тобой, то все должно работать.

infomeh ★★
()
Ответ на: комментарий от infomeh

А как ты пробуешь грузиться с дистрибутивными ядрами?

Через груб. Если нажать ‘e’, то там такие параметры https://ibb.co/6n9hjWW Вроде все нормально

Если ты не удалял директории с модулями дистриьивыных ядер в /lib/modules

не удалял. перепроверил, директории на месте

не пересобирал их initramfs

такого вроде не делал, но переустоновка пакета ядра по идее помогла бы с этим

не пробуешь загружать дистрибутивное ядро с initramfs от собранного тобой, то все должно работать.

если взглянуть на фотку, то там вроде все в порядке с этим

Вообще я сделал ровно как в инструкции

make oldconfig 
make bzImage
make modules
make modules_install
make install
Gashish4all
() автор топика
Ответ на: комментарий от Gashish4all

Про конфиг загрузчика, но только целиком. А не фото одного пункта.

Ещё раз распишу.

Ты понимаешь как происходит процесс запуска Linux и в частности как загружается ядро,

В начале стартует загрузчик, который считывает в память ядро и передаёт ему управление и далее через параметры, переданные в строке параметров ядра ядро ищет корневую файловую систему, монтирует её и далее запускается операционная система Linux.

Но для монтирования корневой файловой системы нужны некоторые драйверы, в частности драйвер контроллера жёстких дисков и драйвер файловой системы, это минимум. Если Linux стоит на обычном жёстком / ssd диске.

Драйверы могут быть собраны монолитно в ядре, так и модульно. Если драйверы собраны модульно, то на этапе старта ядра нужно их откуда-то подгрузить, потому как коневая файловая система ещё не смонтирована.

И вот для этой цели и служит Initramfs.

Ты пишешь:

Только теперь система не грузится с ядрами из дистрибутива (скомпилированное без проблем грузится). Федора 32. При загрузке система виснет.

Если ты просто собрал своё ядро, сгенерировал Initramfs, не удалял модули от дистрибутивных ядер из /lib/modules/версия_ядра, не удалял файлы initramfs для дистрибутивных ядер из /boot и не удалял конфигурации от старых дистрибутивных ядер из конфигурационного файла загрузчика и не модифицировал их, то с дистрибутивными ядрами ты должен загрузиться.

Конфиг загрузчика должен лежать в /boot/grub/grub.cfg.

Jul 10 20:47:21 localhost.localdomain systemd-modules-load[788]: Failed to look up module alias 'fuse': Function not implemented
Jul 10 20:47:21 localhost.localdomain systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
Jul 10 20:47:21 localhost.localdomain systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
Jul 10 20:47:21 localhost.localdomain systemd[1]: Failed to start Load Kernel Modules.

Вот эти сообщения могут быть как на этапе работы initramfs, так и на этапе после монтирования корневой файловой системы.

В первом случае удостоверься, что ты запускаешь дистрибутивное ядро с Initramfs для этого ядра, во-втором случае удостоверься, что модули в /lib/modules для соответствующей версии дистрибутивного ядра присутствуют.

Удостоверься, что ты не пытаешься запустить дистрибутивное ядро с initramfs от собранного тобой ядра.

Возможно, тебе придётся пересобрать initramfs для дистрибутивных ядер, в этом случае тебе придётся грузиться с LiveCD / LiveUSB хоть той же Fedora Linux, делать chroot в корень установленной системы и перегенерировать Initramfs для дистрибутивных ядер.

Но ты пишешь, что просто собрал ядро и initramfs и попробовал с них загрузиться и более ничего не делал.

В этом случае загрузка с дистрибутивных ядер должна работать.

Но только в том случае, если ты загружаешься с дистрибутивным ядром и дистрибутивным initramfs или с пунктов меню, которые были. А не пробуешь грузить дистрибутивное ядро с Initramfs от твоего ядра.

infomeh ★★
()
Ответ на: комментарий от infomeh

Конфиг загрузчика должен лежать в /boot/grub/grub.cfg.

У меня немного другой путь (/boot/grub2/grub.cfg), но там больше скрипт, чем конфиг https://pastebin.com/gUnz4sFM

Сами конфиги как я понял лежат в /boot/loader/entries Вот ls этой директории

total 28
drwx------. 2 root root 4096 Jul 13 08:51 .
drwxr-xr-x. 3 root root 4096 Apr 14  2018 ..
-rw-r--r--. 1 root root  392 May  2  2019 a66a7117cc4741e0b0f57311b45c0fd8-0-rescue.conf
-rw-r--r--. 1 root root  253 Jun 11 00:51 a66a7117cc4741e0b0f57311b45c0fd8-5.6.18-300.fc32.x86_64.conf
-rw-r--r--. 1 root root  253 Jun 17 19:25 a66a7117cc4741e0b0f57311b45c0fd8-5.6.19-300.fc32.x86_64.conf
-rw-r--r--. 1 root root  218 Jul 10 19:46 a66a7117cc4741e0b0f57311b45c0fd8-5.7.0-dirty.conf
-rw-r--r--  1 root root  249 Jul  9 17:48 a66a7117cc4741e0b0f57311b45c0fd8-5.7.8-200.fc32.x86_64.conf

cat a66a7117cc4741e0b0f57311b45c0fd8-5.7.8-200.fc32.x86_64.conf Вроде все хорошо. Но я впринципе в груб конфиги руками не лазил.

title Fedora (5.7.8-200.fc32.x86_64) 32 (Thirty Two)
version 5.7.8-200.fc32.x86_64
linux /vmlinuz-5.7.8-200.fc32.x86_64
initrd /initramfs-5.7.8-200.fc32.x86_64.img
options $kernelopts
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel

Вот еще ls директории /boot

total 302504
dr-xr-xr-x.  7 root root     4096 Jul 13 08:51 .
dr-xr-xr-x. 19 root root     4096 May  3 08:50 ..
-rw-r--r--.  1 root root   219339 Jun 11 00:50 config-5.6.18-300.fc32.x86_64
-rw-r--r--.  1 root root   219339 Jun 17 19:24 config-5.6.19-300.fc32.x86_64
-rw-r--r--   1 root root   221490 Jul  9 17:47 config-5.7.8-200.fc32.x86_64
drwx------.  4 root root     4096 Apr 26 09:59 efi
-rw-r--r--.  1 root root   184380 Jan 29 17:19 elf-memtest86+-5.01
drwxr-xr-x.  2 root root     4096 Apr 26 09:56 extlinux
drwx------.  6 root root     4096 Jun 19 19:39 grub2
-rw-------.  1 root root 73048009 Apr 14  2018 initramfs-0-rescue-a66a7117cc4741e0b0f57311b45c0fd8.img
-rw-------.  1 root root 41820455 Jun 15 07:49 initramfs-5.6.18-300.fc32.x86_64.img
-rw-------.  1 root root 41814643 Jun 21 08:36 initramfs-5.6.19-300.fc32.x86_64.img
-rw-------.  1 root root 43117257 Jul 10 19:47 initramfs-5.7.0-dirty.img
-rw-------   1 root root 41522749 Jul 13 08:51 initramfs-5.7.8-200.fc32.x86_64.img
drwxr-xr-x.  3 root root     4096 Apr 14  2018 loader
drwx------.  2 root root    16384 Apr 14  2018 lost+found
-rw-r--r--.  1 root root   182704 Jan 29 17:19 memtest86+-5.01
-rw-------.  1 root root  5030080 Jun 11 00:50 System.map-5.6.18-300.fc32.x86_64
-rw-------.  1 root root  5030281 Jun 17 19:24 System.map-5.6.19-300.fc32.x86_64
-rw-r--r--.  1 root root  4837223 Jul 10 19:46 System.map-5.7.0-dirty
-rw-------   1 root root  5102552 Jul  9 17:47 System.map-5.7.8-200.fc32.x86_64
-rwxr-xr-x.  1 root root  8339640 Apr 14  2018 vmlinuz-0-rescue-a66a7117cc4741e0b0f57311b45c0fd8
-rwxr-xr-x.  1 root root 10791016 Jun 11 00:51 vmlinuz-5.6.18-300.fc32.x86_64
-rw-r--r--.  1 root root      167 Jun 11 00:49 .vmlinuz-5.6.18-300.fc32.x86_64.hmac
-rwxr-xr-x.  1 root root 10791016 Jun 17 19:24 vmlinuz-5.6.19-300.fc32.x86_64
-rw-r--r--.  1 root root      167 Jun 17 19:22 .vmlinuz-5.6.19-300.fc32.x86_64.hmac
-rw-r--r--.  1 root root  6590080 Jul 10 19:46 vmlinuz-5.7.0-dirty
-rwxr-xr-x   1 root root 10802696 Jul  9 17:48 vmlinuz-5.7.8-200.fc32.x86_64
-rw-r--r--   1 root root      166 Jul  9 17:46 .vmlinuz-5.7.8-200.fc32.x86_64.hmac

ls для /lib/modules

total 72
drwxr-xr-x.  9 root root  4096 Jul 13 08:50 .
dr-xr-xr-x. 78 root root 36864 Jul 10 18:08 ..
drwxr-xr-x.  2 root root  4096 Apr 29 08:17 5.5.10-200.fc31.x86_64
drwxr-xr-x.  2 root root  4096 Apr 29 08:17 5.5.11-200.fc31.x86_64
drwxr-xr-x.  6 root root  4096 Jun 15 07:48 5.6.18-300.fc32.x86_64
drwxr-xr-x.  6 root root  4096 Jun 21 08:36 5.6.19-300.fc32.x86_64
drwxr-xr-x.  2 root root  4096 May  3 08:51 5.6.6-200.fc31.x86_64
drwxr-xr-x.  3 root root  4096 Jul 10 19:46 5.7.0-dirty
drwxr-xr-x   6 root root  4096 Jul 13 08:51 5.7.8-200.fc32.x86_64

Есть такой файл /lib/modules/5.7.8-200.fc32.x86_64/kernel/fs/fuse/fuse.ko.xz Как я понял это и есть модуль fuse

В общем мне кажется, что проблема где то в дебрях грабовых скриптов. Я еще поизучаю, что там как работает. Тебе в любом случае спасибо за разъяснения о том что как запускается.

Gashish4all
() автор топика
Ответ на: комментарий от infomeh

Если драйверы собраны модульно, то на этапе старта ядра нужно их откуда-то подгрузить, потому как коневая файловая система ещё не смонтирована.

И вот для этой цели и служит Initramfs.

Если они нужны для загрузки ядра, разумеется

Difumm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.