Конфигурация: На материнской плате Gigabyte GA-7N400 Pro2 имеется встроенный SATA контроллер 01:0d.0 Silicon Image Serial ATARaid Controller [ CMD/Sil 3112/3112A ] (rev 02) с подключенным к нему SATA винчестером Segate. # rpm -qa | grep mkinitrd mkinitrd-2.9.4-alt1 # uname -a Linux jim 2.6.11-std26-up-alt6 Проблема: К сожалению, невозможно заставить грузиться с SATA винчестера. При загрузке системы выводится: Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: ST3200822AS Rev: 3.01 Type: Direct-Access ANSI SCSI revision: 05 но НЕ происходит определение разделов: sda: sda1 sda2 sda3 sda4 < sda5 sda6 > и в конце "Unable to mount root" При использовании следующих изменений в /sbin/mkinitrd, позволяющих включить ide_scsi в initrd, проблема разрешается: --- /sbin/mkinitrd.orig 2005-03-29 01:54:21 +0300 +++ /sbin/mkinitrd 2005-03-29 01:55:38 +0300 @@ -144,7 +144,7 @@ PRE_SCSI_MODNAMES="scsi_mod sd_mod unknown" IGNORE_MODNAMES="`NormalizedName "$IGNORE_MODNAMES"`" -IGNORE_MODNAMES=" $IGNORE_MODNAMES ppa imm ide_scsi usb_storage" +IGNORE_MODNAMES=" $IGNORE_MODNAMES ppa imm usb_storage" LOADED_MODNAMES= loopDev=
ide_scsi не нужен для загрузки с SATA (более того, сейчас в ядрах 2.6.x он работает не совсем правильно). Попробуйте выполнить от root команду mkinitrd -fvd test.img 2.6.11-std26-up-alt6 >mkinitrd.log 2>&1 (с неизменённым /sbin/mkinitrd), после чего прицепите сюда полученный mkinitrd.log.
К сожалению, не получил сразу уведомления из Bugzilla, поэтому затянул с ответом (то ли в prefs что-то не так, то ли почтовый сервер наш плох). Данная вами конфигурация не могла заработать в принципе, но я честно наступил на все грабли ещё раз. Итак, методика тестирования: --- Вернули назад mkinitrd: # patch -R -d / -p0 < initrd.diff patching file /sbin/mkinitrd Hunk #1 succeeded at 150 (offset 6 lines). --- Версия test1, без sata_sil.ko: # /sbin/mkinitrd -fvd initrd-2.6.11.img.test.1 2.6.11-std26-up-alt6 &> mkinitrd.log --- Версия test2, с sata_sil.ko, но без ide-scsi.ko: # /sbin/mkinitrd -fvd --with=sata_sil initrd-2.6.11.img.test.2 2.6.11-std26-up-alt6 &> mkinitrd-sil.log --- Пропатчили mkinitrd: # patch -d / -p0 < initrd.diff patching file /sbin/mkinitrd Hunk #1 succeeded at 150 (offset 6 lines). --- Полноценная рабочая версия test3. Она точно работает: # /sbin/mkinitrd -fvd --with=sata_sil initrd-2.6.11.img.test.3 2.6.11-std26-up-alt6 &> mkinitrd-sil-scsi.log После этого я создал ещё 3 записи в /etc/lilo.conf (см. add_info.txt в аттаче). Результаты загрузки (приведены кратко, полные сообщения можно проследить в прилагаемом add_info.txt в аттаче): [test1] hda: hda1 Using /lib/.../exportfs.ko Using /lib/.../xfs.ko VFS: Cannot open root device "803" or unknown-block(8,3) Please append a correct "root=" option Kernel panic... [test2] Using /lib/.../exportfs.ko Using /lib/.../xfs.ko Using /lib/.../scsi_mod.ko Using /lib/.../libata.ko Using /lib/.../sata_sil.ko ... ata1: dev 0 ATA, max UDMA/133, 390721968 sectors: lba48 ata1(0): applying Seagate errata fix ata1: dev 0 configured for UDMA/100 scsi0: sata_sil scsi1: sata_sil Vendor: ATA Model: ST3200822AS Rev: 3.01 Type: Direct-Access ANSI SCSI revision: 05 VFS: Cannot open root device "803" or unknown-block(8,3) Please append a correct "root=" option Kernel panic... [test3] (загрузка прилагается в dmesg в add_info.txt)
Created attachment 890 [details] Архив с логами + дополнительная информация
Так, понятно. Что указано в /etc/modules.conf в строке "probeall scsi_hostadapter ..."? Похоже, там только ide-scsi. Если же там есть какие-то условные операторы, подставляющие туда sata_sil в зависимости от версии ядра, они могли не сработать из-за Bug #6827 (если генерация initrd происходила при загруженном ядре 2.4.x); в mkinitrd-2.9.7-alt1 эта проблема устранена. Для загрузки с дисков SCSI (в том числе с устройств, использующих эмуляцию SCSI - именно таким образом работает драйвер sata_sil и вообще все драйверы libata), кроме драйвера контроллера, необходимо также загрузить модуль sd_mod (драйвер верхнего уровня для SCSI-дисков). mkinitrd добавляет sd_mod в initrd автоматически, но только если обнаруживает, что добавлен хотя бы один драйвер контроллера SCSI; если драйвер контроллера добавляется через --with или --preload, автоматическое добавление sd_mod не происходит. В mkinitrd < 2.9.5-alt1 автоматическое определение драйверов SCSI отсутствовало вовсе - загружались только драйверы, указанные в probeall scsi_hostadapter. Если список драйверов не был указан вовсе, или в нём содержались только драйверы, перечисленные в переменной IGNORE_MODNAMES, модуль sd_mod тоже не добавлялся в initrd. В mkinitrd >= 2.9.6-alt1 реализовано автоопределение драйверов для контроллеров SCSI/RAID (в том числе SATA) на шине PCI. Однако автоопределение выполняется только в том случае, если в modules.conf отсутствуют записи для scsi_hostadapter; если в списке probeall scsi_hostadapter указан хотя бы один модуль, используются модули только из этого списка. Модуль sd_mod добавляется в initrd в том случае, если хотя бы один модуль (либо из списка в scsi_hostadapter, либо из автоматически определённых модулей) является драйвером SCSI-контроллера (это определяется по зависимостям модуля). Таким образом, для решения данной проблемы необходимо исправить modules.conf: - либо добавить sata_sil в список probeall scsi_hostadapter, - либо установить mkinitrd >= 2.9.6-alt1, libhw-tools >= 0.2.12-alt1, после чего удалить из modules.conf записи о scsi_hostadapter - в этом случае будет работать автоопределение, но возможно изменение порядка устройств, если имеется несколько контроллеров. При ручном добавлении SCSI-драйверов в initrd через --preload или --with необходимо аналогичным образом добавить в initrd и модуль sd_mod.
Да, вы были правы насчёт scsi_hostadapter: после добавления в него sata_sil проблема решилась. Обсуждаемую проблему нужно учесть ещё в двух местах: - инсталляторе - при переходе от ядра 2.4 к 2.6 Испытать второй способ нету возожности, так как последняя доступная версия в Sisyphus -- mkinitrd-2.9.4-alt1.
(In reply to comment #5) > Да, вы были правы насчёт scsi_hostadapter: после добавления в него sata_sil > проблема решилась. Обсуждаемую проблему нужно учесть ещё в двух местах: > - инсталляторе Собственно, именно для него и делалась эта поддержка в mkinitrd (текущая версия нового инсталятора вообще не прописывает scsi_hostadapter в modules.conf). > - при переходе от ядра 2.4 к 2.6 На самом деле это действительно может быть важно при переходе с 2.4.26 и более старых версий при использовании контроллеров Silicon Image - в старых ядрах эти контроллеры работали через драйверы IDE. Для других контроллеров SATA либо уже использовалась эмуляция SCSI, либо вовсе не было поддержки в старых ядрах. > Испытать второй способ нету возожности, так как последняя доступная версия в > Sisyphus -- mkinitrd-2.9.4-alt1. Да, ещё не выложилось.
Вроде нормально