Автор Тема: Загрузка с SATA диска через STLab A-380  (Прочитано 4518 раз)

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Здравствуйте!
Вначале описание:
У меня материнка без SATA. Купил вот такой SATA контроллер http://fcshop.ru/price/hardware/p_c_2:t_8:info_65183_Kontroller_SATA_2kan._STLabA_380__PCI_.html.
Перекопировал на раздел sda5 rsync'ом корневой раздел. Домашний раздел перекопировал на sda6.
Установил загрузчик grub. Пометил sda1 как загрузочный. sda, а не sdb потому, что другой диск hda.
Выполнял вот такие команлы:
grub
root (hd1,4)
setup (hd1)
quit
При загрузке управление передаётся на hda (IDE). В menu.lst есть запись:
rootnoverify (hd1)
chainloader +1
Управление передаётся на sda. Вот как выглядит menu.lst на этом разделе:
timeout=12
title Linux
root (hd1,4)
kernel /boot/vmlinuz root=/dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d
initrd /boot/initrd.img

title Linux2
kernel /dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d/boot/vmlinuz-2.6.30-std-def-alt14 root=/dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d
initrd /dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d/boot/initrd-2.6.30-std-def-alt14.img

title Linux3
kernel /dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d/boot/vmlinuz-2.6.30-std-def-alt15 root=/dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d
initrd /dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d/boot/initrd-2.6.30-std-def-alt15.img

title hdb
rootnoverify (hd0)
chainloader +1
Вот вывод blkid:
[root@Linux ~]# blkid
/dev/hda1: TYPE="swap" UUID="25074218-b2a8-4afa-bd8d-2943b66c6915"
/dev/hda2: UUID="81ee05f9-4906-45f4-9732-ed01c73716ad" TYPE="ext3" SEC_TYPE="ext2"
/dev/hda5: UUID="334c541c-9349-4eb6-930d-e9c8f70f4628" TYPE="ext3" SEC_TYPE="ext2"
/dev/sda1: UUID="67fbff0a-79b1-4d31-8c28-e70f1ce3f1e8" TYPE="ext3"
/dev/sda2: UUID="4DAE-8F74" TYPE="vfat"
/dev/sda5: UUID="b554f815-eacd-4caf-a446-d0e51783cf4d" TYPE="ext3"
/dev/sda6: UUID="b49845d8-b030-42c1-88d4-5008e57717b2" TYPE="ext3"
[root@Linux ~]#

В чём проблема:
А проблема в том, что Linux не грузится!
Загрузка останавливается на waiting for root filesystem и всё!


Оффлайн Карлсон

  • Завсегдатай
  • *
  • Сообщений: 1 699
Re: Загрузка с SATA диска через STLab A-380
« Ответ #1 : 17.05.2011 10:26:32 »
Загрузка останавливается на waiting for root filesystem и всё!

Вы забыли пересоздать initrd и включить в него драйвер для вашего контроллера?

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 261
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #2 : 17.05.2011 10:30:12 »
Возможно надо пересоздать initrd для нового контроллера

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #3 : 17.05.2011 11:06:02 »
В смысле драйверов нет?
А как?
mkinitrd --with [с чем?]

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #4 : 17.05.2011 13:10:13 »
Блин!
То есть не грузится из-за того, что нет драйверов/модулей в initrd?
А откуда взять эти драйвера?
У меня есть диск с драйверами на эту плату. Там куча всего.
Более менее подходящей мне показалась одна папочка (прикрепил).
Но там целая история - какой-то исходник и пересборка ядра, как я понял по инструкции.
Как загрузиться не понятно...  ???

Оффлайн Карлсон

  • Завсегдатай
  • *
  • Сообщений: 1 699
Re: Загрузка с SATA диска через STLab A-380
« Ответ #5 : 17.05.2011 13:16:56 »
Как загрузиться не понятно...  ???

Попробуйте поиск по форуму, ключевое слово mkinitrd

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 261
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #6 : 17.05.2011 15:23:44 »
Загрузитесь с LiveCD или rescue и создайте.

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #7 : 17.05.2011 15:52:47 »
Цитировать
Попробуйте поиск по форуму, ключевое слово mkinitrd
Да не, я понимаю, что mkinitrd.
mkinitrd --with [что-то там] testinitrd 2.6.30-std-def-alt15
Мне не понятно, что надо написать вместо [что-то там] и откуда это "что-то там" взять...
Цитировать
Загрузитесь с LiveCD или rescue и создайте.
Зачем? Я и в обычной системе могу это сделать.

А точно это из-за initrd?
Может быть есть тонкость в menu.lst какая-то?
Управление же диску передаётся. Загрузчик же с диска считывается как-то.
А виснет на "wait for root filesystem".

Оффлайн Карлсон

  • Завсегдатай
  • *
  • Сообщений: 1 699
Re: Загрузка с SATA диска через STLab A-380
« Ответ #8 : 17.05.2011 17:00:04 »
Загрузчик же с диска считывается как-то.

Для этого не нужен драйвер контролера, хватает и функций БИОСа.

Идете в интернет или в загруженную систему с вашим контроллером, и смотрите, каким драйвером (модулем ядра) он управляется. И собираете initrd с нужным драйвером.

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #9 : 18.05.2011 11:50:20 »
Ну, ясно.
BIOS считывает своими функциями, а в initrd нет драйверов для доступа к диску - получается, что Linux не знает как работать с этим диском.

Цитировать
Идете в интернет или в загруженную систему с вашим контроллером, и смотрите, каким драйвером (модулем ядра) он управляется. И собираете initrd с нужным драйвером.
У меня есть целый диск с драйверами от этого уонтроллера, но там целая куча всего. Под виндавоз есть как обычно, есть и под Linux.
Но в инструкции, которую я выложил написано, что надо собирать пакет из изсходников, а потом вместе с ним пересобирать ядро.
Ну, идею понял. Попробую поразбираюсь.
Может быть проще грузиться с IDE диска, а потом подмонтировать SATA для данных...
Для чтения/записи этот SATA монтируется без проблем.

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #10 : 18.05.2011 12:47:57 »
А вопрос такой:
А как же я тогда впринципе читаю этот раздел?
Я же гружусь с IDE диска hda и вижу все разделы диска SATA, который подключен к этому контроллеру.
Если я его читаю, то почему я не могу с него загрузиться? Я этого понять не могу.
Если этот диск я бы не видел через контроллер - тогда понятно, но я же ведь его вижу.
Значит необходимые компоненты есть в системе.
Видимо, я не могу загрузиться из-за того, что этих компонент нет в initrd, но они есть в системе где-то.
А раз они есть, то может быть эти существующие модули включить в initrd?
Но как найти их?

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 261
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #11 : 18.05.2011 12:58:58 »
Там искать ничего не надо - загрузились с liveCD,  или даже rescue, mount -o bind для proc, dev и sys (как при восстановлении lilo), chroot на корень и создаёте initrd, а команда создания initrd сама засовывает все загруженные модули в initrd (можно конечно её и поправить, но про это читайте её man). Ну и не забыть положить новый initrd в /boot и дать команду lilo.

Команду создания initrd не называю, так-как есть две команды - старая и новая.

Оффлайн Meatcoins

  • Завсегдатай
  • *
  • Сообщений: 320
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #12 : 18.05.2011 15:06:46 »
Я вот так сделал:
[root@Linux ~]# cd /lib/modules
[root@Linux modules]# ls
2.6.30-std-def-alt14  2.6.30-std-def-alt15  nvidia
[root@Linux modules]# cd /media/disk-3/boot
[root@Linux boot]# mkinitrd newinitrd.img 2.6.30-std-def-alt15
[root@Linux boot]# ls
System.map-2.6.30-std-def-alt14  initrd.img
System.map-2.6.30-std-def-alt15  map
boot                             memtest-4.00.bin
boot.0300                        newinitrd.img
config-2.6.30-std-def-alt14      splash
config-2.6.30-std-def-alt15      vmlinuz
grub                             vmlinuz-2.6.30-std-def-alt14
initrd-2.6.30-std-def-alt14.img  vmlinuz-2.6.30-std-def-alt15
initrd-2.6.30-std-def-alt15.img
[root@Linux boot]#
В /boot/grub/menu.lst я прописал:
title Linux_newinitrd
root (hd1,4)
kernel /boot/vmlinuz root=/dev/disk/by-uuid/b554f815-eacd-4caf-a446-d0e51783cf4d
initrd /boot/newinitrd.img
Загрузилось!

Цитировать
Там искать ничего не надо - загрузились с liveCD,  или даже rescue, mount -o bind для proc, dev и sys (как при восстановлении lilo), chroot на корень и создаёте initrd, а команда создания initrd сама засовывает все загруженные модули в initrd (можно конечно её и поправить, но про это читайте её man). Ну и не забыть положить новый initrd в /boot и дать команду lilo.
ruslandh
А вот здесь я не понял. А зачем грузиться с LiveCD, если я гружусь с другого диска (IDE диск)?
Я не понял на счёт mount -o bind для proc, dev и sys. Зачем это надо?
А как выглядит конретная команда?
mount -o bind /media/disk/proc /proc
mount -o bind /media/disk/dev /dev
mount -o bind /media/disk/sys/sys
Правильно?
А ещё вопрос. Я не понимаю что делает команда chroot. Она что виртуально делает любую папку как бы корневой? То есть все запущенные script'ы и программы будут думать, после команды chroot /home/user/dir, что папка /home/user/dir/subdir лежит в /subdir?
Правильно?

Цитировать
Команду создания initrd не называю, так-как есть две команды - старая и новая.
А я только одну знаю - mkinitrd.
Это старая или новая команда?
А вторая команда какая?

Онлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 261
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Загрузка с SATA диска через STLab A-380
« Ответ #13 : 18.05.2011 16:51:41 »
Цитировать
вот здесь я не понял. А зачем грузиться с LiveCD, если я гружусь с другого диска (IDE диск)?
Не у всех есть второй диск. Я с прицелом на  то, что кто-то столкнётся с этой-же проблемой после, а IDE диска может и не быть.
mount -o bind /media/disk/proc /proc
mount -o bind /media/disk/dev /dev
mount -o bind /media/disk/sys/sys
chroot меняет корень у программ, запущенных "после" или "внутри" неё.
Цитировать
после команды chroot /home/user/dir, что папка /home/user/dir/subdir лежит в /subdir?
Да