Kernel panic при загрузке c несколькими HDD

На компе 3 жестких, c Генту, с виндой и без оси, генту отказывается грузиться более чем с 1 жестким, т.е. кроме как с собственным - выдает Kernel panic, в чем может быть трабла?

Прошу прощения, не уверен что

Прошу прощения, не уверен что правильно понял вопрос... Вы боитесь что загрузчик будет путать диски? Если про GRUB2...
Операционка только одна?

Если я что-то прошу, то заранее спасибо!

Да, этого и боюсь, ибо он это

Да, этого и боюсь, ибо он это уже и делает, он неправильный UUID раздела определил при grub2-mkconfig, оси 2 (на SATA стоит win7). И заодно хотелось бы посмотреть на файлы /etc/grub.d/
особенно на файлик, отвечающий за ручное добавление пункта меню 40_custom, если не ошибаюсь :)

Если у вас GRUB2, то

Если у вас GRUB2, то попробуйте использовать OS-PROBER.
С sda должно быть все ясно. Это диск на котором загрузчик. Мне так кажется...

То что он не правильно определил UUID можно исправить вручную. ls -ln /dev/disk/by-uuid

p.s. так же, вроде, если нет initrd, загрузчик не будет работать с UUID.

А вообще давайте дождемся более компетентных людей, а то я Вас если честно не очень понимаю.

Если я что-то прошу, то заранее спасибо!

Есть еще одна особенность:

Есть еще одна особенность: жесткие диски без конца отключаются физически (мануально).
И в этой теме товарищ говорит, что у него все определяется без инитрд: http://www.gentoo.ru/node/23756
Да, как бы OS-Prober все находит, все ядра и винду, но когда начинаешь грузить ядро, то вываливается kernel panic, где он пишет, что не понимает раздел, к примеру sdc1 и пишет что UUID'шники всех разделов равны нулю.

Лично я смотрел сюда. Оттуда

Лично я смотрел сюда. Оттуда следует, что при втором грабе для загрузки с uuid нужен initrd. В любом случае попробовать можете. genkernel ramdisk его создаст.
Ещё, на Вашем месте я бы при установке оставил только те HDD, на которых находятся ОСи. После успешной установки можно подключать третий.
Если не получается с UUID, пропишите по старинке /dev/sd*. Если будет только два диска, проблем быть не должно.

А вообще, самый лучший совет который я Вам могу дать, это писать так чтобы было понятно с первого поста. Прописать все условности, тонкости и особенности Вашего случая. А то получается что про ОСи я должен был справивать. Про то что Вы иногда отключаете HDD вручную я узнал случайно из Вашего коммента.
Мне кажется большинство пройдет мимо только из-за того что вопрос поставлен как-то неоднозначно.

Если я что-то прошу, то заранее спасибо!

Пардоньте, 3 тема на данном

Пардоньте, 3 тема на данном форуме *PARDON*, виноват, исправлюсь :)

Я собственно отключал все жестянки кроме для генту, все ставил (еще с первым грабом) и все работало, а если подключать остальные - то начиналась 'суть проблемы'. Инитрд я попробую создать.
И я выше писал, что /dev/sd* меняется в зависимости от того какой жесткий раньше определился, пока жесткий один стоит - естественно работает, а когда еще 2, то уже нет, сидеть угадывать?)
Вопрос можно поставить совсем просто: "Есть винт с генту, есть еще 2 винта, как сконфигурировать загрузчик, чтобы при отсоединении 1 и/или 2 жестких система все равно загружалась?" =)

Я вам, собственно, ниже

Я вам, собственно, ниже отписал, но подучите матчасть.

Имя устройства жесткого диска '/dev/sd*' зависит от того к какому каналу контроллера он подключён.

Parallel ATA (PATA) IDE (old ata):

Primary Master: /dev/hda
Primary Slave: /dev/hdb

Secondary Master: /dev/hdc
Secondary Slave: /dev/hdd

Parallel ATA (PATA) IDE (libata):

Primary Master: /dev/sda
Primary Slave: /dev/sdb

Secondary Master: /dev/sdc
Secondary Slave: /dev/sdd

Serial ATA (SATA):

Sata Channel1: /dev/sda
Sata Channel2: /dev/sdb
Sata Channel3: /dev/sdc
Sata Channel4: /dev/sdd
Sata Channel5: /dev/sde
Sata Channel6: /dev/sdf

libata - новая реализации подсистемы ядра для доступа к контролерам жёстких дисков.
old ata - старая подсистема, сейчас deprecated.

В случае, если диск подключен только один на интерфейс IDE с libata или интерфейс SATA не зависимо от канала, к которому он подключен, диск будет /dev/sda.

В случае IDE с old ata в зависимости от канала подключения диск будет иметь соответствующее имя, а не /dev/hda, даже если он один.

Теперь пример, для закрепления материала, допустим у вас все диски SATA. К примеру диск с Gentoo у вас подключен на канал SATA3, вначале, когда он один ядро его определит как /dev/sda, но затем, если вы подключите на первый канал (SATA1) ещё один диск, то диск с Gentoo ядро определит уже как /dev/sdb, если вы не подключили ещё один диск на SATA2.

Один диск с Gentoo:

Sata Channel1: NONE
Sata Channel2: NONE
Sata Channel3: Gentoo HDD - /dev/sda
Sata Channel4: NONE
Sata Channel5: NONE
Sata Channel6: NONE

Три диска, включая диск с Gentoo:

Sata Channel1: Windows HDD - /dev/sda
Sata Channel2: NONE
Sata Channel3: Gentoo HDD - /dev/sdb
Sata Channel4: DATA HDD - /dev/sdc
Sata Channel5: NONE
Sata Channel6: NONE

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

К примеру, если у вас есть PATA и SATA контроллеры и их поддержка собрана модулем.

вот и сижу сейчас с генту, с

вот и сижу сейчас с генту, с одним жестким все грузится нормально, а с 2 и более - Kernel panic

Когда у вас подключен один

Когда у вас подключен один диск и Gentoo загружается, он у вас определяется как /dev/sda, корневой раздел вы указываете так: root=/dev/sdaX.

Когда вы подключаете ещё два диска, видимо, они подключаются к более младшим SATA каналам., вследствие чего диск с Gentoo определяется как /dev/sdc.

Либо подключите диск с Gentoo на первый sata канал, sata1, остальные два диске всё равно как, либо создайте initrd с поддержкой меток файловых систем и уникальных идентификаторов:

genkernel ramdisk --disklabel

Пропишите в /etc/fstab монтирование корневого раздела по UUID и в конфигурации загрузчика укажите также корневой раздел, передаваемый в виде параметра ядру, через UUID=.

UUID узнаете из вывода команды blkid.

# blkid

Спасибо большое за подробный

Спасибо большое за подробный ответ,в планах появилось установить генту на sata диск (сейчас на ide), дело в том что я пробовал изменить пункты загрузки из граба на sdc, sdb , и каждый раз не попадал

Прочитайте это моё сообщение:

Прочитайте это моё сообщение: http://gentoo.ru/node/24658#comment-183853

Так же раз у вас два контроллера IDE и SATA соберите их поддержку монолитно иначе может быть чехарда с именованием устройств.

Но лучше всё же собрать initrd с поддержкой 'disklabel' и указать параметр корневого раздела для ядра не как 'root=/dev/sdaX', а как 'root=UUID=*****' или 'root=LABEL='. Не забудьте так же подправить /etc/fstab и через UUID указать корневой раздел.

Не обязательно переставлять Gentoo на SATA диск с IDE диска и так всё будет нормально.

/

kostik87 написал(а):
или 'root=LABEL='

Меня давно интересует (в ленивом режиме) что произойдёт при возникновении коллизии LABEL'ов с подключённым носителем?
:)

:wq
--
Live free or die

Не проверял на практике, но

Не проверял на практике, но думаю, что будет монтироваться та файловая система, которая находится на жёстком диске с более младшим именем устройства, к примеру на /dev/sda3 И /dev/sdc2 файловые системы имеют одинаковые метки, скорее всего команда 'findfs LABEL=root' вернёт имя раздела /dev/sda3, но нужно проверять на практике.

Проверьте, к примеру создайте два файла, повесе их на петлевое устройство, создайте на них по файловой системе и при создании назначьте одинаковые метки файловым системам, затем выполните 'findfs LABEL=root'.

# dd if=/dev/zero of=/tmp/file1 bs=1M count=100
# dd if=/dev/zero of=/tmp/file2 bs=1M count=100
# losetup -f /tmp/file1
# losetup -f /tmp/file2
# losetup -a | grep "file"
# mkfs.ext4 /dev/loopX1 -L mylabel
# mkfs.ext4 /dev/loopX2 -L mylabel
# blkid
# findfs LABEL=mylabel

Отпишитесь, что получилось.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".