Настройка и работа в Linux
adb5321d

Общий файл подкачки для Windows и Linux


Rafter, 04/2003, Xakep.ru

Как ОС Windows, так и ОС Linux используют так называемую подкачку, чтобы восполнить нехватку оперативной памяти. Когда компьютер выключен, область подкачки содержит ненужные данные и любой ОС не важно, что в действительности находится в области подкачки. Вопрос состоит в следующем: поскольку в один момент времени работает только одна из ОС, возможно ли, чтобы Windows и Linux использовали одну и ту же область на диске для подкачки. Некоторая сложность состоит в том, что Windows использует для подкачки файл, а Linux - для этих же целей раздел на диске. (Конечно, и в Linux возможно использовать для подкачки файл, но этого делать не рекомендуется). Если попытаться выделить отдельный раздел для подкачки и разместить там файл подкачки Windows, а затем запустить Linux, которая будет использовать тот же раздел для тех же целей, то будет перезаписан загрузочный сектор, FAT и другие таблицы, и при загрузке Windows эта ОС, потеряв файл подкачки на этом разделе, не долго думая создаст его на своем загрузочном диске.

Поэтому для решения этой задачи нам необходимо сохранять важные с точки зрения Windows данные с начала раздела подкачки в каком-нибудь файле, находящемся в разделе Linux. А при каждом запуске Linux надо будет проверить, кем в последний раз использовалась область подкачки - Linux или Windows. Если это был Linux, то просто разрешается подкачка, в противном случае надо будет сохранить служебные данные с начала раздела в файле, создать раздел подкачки на диске командой mkswap /dev/winswap и затем разрешать подкачку. И теперь мы готовы настроить систему на использование общей области подкачки. Правда, стоит отметить, что при современных объемах винчестера это не столь актуально, но придает некую завершенность совместному размещению Windows и Linux на одном винчестере вашего компьютера.

Процедура на самом деле не сложна и требует выполнения следующих шагов:

1. Загружаемся в Linux, отключаем файл подкачки, отредактировав файл /etc/fstab (закомментировав все строки, которые его описывают).


7. Загружаемся в Linux, и входим в него как root.

8. При необходимости, используйте команду fdisk, чтобы узнать название раздела и его размер в блоках (в моем случае hda5 и размер 256977 блоков).

9. Поскольку название этого раздела может попасть в конфигурационные файлы в разных местах, создаем символьную ссылку /dev/winswap, указывающую на этот раздел, следующей командой:


    # ln -s /dev/hda7 /dev/winswap

    (Обратите внимание на какой раздел делать сим.линк, здесь он hda7, у вас же может быть совсем другим -- прим. редактора)

    10. Для создания копии специальных секторов в сжатом виде в файле /etc/winswap.gz в приглашении командной строки наберите:

    # dd if=/dev/winswap bs=512 count=T | gzip -9 >

    /etc/winswap.gz



    где T - число так называемых специальных секторов (в нашем случае 535), вычисленных в п.4).

    11. Подготовим два отдельных файла, под названиями swapinit.sh и swaphalt.sh. Примеры этих файлов, которые будет работать в Red Hat Linux, даны в приложении. Поместите эти файлы в каталог /etc/rc.d/init.d Проставьте им флаг "исполняемых" командами:


      # chmod +x swapinit.sh

      # chmod +x swaphalt.sh

      12. Проверим имя файла инициализации системы, скорее всего это будет /etc/rc.d/rc.sysinit Он должен, содержать команду "swapon -a", вместо этой команды добавьте следующую строку:

      /etc/rc.d/init.d/swapinit.sh

      В зависимости от того, где находится команда swapon, заменяем ее в скрипте swapinit.sh на команду /etc/swapon, если она в каталоге /etc, или же на /bin/swapon - если она в каталоге /bin. То же самое сделаем с командой mkswap.

      13. Проверим имя скрипта завершения работы системы, скорее всего это будет файл /etc/rc.d/init.d/halt. Обычно в этом файле будет команда "swapoff -a". Замените эту команду на "swapoff /dev/winswap".

      14. Добавьте следующие строки в этот скрипт. Поместите эти строки после всех команд, которые могут потребовать подкачку. Проверьте, что если скрипт завершения работы автоматически находит все разделы подкачки и отключает их, то не требуется заменять команду swapoff $SWAPS на swapoff -a. В этом случае, просто добавьте команду /etc/rc.d/init.d/swaphalt.sh к файлу /etc/rc.d/init.d/halt [ -x /sbin/accton ] && /sbin/accton /etc/rc.d/init.d/swaphalt.sh



      15. Включаем подкачку в Linux, убрав комментарий со строки с разделом подкачки в файле /etc/fstab (который вы добавили ранее). Это конечно необязательно, так как больше не используется /etc/fstab для задания разделов подкачки. Также нет никакой необходимости добавлять /dev/winswap в файл /etc/fstab. Вероятно, это вообще нельзя делать.

      16. Перезагрузите Linux.

      17. Однако если Linux аварийно завершит работу без выполнения /etc/rc.d/init.d/halt, то вам придется перезагрузиться, загрузить Linux и выйти из него. Или же загрузившись в Windows, отформатировать раздел подкачки в FAT16 и перенести на него файл подкачки.

      Приложение 1. Скрипт swapinit.sh

      Этот скрипт инициализирует область подкачки на разделе1.

      Приложение 2. Скрипт swaphalt.sh

      Этот скрипт сначала проверяет сигнатуру области подкачки Linux, а затем восстанавливает на разделе файловую систему Windows.


      Источник - LinuxBegin.ru

      http://linuxbegin.ru

      Адрес этой статьи:

      http://linuxshop.ru/linuxbegin/article287.html


      Содержание раздела