LINUX.ORG.RU

Загрузиться с винта с операционкой на старом ноуте (возможно, без EFI)

 , , ,


0

0

Один ноутбук окончательно отбросил копыта. Решил переставить жесткий диск в старый ноут и продолжить жить как ни в чем не бывало. Переставил винт, ничего не грузится - мигает нижнее подчеркивание в левом верхнем углу и все, никакого граба.

Биос винт видит. Загрузился с лайвсд Ubuntu 15.04 - все ок - сама грузицца (пишу с нее), разделы диска с файлами тоже видит.

Перед тем, как что-то переустанавливать и править граб, хочу понять, в чем проблема. По простой логике он должен был взять и загрузиться с главного загрузочного раздела, показать граб и так далее. Т.е. перезаписывать граб и MBR должно быть бесполезно - они там и так все записаны как надо (предыдущий ноут грузился ок еще сегодня утром). Есть подозрение, что новый ноут слишком старый (возможно даже без EFI и прочей п@№#%ни - в биосе не вижу ничего похожего на секуре бут или что-то похожее), поэтому чего-то новомодного, появившегося в последние 6-8 лет может не понимать.

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

Новый (старый) ноут - Sony Vaio VGN-CR41SR. На винте Ubuntu 14.04

$ sudo fdisk -l

Disk /dev/loop0: 1 GiB, 1101672448 bytes, 2151704 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: E550E223-77FD-4E55-8592-ABB9F3E575D2

Device         Start       End   Sectors   Size Type
/dev/sda1       2048   1050623   1048576   512M EFI System
/dev/sda2    1050624 118237183 117186560  55.9G Linux filesystem
/dev/sda3  118237184 508862463 390625280 186.3G Linux filesystem
/dev/sda4  508862464 976771071 467908608 223.1G Linux filesystem
★★★★★

Можно сделать DUET, недавно проводил эксперимент.

+ Разделы останутся как есть.
- Нужно хорошо владеть рукопашным dd

Вариант по проще. Ужать ESP раздел на пару МБ и установить гибридный GRUB.

surefire ★★★
()
Последнее исправление: surefire (всего исправлений: 2)
Ответ на: комментарий от surefire

Вариант по проще. Ужать ESP раздел на пару МБ и установить гибридный GRUB.

Можно здесь чуть подробнее? В принципе, я не против этот ESP (/dev/sda1=EFI?) вообще переформатировать нафиг, только во что? Что значит гибридный граб? Обычный граб, например, из инсталлера с убунтой и парой галочек в настройках пойдет за гибридный или нужно качать левые сборки какие-то?

Сейчас в каком-то обсуждении чел написал, что удалил раздел EFI, сделал на его месте BOOT, поставил ему флаг bios_grub. Я пока ограничился сменой флагов (в gparted) /dev/sda1 с «boot, esp» на «bios_grub», легче не стало.

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

подмонтировал /dev/sda1, наблюдаю там

ls ./EFT/ubuntu/
grub.cfg grubx64.efi MokManager.efi shimx64.efi

может там этот grub.cfg скопировать куда повыше, чтобы она бутом стала?

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

ESP, да это и есть EFI System (Partition).

На самом деле он и так вполне прекрасно может выполнять функции /boot

Возьми gparted, сделай ресайз на 2 мегабайта. Далее в gdisk в меню - x extra functionality (experts only)
нужно выполнить - h recompute CHS values in protective/hybrid MBR при условии, что разметка до этого не имела MBR protective.

На освободившемся месте создай не форматированный раздел EF02.

Теперь можно ставить grub, сейчас по памяти точно не вспомню.

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

Если ты до этого грузился в EFI режиме, то у тебя сейчас нет кода загрузчика в главной загрузочной записи, а прочие файлы загрузчика вообще в формате x86_64-efi.

Сейчас нужно установить код загрузчика в нулевой сектор, создать раздел или изменить текущий пометив его флагом bios_grub, читай вот этот коментарий: Debian Squeeze на gpt - Куда и как инсталлятор ставит grub? (комментарий)

И ниже до конца.

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

GRUB всё равно не загрузиться, ему нужен или EFI или MBR. То что я описал, это для создания MBR совместимого загрузчика на GPT разметке.

Иначе придется конвертировать всю разметку в MBR и всё равно GRUB придётся ставить. Сам он в первый сектор не пропишется.

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

пока без ресайза

sudo gdisk /dev/sda

GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.


>при условии, что разметка до этого не имела MBR protective.

Т.е. имела. 

Или все-таки нужно сначала отресайзить?
bender ★★★★★
() автор топика
Ответ на: комментарий от bender

Эти 2 действия независимы, нужен и ресайз, и MBR protective. Далее создание раздела с кодом EF02 на пустом месте и затем установка GRUB.

surefire ★★★
()

Прошивка (или BIOS) этого ноута, видимо, не умеет в GPT. Мой с EFI, диск в GPT, но прекрасно грузится через lilo.

yars068 ★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Ответ на: комментарий от surefire

короче, грузицца. Сделал следующее

1. Сменил флаг /dev/sda1 на bios_grub через gparted

2. Монтировал старый рут в /mnt:

sudo mount /dev/sda2 /mnt

3. Сделал grub-install

по инструкции откуда-то отсюда https://help.ubuntu.com/community/Grub2/Installing

sudo grub-install --boot-directory=/mnt/boot /dev/sda

После этого раздел /dev/sda1 превратился из vfat'а в неформатированный диск (файлы EFI улетели, все-таки нужно было сделать резайз, но и фиг с ними). После перезагрузки появился граб и дальше радость.

Последняя команда, насколько я понимаю, во-первых, записывает граб в MBR на /dev/sda, во-вторых, ищет раздел с флагом bios_grub (для этого нужен шаг1), чтобы записать туда всякую свою хрень, /boot берет из корня старой системы (а не из раздела EFI, который уничтожается).

P.S. Если быть совсем честным, то перед финальными двумя шагами, после которых все заработало, я еще немного покуролесил с чрутом на /dev/sda2 и выполнил update-grub (перегенерировал меню загрузки) внутри, не знаю, повлияло ли это на что-то или нет (по идее, меню загрузки уже было сгенерировано раньше, с другой стороны - оно могло улететь вместе с данными с раздела EFI), ну и ладно.

в любом случае всем спасибо, без вас я бы не справился

bender ★★★★★
() автор топика
Последнее исправление: bender (всего исправлений: 1)
Ответ на: комментарий от bender

bios_grub - это и есть раздел с кодом EF02 которому достаточно выделить 2МБ. Вот так gparted сбивает с толку ничего не подозревающих людей. Именно по этому я советовал создать его в gdisk.

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

Да не, gparted себя повел как раз корректно - он разрешает менять флаги разделов туда-сюда-обратно, данные при этом не страдают.

Данные с раздела EFI кокнул grub-install - я что-то подумал (точнее, понадеялся как на один из возможных вариантов), что он там создаст папочку /boot рядом с папочкой EFI, положит туда меню и прочие свои ошметки, которые ему необходимы для загрузки. А он взял и весь раздел зачистил вместе со всей файловой системой. В общем я ближайшее время старое железо реанимировать не планирую, поэтому и так нормально.

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

Да не, gparted себя повел как раз корректно - он разрешает менять флаги разделов туда-сюда-обратно, данные при этом не страдают.

В том то и дело, что это никакой не флаг, а тип раздела. Список типов можно глянуть командой sgdisk -L

А он взял и весь раздел зачистил вместе со всей файловой системой.

Это было ожидаемо, только не весь раздел, а первые мегабайт-два, не больше.

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