воскресенье, 15 декабря 2013 г.

Ubuntu, lenovo, GPT и все все все...


Преамбула: если Вам не интересно читать о разбиение дисков и загрузке OS, то можете дальше не читать. :)

Отмазка: все, что вы будите делать, прочитав сие творение - делаете на свой страх и риск! Автор не при чем, если у вас после этого будут проблемы. ;) Так что советую не просто делать, а понимать что делаете. :)



Все началось с того, что у меня на моем Lenovo T520 сгорел винт. Посыпался в один прекрасный день. Чудом я заметил что "началось" и успел спасти данные. Ноут был отнесен в ремонт, а я остался ждать новый винт. Пока суть да дело, решился я поставить еще и SSD. Еще - потому что дороговаты они все же. Поэтому я взял 128Gb на систему (благо в моем ноуте есть слот под mSATA), а штатный веник поставить в /home, решив таким образом проблему малого объема. Постфактум сразу могу сказать, что система конечно стала просто летать! Но было одно "но"...

И так, мне вернули ноут с новым винтом + я купил PLEXTOR PX-128M5M. Конечно же перед разбивкой я полазил и почитал как правильно бить SSD. В двух словах надо правильно выравнивать партиции и использовать "правильный" размер кластера. Иначе можно сильно просадидть производительность. Что бы не парится сильно, следует для разбивки использовать gdisk или parted/gparted. Они в принципе делают все хорошо. А вот если использовать fdisk - тут придется плясать с бубном. В общем поизучав вопрос я разбил диск с помощью parted и естественно решил юзать не устаревший MBR, а новомодный, можно сказать кошерный GPT. Тут и получилось первое попадалово...

Теоретически комп должен грузиться нормально с GPT. Для этого GPT подсовывает BIOS-у нечто вроде MBR с одной единственной boot партицией на весь диск. Но теория часто очень сильно расходится с практикой. Оказалось в моем ноуте есть бага, которая не грузит OS с GPT диска. Пришлось грузить grub с флешки и оттуда уже старовать систему с диска. Неприятно. Порывшись в инете я обнаружил целую кучу коллег по несчастью с такими же как у меня и схожими lenovo. :( В общем ни какие советы и ухищрения не помогли.

Не буду описывать все эксперименты, расскажу как я решил сию проблему. И так, разбиваем диск так:

  1. ОБЯЗАТЕЛЬНО делаем ПЕРВУЮ партицию, с начала диска в gpt размером ~200Mb! Важно, что бы она была именно с начала диска и в нумерации тоже была под номером 1! Любые другие варианты у меня приводили к нулевому результату. Партиция эта должна быть отформатирована в FAT32 и иметь флаг boot. Монтируем данную партицию в /boot/efi/
  2. Так же я ставил 64-битную систему. Говорят с 32 еще больше проблем при загрузке в UEFI.
  3. Далее создаем нужные нам партиции. Я не парился и сделал рутовую и swap.
  4. Если вы инсталите систему с нуля, вероятно она сама поставить efi загрузчик. Если же этого не произошло, или вы, как и я, пробуете переделать уже имующийся диск, то...
  5. Сносим нафиг старый grub. Если это legacy - то тут и говорить нечего, если это второй - то вероятнее всего это grub-pc, а он нам не нужен. Сносим и вычищаем, если у вас ubuntu/debian, то делаем нечто вроде:
    apt-get purge -y --force-yes grub2 grub2-common grub-common grub-gfxpayload-lists grub-imageboot grub-pc grub-pc-bin
    Для своей системы каждый сам разберется что к чему.
  6. Далее ставим grub-efi и делаем update-grub для debian-подобных систем, или просто grub-install для остальных. В результате на fat32 партиции у нас должно появится нечто вроде:
    /boot/efi/EFI/ubuntu/grubx64.efi
  7. Так же, если в вашем дистрибутиве нет чего-то вроде update-grub, то вероятно вам придется еще создать дополнительный пункт в UEFI для загрузки системы с помощью утилиты efibootmgr.
  8. В BIOS-е я переключил режим загрузки с "legacy" в "UEFI Only". Вероятно режим "Both" тоже должен работать.
Собственно после этого легкого шаманства ноут стал нормально загружаться с SSD диска. :) Жаль, что я не знал нюансов про efi партицию. Мне бы тогда не пришлось двигать уже созданное с помощью gparted и терять на это время. :( Поэтому и пишу тут. Может кому-то этом поможет избежать удара граблями по лбу. ;)