Установка XP на ноут без CD и дисковода

Попросил меня один товарищ переставить ему винду на ноуте. У него английская стоит, а английского он не знает. Ноут — HP Omnibook 500. Теоретически, привод и флопик в этом ноуте есть, но в док-станции. Отдельно ноут и док-станция работают, а вместе — хрен, ноут не запускается, будучи подключенным к док-станции.

Городить огород с загрузкой по сети или ещё чем-нибудь подобным мне не хотелось (и, блин, совершенно напрасно, как показали дальнейшие события!), поэтому я решил по-быстрому всё сделать — вытащить винт из этого ноута, и поставить в свой ровер, отформатировать там всё, начать инсталляцию винды, а после текстовой фазы установки переткнуть винт обратно.

Дальше под катом Сказано — сделано. Вынимаю винты из обоих ноутов, ставлю винт из омнибука к себе. Загружаюсь с BartPE, размечаю акронисом диск, перезагружаюсь с установочного компакта русской XP, прохожу текстовый этап установки, при перезагрузке проверяю, что всё путём и инсталляция пойдёт дальше, жму Ctrl-Alt-Del, выключаю ноут, вынимаю из него винт и ставлю винт на родину — в омнибук. Включаю омнибук и получаю БОЛЬШОЙ БОЛТ! На омнибуке инсталлятор винды не грузится.

И тут началось нетрадиционное порно с элементами BDSM и скотоложества... Что я только не делал. Форматировал этот винт в FAT16, FAT32, создавал разные конфигурации разделов и файловых систем. Везде было одно и то же — пока винт загрузочный в MS DOS — с него омнибук грузится. Копирую инсталлятор винды, запускаю его из ДОСа прямо на омнибуке, инсталляция проходит первый этап копирования файлов, после перезагрузки получаем БОЛТ. Либо омнибук глухо зависает без всяких сообщений, лиоб NTLDR is missing.

Капец, как я там извращался. Винт между ноутами за всё время порева я переставил раз не менее 50, снося разделы и создавая их заново. Смеха ради даже создавал разделы с помощью FreeBSD. Вот кстати фря стала и запустилась на омнибуке без вопросов, у меня уже начала появляться мысль, что товарищу будет проще освоить KDE, чем мне поставить ему на ноут винду... :-) Протрахался, короче, с 10 утра воскресенья до 3 ночи понедельника. Результат нулевой.

Наутро встал, почитал, что на мой вопрос по этому поводу пишут в ЖЖ. Ничего путного не обнаружил. Стал думать.

В общем, вскрытие показало, что больной умер от вскрытия, омнибук криво определяет CHS-геометрию своего винта. Ну, не то, чтобы совсем криво — сама по себе предлагаемая им конфигурация CHS вполне рабочая, но она не такая, какая написана на винте, хотя размер винта при такой геометрии совпадает с правильной. А мой ноут определяет конфигурацию правильно, в полном соответствии с тем, что указано на лейбле на самом винте. И форматирует разделы исходя из своей правильно геометрии. Пока мы в ДОСе — это особой роли не играет. Но как только на этапе первой перезагрузки управление передаётся загрузочному сектору виндового инсталлятора BOOTSECT.DAT, ему сносит крышу, и он либо виснет, либо жалуется, что не может найти ntldr, хотя он железно лежит в корне диска C:, где ему и положено быть.

Выставление прямой геометрии вручную в БИОСе омнибука не дают ничего — он виснет наглухо даже при попытке грузануть DOS. Понять, что грабли связаны с тем, какую геометрию пытается подсунуть винту ноут, я смог только тогда, когда настроил сетевую загрузку через PXE и попытался загрузить омнибук с нескольких своих ремонтных образов дискет. Так вот, при любых параметрах, даже самых прямых, но отличающихся от «Auto» при загрузке DOS омнибук вис даже при загрузке через сеть. И выводилась интересная надпись: Int13 08 failed. Не помню, что за функция 08, но судя по всему, с прямой геометрией этот BIOS работать не будет.

В итоге я выставил определение винта в «Auto», сделал дискету с Partition Magic 8, загрузил омнибук по сети, разбил PM винт, отформатировал на самом омнибуке с его кривым биосом, криво определяющим геометрию, потом переставил винт на свой ноут, переписал инсталлятор XP на винт, вернул винт обратно и загрузившись ещё раз по сетке с чистым DOS'ом и smartdrive'ом, запустил установку XP. Файлы копируются, первая перезагрузка, затаили дыхание... И о чудо! Оно грузится и продолжает установку, ссучара бацильная, скока крови попил! Вот так человеческий разум в очередной раз победил бездушную технику :-)

При обновлении XP не устанавливается IE7

Обновлял тут у одного клиента XP через интернет. Всё вроде прошло успешно, затем последним шагом качается IE7, начинает ставиться и... получает облом. «Не удалось установить обновление такое-то». Код ошибки, который при этом выдаётся, ничего вразумительного не дал, кроме того, что удалось найти статью в Microsoft KB, которая помимо совершенно бесполезных сведений содержала информацию о том, что в процессе установки и обновления ведётся более подробный лог. Который, в случае IE7, лежит в \Windows\ie7_main.log.

Изучение этого лога выявило ошибку:

INFO: Installer Process exit code: 0x000003f5

Вот поиск по коду ошибки 0x000003f5 принёс гораздо больше. Нашлись сведения, что так пагубно на систему может повлиять установка Adobe Acrobat 9. Удаление акробата и зачистка реестра в ветках HKLM/Software/Adobe и HKCU/Software/Adobe, с последующей перезагрузкой помогли — IE7 нормально установился.

rc-скрипт для запуска portfwd

Потребовалось однажды сделать на одном серваке с FreeBSD port mapping. NAT там не был настроен, возиться с подъёмом natd не хотелось, я решил поставить portfwd из портов. После установки с удивлением обнаружил, что хотя portfwd и работает в режиме демона, но она почему-то не ставит rc-скрипт для запуска себя самой. Я прописал сначала запуск в /etc/rc.local, но потом решил, что это неспортивно. Покурил методичку, и написал простой rc-скрипт. Если кому нужен, то можно взять здесь.

Скрипт проверяет наличие переменной portfwd_enable=«YES» в /etc/rc.conf, а также можно указать, где брать конфигурационный файл, задав переменную portfwd_conf. По умолчанию предполагается, что конфигурационный файл лежит в /usr/local/etc/portfwd.cfg. Сам скрипт нужно положить, соответственно, в /usr/local/etc/rc.d/

ОбычныйТерминСписокопределений — как убрать?

При использовании русифицированной WindowsXP иногда при вставке части текста из буфера перед текстом появляется надпись «ОбычныйТерминСписокопределенийАдресЦитатыФорматированный»

По непроверенным данным, происходит такой косяк из-за того, что при локализации перевели кой-чего лишнего — были частично переведены и технические параметры.

Наличествует два варианта исправления этой проблемы

Первый (простой) вариант: скачать архив с исправленным файлом html.iec и распаковать этот файл в каталог \WINDOWS\SYSTEM32\ поверх старого файла.

Второй (ручной) вариант: любым редактором ресурсов в файле \WINDOWS\system32\html.iec нужно изменить перечисленные строковые данные на следующие:

В ветке 127:
2016, «Normal»
2023, «Address»
2024, «Blockquote»
2027, «Definition Term»
2028, «Definition List»

В ветке 128:
2036, «Preformatted»
2042, «z-Bottom of Form»
2043, «z-Top of Form»

После этого при вставке текста из буфера больше никакой ботвы добавляться не будет :-)

subversion hooks

Потребовалось тут неожиданно исправить сообщение после свершившегося коммита изменений в subversion. Нашёл в клиенте TortoiseSVN чудесную опцию Edit log. Но при попытке её заюзать получил большой облом в виде сообщения: «svnadmin: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook».

Курение интернета показало, что для этого потребны некие subversion hooks, каковые могут представлять собой скрипты или даже бинарники, используемые subversion при различных событиях. Некий аналог триггеров в БД, в общем.

Как утверждает методичка, лежать они должны в каталоге path_to_svn_repository/hooks. Я полез на сервак смотреть, лежит ли там что-нибудь, в этом каталоге. Оказалось, что лежит. Некий набор файлов с расширениями *.tmpl. Курение методички на предмет как же эти скрипты заюзать, показало, что нужно дать им права на исполнение. Я дал им право на исполнение, перезапустил svnserve, однако нужного эффекта это не принесло — всё равно получал вышеуказанное сообщение. Методичка умолчала о самом главном — у файла нужно убрать расширение .tmpl.

Конкретно для правки свойства svn:log, каковое и является собственно комментарием при коммите, необходимо наличие хука pre-revprop-change. Таким образом переименовываем файл path_to_svn_repository/hooks/pre-revprop-change.tmpl в path_to_svn_repository/hooks/pre-revprop-change, даём ему права на исполнение, перезапускаем svnserve, и вуаля — можем редактировать каменты коммита либо через Edit log в TortoiseSVN, либо вот такой командой:

svnadmin setlog /usr/local/svn -r 103 /usr/local/svn/log.txt

где 103 — это номер ревизии, которая должна подвергнуться редактированию, а /usr/local/svn/log.txt — это файл с сообщением, которое должно стать новой версией комментария к 103-ей ревизии. У меня не настроен русский в серверной консоли, поэтому я решил сделать комментарий в виде файла в нужной кодировке.

Запуск произвольной программы как сервиса Windows

Поскольку вечно теряю, а потом долго не могу во всём интернете найти srvany и методичку к ней, то оставлю заметку.

Запускаем InstSrv следующим образом:

путь_к_instsrv\INSTSRV.EXE MyService путь_к_svrany\SRVANY.EXE

Где «MyService» — наименование службы, под каковым она будет прописываться в реесте.

Затем топаем в реестре к ключу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters, создаём там строковый паарметр Application, в который прописываем полный красивый путь к нашему приложению, которое хочется запускать в качестве службы. Например, я так запускаю старые версии Usergate, которые как службы сами по себе работать не умеют толком. Тогда значением параметра Application станет что-то вроде «C:\Program Files\Usergate\usergate.exe»

Также можно указать рабочий каталог для этого приложения, создав ключ AppDirectory и задав ему в качестве значения путь к исполняемому файлу приложения. В нашем примере значение AppDirectory могло бы иметь значение «*C:\Program Files\Usergate*»

Архив с instsrv и srvany в одном флаконе можно взять тут.

Собственно, в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService можно сделать ещё два строковых ключа: Description — с описанием приложения, и DisplayName — с его полным наименованием. Эти строчки будут отображаться в апплете управления системными службами вместо неинформативного «MyService».

Убрать пользователя из списка на экране приветствия

В Windows XP при включенном экране приветствия выводится список пользователей, которыми можно зайти в систему. Иногда, чтобы не смущать рядовых юзеров лишними учётными записями, требуется какие-то учётные записи из списка убрать. Чтобы это сделать, можно воспользоваться следующим рецептом:

Для этого нужно в разделе реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList добавить dword-параметр, соответствующий имени пользователя, и присвоить ему значение 0.

Перенос Windows XP на другую материнку

Железо, как известно, может иногда накрываться. Причём сразу медным тазом. Бывает, что этим железом является материнка. Таким образом встаёт в полный рост задача переноса Windows XP на новую материнку. Известно, что в общем случае винда на новой материнке грузиться не будет, из-за того, что на новой материнской плате будет другой дисковый контроллер, а драйверов под него в уже установленной XP не будет. Этот косяк тянется ещё со времён Windows NT, не понимаю, почему его не исправили по сию пору. Можно ведь при загрузке просто проверять, есть нужный дисковый контроллер или нет, и если его нет, то подгружать GENERIC драйвер для IDE-контроллеров, то, что называется в XP «Cтaндapтный двyxкaнaльный кoнтpoллep PCI IDE».

Если есть возможность загрузить винду как-нибудь, то самый простой способ подготовить её к переносу на другую материнку — это в диспетчере устройств вместо дискового контроллера материнки поставить «Cтaндapтный двyxкaнaльный кoнтpoллep PCI IDE». После этого можно завершать работу Windows и менять материнку. После замены и запуска винды на новой матери можно уже поставить правильные драйвера под дисковый контроллер новой материнки.

Хорошо, если есть возможность предугадать замену материнской платы и подготовиться. А если же такой возможности нет, т. е. мать сгорела начисто, и другой аналогичной нет в наличии, то существует другой рецепт.

Для его реализации потребуется загрузочный LiveCD с какой-нибудь из вариаций Windows. Я пользуюсь BartPE. И reg-файл, который пропишет в реест сведения о стандартном контроллере IDE.

Замечу, что в разные LiveCD включены разные редакторы реестра внешней системы. В сборку BartPE входит Avast! registry editor, «точка монтирования» реестра XP с винта будет зависеть от редактора. Т. е. в прилагаемом файле предполагается, что нужные для правки ключи реестра лежат здесь: HKEY_LOCAL_MACHINE\SYSTEM_ON_C. Однако в разных редакторах реестра вместо SYSTEM_ON_C реестр системы с винта может импортироваться и в другие ключи. Поэтому прежде чем загружать этот файл и импортировать его в реестр, надо проверить, куда конкретно импортировася реестр системы. Возможно, потребуется исправить путь к ключам в файле ide.reg. Например, заменить SYSTEM_ON_C на строку SYSTEM_ON_HDD, только после этого можно импортировать reg-файл. Произвести правку reg-файла можно с помощью встроенного редактора в FAR, который тоже входит в указанную сборку BartPE.

После импортирования reg-файла остаётся дело за малым (гы-гы, придёт малый, и доделаем ) — нужно переписать драйвера стандартного контроллера IDE в каталог system32. Вот эти файлы:

atapi.sys
intelide.sysintelide.sys
pciide.syspciide.sys
pciidex.syspciidex.sys

Затем можно грузиться с винта, всё должно заработать.

Рецепт проверен, всё железно работает.

Материал подготовлен по мотивам курения форума http://forum.ru-board.com. Там также обсуждаются варианты переноса XP с материнки Intel на не-Intel и прочие извращения.

Vista не работает с USB-устройствами

Столкнулся тут с граблями. Виста отказывается нормально распознавать USB-устройства. Пишет, что «Устройство не опознано». Танцы с бубном показали, что с портами всё нормально, и если удалить все USB-устройство вообще, включая хабы, то при их определении на краткий миг в диспетчере устройств становится видна флэшка как таковая, в моём случае это Corsair Flash Voyager. Клиент сказал, что он заплатил до фигища денег за техподдержку в Техносиле, вот пусть они и разбираются. На всякий случай я порылся в интернете на предмет рецепта от этой ботвы, и нашёл на одном форуме следующее:

Вытащить флешку, удалить из директории %SYSTEMROOT%\inf файлы DRVINDEX.DAT, INFPUB.DAT, INFSTOR.DAT, INFSTRNG.DAT, INFCACHE., SETUPAPI..
Вставить флешку.
Если автоматически драйвера не установятся — из диспетчера устройств установить драйвер вручную с опцией автоматического поиска (для поиска указать директорию
%SYSTEMROO%\system32
). Флешка должна успешно установиться.
Пправда сразу удалить может не получится, нужно стать владельцем этих файлов. В настройках безопасности прописать себя владельцем и поставил себе полный доступ.

Рецепт не проверен, при случае надо будет проверить.

Звук воспроизводится замедленно на Foxconn NF4UK8AA

Столкнулся тут как-то с граблями на материнке Foxconn NF4UK8AA — на клиентском компе звук воспроизводится замедленно примерно раза в два. Подумал — кодеки. Переставил. Не помогло. Потом решил переставить драйвера звуковой. Переставил — тоже не помогло. В интернете порылся — проблема описана, но решений не нашёл.

Потом добрые люди подсказали, что это известная бага для этой материнки. Оказывается, такой эффект у неё вызывает включенный в BIOS'е spread spectrum. Выключил его — всё заработало как надо.

Hint: spread specturm — исходя из описаний, я так понял, что включение этой функции заставляет генераторы тактовых частот менять частоту в некоторых очень небольших пределах, чтобы исключить либо уменьшить взаимные наводки проводников на матери друг на друга.