html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Windows на RAM-диске



В наш век мы все любим скорость. Мы любим быстрый транспорт, быстрые службы доставки, скоростной интернет. И, разумеется, быстрые компьютеры. У нас есть шестое чувство, которым мы детектируем милли/микросекундные задержки. Частенько появляется желание что-нибудь да разогнать.

Но что же разгонять? Что тормозит нам работу и создает дискомфорт? Наши процессоры работают на многогигагерцовых частотах, гоняют электроны на релятивистских скоростях. Не отстают от них и память с шинами передачи данных. Но как только дело касается периферии… здесь притаился неторопливый макромир. Это не электронами жонглировать. Будьте добры дождаться, пока диск в DVD-приводе раскрутится, пока придет очередной байт из порта ввода/вывода, пока HDD подведет свою считывающую головку в нужное место пластины. Ну ладно, DVD и COMпортами мы пользуемся нечасто(если вообще пользуемся), а вот HDD… У нас на нем все-таки ОС лежит, а в ней многие тысячи файлов, и кто знает, в какой момент они могут понадобиться. То лог записать, то dll подгрузить, то шрифт, то реестр, то еще что-то. А на некоторых HDD множество одновременных обращений может приводить к хабраэффектусущественному падению скорости работы — наблюдаю такое на своих WD Green.

Казалось бы, тут нам должны помочь команда славных защитников вселенной по имени Файловый Кэш, Prefetch, Superfetch, и их помощник ReadyBoost. Да, они помогают, но частенько бывает, что и промахиваются — и тогда приходится наблюдать курсор ожидания.

Но что это? Я слышу в зале шум, там скандируют — SSD! SSD! Что тут сказать, SSD — однозначно круто. 200-300мб/с и даже выше, практически мгновенный доступ, никакого шума… ну просто чудеса. Но про SSD и так написана куча тем, а раз уж разгонять… может, есть чего побыстрее? Хм. Есть у нас что-нибудь быстрее флеш-памяти в SSD? SSD подороже? Raid0 из SSD? А еще быстрее? RevoDrive? О! DDR3! (Кто там крикнул «L1 cache»? Юморист!)

Мы знаем про RAM-диски, иногда используем их как временное хранилище — чтоб быстрей работало. Так что если взять да и переместить всю систему в RAM? Должно работать намного быстрее любого SSD, и уж подавно быстрее HDD, не так ли? Или файловый кэш и так должен давать нам похожий эффект? Возможно, разницы и не будет заметно. Ну так почему бы не попробовать? В моем компьютере 16 гб ОЗУ, хватает на все и еще остается. Неплохо бы задействовать то самое оставшееся. Поехали!

0) Чеклист:
— 16 гб RAM, или больше. Хотя можно попробовать и на 8. А вот 4 хватит разве что для XP.
Grub4Dos
Wincontig
BootIce
Partition Wizard или что-то подобное для клонирования разделов,
— драйвер Firadisk
— дистрибутив Windows x64 (можно и x86, но свободной памяти будет не более 3.5гб). Я проверял на WinXP(x86), Win7, Win8. Весьма желательны «облегченные» версии, ведь память ОЗУ не резиновая.
— установленная и работающая Win7 (или Win8)

1) Внимание! если у вас несколько жестких дисков — во избежание проблем делайте все последующее на HDD, отличном от системного. Системный вообще лучше не трогать и по возможности отключить, а Win7 установить для опытов на другой диск. Мне не известна ваша конфигурация, какие-то действия могут поломать вам загрузку. Неплохо бы предварительно запастись восстановительным LiveCD/USB, или хотя бы установочным диском Windows а также хотя бы примерно понимать, что делаете и как вернуть все назад. Для уверенности можно сначала провести опыт на виртуальной машине.

Сначала немного теории. Grub4Dos — это менеджер загрузки, для организации мультизагрузочных систем. Среди всего прочего — может создавать виртуальные устройства и работать с ними так же как и с обычными дисками. Виртуальный диск может быть смонтирован на файл, или же в память. При монтировании в память содержимое файла-источника копируется в память и дальнейшая работа ведется уже оттуда. Как источник можно использовать файлы .ima (образы дискет), .iso (образы CD/DVD) а также .img (RAW образы HDD). Родные для Win7 файлы .vhd (фиксированного размера, не динамические и не дифференциальные) представляют собой те же .img, но с небольшим заголовком и их тоже можно подключать.
Созданные при помощи Grub4Dos виртуальные диски доступны в реальном режиме. Windows же увидит их только при наличии специального драйвера. Такие драйверы существуют — это Firadisk (работает с дисками в памяти) и WinVBlock (работает с образами в файлах). При наличии в ОС нужного драйвера она сможет работать с дисками, созданными в Grub4Dos. К сожалению, драйверы не подписаны и для их работы в x64 системе нужно отключить проверку подписей драйверов. Таким образом, ход действий: готовим VHD с установленной Windows, где отключаем проверку подписей, устанавливаем Firadisk, затем подгружаем VHD еще до загрузки Windows через Grub4Dos и вперед.

Сначала установим на нашу машину Grub4dos. Запускаем BootIce, выбираем диск, с которого будем грузиться, ставим Grub4dos в MBR, кладем в корень любого раздела файлы grldr и menu.lst.

В menu.lst пишем:

#Это для загрузки вашей предыдущей Win7
title Windows (previous)
find --set-root /bootmgr
chainloader /bootmgr

Команда «find --set-root» выполняет поиск указанного файла и делает первый раздел, где этот файл был найден, текущим. Поэтому проверьте, не лежат ли у вас лишние файлы bootmgr на других разделах. Если вам известно, что системный диск — это hd0, можно написать прямо — chainloader (hd0,0)/bootmgr
Далее через управление компьютером-управление дисковыми устройствами создаем в корне нашего рабочего раздела файл VHD фиксированного размера гигабайт этак на 10 (можно и больше, чтобы хватило для установки), форматируем в NTFS, отключаем диск и дефрагментируем его файл при помощи Wincontig.

Сейчас надо из этого VHD получить образ диска с готовой к работе Windows, драйверами для вашего оборудования и поддержкой загрузки из VHD. Этого можно добиться разными способами.

Способ 1, рекомендуемый. Для Win7 редакций Корпоративная и Максимальная, и для Win8. Установка системы в VHD штатными средствами.
Подробнее
После загрузки инсталлятора жмем Shift-F10, и выполняем:
diskpart
select vdisk file="D:\win7.vhd"
attach vdisk

где «D:\win7.vhd» — путь к файлу VHD. Буквы дисков могут отличаться от вашей основной системы, их можно посмотреть запустив, к примеру notepad и открыв в нем диалог выбора файла.
Продолжаем, VHD появится в списке устройств для установки. После установки в вашем загрузочном меню Windows появится новая запись и окажется по умолчанию. Это и есть загрузка в VHD.

Способ 2. Для всех систем. Установка в отдельный раздел на диске. Устанавливаем Windows туда стандартно, и в самом конце после всей подготовки клонируем раздел в VHD.

Способ 3. Для всех систем. Устанавливаем систему в VHD на виртуальной машине, проделываем всю подготовку, а затем грузимся с этого VHD на реальном железе. Есть вероятность возникновения проблем с драйверами оборудования при переносе на реальное железо. Лучше перед переносом выполнить sysprep.

Способ 4. Для WinXP. Используем драйвер WinVBlock.
Подробнее
В menu.lst добавляем вот такие три записи.
title Start -  TXT-mode XP Setup vhd
find --set-root /winxp.vhd
map --mem /winvblock.ima (fd1)
map --mem /winvblock.ima (fd0)
map /winxp.vhd (hd0)
map --mem /xp.iso (0xff)
map --hook
chainloader (0xff)

title Continue GUI-mode XP Setup vhd
find --set-root /winxp.vhd
map --mem /winvblock.ima (fd1)
map --mem /winvblock.ima (fd0)
map /winxp.vhd (hd0)
map --mem /xp.iso (0xff)
map --hook
root (hd0,0)
chainloader /ntldr

title Boot XP vhd
find --set-root /winxp.vhd
map /winxp.vhd (hd0)
map --hook
root (hd0,0)
chainloader /ntldr

Что здесь делается:
-подключается winxp.vhd как жесткий диск (файл VHD обязательно нужно дефрагментировать при помощи WinContig, иначе Grub4Dos откажется его подключать)
-подключается образ дискеты winvblock.ima с драйверами WinVBlock, грузится в память.
-подключается образ установочного CD xp.iso, грузится в память.
-записей для установки две, т.к. установка WinXP состоит из 2х стадий — текстовый и графический режим. Сначала выбираем TXT, при второй загрузке — GUI. Разница лишь в том, откуда грузимся — с CD или HDD.
-нажимать F6 и выбирать драйвер не нужно, интегрировать в дистрибутив тоже, достаточно иметь его на образе дискеты.
-после установки в Grub4Dos выбираем Boot и загружаемся в систему, которая установилась в VHD.

Для Win7, а тем более для x64 редакций это так просто не сработает. Нужна особая, уличная магия.
Впрочем, у меня так и не получилось заставить WinVBlock работать с Win7. Может, у вас получится.

Cпособ 5. Для Win7 любых редакций. Используем VBoot. Это тоже драйвер, позволяющий грузиться в VHD. Он подписан и позволяет устанавливать x64 системы. К сожалению, платный, но доступна демо-версия, которой для установки достаточно.
Подробнее
Выставляем время на 2011 год. (иначе при загрузке получите BSOD)
В корень диска кладем папку VBoot, vbootldr и vbooldr.mbr.
В vboot\grub\grub.cfg ищем записи Windows 7 VHD и Windows 7 Install и меняем на вот такие:
menuentry "Windows 7 VHD" {
  vboot harddisk=(LABEL=D)/win7.vhd
}
menuentry "Windows 7 Install" {
  vboot harddisk=(LABEL=SYS)/win7.vhd cdrom=(LABEL=SYS)/win7.iso boot=cdrom
}

Метку раздела, на котором лежат файлы win7.vhd и win7.iso (дистрибутив Win7) — меняем на SYS (хотя не важно какую, лишь бы совпадало). У меня Vboot почему-то не хочет распознавать пути вида (hd0,1). Еще можно обращаться по UUID, но метки проще.

В menu.lst добавляем запись:
title VBoot
find --set-root /vbootldr.mbr
chainloader /vbootldr.mbr

Перезагрузка. В Grub4Dos идем в Vboot, а в нем — в Windows 7 Install. После загрузки инсталлятора жмем shift-F10, запускаем notepad, открываем диалог выбора файлов и смотрим, на какой букве находится диск с Vboot. Допустим, это D:. Возвращаемся в командную строку и пишем для 64-битных редакций —
D:\vboot\tools\amd64\vbootctl setup
или для 32-битных
 D:\vboot\tools\x86\vbootctl setup
Это установит драйвер Vboot и примонтирует виртуальные устройства. Затем продолжаем установку на появившийся в списке устройств VHD, и грузимся через запись Windows 7 VHD. После окончательной настройки (см. ниже) удаляем Vboot командой vbootctl uninstall и тогда можно вернуть время на текущее.


И вот Windows установлена и загрузилась.
Во первых, проверим через Bootice, не снес ли нам установщик Grub4Dos из MBR. Если снес — снова ставим.
Во вторых, проверим, есть ли на системном разделе загрузчик Windows — файл bootmgr и папка Boot (в случае Win7/8). Они имеют атрибуты скрытых и системных, включите их отображение. Если нет — значит установщик увидел этот загрузчик где-то еще и добавил опцию своей загрузки туда, или же создал скрытый 100мб раздел и разместил все там. Это не дело, загрузчик на системном разделе нам нужен. Поэтому создаем его:
bcdboot c:\windows /s c: 

И отключаем в нем проверку подписей драйверов:
bcdedit /store c:\boot\bcd /set {default} testsigning ON
bcdedit /store c:\boot\bcd /set {default} nointegritychecks ON
bcdedit /store c:\boot\bcd /set {default} loadoptions DDISABLE_INTEGRITY_CHECKS

В действующем загрузчике тоже отключаем:
bcdedit /set testsigning ON
bcdedit /set nointegritychecks ON
bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS

Перезагрузка для включения тестового режима и устанавливаем драйвер Firadisk: hdwwiz (hdwwiz.cpl в XP), установка вручную, все устройства, установить с диска и выбираем .inf файл.

4) Теперь производим все обычные манипуляции: устанавливаем оставшиеся драйверы, настраиваем оборудование, сеть, рабочий стол, ставим DirectX/.NET/vcredist, и тому подобное. Перенесем файл подкачки на другой раздел, удалим временные файлы и сожмем системный раздел средствами NTFS. Нам ведь это все еще в память грузить, каждый мегабайт на счету. У меня получилось около 4 гб для Win7.

Теперь ужимаем VHD до приемлимого размера (я добавил пару гб на всякий случай, получилось 6). Кстати, а как определить доступный размер? На экране меню Grub4Dos в верхней строке есть строка вроде Mem: /639K/13582M/512M.


Это доступные области памяти, в которые он может загрузить образ. Но он может загружать образ только целиком в одну область, так что размер нового VHD не должен превышать самое большое значение из этой строки, иначе получите ошибку.

Грузимся в предыдущую Win, монтируем win7.vhd, создаем еще один vhd уже конечного размера и копируем один в другой через редактор разделов вроде Partition Expert. (Если вы решили последовать способу установки 2 — сейчас самое время склонировать ваш системный раздел в VHD) Заменим прежний файл на новый, опять дефрагментируем через Wincontig. Попробуем загрузиться в новый VHD. Проблем возникнуть не должно.
Можно вместо всего этого использовать специальную программу для урезания и сжатия уже установленной Win7 — VHD_W7_Compact. Заявляется, что может урезать до 600мб.

5) Пора таки загрузиться из RAM! Добавим в menu.lst еще несколько строчек:
title Boot Win7 from RAM
map --mem /win7.vhd (hd0)
map --hook
chainloader (hd0)/bootmgr

(для XP вместо /bootmgr пишем /ntldr)
И наконец загружаемся, выбрав Boot Win7 from RAM.
Минуту-две VHD копируется в память, несколько секунд загрузки и… появляется рабочий стол. Ура, семерка работает без использования HDD, причем вроде неплохо работает.




Можно еще добавить хитрый способ загрузки Win7 напрямую из VHD с сохранением изменений:
title Boot Win7 from VHD (Firadisk)
find --set-root --ignore-floppies /win7.vhd
map /win7.vhd (hd0)
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
map --hook
write (99) [FiraDisk]\nStartOptions=disk,vmem=find:/win7.vhd,boot;\n\0
rootnoverify (hd0,0)
chainloader /bootmgr

Чтобы это работало — в .inf файле Firadisk нужно заменить «LoadOrderGroup = Boot Bus Extender» на «LoadOrderGroup = SCSI miniport».
Здесь Firadisk заставляем работать с образом не в памяти, а на диске. Оно заметно тормозит, так что лучше все же применять способ установки 1 с родным VHD boot.

Вот тут есть еще одна статья о загрузке Win7 из RAM.

Ну а c линуксами можно попробовать вот так.

Я использую такую конфигурацию на домашнем компьютере с прошлой осени, уже более полугода. Попробую упорядочить субъективные впечатления:
Плюсы:
+ Действительно, работает быстренько. Программы из памяти запускаются мгновенно (что очевидно). По стабильности работы нареканий нет — компьютер работает неделями и месяцами.
+ Нет лишних звуков от HDD.
+ Понятия «износ», «количество циклов чтения/записи» — для RAM несущественны.
+ Побочный плюс — получилась неизменяемая, неубиваемая система. Можно одноразово ставить всякие кривые программы (к примеру, для восстановления USB flash — они обычно ставят свои драйверы, которые потом трудно выковырять) не рискуя что-либо испортить. Перезагрузка и как ничего и не было.
+ Побочный плюс — VHD это круто. Никаких больше разделов диска, просто файлы, которые элементарно копируются/перемещаются/удаляются/бэкапятся без всяких акронисов/парагонов/gparted-ов.

Минусы:
— Честно говоря, разницы с хорошим SSD по скорости не заметно. В обоих случаях придраться к быстродействию негде.
— Конечно же, тратится драгоценная память. Вынь да положь 6-8 гигабайт. В моем случае остатка в 10гб мне хватает, а если будет мало — можно и в режиме VHD загрузиться.
— 6-8 гб для Windows 7 — все же очень мало. Одни обновления Windows Update быстро съедят все место. А еще захочется установить любимые программы… кому-то и 100гб системного раздела может быть мало (а некоторые пропагандируют вообще не разбивать диски на разделы). В моем случае я разместил на системном разделе только самые востребованные программы, а все остальное в виде portable версий держу на HDD. Все-таки это домашний компьютер, на нем нет жадных до памяти и места на системном диске монстров вроде SQL Server, Visual Studio, Adobe CS, MS Office (хватает и портабельного LibreOffiсe). Пока все хорошо.
— temp приходится переносить на другой диск. Некоторые инсталлеры никого не спрашивая распаковываются именно туда и свободного места может не хватить.
— Приходится отключать проверку подписей драйверов. Тут уж ничего не поделать.
— У неубиваемости есть другая сторона. Для каждого изменения в настройках, для каждого обновления, для каждой установки программы/драйвера для постоянного использования необходимо перезагружаться в режим работы с VHD — иначе все будет потеряно при перезагрузке. Если какая-то ваша программа хранит что-то свое в профиле (например, игры держат там сохранения) — то и профиль желательно переносить на другой раздел.
— Загрузка 6-8гб в память занимает много времени — не похвастаешься 10 секундной загрузкой.
— По понятным причинам невозможно использовать гибернацию. Но в обычный сон система уходит и нормально просыпается.

Но я снова слышу крики в зале. «И чего только не придумают, лишь бы SSD не покупать!», «Да это ж бред, выкидывать столько памяти за просто так!», «Какие-то левые кривые дрова ставить?», «Не нужно!». Согласен. Рекомендовать такой подход я не буду. Это скорее занятный эксперимент, чем рабочее решение. Спасибо за внимание, теперь можно постить картинки с хлебными троллейбусами.

P.S. Большая благодарность разработчикам Firadisk и WinVBlock — karyonix и Shao Miller, а также форуму reboot.pro.
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

6

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции