2020

Мой технический канал
Проект не выживет без спонсорской поддержки!
Подробно тут
QIWI: +79067106960
Яндекс-деньги: 410014028639837
За щедрую помощь возможны индивидуально для вас снятые ролики и обзоры. С предложениями пишите на почту: kun@li.ru

воскресенье, 19 января 2020 г.

VHD и проблема с буквой системы

Хочется поделиться опытом по работе с системой в VHD. Я уже когда-то делал ролик, что можно использовать файл-контейнер VHD, в него можно установить систему и она не будет расползаться по реальному разделу. Решение неплохое и для этого можно использовать WinNTSetup.
Однако всплыли нюансы в связи со сменой буквы системы, о чём я и хочу рассказать. Я думаю, мало кто сталкивался с этим, потому что чаще всего, windows ставят на первый раздел, имеющий букву C:. Если же попытаться сделать по-другому, получается.. об этом и хочу рассказать. Немного истории. Начнём с начала. Вот во всяких Линуксах, разделы цепляются не на буквы, а в папку mount по типу устройства, типа usba, usbb или hda1, hda2 и так далее. Начиная с доса, ну и продолжая Windows, заведён другой порядок, используются буквы латинского алфавита для присоединения разделов.
Не будем углубляться, что раздел - это специально созданная ячейка для данных, она может охватывать всё место на одном жёстком диске, либо в нём может быть много таких разделов (ячеек).
Сейчас мы говорим о буквах. Если ранее в том же os/2, которая в 90-е очень даже конкурировала с виндой, было присоединение типа A1, A2, C1, C2 и так далее, то есть множество вариантов, для винды, как и для доса, оставили только буквы латинского алфавита и всё.
Ну для современных домашних нужд - вряд ли потребуется более 26 букв, учитывая даже все внешние устройства. Мало кто помнит, почему вдруг первый раздел жёсткого диска получает букву C (си или ц), она ведь не первая буква алфавита. Всё начиналось во времена глубокого доса, когда только появлялась первая windows с графическим интерфейсом, windows 3.0, тогда в ходу были дисководы.
Ну и предполагалось, что дисководы имеют обозначение по латинскому алфавиту - A, B, C и так далее.
Вот более старый 5" дисковод
Вот более новый 3" дисковод
Когда начали повсеместно использоваться жёсткие диски, было решено первые две буквы оставить для дисководов, а начиная с C обозначать уже разделы жёстких дисков. Причём, насколько я не ошибаюсь, A был первый дисковод, обычно для пятидюймовых больших дискет, а B обозначался второй, для 3хдюймовых дискет поменьше.
Ну не суть.

Много всего происходило, менялись устройства, дисководы гибких дисков ушли в прошлое (как на сегодня уже и приводы оптических пропадают повсеместно).
Но порядок, что разделы жёстких дисков начинаются с C: - остался.
Правда, мало кто задумывается, ведь присоединение буквы чисто формальное, в любой момент можно поменять.
Правда, если у вас уже установлена система, поменять букву сложнее, но не беда, ведь в загрузчике системы прописана не буква, а номер жёсткого диска и номер раздела на нём.
Большинство привыкает к тому что просто система на C:, потому с описанным мной далее - просто не сталкивается. Но не я. Я ж блин эксперементатор.

Отступление про VHD
Многие не переходят по ссылкам, чтобы прочитать, очень вкратце, что такое VHD и зачем. VHD - Virtual Hard Disk. Эта технология была адоптирована Microsoft и вложена в Windows, начиная с Vista и выше.
Грубо говоря - вы создаёте файл VHD, который можно присоединять в систему, как некий подключаемый раздел. То есть файл, например, делаете на 100 гиг. После присоединения к системе, у вас появится ещё один раздел на 100 гиг.
Эта технология, в данном случае, годится для двух целей - если вы хотите, чтобы что-то на разделе не разрасталось по всему реальному разделу, а всё сидело внутри файла, который в любой момент можно отключить, VHD как раз выход.
Второе применение - это основной формат жёсткого диска для виртуальных машины формата Hyper-V, системы виртуализации, которая является (с Vista и выше), опциональным компонентом ОС Windows. Также VHD можно цеплять и к другим популярным системам виртуализации, таким как vmware или virtualbox.
Совсем забыл написать. VHD - не просто раздел, это эмуляция целого жёсткого диска, то есть там внутри может быть своя разметка разделов (MBR или GPT), а также разделов может быть множество, а не один.

Зачем?! Сразу многие зададут вопрос - оставляй систему на C: и не выпендривайся, зачем тебе передвигать букву?
Поясню.
Дело в том, что у меня каждый жёсткий диск уже много лет, привязан к своей букве.
Система на C:, на D: рабочие материалы и скачанные файлы с инета, на E: - игры и большие файлы.
Ну ещё F: добавился недавно в виде SSD, на котором я запускаю виртуалки и другие приложения, которым требуется более шустрая система считывания.
Так вот, к буквам я привык и сдвиг на букву при моих экспериментах - меня никак не устраивал.
Откуда сдвиг? Да как раз дело в том, что я захотел вот систему держать в VHD, для производительности считывания, VHD, естественно на том же SSD, где раньше была сама система.
Получается, что сам раздел SSD тоже имеет букву, ну и VHD системы, как контейнер, тоже должен иметь букву.
Про VHD прочитать можно тут.
Помучавшись сначала со сдвигом букв, я решил переставить так: A буква всё равно не используется, при установке ОС, присоединим систему внутри VHD туда, а C: будет оставаться весь SSD.
Тогда и сдвига букв не будет, всё на своих местах, A: - система в VHD, C: - SSD, где этот VHD лежит, D:, E:, F: без изменений.

Хорошая идея, ну и, конечно, использовал самый простой способ установки на нестандартную букву - WinNTSetup. Я про него делал видео, но есть уже более новая версия, вот ссылка на форум, где автор выкладывает самые последние версии.
Программа удобна, её даже Сергей Стрелец и некоторые другие - включает в свою сборку загрузочного образа винды для решения проблем.
Установил систему без проблем в VHD файл, всё стало грузиться нормально.

Но нормальность была ровно до начала установки драйверов.
Проблемы. Начнём с того, что драйвера для чипсета amd, упакованы в самораспаковывающийся архив, который, почему-то, без спроса, распаковывает драйвера в папку C:\AMD и уже оттуда запускает оболочку установки.
И тут начались первые проблемы. Несмотря на то, что никто не мешал распаковщику делать на C: папку AMD и туда распаковывать содержимое, по неизвестной мне причине, на этой самой распаковке он просто зацикливается.
Попытки запустить уже распакованную установку драйверов тоже не привело к результатам, он снова пытается ещё что-то распаковать.
Пришлось ставить очень старые драйвера чипсета, с сайта материнской платы, там установщик стандартный.
Но на этом проблемы не закончились.

Я, обычно, использую портативный софт везде, где это возможно.
Однако, ни с антивирусом, ни с MS Office портабл нормальных решений нет (разве что очень старые).
Антивирус (откуда я использую только сетевой экран), встал нормально.
А вот MS Office при установке начал корячиться и выдавать разные ошибки.
Также артачился пакет обновлений от Simplix (хотя я его обычно всегда ставил), что-то поставил, что-то нет.
Компоненты драйверов видеокарты от Nvidia вставали по частям, только танцы с бубном и повторной установкой дали какой-то результат.
Наконец, стали давать сбой некоторые портабельные программы, такие как Youtube by click, Ummy video downloader и даже портабельный Photoshop.
Ну это уже было ни вкакие ворота, часть программ не запускалась, часть сбоила в работе..

Последней каплей был глюк портабельных браузеров.
Нет, сами браузеры работали вроде бы неплохо, правда обнаружились глюки Slimjet и Opera, но они оказались не связаны с остальными проблемами.
Вкратце, хотя к делу не относится, на текущий момент, последняя версия Slimjet почему-то на 7ке со сторонним файрволом - отказывается открывать страницы вообще, даже если файрвол отключить.
А предыдущая версия - работает на ура.
Ну и в последней Developer версии оперы (67 что ли), напрочь не открывается youtube, отображаются только блоки страницы и никакие танцы с бубном не помогают (используйте стабильную 66 версию).

Так вот, мои портабл браузеры работали. Я начал всё настраивать, и конечно же, входить везде где нужно, с паролями.
И тут словил неприятный глюк - при каждом новом открытии браузера, все настройки и плагины на месте, но вот пароли все обнулены, как будто и не вводил ничего.
Хотя кукисы сайтов есть и кэш тоже в порядке.
Естественно, гугление решений меня и натолкнуло на корень всех описанных глюков, никакие методы исправления не помогали.

К какому мы пришли выводу? В Windows, специально были сделаны переменные среды - некие переменные, которые по именам в любой системе одинаковы, а вот значение может отличаться.
Например, %USERPROFILE% - ведёт в папку текущего пользователя (например, C:\Users\Vasya\), %SYSTEMROOT% - в папку C:\Windows\ ну или папку Windows, на каком бы разделе она не была, ну и так далее.
%PROGRAMDATA% - ведёт в папку C:\ProgrammData\, ну или C:\Users\All Users\
ну эти переменные среды вы и так знаете, можно насоздавать свои и использовать их, главное, чтобы у системы им были прописаны конкретные значения.
Хочу особо подчеркнуть, что эти переменные строятся в готовой системе, например, если у вас система установлена на A: диск, а папка с системой называется не Windows, а просто Win, и вы используете переменную %SYSTEMROOT%, то вы попадёте в A:\Win\
Почему это важно? Мало ли на какой раздел по букве я ставлю систему? И мало ли как у меня папка системы называется?
В Windows все папки можно назвать по-другому, главное, чтобы обозначить их по функциам, например, можно задать, что Programm files папка будет называться C:\PF и всё.
То же самое по папкам пользователя типа Мои документы, Моя мазня, Моя какофония и так далее. Я такие папки не использую в работе, но многие программы используют и потому я их переношу в другую папку.
Ну не суть.
Однако, как мы увидели на примере множества программ, почему-то в этих программах не используются переменные среды (а я проверял, они все были прописаны корректно), а тупо прописаны абсолютные пути на диск C:.
Особенно меня AMD в этом плане огорчил, ведь драйвера для чипсета они упаковали в такой странный распаковщик.

Более того, некоторые портабельные программы со своим лаунчером, лезут в некоторые системные папки, пытаясь их найти на диске C: по стандартным путям.
То есть, практика показывает, что менять букву для системы с C: на другую, а также переименовывать папки Windows, Users, Programm files и так далее - чревато, ведь некоторые программисты по неизвестной причине - не используют переменные среды, а тупо пытаются пробиться к папкам по заранее заданным путям.
Да, это не совсем качественное программирование, я умолчу о том, что и сборка портабл бывает некачественная.
Для одной программки, для которой мне не понравился вариант портабл с лаунчером, я при помощи Turbo Studio (бывшая Spoon), собрал портабл, чтобы все данные программы были в папке Data внутри папки программы и никуда не расползались.
В итоге, версия с ланучером в конфигурации системы на A: не запускалась, а моя сборка - работала.
Также оказалась, что некоторые программы в принципе построены на применении абсолютных путей на C: и если нет нужных папок или они не соответствуют - не работают.

Это очень печальный итог.
Корень всех описанных бед мне был уже понятен.
Но оставался последний вопрос - что с браузерами? Они работают, но напрочь не запоминают пароли.
Пришлось докопаться до сути.
Пароли в браузере. Понятное дело, что даже если браузер портабл, сохранение в нём паролей чревато. Тут много инсинуаций, но основная опасность была в том, что если скопировать папку с портабл браузером - нельзя давать в другом месте использовать эти же пароли.
Производители браузеров достаточно давно уже решили эту проблему, привязав запомненные пароли - к идентификатору пользователя в системе.
И тут мы подходим к самому загадочному.
Вы, наверняка, знаете, что в системе пользователь всегда обозначен неким номером SSID (Special Security IDentifier).
Обычно, это некий длинный номер, его можно увидеть в корзине, например, типа такого:
S-1-5-31-1246270354-595607616-1744649106-1000
Ну или с командной строки можно узнать так:
wmic useraccount where name="имя_пользователя" get sid

Так вот, за пользователем закреплён ещё и идентификатор, который используется в приложениях, опознающих пользователя по его учётной записи в Windows.
Находится он вооот по такому пути:
C:\Users\имя\AppData\Roaming\Microsoft\Protect\ SSID \ идентификатор
Именно он позволяет использовать привязку пользователя к учётной записи windows.
Так вот, для указания этого критерия, по идее, программы должны идти по переменной %USERPROFILE% и там уже до нужной папки.
Но! Браузеры по непонятной причине, идут именно на C: в поисках этой папки, хотя, вне зависимости от имени пользователя, находят её.
Если же у вас система НЕ на C:, то браузеры не находят идентификатора, соответственно, обнуляют сохранённые пароли при каждом запуске браузера.

Итог. Из-за того, что большинство программ написаны странно и, либо не используют переменные среды, либо используют их частично и напрочь не видят никакого вариант для системного диска, кроме буквы C:, мне пришлось отказаться от идеи держать систему на VHD.
Хотя, я мог бы сделать привязку наоборот, к примеру, VHD оставить как C:, а SSD сам сделать наоборот - A:, но тут я увидел и другие особенности..
Ведь папки можно было вынести за VHD, чтобы не расходовать в нём место, оно конечное, непонятки с тем, какие папки держать на VHD, какие на самом SSD..
А если делать VHD на весь SSD, какой в этом смысл..
Поразмышляв над всем этим, я сделал для себя вывод, что мне намного проще, когда система просто на SSD диске, где раздел занимает всё пространство и отказаться от идеи VHD, ведь при применении VHD ещё и уменьшается скорость работы системы, хотя и не сильно.
К тому же, даже если несистемный диск будет A:, тоже у программ могут возникнуть проблемы, как оказалось по советам программистов - некоторые программеры, которые небрежно относятся к написанию софта
(или как некоторые китайские конторы, которые берут готовые участки кода), не просто обращаются к системному диску без соблюдения переменных среды, а ещё и могут обращаться к первому разделу первого диска, а у меня это будет A: в такой раскладке.

Так что пока мне не так уж понравилась идея с VHD, может вернусь к ней позже.
Зато получил бесценный опыт, которым постарался поделиться с вами.
Всем рекомендую при переустановке системы (если это windows, включая windows 10), использовать WinNTSetup.
Свежая версия всегда доступна на форуме автора.
Просьба при репосте статьи не убирать последнюю строку с копирайтом.
(c) Kunzite.ru, 16-01-2020

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

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