Bug 35991 - Не генерирует в virtualbox, если включена фича plymouth
Summary: Не генерирует в virtualbox, если включена фича plymouth
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: all Linux
: P3 critical
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 33000
  Show dependency tree
 
Reported: 2019-01-29 11:25 MSK by Антон Мидюков
Modified: 2019-01-31 16:53 MSK (History)
7 users (show)

See Also:


Attachments
лог неудачного make-initrd в virtualbox (61.03 KB, text/plain)
2019-01-29 17:01 MSK, Антон Мидюков
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2019-01-29 11:25:57 MSK
Проблема эта, видимо давно, но не проявлялась из-за бага 35941. Теперь же после его исправления, если включена фича plymouth в /etc/initrd.mk образ не генерируется, иногда:

[root@localhost ~]# PS1="(CHROOT) $PS1" chroot /mnt/destination/ /bin/bash
(CHROOT) [root@localhost /]# mount /proc
mount: /proc: proc already mounted on /proc.
(CHROOT) [root@localhost /]# mount /dev/pts
(CHROOT) [root@localhost /]# mount -t sysfs none /sys
mount: /sys: none already mounted or mount point busy.
(CHROOT) [root@localhost /]# make-initrd
Config file: /etc/initrd.mk
Generating module dependencies on host ...
Creating initrd image ...
Adding plymouth support ...
Adding modules ...
add-module: Unable to handle pattern: /lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko
make: *** [/usr/share/make-initrd/features/add-modules/rules.mk:10: add-modules] Ошибка 1
make: *** [/usr/share/make-initrd/mk/make-initrd.mk:29: all] Ошибка 1
(CHROOT) [root@localhost /]# ls lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko
lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko
Comment 1 Антон Мидюков 2019-01-29 11:28:07 MSK
<(CHROOT) [root@localhost /]# mount -t sysfs none /sys
<mount: /sys: none already mounted or mount point busy.

То, что /sys не примонтировался не критично, когда я чрутился?
Comment 2 Alexey Gladkov 2019-01-29 11:45:48 MSK
> То, что /sys не примонтировался не критично, когда я чрутился?

Критично.
Comment 3 Alexey Gladkov 2019-01-29 11:49:00 MSK
Покажите /etc/initrd.mk
Comment 4 Антон Мидюков 2019-01-29 11:56:22 MSK
В загрузившейся системе, тоже обломился. А в rescue, в котором нет vboxvideo.ko сгенерировался успешно. Загрузился с plymouth. При этом проявился баг квадратики вместо кириллицы в консоли. 

(В ответ на комментарий №3)
> Покажите /etc/initrd.mk

cat /etc/initrd.mk
# trying to detect modules and features to access to root volume
AUTODETECT = all
MODULES_PRELOAD += autofs4
FEATURES += plymouth
Comment 5 Alexey Gladkov 2019-01-29 14:12:00 MSK
Чего-то у меня не получается воспроизвести.

# grep -v ^# /etc/initrd.mk
AUTODETECT = all
FEATURES += plymouth
MODULES_ADD += vboxvideo

# make-initrd -b /tmp -k 4.14.96-std-def-alt1
Config file: /etc/initrd.mk
Creating initrd image ...
Adding plymouth support ...
Adding modules ...
Adding rescue modules ...
Adding module dependencies ...
Generating module dependencies in image ...
Adding initrd shell support (shell mode) ...
Packed modules: ata_generic ata_piix crc16 crc32c_generic crc32c-intel ehci-hcd ehci-pci evdev ext4 fscrypto hid hid-apple hid-appleir hid-generic input-leds intel-agp intel-gtt jbd2 libata mbcache pata_acpi scsi_mod sd_mod sis-agp usb-common usbcore usbhid usbkbd vboxvideo via-agp 
Sorting sysvinit services ...
Packing image to archive ...
Writing build info files ...
Compressing image ...
Installing image ...
Unpacked size: 23M
Image size: 7,3M
Removing work directory ...

Image is saved as /tmp/initrd-4.14.96-std-def-alt1.img

Я пробовал как с MODULES_ADD так и без него. Образ нормально создаётся.
Comment 6 Антон Мидюков 2019-01-29 14:27:12 MSK
А как пробовали? Я пробую устанавливать регулярку, заглядываю в /boot установленной системы, вижу, initrd образа нет, чрутюсь, пробую make-initrd. Регулярки здесь: http://nightly.altlinux.org/sisyphus/snapshots/20190129/
Comment 7 Alexey Gladkov 2019-01-29 15:03:01 MSK
(In reply to comment #6)
> А как пробовали?

Поставил ядро из сизифа, поставил модуль для virtualbox, создал образ для указанного ядра.

kernel-image-std-def-4.14.96-alt1.x86_64
kernel-modules-virtualbox-addition-std-def-5.2.24-alt1.265824.1.x86_64

# rpmquery -a make-initrd\*
make-initrd-2.2.8-alt1.x86_64
make-initrd-plymouth-2.2.8-alt1.x86_64
make-initrd-busybox-1.28.1-alt1.x86_64
make-initrd-ucode-2.2.8-alt1.x86_64

В такой конфигурации образ создаётся, plymouth внутри есть, с vboxvideo проблем не вижу.

> Я пробую устанавливать регулярку, заглядываю в /boot
> установленной системы, вижу, initrd образа нет, чрутюсь, пробую make-initrd.
> Регулярки здесь: http://nightly.altlinux.org/sisyphus/snapshots/20190129/

Я ничего не знаю про регулярки и что они делают там у себя внутри.
Comment 8 Антон Мидюков 2019-01-29 15:31:48 MSK
(В ответ на комментарий №7)
> (In reply to comment #6)
> # rpmquery -a make-initrd\*
> make-initrd-2.2.8-alt1.x86_64
> make-initrd-plymouth-2.2.8-alt1.x86_64
> make-initrd-busybox-1.28.1-alt1.x86_64
> make-initrd-ucode-2.2.8-alt1.x86_64
> 

А у меня поболее:
# rpmquery -a make-initrd\*
make-initrd-busybox-1.28.1-alt1.x86_64
make-initrd-ucode-2.2.8-alt1.x86_64
make-initrd-luks-2.2.8-alt1.x86_64
make-initrd-lvm-2.2.8-alt1.x86_64
make-initrd-2.2.8-alt1.x86_64
make-initrd-mdadm-2.2.8-alt1.x86_64
make-initrd-devmapper-2.2.8-alt1.x86_64
make-initrd-plymouth-2.2.8-alt1.x86_64

Попробуйте с таким набором.
Comment 9 Антон Мидюков 2019-01-29 16:41:27 MSK
Я нашёл причину.
Обламывается в add-module вот здесь:
if [ -n "${KERNEL_MODULES-}" ]; then
find "$KERNEL_MODULES" -type f | { grep -E -e "$n" || :>"$workdir/abort"; } |

По той причине, что $KERNEL_MODULES = /lib/modules/4.14.96-std-def-alt1/kernel
а vboxvideo.ko у нас лежит здесь:
/lib/modules/4.14.96-std-def-alt1/misc/

То есть нужно изменить путь поиска или добавить ещё одно место для поиска.
Comment 10 Alexey Gladkov 2019-01-29 16:51:30 MSK
(In reply to comment #9)
> Я нашёл причину.
> Обламывается в add-module вот здесь:
> if [ -n "${KERNEL_MODULES-}" ]; then
> find "$KERNEL_MODULES" -type f | { grep -E -e "$n" || :>"$workdir/abort"; } |

> По той причине, что $KERNEL_MODULES = /lib/modules/4.14.96-std-def-alt1/kernel
> а vboxvideo.ko у нас лежит здесь:
> /lib/modules/4.14.96-std-def-alt1/misc/
> 
> То есть нужно изменить путь поиска или добавить ещё одно место для поиска.

Нет, дело не в этом. Модули добавляются не только оттуда. Как я уже говорил, я сгенерировал образ с этим модулем без ошибок:

# initrd-ls /tmp/initrd-4.14.96-std-def-alt1.img |grep vboxvideo
1 -rw-r--r-- 1 0 0  100168 Jan 16 16:14:41 2019 ./lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko

Приложите лог от: make-initrd -v
Comment 11 Антон Мидюков 2019-01-29 17:01:56 MSK
Created attachment 7973 [details]
лог неудачного make-initrd в virtualbox
Comment 12 Alexey Gladkov 2019-01-29 17:48:47 MSK
Я понял в чём проблема.
Comment 13 Антон Мидюков 2019-01-30 11:27:37 MSK
(В ответ на комментарий №12)
> Я понял в чём проблема.

Поделитесь?

Заметил, что vboxvideo.ko предоставляется также kernel-modules-staging: /lib/modules/4.14.96-std-def-alt1/kernel/drivers/staging/vboxvideo/vboxvideo.ko.gz 

Если удалить kernel/drivers/staging/vboxvideo, то сборка всё равно не чинится. А если удалить /lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko то чинится, и в образ попадает misc/vboxvideo.ko.gz

Какая-то лотерея. То нормально собирается при установке live, то не собирается. Проверил, что когда собирается при установке live, в initrd попадает модуль из misc.
Comment 14 Alexey Gladkov 2019-01-31 13:25:12 MSK
Попробуйте make-initrd 2.2.9-alt1, который уже в сизифе.
Comment 15 Антон Мидюков 2019-01-31 16:53:33 MSK
(В ответ на комментарий №14)
> Попробуйте make-initrd 2.2.9-alt1, который уже в сизифе.

Воспроизвёл баг, установил новый make-initrd. make-initrd успешно создался.

initrd-ls /boot/initrd-4.14.96-std-def-alt1.img |grep vboxvideo
1 -rw-r--r-- 1 0 0  100168 Jan 16 22:14:41 2019 ./lib/modules/4.14.96-std-def-alt1/misc/vboxvideo.ko

Спасибо!