понедельник, 28 сентября 2009 г.

1C 8.1 в Linux

Буквально на днях, а именно 25.09.2009, выпущена новая версия 1С 8.2 с поддержкой браузера и тонкого клиента, а это очень хорошая новость, но я сегодня не об этом.
Когда-то я рассказывал о мега-полезном скрипте winetricks для wine. Так вот именно он поможет нам установить 1C на Ubuntu. Подробнее по ссылке: Установка 1C:Предприятие 8 в Linux

суббота, 26 сентября 2009 г.

Переключение режима SATA на установленной Windows XP или Vista

Тема необычна для данного блога, но я решил об этом написать, т.к. проблема популярна и злободневна.
Мы уже знаем о том, что существуют некоторые трудности установки Windows XP на современные ноутбуки (и не только) имеющие на борту не IDE как раньше, а SATA контроллеры дисков. Для того, чтобы установить XP на такое железо нужно иметь floppy привод или же править образ установщика системы и вживлять в него нужные драйвера. Но что, если у нас нет такой возможности или же система уже установлена в режиме SATA Compatible?
Небольшое отступление. На большинстве ноутбуков в BIOS можно включить режим совместимости SATA со стандартным IDE контроллером. В этом случае любая система загрузится и установится, но к постоянному использованию этот режим не рекомендуется, т.к. работает достаточно медленно.
Подход, который я опишу, не является самым простым, но он затрагивает суть проблемы и на основании этого кто-то сможет оптимизировать решение проблемы для себя.

Сначала решение кажется простым. Устанавливаем систему режиме Compatible, затем заменяем стандартный драйвер IDE нужным SATA драйвером (через диспетчер устройств), перезагружаемся, переключаем режим SATA в Enhanced, грузимся снова, и... получаем BSOD.
И здесь мы задаёмся вопросом: почему? Ответ таится в особенностях загрузки системы. Первыми загружаются так называемые Critical Devices и драйвер контроллера жёстких диска обязательно должен быть в этом списке (для меня остаётся загадкой, почему замена драйвера контроллера не приводит к автоматическому добавлению его в этот список).
Итак, второй этап, нужно добавить драйвер контроллера в Critical Devices. Список этих устройств находится в реестре. Ниже шаблон записи в реестре для контроллера жёстких дисков:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_xxxx&dev_xxxx&cc_xxxx]
"Service"="xxxxx"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

где:
ven_xxxx - код производителя, dev_xxxx - код устройства (подсмотреть здесь и здесь)
cc_xxxx - класс устройсва (IDE - 0101, SATA - 0106, остальные здесь )
Service - имя драйвера в системе (его можно узнать из inf-файла устанавливаемого драйвера в строке AddService = xxxxx,...)
ClassGUID - идентификатор класса устройств в Windows (4D36E96A-E325-11CE-BFC1-08002BE10318 - контроллер жёстких дисков, весь список смотреть вот тут)

С ClassGUID и Service всё понятно, а вот как узнать ven_xxxx, dev_xxxx и cc_xxxx? С этой целью можно воспользоваться LiveCD с Linux или FreeBSD (на ноутбуке с которым я проводил эксперименты, а это был ASUS K50IN, загружается Ubuntu 8.04 и Ubuntu 9.10). Переключаем режим SATA в Enhanced (идентификаторы в режиме Compatible и Enhanced отличаются, именно из-за этого вся кутерьма) и загружаемся с LiveCD. Запускаем lspci и ищем наш контроллер. В случае с K50IN это
00:0b.0 SATA controller: nVidia Corporation MCP79 AHCI Controller (rev b1)

Теперь берём адрес устройства 00:0b.0, определяем нужные нам идентификаторы с помощью lspci -ns 00:0b.0 и получаем
00:0b.0 0106: 10de:0ab9 (rev b1)

где:
10de - ven_xxxx
0ab9 - dev_xxxx
0106 - cc_xxxx

Подставляем значения и получаем reg-файл для добавления в реестр:
---------------------------------------------------------------
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10de&dev_0ab9&cc_0106]
"Service"="nvgts"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
---------------------------------------------------------------

добавляем это в реестр, перезагружаемся, включаем Enhanced и... работает!

Теперь кратко:
0. Создаём reg-файл используя LiveCD (загружаться нужно в режиме Enhanced).
1. Устанавливаем систему в режиме Compatible.
2. Заменяем стандартный драйвер контроллера жёстких дисков, на драйвер прилагающийся к ноутбуку или материнской плате используя оснастку диспетчера устройств (Device Manager).
3. Не перезагружаясь добавляем уже полученный нами reg-файл.
4. Перезагружаемся и переключаем включаем в BIOS режим SATA Enhanced.

PS: всё это должно работать так же и в Windows Vista'

Update: Обратил внимание, что некоторые "правильные" драйверы сами добавляют необходимую запись в ветку реестра CriticalDeviceDatabase при установке. В этом случае создавать и добавлять файл реестра необязательно. Но так делают не все, нужно проверять :)

Update2: Если вы заменили драйвер, переключились в AHCI и получили синий экран (в силу каких либо причин, например, с выбором драйвера ошиблись), отключите режим AHCI и при загрузке системы виберите "Последнюю удачную конфигурацию".

воскресенье, 20 сентября 2009 г.

Archlinux

Какое-то время назад, ради эксперимента, установил себе Archlinux второй системой. Вот что я могу о ней сказать - если вы достаточно опытны в linux, желаете иметь всегда самый свежий софт и видеть как работает система изнутри, то да, эта система для вас. Для корпоративной среды (если только это не сборище гуру линуксоидов :)), а так же серверов Archlinux не подходит т.к. не имеет определённых релизов.
В результате с домашней машины Ubuntu съехал на долго, а на работе по прежнему стоит LTS 8.04 и я думаю он там на долго :)

Цитата с Archwiki: "Дистрибутив моей мечты должен быть простым как Slackware и с поддержкой зависимостей как в Debian's. И я думаю, что этот дистрибутив - Arch."

Double Commaner в Archlinux

Double Commander создавался с целью получить кроссплатформенный аналог Total Commander, который будет иметь подобный интерфейс и совместимость с плагинами. Опубликована версия 0.4.0 (в транке уже 0.4.6). Сейчас Double Commander в состоянии beta.

Официальный сайт: http://doublecmd.sourceforge.net
Сылка на сборку для Archlinux (пожелания принимаются): http://aur.archlinux.org/packages.php?ID=30300