Grub, BIOS и порты SATA
Столкнулся вчера с интересной проблемой. Чуть мозг не сломал. А дело вот в чём. Есть у меня система с мультизагрузкой, где Gentoo стоит на отдельном винте. И, сам не знаю, отчего (то ли винт подкидывалс потом, толи еще что - не упомнишь всего), поставил я Grub в MBR жесткого с виндой. Т.е. всё работало так:
(SATA-1, в BIOS - 1й) /dev/sda - Win7 + Grub (SATA-2, в BIOS - 2й) /dev/sdb - торренты (SATA-3, в BIOS - 3й)/dev/sdc - Gentoo (sdc1 - /boot, sdc2 - /, sdc5 - /home)
Но вот сыпанулся слегка мой sda, и решил я перенести систему на SSD. Сказано - сделано. Подключен четвертым твердотельник, хотя и не без проблем - мать подкинула хлопот с двухслотовым видео. И вот тут начались проблемы с порядком устройств. Дело в том, что пришлось поперетыкать винты на другие порты, системник был закрыт и задвинут. Ну, думаю, не беда - настрою в Grub. Вот тут-то всё и началось. Итак, исходные данные:
(SATA-1, в BIOS - 2й) /dev/sda - старый винт (SATA-2, в BIOS - 1й) /dev/sdb - новый SSD, куда я ставлю Grub (SATA-3, в BIOS - 4й)/dev/sdc - торренты (SATA-4, в BIOS - 3й)/dev/sdd - Gentoo (sdd1 - /boot, sdd2 - /, sdd5 - /home)
Загрузился с флешки, за chroot-ился на Gentoo, поправил menu.lst: поставил root(hd3,0) - раздел /boot, поставил корневой раздел в опции ядра root=/dev/sdd2. Откорректировал fstab.
Ставлю GRUB:
grub --recheck --device-map /boot/grub/device.map
root (hd3,0)
setup(hd1) - MBR нового винта.
Загрузка: не может примонтировать партицию /boot (???)
После получаса разбирательств выясняется, что grub ориентируется на порядок винтов в BIOS, но монтирование партиции после загрузки ядра уже ориентируется на "реальные" порты SATA на матери.
Решение пришло на ум простое: поставить винт с Gentoo в BIOS четвертым, чтобы его порядковый номер соответствовал порту SATA.
Загрузка... и error 17. Вот тут уже я растерялся, и дальше пошел метод проб и ошибок. В итоге, вернул порядок винтов в BIOS на прежний, показанный выше, а в menu.lst сделал так:
root(hd2,0)
kernel .... root=/dev/sdd2
Вот так оно и заработало. Но почему??
Вопрос, который меня мучает до сих пор: почему GRUB не смог загрузиться, когда /dev/sdd реально был и в BIOS четвертым, и подключен к четвортому порту ??? Grub был успешно поставлен
root (hd3,0)
setup(hd1)
device.map переписан корректно за счет --recheck.
В ядре было - root(hd3,0) и kernel root=/dev/sdd2
Всё было логично.
Подскажите, пожалуйста, где копать. У меня идеи закончились.
- Для комментирования войдите или зарегистрируйтесь
Про копать не подскажу. Но
Про копать не подскажу.
Но переход на использование uuid'ов явно должен спасти вождя мирового пролетариата.
:wq
--
Live free or die
Anarchist написал(а): Про
Да это понятно =) uuid - он и в Африке uuid, в какой порт не втыкай... Но сам факт интересен.
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
Тебя не будут мучить эти
Тебя не будут мучить эти вопросы на которые ты уже в принципе ответил
Просто в grub используй команду device, или сделай все тоже самое но поправь карту device.map сам и без --recheck
И если ты не хочешь пользоваться uuid, значит у тебя скорее всего нет initrd, следовательно в твоем случае uuid не спасет вождя мирового пролетариата
taho написал(а): Тебя не
Карту правил, расставляя устройства руками - те же проблемы, что и были. В карту писал устройства так, как они подключены к SATA-портам.
initrd у меня есть, но там только splash.
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист