вторник, 23 мая 2017 г.

Как восстановить работоспособность One Key Recovery в Windows 10 на ноутбуке Lenovo

На ноутбуках Lenovo, как впрочем и на ноутбуках других производителей, идёт много предустановленных мусорных программ (блотвари). Но среди всего хлама есть довольно полезная программа One Key Recovery от CyberLink. Если вы не умеете пользоваться другими средствами восстановления системы, то можете воспользоваться и данной программой. Она умеет восстанавливать только Windows систему, но кому-то может всё-таки пригодиться… В этой статье мы разберёмся, как же восстановить работоспособность данной программы.

Эта программа состоит из двух компонентов. Первый — это обычная программа под windows, которая может создать резервную копию всего, что находится на вашем диске C. Вторая — это EFI приложение (как бы мини операционная система), которая занимается восстановлением из резервной копии.
Подразумевается, что пользователь может попасть в утилиту восстановления следующими способами: 1) Из работающего Windows: запустить программу OneKey Recovery, выбрать System Recovery и компьютер должен перезагрузиться в утилиту восстановления; 2) Из выключенного состояния: нажать скрепкой кнопку Novo, выбрать пункт System Recovery и должна загрузиться утилита восстановления.
Вы удивляетесь, почему вместо утилиты восстановления загружается снова Windows 10? А я уже нет. Я знаю, как это можно исправить, потому что провёл расследование. И не верьте официальным представителям Lenovo, которые втирают, что «Средства восстановления встроены в ОС» win8, поэтому в win10 поддержки OneKey Recovery не будет. Также они втирают, что при откате до win8 у вас заработает OKR. Это не так. Давайте во всём разберёмся.
Вообще говоря, способ загрузить утилиту one key recovery без подручных средств есть. Но для этого винда должна быть ещё в рабочем состоянии. Удерживая клавишу Shift выбираем перезагрузку. У вас появится меню, где нужно проследовать по следующим пунктам: диагностика, дополнительные параметры, загрузить другие устройства, показать ещё устройства и выберите отобразившийся пункт Lenovo Recovery System (если у вас меню на английском, то либо догадайтесь, либо измените локаль bcd из под windows).
Если же винда уже снесена, то можете воспользоваться либо уже установленным линуксом, либо загрузочной флешкой с линуксом. Подойдёт флешка с ArchLinux так как она не содержит ничего лишнего, занимает мало места и в итоге сэкономит нам время. Загружаемся, выполняем команду efibootmgr -v. Так мы узнаем номер загрузочной переменной Lenovo Recovery System. Нам нужны четыре цифры переменной BootXXXX. Далее, нужно установить efi переменную BootNext, для этого выполняем efibootmgr --bootnext с указанием номера записи. Перезгружаемся и радуемся — грузится утилита восстановления.
Но такую процедуру придётся проделывать каждый раз заново, так как переменная BootNext применяется однократно и затирается. Как же быть, если хочется, чтобы всё работало как положено?
Перед тем, как устанавливать Linux, я посмотрел как устроена схема разметки от производителя (OEM сборщика):
Список разделов с пояснениями
  • Sda1 ntfs 1000 MiB WINRE_DRV — это загрузочный раздел windows recovery. Используется, когда вы загружаетесь в среду WinRE.
  • Sda2 fat32 260 MiB SYSTEM_DRV — это EFI System Partition (esp, то есть главный загрузочный раздел для UEFI). С него всё начинается. На нём хранятся efi приложения (загрузчик windows, загрузчик для Linux и другие приложения).
  • Sda3 fat32 1000 MiB LRS_ESP — это раздел изготовителя оборудования (oem), а именно Lenovo Recovery System. Этот раздел имитирует настоящий esp (на жёстком диске можно создать только один настоящий esp). На нём как раз хранится efi приложение one key recovery.
  • Sda4 без ФС 128 MiB Microsoft Reserved Partition — это раздел, который microsoft резервирует на gpt дисках. Используется виндой, когда вы перемещаете или изменяете разделы с помощью disk manager.
  • Sda5 ntfs 892.15 GiB Windows8_OS — это основной раздел винды (диск C). Там находится сама OS, файл подкачки и все ваши файлы.
  • Sda6 ntfs 25.00 GiB LENOVO — это раздел, на котором леново положили драйверы для вашего компьютера и установщики некоторого спам софта, отображается как disk D. Предполагалось, что бекапить вы сможете и на этот раздел. Но посмотрите на его размер и всё станет понятно.
  • Sda7 ntfs 12.03 GiB PBR_DRV — это раздел, который содержит самый-присамый начальный образ восстановления, который вы можете выбрать в OneKey Recovery.
При установке Linux, если вам по каким-то причинам нужна предустановленная винда, советую просто ужать системный раздел до необходимого, а на освободившемся месте создать LVM раздел и размазать все внутренности линукса в нём (забудете о проблемах перемещения и изменения размеров разделов). Я проверял, система OKR не снесёт этот раздел при восстановлении из образа.
Если на вашем компьютере Lenovo была предустановлена windows 8 и вы решили воспользоваться обновлением до windows 10, то у вас потеряется функциональность программы One Key Recovery. Вы можете запустить OKR в windows и создать резервную копию, но вы не сможете запустить утилиту восстановления ни при выборе Reboot recovery в программе, ни из Novo Button Menu — System Recovery. Будет запускаться просто windows. Как же загрузиться в утилиту восстановления, и почему возникла такая проблема?
Всё дело в том, что когда windows устанавливается, то она заменяет файл по стандартному пути $esp/EFI/Boot/bootx64.efi своим, а в windows 8 он был просто заменён вручную oem’щиками.
Куда нам вообще нужно попасть? Нам нужно загрузить efi приложение с раздела LRS_ESP. Там у нас находятся следующие efi файлы, которые я проверил и узнал что нам надо:
LRS_ESP:/EFI/Boot/bootx64.efi — грузит то что нам надо, утилиту OKR
LRS_ESP:/EFI/Microsoft/Boot/bootmgr.efi — не поддерживает загрузку
LRS_ESP:/EFI/Microsoft/Boot/LrsBootmgr.efi — грузит то что нам надо, утилиту OKR
LRS_ESP:/EFI/Microsoft/Boot/memtest.efi — не поддерживает загрузку
LRS_ESP:/bootmgr.efi — не поддерживает загрузку
На моём ноутбуке прошивка UEFI от Phoenix. Она сделана таким образом, что при выборе System Recovery в Novo button menu, происходит следующий порядок загрузки: 1) Если есть файл $esp:/EFI/Boot/bootx64.efi, то грузится он; 2) Если есть файл $esp:/EFI/Microsoft/Boot/bootmgrfw.efi, то грузится он, то есть обычная загрузка windows; 3) Если нет файлов из пункта 1 и 2, то грузится LRS_ESP:/EFI/Boot/bootx64.efi (именно так, а не загрузочную запись lrs) 4) Если и его нет, то (вне зависимости от существоавания других загрузочных записей) в bootorder добавляется запись c lenovo recovery system и происходит normal startup, который приведёт в нашу утилиту OKR, потому что запись Lenovo Recovery System содержит необходимый путь LRS_ESP:/EFI/Microsoft/Boot/lrsBootmgr.efi.
При нажатии кнопки питания очерёдность загрузки у прошивки такая: 1) если зажата клавиша esc, f2, f12, то грузить нужное приложение из ROM; 2) если установлена переменная bootnext, то грузить загрузочную запись с номером из этой переменной; 3) обычная загрузка с использованием порядка загрузки (bootorder).
novo-button-menu-explain
А при нажатии кнопки Novo, грузится новое меню. И вообще говоря, без novo button можно спокойно обойтись, так как все пункты, что есть в её меню, можно вызвать отдельно, а последний пункт — это ни что иное, как загрузка записи с жёсткого диска. Эта запись отображается при зажатии f12 и у меня она начинается с WD. Обратите внимание, WD это не загрузочная запись Lenovo Recovery System, а именно запись с жёсткого диска, которая ведёт себя согласно вышеописанной последовательности загрузки, то есть в пункте 3 будет грузить LRS_ESP:/EFI/Boot/bootx64.efi, а не загрузочную запись Lenovo Recovery System. По этому пути тоже грузится OKR, но я специально обращаю внимание на этот тонкий момент. Из-за этой последовательности загрузки мы кстати и не попадали в утилиту восстановления, несмотря на рабочую запись Lenovo Recovery System.
То есть сама прошивка сделана довольно умно, удалил системную загрузочную переменную — она восстановилась с зачисткой всех остальных переменных, если совсем нечего грузить при normal sturtup — добавит в boot order номер lrs записи, которую в свою очередь воссоздаст автоматически; при печальной ситуациии прошивка пытается делать всё от неё возможное. А виновник всех танцев с бубном — компания Micosoft, которая услижливо вам делает гадости, например затирает не свои загрузчики когда её об этом не просят. По стандартному пути можно положить, например, fallback ядро для linux и грузиться в него в случае необходимости кнопкой novo или сделать менюшку выбора загрузки.
Как видите, при работающем windows нам не поможет даже удаление файла $esp:/EFI/Boot/bootx64.efi, который при обновлении windows был затёрт микрософтовским, который грузит винду, хотя там должен быть файл, который содержит инструкцию либо загрузить приложение с LRS_ESP раздела, либо установить bootnext в запись с lenovo recovery system и перезагрузиться. Теперь понятно, почему у вас происходила обычная загрузка windows кнопкой novo?
Я бы мог написать эти инструкции сам, но пока не занимался программированием EFI приложений. Так что пока как вариант — либо вытащить аналогичный файл с компьютера lenovo, который ещё не был обновлён до windows 10, либо можно установить туда rEFInd, в который уже встроена функциональность для загрузки OKR с ноутбуков Lenovo. Если она не отображается, просто нажмите ESC. В меню появится оранжевый спасательный жилет с иконкой виндоса.

Комментариев нет:

Отправить комментарий