LINUX.ORG.RU

arch boot: kernel panic


0

0

Захотелось посмотреть, что за зверь такой - арч. Скачал, нарезал, загрузился. У меня три винта объединенных в софт рейд с рабочей генту. Но есть с этих трех винтов чуток лишнего места, из которого я нарезал два extended раздела (/boot и / для арча). Выглядит это так:

/dev/sdb5 /boot
/dev/sdb6 /
переписывать гетуншный граб мне не захотелось. Скопипаслил то, что у арча в /boot/grub/menu.lst в гентушный граб (с тривиальными фиксами) Первый винт не имеет граба - он просто тупое хранилище. Второй и третий - имеют по грабу (резерв на случай вылета одного из винтов, объединить в миррор руки не дошли). биос пытается загрузиться со второго винта

title  Arch Linux
root   (hd0,4)
kernel /vmlinuz26 root=/dev/disk/by-uuid/60b0a061-7aa6-494b-86bf-7c1884583046 ro initrd /kernel26.img

Вот так сейчас прописано в грабе, который стоит на sdb1. Сам кернел находится и начинает груизиться. Потом паникует потому что не может найти рут (почему-то ругается на unknown block device 0,0) Может кто подскажет, как происходит загрузка ядра с инитрд и на какой именно стадии и по какой причине оно не находит нужный раздел. Пробовал вместо /dev/disk/by-uuid указывать на /dev/sdb6 - но результат тот же. why?

★★

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

как узнать? я привык что кернел хотя бы пишет, какие устройства есть... этот же ничего такого не написал. лайв-сд все прекрасно увидел (включая сетевуху).

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

> как узнать?
Внимательно посмотреть лог загрузки :) Ядро должно написать что-нибудь о найденном контроллере. например:

ICH5: IDE controller at PCI slot 0000:00:1f.1
PCI: Enabling device 0000:00:1f.1 (0005 -> 0007)
ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 169
ICH5: chipset revision 2

eXire ★★
()

> ***extended*** /boot
OMG!!!

Дженту-то как-то грузишь? Зачем тебе ещё один /boot? Оставляй только /

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

Отдельный /boot удобно иметь если стоит несколько линуксов паралельно, это если бут один (ну или два, но они миррорятся).
В таком случае можно держать всё ядра в одной кор^W^W одном месте и menu.list там же.
А то что он extended или primary роли не играет.

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

ну и что, что он екстендед? загрузчик используется гентушный который прописан в мбр этого винта. стейджи для граба лежат в праймари разделе (хотя это для него, похоже, не важно). Это просто раздел, в который арч ложит кернелы и конфиги граба.

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

> ну и что, что он екстендед?
Постарайся ответить на вопрос: «*ЗАЧЕМ*» и поймёшь, что совершенно лишняя сущность, так как кернел можно указать даже как (hd0,4)/boot/linux26

Это просто раздел, в который арч ложит кернелы и конфиги граба.

Во первых не «граба», во вторых попытайся понять всё-таки, что я пытаюсь донести, а не объясняй свои действия. То что ты сделал, или хотел сделать, я понял ещё до того как что-то сюда написал.
Арч может вполне ложить свои кернелы и прочее на 1) джентовский /boot и у себя в / в каталог boot.
Смысла держать /boot не на праймари никакого, принципиально.

Lumi ★★★★★
()

посмотреть проще и быстрее всего в vmware

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

Постарайся ответить на вопрос: «*ЗАЧЕМ*» и поймёшь, что совершенно лишняя сущность, так как кернел можно указать даже как (hd0,4)/boot/linux26

Да знаю я, что можно. Можно и так и эдак. Но мне больше нравится так, а вам - эдак. Но по сути НИЧЕГО от этого не меняется. Предметом обсуждения вообще было не это.

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

я НЕ успеваю это увидеть, а на экране с кернел паником ничего на эту тему нет. Но что настораживает, что list of available block devices (ну или как-то так) - ПУСТ

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

Вариант первый - в initrd нет нужного модуля фс, вариант второй - в initrd нет нужного модуля контроллера. Это самые распространенные причины.

x-demon
()
Ответ на: комментарий от ei-grad

тоже кернел паник, как ни странно

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

Попробуйте добавить «rootdelay=100» может это даст вам время изучить сообщения ядра.

Если верить Arch-wiki http://wiki.archlinux.org/index.php/Configuring_mkinitcpio, то файлы из kernel26-fallback.img извлекаются с помощью bsdtar, то есть можно изучить содержимое, может какого модуля не хватает.

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

да, контроллер сата ядром не обнаружен. содержимое посмотрел. ну есть там какието модули, и что? в mkinitcpio.conf надо что-то добавить кроме того, что там и так есть?

lspci | grep -i sata
00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode]
azure ★★
() автор топика
Ответ на: комментарий от azure

С Arch'ем дела не имел, что там в mkinitcpio.conf не знаю, но иногда бывает надо что-то убавить, а не добавить, например, модуль «ide-pci-generic».

mky ★★★★★
()

> /dev/sdb5

root (hd0,4)


Что-то тут не так. Хотя ядру по идее пофиг, оно по uuid грузиться должно.

pekmop1024 ★★★★★
()

/dev/sdb6 /

root (hd0,4)

Эммм.. никто не заметил или я глючу?
не должно ли, при таком раскладе, быть root (hd1,5)?

Marmirus ★★
()

> Пробовал вместо /dev/disk/by-uuid указывать на /dev/sdb6 - но результат тот же. why?

очевидно что этих устройств в окружении initrd просто нет. Статически эти устройства сейчас никто не создаёт, это должна делать udev, которая видимо в твоём initrd глючит/отсутствует. Значит их надо туда либо добавить руками либо настроить правильные хуки чтобы udev прописывалось в initrd без глюков.

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

> extended или primary на работоспособности boot раздела никак не сказывается
Ты тоже читать не умеешь, что не очень удивительно. Я спрашиваю *ЗАЧЕМ* делать ещё один (праймари|экстендет) раздел для boot второй инсталляции линукса, если уже есть откуда загружаться. А если его делать (вдруг приспичило, ну мозг переклинило, да, бывает), то какой смысл его делать не праймари?

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

> Но мне больше нравится так, а вам - эдак.
Вопрос не в том, что нравится, или не нравится. Я хочу понять, с какой целью это кому-то нравится.

Но по сути НИЧЕГО от этого не меняется.

Меняет. Если уто-то делает через зад в одном месте, то наверняка он делает и большую часть остального тем же способом. И не удивительно, что элементарные вещи не работают.

Предметом обсуждения вообще было не это.

Приношу меня простить за оффтоп.

Могу предложить следующее:

Есть уже установленная рабочая система?
Судя по всему есть.
Заведите у себя в конфиге grub (том, что грузит дженту, возможно у Вас их там тысячи загрузчиков на диске) запись для kernel и initramfs от дженты, а root=<место куда поставили arch>
Далее скопируйте модули ядра дженты в /lib/modules/ раздела с уситановленным arch
Попробуйте загрузиться с этими, заведомо рабочими ядром и инитрамом
Дальше уже по обстоятельствам. Если загрузились, то смотрите, что не так с арчевскими причандалами, если загрузиться и в этом случае не удалось, значит ищите причины в том, что Вы там понавертели из разряда «делаю так как нравится».

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

PS: от количества опечаток даже стыдно стало :(

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

Джаббер у меня в профиле, давай там и померяемся.

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

Эммм.. никто не заметил или я глючу?
не должно ли, при таком раскладе, быть root (hd1,5)?

В биосе есть три опции для встроенного сата контроллера: IDE, AHCI, RAID. мбр есть на втором диске (sdb). Если я гружусь со второго диска (в биосе указал грузиться со второго утсройства) и если стоит IDE, то в терминологии граба этот винт виден как hd0. Если же в биосе стоит AHCI, то этот винт виден как hd1. Установлено экспериментально. граб легаси - то еще дерьмо :) Пробовал и так и так, безрезультатно.

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

А если его делать (вдруг приспичило, ну мозг переклинило, да, бывает), то какой смысл его делать не праймари?

А какой смысл делать его праймари? типа, чтоб наверняка? :) сделать еще два праймари раздела не было возможности (уже три праймари).смешивать бут разделы от разных дистрибов - не хотелось. И делать /boot частью рут-раздела тоже не хотелось

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

> А какой смысл делать его праймари?
А какой смысл его вообще делать, если не праймари?

типа, чтоб наверняка? :)

Наверняка что?

сделать еще два праймари раздела не было возможности (уже три праймари).

Читаете выборочно? Изображаете из себя доцента?

смешивать бут разделы от разных дистрибов - не хотелось.

Один (если голый кернел), два (если с инитрамфээс), три (если с конфигом ядра) файла кому-то сильно помешали?

И делать /boot частью рут-раздела тоже не хотелось

Прямо продакшен какой-то...
Про (hdN,M)/boot/kernel вы тоже мимо ушей пропустили?
Про то, что я предложил попробовать загрузить arch с заведомо работоспособными джентовскими ядром и инитрамфээсом тоже?

Если в первых сообщениях как-то обидел, прошу прощения, или это повод игнорировать мои дальнейшие предложения помощи?

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

> В биосе есть три опции для встроенного сата контроллера: IDE, AHCI, RAID. мбр есть на втором диске (sdb).

Может быть имеет смысл сделать его первым? Раз уж

Если я гружусь со второго диска (в биосе указал грузиться со второго утсройства) и если стоит IDE, то в терминологии граба этот винт виден как hd0. Если же в биосе стоит AHCI, то этот винт виден как hd1.


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

Установлено экспериментально. граб легаси - то еще дерьмо :)

Говорят, плохому танцору даже кастрация не помогает.

Пробовал и так и так, безрезультатно.

Постараюсь удержаться от комментария...

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

Про то, что я предложил попробовать загрузить arch с заведомо работоспособными джентовскими ядром и инитрамфээсом тоже?

Я предлагаю прекратить дискуссию выборочности восприятия и несущественных моментов вроде разделов.

Логично, что с рабочим гентушным ядром все загружается нормально (оно не через initrd а напрямую). Вопрос был в том, как заставить арч работать с его собственным ядром на моем конкретном железе. С инитрд я очень мало знаком и вообще с трудом понимаю, для чего это придумали. Лайв-сд с которого устанавливался (net install, x86_64) все устройства увиделись без проблем.

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

Так загрузись с рабочим гентушным ядром и внутри арча переустанови ядро, по идее инитэрдэ обязан сгенерироваться. Можно распотрошить текущий и посмотреть, есть ли там какие либо модули. Если нет, то просто прописать их в конфиге, выше тебе уже все написали и ты сам этот конфиг здесь приводил с пустым списком модулей. Ну и прочитать наконец-то мануалы. Удачи.

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

как обычно и бывает, все оказалось банальней. должно было быть

kernel /vmlinuz26 root=/dev/disk/by-uuid/60b0a061-7aa6-494b-86bf-7c1884583046 ro
initrd /kernel26.img

а вот так было:

kernel /vmlinuz26 root=/dev/disk/by-uuid/60b0a061-7aa6-494b-86bf-7c1884583046 ro initrd /kernel26.img

Всем спасибо за дискуссию.

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

Про то, что я предложил попробовать загрузить arch с заведомо работоспособными джентовскими ядром и инитрамфээсом тоже?

А я обычно советую грузить генту с заведомо работоспособным ядром и инитрамфэсом из арча)))

ei-grad ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.