Quantcast
Channel: Varrah
Viewing all articles
Browse latest Browse all 15

Как для починки винды мне понадобилась дрель (или как перенести винду с битого винта на новый)

$
0
0

Много букв. Поэтому для начала кратко: gparted (линуксовая утилита, доступна в любом дистрибутиве, в том числе в загрузочных образах SystemResqueCD и GPartedLive) умеет копировать разделы с винта на винт и пережимать их. После этого важно физически выключить все другие винты из системы, загрузиться с установочного диска, нажать shift-F10 для перехода в консоль. В консоли воспользоваться утилитами bcdedit, bcdeboot, bootsect (вот с ним очень осторожно - он перазаписывает MBR на любом диске, какой ему самому понравится, даже если вы указали какой вам надо) и diskpart для того, чтобы выставить нужные флаги (boot, active) для основного раздела и пересоздать MBR и bootmanager на новом диске. Примеры использования есть в документации (на сайте майкрософта), я перетыкал в итоге в любых комбинациях. Одно из руководств есть даже в FAQ на сайте GParted, но что поможет именно в вашем случае - предсказать сложно. 

А теперь длинная версия.

Ноут у меня не новый. UEFI на нем нет, только старый добрый BIOS. Но ноут нормально тянет. Обычно я работаю под линуксом. Уже сколько лет это был Gentoo. Однако что-то я понял, что сборка офиса, хрома и даже просто обновлений KDE/Plasma занимает неприличное количество времени и тупо тратит ресурсы. Кроме прочего мне давно хотелось перенести все с обычного винта на SSD, а постоянная компиляция пакетов на SSD слишком сильно тратила бы ресурсы. При этом в ноуте еще с завода был установлен Mini-SATA SSD на 32GB. На котором и жила та часть Gentoo, которая не подвержена частым переписываниям (т.е. /var/portage и /tmp были на HDD). Виндой я на этом ноуте пользовался только для игр, которые, увы, на линуксе запустить не удавалось (Witcher 3, AOE 2 — семьей по сети играем с давних времен, особенно как она вышла в Steam в HD версии). Винду я уже много лет назад поставил на отдельный HDD, который мне просто подарили (спасибо добрым коллегам), ибо он был бэдовый. За все время пользования бэды эти никак себя не проявляли, и мне было не критично — игры запускались, а важные данные я на винде и не держу. Я бы подключал этот винт через внешний адаптер, но винда противится запуску с носителя, подключенного по USB. Так что каждый раз приходилось открывать крышку ноута, вынимать основной винт, ставить виндовый, а потом обратно, когда возвращался в линукс. Для установки винды мне пришлось, для гарантии того, чтобы винда стабильно запускалась с отдельного винта, физически вынуть Mini-SATA диск, чтобы винда и слухом о нем не слыхивала. Вынул, поставил винду, поставил все на место и забыл. 

Это была присказка. Теперь сказка.

Купил WD Green SSD 1TB. Старый линуксовый винт — 640 GB использован на 80%. Старый виндовый винт — 500GB из них использовано 220GB. Подумал, что выделю под Arch (решил перейти на него) 570 GB + 16GB — swap, значит на винду остается 350. Разметил диск в GParted — MsDOS partition table (MBR), sdb1 — primary, ntfs 350 GB, bootable; sdb2 — primary, ext4, 572 GB; sdb3 — linux swap, 16 GB. Думаю, сначала надо винду перенести, чтобы она загрузчик прописала и дальше уже поверх написать арч и в grub останется только номер раздела подправить, чтобы он с нового раздела винду грузил. Да, в grub на sda1 (mini-SATA) у меня уже в менюшке винда записаная была через chainload ntfs, чтобы каждый раз при перезагрузке не надо было ловить boot device selection menu, а спокойно выбрать нужную систему. 

Смотрю на старый виндовый винт, а там не один раздел, а три. Два из них в винде даже не отображаются (если только в редактор разделов не смотреть) — один — бутовый, другой — рекавери. Пришлось пересоздать таблицу. (sda1 — primary, bootable, ntfs — win boot; sda2 — primary, ntfs — win main; sda3 — primary, ntfs — win rec, sda4 — extended, sda5 — logical, ext4 — linux, sda6 — logical, linux swap) Окей, думаю, теперь можно файлы просто скопировать и все. Но ведь там где-то загрузчик. Вспоминаю молодость, утилиту SYS, которая копировала io.sys, msdos.sys и command.com в первые сектора нужного раздела. Пытаюсь найти какие-то доки на тему переноса файлов винды на новый раздел. Глухо! Т.е. нет, есть решения — «купите вот эту программу, она скопирует вам разделы винды на новый диск. Но вообще, раз у вас новый винт, просто установите систему вчистую, ей это полезно». Или «используйте создание образа винды из стандартного набора утилит, а потом восстановите систему из образа». Проблема в том, что даже если пользоваться этими решениями, то нужен дополнительный носитель, либо система полностью перетирает уже созданную таблицу разделов и все файлы. Плюс, мне же надо, чтобы новые разделы винды были меньше. Думаю, ок, я руками скопирую. Скопировал, а нетерпится же на новый винт переехать, чтобы все уже на арче работало. Думаю, ок, ща я быренько поставлю арч, загружусь в него и буду копировать файло, спокойно работая. Ставлю арч (это те еще приключения, но за пол дня у меня была рабочая система с KDE, интернетом и даже bluetooth и звуком), даже начинаю копировать файлы, но тут вспоминаю, что у винды же еще наверняка метаданные в потоках ntfs, которые могут принести неожиданные проблемы позже. Ок, нахожу инфу, что GParted прекрасно может и сам скопировать разделы с винта на винт. Т.е. можно и через dd, но в GParted это приятнее. Алгоритм ставлю такой — копирую бутовый раздел (он самый маленький), потом копирую основной, сжимаю его, чтобы поместилось все остальное, затем копирую рекавери раздел. 

Все шло хорошо, пока на основном виндовом разделе не оказались бэд-блоки. GParted выдал ответ от ntfsclone и сказал, что раз ошибка, то давайте как-то сами. Ок... пришлось зачитать маны от ntfsclone, где нашлась опция для восстановления нечитаемых данных. Запустил... и вот на следующий день (следующий день, Карл!) у меня был клон основного раздела винды на новом диске. Пережал его, склонировал рекавери раздел, обновил grub, указав новый основной раздел винды. Перезагружаюсь с груба в винду, и... вываливаюсь в черный экран, где ошибка, что система не найдена. Думаю, ок, надо же было в grub указать бутовый раздел, а не основной. Меняю, перегружаюсь, и... получаю синий экран с указанием, что система нуждается в исправлении, обратитесь к администратору (я ненавижу эту фразу! Лучше было бы написать дополнительную инфу, кроме кода ошибки 0x0000007b), нажмите F8 для выбора вариантов или ENTER для повторной попытки. Нажатие любых клавиш приводит к миганию экрана и затем появляется то же там же.

После настойчивого гугления на тему «что не нравится загрузчику винды», буре флэшку с дистрибом десятки, загружаюсь с нее, перехожу в консоль. Запускаю там bootsect /nt600 SYS ALL так как написано, что он пересоздает MBR на нужном устройстве и восстанавливает загрузчик. Перезагружаюсь, и обнаруживаю, что он переписал MBR на mini-SATA и теперь я не могу попасть в линукс. Приходится грузиться с SystemResqueUSB, делать chroot в генту и восстанавливать grub на sda1. Я уже плохо помню что именно в какой последовательности я потом делал, но я помню, что в какой-то момент прочитал, что bootsect принимает букву целевого диска, на котором будет создавать загрузочные записи, т.е. можно сделать bootsect /nt600 SYS c: и он запишет все на нужное место. Однако оказалось, что он все равно пытается переписать MBR на всех подходящих ему дисках, о чем и выдает радостно, буквально «система успешно восстановлена на всех пригодных дисках» (цитата не точна, но он точно говорил про ВСЕ).

В линуксе, пытаюсь посмотреть, что там на разделах-то. Тут ntfs-3g выдает, что разделы «грязные» и надо бы их подключить в винде, проверить на ошибки и нормально отмонтировать, а пока вот вам read-only. Ну ок, думаю. Дайте хоть посмотреть, что там было в старой версии-то? Подключаю виндовый диск на USB, оказывается, что там тоже разделы «грязные», понятно, думаю — они в таком виде и скопировались. Опять все раскручивать лень. Думаю, загружусь опять с флэшки с дистрибутивом винды, там же есть chkdsk, проверю им. Загрузился, прошелся chkdsk /r по всем разделам, и каких-то 2 часа спустя увидел, что вроде он там что-то поправил, «больше действий не требуется». Заодно сравнил флаги разделов на новом винте и на старом через diskpart. Оказалось, что недостаточно поставить в GParted флаг boot, надо чтобы diskpart поставил флаг active. А на рекавери разделе и вовсе нужен msftres, который GParted почему-то сам не поставил при клонировании. Ок, думаю, теперь заработает! Перезагружаю, выбираю загрузку винды с нового диска, появляется лого винды и начинает крутиться прогресс! Думаю — наконец-то! И тут он опять выдает синий экран и что-то там про невозможность загрузки с данного носителя. Совсем странно, думаю я. И тут замечаю, что старый винт я не отключил. Отключаю, перезагужаюсь и все быстро возвращается к экрану с F8 и ENTER. Т.е. загрузчик просканировал все разделы, включая тот, что USB, что-то там покурочил, но все равно отказался загружаться, потому что подходящий раздел обнаружился на USB носителе. А мои фиксы флагов и ошибок файловой системы на новом диске пр. ничего не дали. Придется все-таки загружаться полноценно со старого винта. Загружаюсь, тут винда говорит, что система нуждается в восстановлении после прошлой неудачной попытки загрузки. Т.е. мало того, что он что-то там пощупал на всех разделах, он на них на всех написал, что у него не получилось загрузиться. Окей, что-то он там исправил, загрузил систему. Из проводника я сказал сделать исправления на всех ntfs-разделах нового диска и через каких-то два часа смог выключить ноут и опять все собрать для запуска с нового диска. Включаю, а он мне говорит boot disk not found. Я хочу зайти в boot device selection menu или BIOS, но на кнопки ноут не реагирует и даже подсказку на start-up screen не выдает, а сразу грузит (видимо с /sda1) загрузчик, который ничего не находит и вываливается с ошибкой. И тут до меня доходит — винда же что-то там «восстановила»! Среди прочего она восстановила тщательно отключенную в прошлый раз опцию «быстрой загрузки». Теперь ноут думает, что у него режим гибернации и ищет старые устройства на новом месте. Вставил ему старый винт — тот же результат, ведь он не первый, а загрузка в биосе выставлена с первого винта. Вынул старый винт. Тот же результат. Отключил питание, вынул аккум, вставил обратно, тот же результат. Вынул аккум минут на 20 — тот же результат. Т.е. ноут не реагирует ни на какие раздражители. Думаю, видимо надо вынуть mini-SATA. Открываю крышку слота и вижу, что в прошлый раз, когда я этот диск вытаскивал, я у винтика, который держит его в слоте, сорвал головку — она была крестовая, а теперь ровно круглая... Пришлось ехать в магазин, покупать сверло на 1,5 мм и высверливать винтик. Еще при этом пылесос тут же подставить, чтобы стружка не попала на контакты чипов или материнки. Семья при этом большими глазами смотрела на меня, сверлящего ноутбук дрелью. На их вопросы «ЧТО ТЫ ДЕЛАЕШЬ?!!», я отвечал «не понятно, разве? Винду чиню...» Высверлив ямку где-то на 2мм вглубь, я смог отверткой-звездочкой вывинтить винтик и после этого извлечь mini-SATA диск и слота. Только после этого ноут признал, что наверное восстановиться из гибернации не удастся и сказал, что готов пустить меня в биос. 

В процессе чтения документации bcdboot, я понял, что винда, вообще-то может все пересоздать сама из тех файлов, что уже хранятся в C:\Windows. Рекавери мне на самом деле не нужна, потому что я пытался с этого раздела загрузиться — дохлый номер (те же ошибки про загрузку, носитель и бла-бла). И тогда я решил удалить эти два мелких раздела, нарастить основной раздел за их счет (система с одним разделом спокойно работает на игровом компе у ребенка) и перезагрузившись опять с установочной флэшки, через bcdboot пересоздал загрузочные файлы. Сейчас, когда других дисков в системе не было, винде не осталось вариантов, кроме как сделать все «как надо» на новом винте. Перезагрузка показала, что система работает! Теперь осталось только вновь восставновить настройки груба на mini-SATA, все собрать и наконец-то заняться делом, а не всей вот этой ерундой, которая возникла только из-за того, что кто-то не может вывести нормальные логи действий приведших к ошибке, ожидаемых настроек системы для гомеостаза, не пишет нормальную документацию и все утилиты делает автомагическими, за 30 лет не смог сделать нормальную консоль и диски восстановления.

Ну и все-таки хорошо, что теперь есть UEFI и еще через несколько лет подобные проблемы канут в лету. Однако общая тенденция — купите вот эту программу для того, чтобы она сделала то, что можно сделать простым копированием и запуском пары стандартных программ, которые УЖЕ вам доступны — настораживает и огорчает.


Viewing all articles
Browse latest Browse all 15

Latest Images

Trending Articles





Latest Images