понедельник, 3 ноября 2008 г.

Восстановление загрузочной записи/сектора

За последние полгода несколько раз восстанавливал/ставил загрузочные секторы Win и Debian на своем винте. Решил собрать немного информации здесь.

1. Информация по загрузке
Хорошая статья на русской wiki по MBR и процессу загрузки
Еще русская статья на akina.hop.ru
Cтатьи Thestarman'а по MBR и загрузчикам

2. Загрузка в Windows Vista
Загрузчик в новой M$ OS теперь сделан по идеологии того же Grub'а - об этом доступно написано на сайте MS.
"При запуске на компьютере с OS Windows Vista BIOS загружает MBR, а затем — загрузочный сектор. Однако загрузочный код загружает новую программу — диспетчер загрузки Windows (Bootmgr). Диспетчер загрузки Windows анализирует файл данных конфигурации загрузки, составляет список установленных операционных систем и выводит меню загрузки. Если вместе с системой Windows Vista в конфигурации с двойной загрузкой установлена более ранняя версия операционной системы Windows, диспетчер загрузки Windows передает управление программе Ntldr для предыдущей версии операционной системы Windows. Диспетчер загрузки Windows выполняет эти действия при выборе пункта Windows Vista в меню загрузки"

3. Софт для восстановления загрузчиков/MBR
- Windows: fixmbr и chkdsk
- Linux: grub
grub> root (hd0,1)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.

4. И вдогонку софт для создания загрузочных USB
Windows: BartPE (делаем Live XP ) + FlashBoot (shareware, full) или PEtoUSB
Linux: Slax (Slax для CD и USB) или другой Live Linux.

воскресенье, 2 ноября 2008 г.

Визуализация-vs-производительность

Нередко случается, что затраты на визуализацию в программе, например, отрисовка текущего прогресса выполнения, отъедает львиную долю ресурсов. Сегодня это испытал на своей шкуре - речь о стандартной (и полезной) Windows-программе chkdsk.exe.

Итак, chkdsk запускается, проверяет файловую систему и честно выводит на экран список файлов, для которых он исправил индексы или поменял атрибуты.
Что происходит, если ему нужно поменять атрибуты безопасности всех файлов на системном диске? На диске около 100 000 файлов. Бедный chkdsk меняет атрибут одного файла и перерисовывает весь экран: вниз добавляется новая строка, остальные сдвигаются вверх. Скорость отрисовки в моем случае: примерно 40 новых записей в секунду.
Дальше - 2 варианта развития событий.
  1. Если chkdsk запущен "на синем фоне", до полной загрузки Windows, он так и будет рисовать по 40 строк в секунду. Для 100 000 файлов получаем ~40 минут.
  2. Если запустить chkdsk в окне cmd.exe, скорость отрисовки все такая же удручающая. Интересно вот что: если свернуть окно, скорость исполнения вырастает на 2 порядка! Вместо 40 минут - 1 минута. Испытано в "live" XP (Bart PE Builder).
Диагноз?
Думаю, дело в особенностях прорисовки в командной строке, которое еще усугбляется использованием стандартного драйвера VGA.