LINUX.ORG.RU

Ошибка при запуске самосборного ядра

 ,


0

1

Пробовал собрать calculate и liquorix из исходников, при включенном в /etc/genkernel.conf lvm=yes зависает на этапе загрузки initramfs в grub, без lvm=yes ошибка как на скриншоте etx4 собран в ядре (не как модуль) использую uefi, efi в ядре везде вроде бы включено, один раз собрал с текущим конфигом, не изменяя, но та же ошибка при загрузке. Calculate 13.11.1 kde

★★★★★

Ответ на: комментарий от Torvus

Да

 sys-fs/lvm2
      Latest version available: 2.02.103
      Latest version installed: 2.02.103
      Size of files: 1,312 kB
      Homepage:      http://sources.redhat.com/lvm2/
      Description:   User-land utilities for LVM2 (device-mapper) software.
      License:       GPL-2

Landgraf ★★★★★
() автор топика

initrd используете ?

Ядро само не умеет монтировать файловые системы по UUID, для этого нужен initrd. Ну и для активации группы томов так же нужен initrd с lvm.

Можете собрать посредством genkernel, ну или посредством родной для calculate утилиты.

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

Покажите команду, которой генерировали initrd (initramfs) для нового ядра. И строку с параметрами, передаваемыми новому ядру.

Заодно и конфиг ядра.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87
 linux	/boot/vmlinuz-3.14.4-geek-x86_64-CLD root=UUID=b9bb92b1-3ca1-421d-b6cf-ce43044046c8 ro video=uvesafb:ywrap,1600x1200-32,mtrr:3,splash=silent,theme:calculate tuxonice tuxonice_resume=UUID=f1d23718-1279-4582-a4bc-90c98811726f real_resume=UUID=f1d23718-1279-4582-a4bc-90c98811726f elevator=cfq doscsi calculate=video:nvidia console=tty1 udev quiet  


генерирую и собираю ядро через утилиту calculate

sudo cl-kernel -o -m -k /usr/src/linux-3.14.4-geek

конфиг ядра http://pastebin.com/ApsJ2TXf
И да, в /etc/genkernel.conf lvm=yes надо ставить? Если поставить и собрать зависнет на загрузке initramfs, к слову initramfs создается

Landgraf ★★★★★
() автор топика
Последнее исправление: Landgraf (всего исправлений: 1)
Ответ на: комментарий от Landgraf

Если initramfs собирается посредством genkernel, то как минимум в параметрах, передаваемых ядру, должен присутствовать параметр dolvm.

Кроме всего прочего править конфиг genkernel не обязательно, можно вызывать так:

genkernel ramdisk --lvm --disk-label

Удостоверьтесь, что заргужете ядро именно с этим initramfs.

Так же сверьтесь вот с этим руководством: http://wiki.gentoo.org/wiki/LVM/ru#.D0.AF.D0.B4.D1.80.D0.BE

У вас часть рекомендованных опций не включена:

CONFIG_DM_BUFIO=m
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_MIRROR=m
# CONFIG_DM_LOG_USERSPACE is not set
CONFIG_DM_RAID=m
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_DM_SWITCH is not set
И две прочие опции, которые недоступны до активции выделенной опции. Так же в initramfs должны присутствовать модули поддержки указанных драйвров или поддержка оных должна быть включена монолитно в ядре.

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

сделал

CONFIG_DM_BUFIO=y
CONFIG_DM_BIO_PRISON=m
CONFIG_DM_PERSISTENT_DATA=m
# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
CONFIG_DM_CRYPT=y
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_MIRROR=y
# CONFIG_DM_LOG_USERSPACE is not set
CONFIG_DM_RAID=m
# CONFIG_DM_ZERO is not set
CONFIG_DM_MULTIPATH=y
CONFIG_DM_MULTIPATH_QL=y
CONFIG_DM_MULTIPATH_ST=y
# CONFIG_DM_DELAY is not set
# CONFIG_DM_UEVENT is not set
# CONFIG_DM_FLAKEY is not set
# CONFIG_DM_VERITY is not set
# CONFIG_DM_SWITCH is not set
Пересобрал, ext4 сделал в ядре, все равно ошибка такая же, использовал и гентушную утилиту и утилиту calculate'A

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

kostik87

Если initramfs собирается посредством genkernel, то как минимум в параметрах, передаваемых ядру, должен присутствовать параметр dolvm.

Параметр dolvm добавили к параметрам ядра? Без него активация группы томов производиться не будет, даже если в initramfs присутствует lvm. Параметр обрабатывается сценарием init в initramfs, собранным Genkernel.

В initramfs присутствует lvm?

Процедура распаковки и запаковки initrd выглядит примерно так: загрузочные скрипты в tiny core linux (комментарий)

Покажите какую команду вводили для генерации initramfs.

все равно ошибка такая же

Если у тебя корень на LVM, то у тебя нет утилит для активации LVM в initramfs, смотри команду, которую я тебе написал выше для генерации средствами genkernel initramfs содержащего утилиты активации LVM томов. Или используешь не тот initramfs. Если /boot на отдельном разделе, то предварительно смонтируй его.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 4)
Ответ на: комментарий от kostik87

Я использую uefi, первый раздел - fat32 , lvm я вроде как не использую, собрав с поддержкой lvm ошибка об lvm пропала, это видно на новом скриншоте, извините за качество.
sudo cl-kernel -o -m --lvm -k /usr/src/linux-3.14.4-geek -так собирал ядро с initramfs, через genkernel ошибка точно такая же как и в этом случае, на lvm больше не жалуется.

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

lspci -k http://pastebin.com/MeVzB8Z1
blkid

 
/dev/sda1: UUID="AD1C-D475" TYPE="vfat" PARTUUID="fb254407-06c0-4162-beb0-3432239e6083"                                               
/dev/sda2: LABEL="CLD-13.11.1" UUID="b9bb92b1-3ca1-421d-b6cf-ce43044046c8" TYPE="ext4" PARTUUID="3bfc1491-c8c4-4eb7-8242-d7fcbe6ff3ee" 
/dev/sda3: UUID="486eecf9-3d9e-4597-b4b8-1c135e3ef8ec" TYPE="ext4" PARTUUID="2f6d750c-6843-4993-bde9-d3675860fcc6" 
/dev/sda4: UUID="a59c79f6-5a58-44e2-9fc7-5582e96c53d2" TYPE="ext4" PARTUUID="8258bba7-1c45-4c4e-9049-090185b37015" 
/dev/sda5: UUID="36b41df8-37fd-4479-8e84-3568430888d9" TYPE="ext4" PARTUUID="3d900f19-4bc7-4fd4-986c-85b91f9c47b3" 
/dev/sda6: UUID="f1d23718-1279-4582-a4bc-90c98811726f" TYPE="swap" PARTUUID="e5621558-edca-4e18-bcfb-f8cd7a8e5a8d"

/etc/fstab

#------------------------------------------------------------------------------
# Modified Calculate-core 3.1.9.3
# Processed template files:
# /var/lib/layman/calculate/profiles/templates/3.1/1_ac_install_disk/2-system/sys-apps/baselayout/fstab
# For modify this file, create /etc/fstab.clt template.
#------------------------------------------------------------------------------
# / was on /dev/sda2 during installation
UUID=b9bb92b1-3ca1-421d-b6cf-ce43044046c8       /       ext4    noatime 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=AD1C-D475  /boot/efi       vfat    noatime 0 0
# /home was on /dev/sda4 during installation
UUID=a59c79f6-5a58-44e2-9fc7-5582e96c53d2       /home   ext4    noatime 0 0

# swap was on /dev/sda6 during installation
UUID=f1d23718-1279-4582-a4bc-90c98811726f       none    swap    sw      0 0

proc            /proc           proc    defaults                0 0
shm             /dev/shm        tmpfs   nodev,nosuid,noexec     0 0


/etc/default/grub http://pastebin.com/a5YGS3UV
/boot/grub/grub.cfg http://pastebin.com/rdBL1Lyf

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

Ну и как бы ещё остаётся один нюанс, а именно указание корневого раздела через UUID.

Не знаю как дела обстоят с cl-kernel, но в случае использования genkernel для генериции intramfs нужно указывать параметр '--disklabel', иначе Init сценарий в Initramfs не сможет по UUID найти раздел.

Так что можешь попробовать вместо root=UUID=b9bb92b1-3ca1-421d-b6cf-ce43044046c8 указать root=/dev/sda2.

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

А где это указывать? В /etc/default/grub опции root не нашел. Может исправить /etc/fstab? И вообще зачем оно нужно?

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

В /etc/default/grub опции root не нашел.

Читать не умеем?

# Uncomment if you don't want GRUB to pass «root=UUID=xxx» parameter to kernel
#GRUB_DISABLE_LINUX_UUID=true
Но лучше просто в загрузчике выберите пункт, в котором загружается новое ядро, нажмите клавишу «e», отредактируйте строку параметров ядра и нажмите клавишу «F10» для теста. Либо просто отредактируйте конфигурационный файл /boot/grub/grub.cfg.

Может исправить /etc/fstab?

Не надо.

И вообще зачем оно нужно?

Что нужно?

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

пробовал, просто вместо uuid в ошибке пишет /dev/sda2

 search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 --hint='hd0,gpt2'  b9bb92b1-3ca1-421d-b6cf-ce43044046c8
else
  search --no-floppy --fs-uuid --set=root b9bb92b1-3ca1-421d-b6cf-ce43044046c8 

аа вот тут вместо uuid надо в конце просто писать /dev/sda2 , а --fs-uuid удалить? Или вместо него что-то написать нужно?

Landgraf ★★★★★
() автор топика
Последнее исправление: Landgraf (всего исправлений: 1)
Ответ на: комментарий от kostik87

В intramfs нет драйверов ext2 ext3 ext4 !!! Но они были помечены как компилируемые в ядре, их модулями надо компилировать получается?

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

с драйверами ext в ядре все то же самое (

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

Все получилось, проблема исчезла после обновления dracut и утилит для сборки.

Landgraf ★★★★★
() автор топика
Последнее исправление: Landgraf (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.