Bug 25388 - Ну удаётся загрузиться с текущим сизифом на HP DL360
Summary: Ну удаётся загрузиться с текущим сизифом на HP DL360
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:
 
Reported: 2011-04-05 16:36 MSK by Sergey Alembekov
Modified: 2021-04-12 14:46 MSK (History)
18 users (show)

See Also:


Attachments
скриншот ошибки (98.46 KB, image/png)
2011-04-05 16:39 MSK, Sergey Alembekov
no flags Details
bugreport (144.20 KB, application/octet-stream)
2011-06-09 10:51 MSK, Sergey Alembekov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Alembekov 2011-04-05 16:36:31 MSK
Пробовались ядра 2.6.37 и 2.6.38. С 2.6.30 грузится нормально.
Ситуация такова, что драйвер хьюлетовского raid-контроллера cciss, начиная с 2.6.33 был интегрирован в ядро под именем hpsa. Поменялись и названия утсройств в /dev. Если раньше это был /dev/cciss/c0d0, то с момента интеграции должен стать /dev/sda.

fstab:
proc		/proc			proc	nosuid,noexec,gid=proc		0 0
devpts		/dev/pts		devpts	nosuid,noexec,gid=tty,mode=620	0 0
tmpfs		/tmp			tmpfs	nosuid				0 0
UUID=6771a017-9dd9-48e9-baf2-41477af4dfba	/	ext3	relatime	1	1
UUID=1dd884c5-0901-4761-8499-75dec9b36e8e	/usr	ext3	nodev,relatime	1	2
UUID=07c7c523-6eb9-4c2c-9b94-81a9a0a369c3	/var	ext3	nosuid,relatime	1	2
UUID=547efb63-4017-4a63-aace-5925cb18e57c	/var/lib/pgsql-root/var/lib/pgsql	ext3	noexec,nosuid,nodev,relatime,	1	2
#UUID=99c48152-9a77-4529-95b4-e0c09e4c81a1	/var/lib/pgsql/backups	ext3	nosuid,nodev,noexec	1	2
UUID=99c48152-9a77-4529-95b4-e0c09e4c81a1	/storage	ext3	nosuid,nodev	1	2
UUID=1ed4f8e4-0c10-4aa6-b0d7-0a0c78ea2882	/var/log	ext3	nosuid,nodev,noexec	1	2
UUID=c7280740-6950-4e33-b993-4b1f8970c47b	swap	swap	defaults	0	0
/dev/sr0	/media/cdrom	udf,iso9660	ro,noauto,user,utf8	0 0

lilo.conf:
image="/boot/vmlinuz-2.6.38-std-def-alt1"
	initrd="/boot/initrd-2.6.38-std-def-alt1.img"
	label="2638-std-def-1"
	root="UUID=6771a017-9dd9-48e9-baf2-41477af4dfba"
	read-only
	optional
Comment 1 Sergey Alembekov 2011-04-05 16:39:17 MSK
Created attachment 4866 [details]
скриншот ошибки
Comment 2 Anton Farygin 2011-04-05 16:42:57 MSK
Сергей, а это случайно не udev виноват ?

При чём тут ядро то ? драйвер загружается тот, который надо ?
Comment 3 Anton Farygin 2011-04-05 16:45:13 MSK
а, вижу ошибку. Ну, переезд с /dev/cciss/c0d0 на /dev/sda тут не виноват - новый драйвер почему-то не поднимается на твоей железке.
Comment 4 Sergey Vlasov 2011-04-05 18:53:54 MSK
Стоит попробовать загрузку с параметром:
  intel_iommu=off

Ядра std-def 2.6.37 и 2.6.38 сейчас собраны с CONFIG_DMAR_DEFAULT_ON=y; в el-smp эта опция выключена. Хотя тут ошибка может быть даже не в самом ядре, а в BIOS.
Comment 5 Sergey Alembekov 2011-04-06 13:22:41 MSK
попробовал intel_iommu=off с ядром 2.6.38 и ядро 2.6.32-el-smp без дополнительных параметров, на обоих ядрах ситуация одинаковая: вышеприведёных ошибок нет, но udev не может смонтировать корень. Из консольки initrd видно, что в /dev нет никаких устройств sd*, lsmod говорит, что драйвер hpsa загружен, но не используется. Перевешивать багу на udev?

Кстати, вообще по поддержке контроллеров HP в сети и нашел вот это: 

For newer kernels and newer controllers, we are transitioning
things to hpsa, and we do not want any overlap between the
two drivers.

For cciss, the supported controllers in newer kernels should be:

        {0x40700E11, "Smart Array 5300", &SA5_access},
        {0x40800E11, "Smart Array 5i", &SA5B_access},
        {0x40820E11, "Smart Array 532", &SA5B_access},
        {0x40830E11, "Smart Array 5312", &SA5B_access},
        {0x409A0E11, "Smart Array 641", &SA5_access},
        {0x409B0E11, "Smart Array 642", &SA5_access},
        {0x409C0E11, "Smart Array 6400", &SA5_access},
        {0x409D0E11, "Smart Array 6400 EM", &SA5_access},
        {0x40910E11, "Smart Array 6i", &SA5_access},
        {0x3225103C, "Smart Array P600", &SA5_access},
        {0x3223103C, "Smart Array P800", &SA5_access},
        {0x3234103C, "Smart Array P400", &SA5_access},
        {0x3235103C, "Smart Array P400i", &SA5_access},
        {0x3211103C, "Smart Array E200i", &SA5_access},
        {0x3212103C, "Smart Array E200", &SA5_access},
        {0x3213103C, "Smart Array E200i", &SA5_access},
        {0x3214103C, "Smart Array E200i", &SA5_access},
        {0x3215103C, "Smart Array E200i", &SA5_access},
        {0x3237103C, "Smart Array E500", &SA5_access},
        {0x323d103c, "Smart Array P700M", &SA5_access},

For hpsa, it should be:

        {0x3241103C, "Smart Array P212", &SA5_access},
        {0x3243103C, "Smart Array P410", &SA5_access},
        {0x3245103C, "Smart Array P410i", &SA5_access},
        {0x3247103C, "Smart Array P411", &SA5_access},
        {0x3249103C, "Smart Array P812", &SA5_access},
        {0x324a103C, "Smart Array P712m", &SA5_access},
        {0x324b103C, "Smart Array P711m", &SA5_access},
        {0x3233103C, "StorageWorks P1210m", &SA5_access},
        {0x333F103C, "StorageWorks P1210m", &SA5_access},
        {0x3350103C, "Smart Array", &SA5_access},
        {0x3351103C, "Smart Array", &SA5_access},
        {0x3352103C, "Smart Array", &SA5_access},
        {0x3353103C, "Smart Array", &SA5_access},
        {0x3354103C, "Smart Array", &SA5_access},
        {0x3355103C, "Smart Array", &SA5_access},

So, a few which used to be supported by cciss are now supported
only by hpsa, and there should be no overlap between the two
drivers.

Ну и вот околопроблемная ссылочка: http://www.gossamer-threads.com/lists/linux/kernel/1349728
Comment 6 Sergey Vlasov 2011-04-06 17:39:24 MSK
Возможно, ещё не хватает модуля sd_mod - со старым драйвером он был не нужен, а вот hpsa полностью работает через подсистему SCSI.  В mkinitrd был код, добавлявший sd_mod при добавлении модуля, каким-либо образом использующего модули из kernel/drivers/scsi.
Comment 7 Sergey Alembekov 2011-04-07 18:04:05 MSK
(В ответ на комментарий №6)
> Возможно, ещё не хватает модуля sd_mod - со старым драйвером он был не нужен, а
> вот hpsa полностью работает через подсистему SCSI.  В mkinitrd был код,
> добавлявший sd_mod при добавлении модуля, каким-либо образом использующего
> модули из kernel/drivers/scsi.

Точно, дел было именно в этом!
Итого, для 2.6.38-std-def-alt1 нужно добавить intel_iommu=off и пересоздать initrd с sd_mod.
Для 2.6.32-el-smp только пересоздать initrd.
Бага уезжает на make-initrd.
Comment 8 Michael Shigorin 2011-04-07 19:38:48 MSK
Хм, hpsa тянет scsi_mod, но не sd_mod...  Хотя конкретно для initrd может и быть смысл вытягивать sd_mod, если попал scsi_mod.
Comment 9 Sergey Vlasov 2011-04-07 20:52:01 MSK
(В ответ на комментарий №8)
> Хм, hpsa тянет scsi_mod, но не sd_mod...
Это всегда так и было для всех драйверов SCSI-контроллеров.

> Хотя конкретно для initrd может и
> быть смысл вытягивать sd_mod, если попал scsi_mod.
Примерно так и делалось в mkinitrd (точнее, там в ModuleKind это определялось по расположению самого модуля или модулей, вытягиваемых по зависимостям).
Comment 10 Alexey Gladkov 2011-04-08 00:10:18 MSK
Не могли бы вы попробовать:

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=HEAD

?
Comment 11 Sergey Alembekov 2011-04-08 12:40:06 MSK
Обновил прошивку на контроллере и биос - теперь 2.6.38 грузится без intel_iommu=off. Т.е. ядро полностью работоспособно. 
Сергей, спасибо вам большое за эту подсказку!

(В ответ на комментарий №10)
> Не могли бы вы попробовать:
> 
> http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=HEAD

Ок, попробую.
Comment 12 Sergey Alembekov 2011-04-12 16:34:17 MSK
Нет, патчик не помог.
С ним в initrd добавлялся модуль scsi_mod, а надо sd_mod.

Вот с таким конфигом генерится рабочий intrd: MODULES_PRELOAD = sd_mod hpsa
Comment 13 Alexey Gladkov 2011-04-12 16:49:38 MSK
Можете прислать: make-initrd bug-report ?
Comment 14 Alexey Gladkov 2011-04-12 18:22:38 MSK
(В ответ на комментарий №12)
> Нет, патчик не помог.
> С ним в initrd добавлялся модуль scsi_mod, а надо sd_mod.

конечно sd_mod. я запутался и добавил не тот модуль. Исправил (с force):

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=60f9a5a7cf7588e68df8a944bccedfa4a810aed5

но bug-report вы всё равно приложите потому что мне казалось, что sd_mod должен вытягиваться по modalias.
Comment 15 Alexey Gladkov 2011-04-25 23:42:23 MSK
В виду отсутствия реакции выпускаю make-initrd этим фиксом и считаю, что проблема решена.
Comment 16 Sergey Alembekov 2011-06-09 10:47:59 MSK
Я извиняюсь что не ответил вовремя - перестала приходить почта от багзиллы.
Сейчас поробовал make-initrd 0.5.0-alt1 - ситуация не изменилась.
Ситуация такова: загружено ядро 2.6.32 - там ещё старый драйвер, установлено 2.6.38 и для него генерится initd:

#rpm -q make-initrd
make-initrd-0.5.0-alt1

#sudo make-initrd -k 2.6.38-da-ng-alt3 -v
Config file: /etc/initrd.mk
Generating module dependencies on host ...
depmod -a -F "/boot/System.map-2.6.38-da-ng-alt3" "2.6.38-da-ng-alt3"
Guessed modules: ext3 hpsa scsi_mod 
Guessed features: add-modules cleanup compress 
Creating initrd image ...
mkdir: created directory `/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/img'
mkdir: created directory `./conf'
mkdir: created directory `./dev'
mkdir: created directory `./etc'
mkdir: created directory `./etc/modprobe.d'
mkdir: created directory `./etc/udev'
mkdir: created directory `./etc/udev/rules.d'
mkdir: created directory `.//lib'
mkdir: created directory `.//lib/modules'
mkdir: created directory `.//lib/modules/2.6.38-da-ng-alt3'
mkdir: created directory `./lib/udev'
mkdir: created directory `./mnt'
mkdir: created directory `./root'
mkdir: created directory `./proc'
mkdir: created directory `./sys'
mkdir: created directory `./tmp'
mkdir: created directory `./var'
mkdir: created directory `./var/lock'
put-tree: Copying '/lib/initrd' recursively ...
put-tree: Copying '/lib/initrd' recursively ...
put-tree: Copying '/usr/share/make-initrd/data' recursively ...
create-initrd: Setting ash as /bin/sh ...
create-initrd: Copying files from /etc/modprobe.d ...
create-initrd: Copying files from /lib/udev/initramfs-rules.d ...
Adding modules ...
add-module: Adding module "mbcache.ko"
add-module: Adding module "jbd.ko"
add-module: Adding module "ext3.ko"
add-module: Adding module "scsi_mod.ko"
add-module: Adding module "hpsa.ko"
Generating module dependencies in image ...
/sbin/depmod -a -F "/boot/System.map-2.6.38-da-ng-alt3" -b /tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/img \
		"2.6.38-da-ng-alt3"
Packed modules: ext3 hpsa jbd mbcache scsi_mod 
Packing image to archive ...
Compressing image ...
Installing image ...
`/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/initrd.img' -> `/boot/initrd-2.6.38-da-ng-alt3.img'
removed `/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/initrd.img'
Removing work directory ...
rm -rf -- "/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/img" "/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd/guess"
rmdir -- "/tmp/make-initrd.oX1sqgakw/2.6.38-da-ng-alt3.initrd"

Image is saved as /boot/initrd-2.6.38-da-ng-alt3.img

Как видно, sd_mod в initrd не попал.
Если что, ядра собственной сборки, но влиять на ситуацию это не должно.
Comment 17 Sergey Alembekov 2011-06-09 10:51:09 MSK
Created attachment 4969 [details]
bugreport

Кстати в bugreport попадает конфиг текущего ядра, но не попадает конфиг ядра, для которого генерися initrd. Запускалось так: make-initrd -k 2.6.38-da-ng-alt3 bug-report
Comment 18 Michael Shigorin 2012-04-07 20:28:20 MSK
(In reply to comment #16)
> Как видно, sd_mod в initrd не попал.
Наконец поймал то же самое на ноуте с 0.7.3-alt1 и 3.2.14-std-pae-alt1; помогло MODULES_PRELOAD += sd_mod, думаю дальше.
Comment 19 Michael Shigorin 2012-05-24 14:26:48 MSK
В 0.7.6/0.7.8 были изменения по части определения встроенных модулей (в el-smp sd_mod впаян статиком), см. bug #27321.
Comment 20 Michael Shigorin 2020-09-27 20:15:32 MSK
Ещё актуально?
Comment 21 Alexey Gladkov 2021-04-12 14:46:21 MSK
Не актуально. Если это не так, то переоткройте.