Предостережение |
ВНИМАНИЕ: Эта глава написана с учетом особенностей RedHat Linux 6.0 Несмотря на то, что общие принципы, описанные здесь, применимы ко всем дистрибутивам, некоторые детали могут отличаться. Я приветствую любые отзывы с описанием деталей процедуры для других дистрибутивов. У многих пользователей существует раздел подкачки, выделенный специально для Linux. Я предполагаю, что вы - один из них. |
Загрузите Linux. Отключите подкачку, отредактировав файл /etc/fstab, закомментировав в нем строки, описывающие раздел подкачки.
Используя команду fdisk в Linux, удалите раздел подкачки, таким образом освободив дисковое пространство.
Загрузите DOS. Создайте DOS-раздел (используя команду FDISK) с необходимым вам размером. Если вы не можете создать такой раздел (например, если DOS FDISK сообщает о том, что "в расширенном разделе все пространство занято под логические диски"), можно использовать fdisk или cfdisk из Linux для создания этого раздела. Вы даже можете просто сменить тип раздела подкачки с 82h (Раздел подкачки Linux) на 06h (FAT16). В этом случае не придется удалять этот раздел, а просто сменить тип.
После того, как создали раздел, загрузите DOS, если вы еще не в DOS. DOS выделит новому разделу букву диска. Используйте эту букву вместо X везде в этом тексте, где встретите команды типа "LABEL X:" или "COPY FOO X:DUMMY.DAT"
Отформатируйте этот раздел DOS-командой FORMAT.
C:\>FORMAT X: |
Установите метку тома на эту новую "ОБЛАСТЬ ПОДКАЧКИ", используя DOS-команду LABEL. Проверьте правильность ее установки командой DIR. Проделайте это, как отдельный шаг. Некоторые версии FORMAT не устанавливали метку тома в загрузочный сектор, хотя должны были это делать. [Замечание: некоторые писали мне, что метка тома хранится в корневом каталоге. Это верно, но, начиная с DOS 5.0, она хранится также в загрузочном секторе.]
C:\>LABEL X: C:\>DIR X: |
На этой фазе вы имеете готовый DOS-раздел для подкачки.
Запустите Windows. Перейдите в Панель Управления (Control Panel), выберите пункт "386 расширенный" ("386 Enhanced"). Выберите "Виртуальная память" ("Virtual Memory") и создайте постоянный файл подкачки на диске X: максимально возможного размера (Его вам укажет Windows). Windows может пожаловаться, что не сможет использовать такой большой файл подкачки. Не обращайте на это внимания и все равно создайте файл.
Выйдите из Windows.
Запустите Windows. Перейдите в "Панель Управления" (Пуск| Настройка | Панель управления). Выберите пункт "Система". (В это окно можно попасть проще: нажмите Win+Break) В диалоговом окне "Свойства системы" выберите пункт "Быстродействие". Нажмите кнопку "Виртуальная память". На экране появится диалог настройки параметров виртуальной памяти. Выберите пункт "Я хочу задать параметры виртуальной памяти самостоятельно". Выберите диск, на котором хотите иметь разделенный с Linux раздел подкачки (X:). Оставьте максимальные и минимальные значения такими, какими их установит Windows. Нажмите OK. Windows попросит вас перезапустить компьютер. Так и сделайте.
После того, как вы перезапустите Windows, увидите, что на диске X: появился файл win386.swp. В дополнение к этому появился каталог Recycled. По той причине, что вы не собираетесь хранить другие файлы на этом диске, и одного файла будет более, чем достаточно (да и тот не жалко, в случае чего), укажите Windows не поддерживать корзину на этом диске (X:). На рабочем столе нажмите правую кнопку мыши на корзине и в открывшемся меню нажмите Свойства. На экране появится диалог настройки Корзины. Нажмите на закладку "Глобальные" и выберите "Независимая конфигурация дисков". После этого выберите диск X: drive (у которого будет метка SWAP SPACE). В этом диалоге сдвиньте указатель "Предельный объем корзины" на 0 процентов. В графе "Зарезервированное место" должно быть написано 0 байт. Нажмите ОК и перезагрузите компьютер.
Казалось бы: раз вы больше не поддерживаете корзину для диска X, то Windows каталог RECYCLED там больше не нужен, и она могла бы его удалить. Она не только не удаляет его, но и не разрешает вам сделать это. Как я говорил раньше, нам этот каталог не нужен, и мы хотим, чтобы на диске X: был только файл win386.swp. Чтобы удалить ненужный каталог, перезагрузите компьютер в Режиме Эмуляции MS-DOS. Выберите Пуск | Завершение работы | Перезапуск компьютера в режиме MS-DOS, или в момент загрузки Windows нажмите F8, и из появившегося меню выберите пункт "Command Prompt only". Попав в режим MS-DOS, выполните следующие команды:
C:\>X: X:\>ATTRIB -R -H -S RECYCLED X:\>DELTREE RECYCLED |
Теперь на диске X: есть только один файл: win386.swp. Вы можете проверить этот факт, используя различные опции команды dir. Но это не означает, что каталог RECYCLED больше на диске X: не появится. Когда Windows загрузится и определит, что на диске X: нет каталога RECYCLED, то он его снова создаст. Однако, когда мы будем восстанавливать диск X: из Linux-а, он будет просто содержать один файл win386.swp. Если кто-нибудь знает способ избавиться от каталога RECYCLED в Windows, пишите мне.
Вас беспокоит "Очистка диска"?
Если включена опция "Очистка диска", то иногда вы будете получать сообщения "Не хватает места на диске X:". Так как мы используем все пространство диска X: для подкачки, то нам это свободное место не нужно. Чтобы это предупреждение больше не появлялось запустите настройку Очистки Диска (Пуск | Программы | Стандартные | Служебные | Очистка диска). В появившемся диалоге выберите диск X: и нажмите OK. Появится диалоговое окно "Очистка диска X:". Нажмите пункт "Настройки" и отключите опцию "Если на диске останется меньше...".
Начиная с этого момента, Windows будет считать, что его диск подкачки - это диск X:. Поэтому диск X: должен быть доступен каждый раз при загрузке Windows. Если вы используете какие-нибудь дополнительные системные утилиты, например, Norton Utilities для Windows 95, то вам, наверное, придется прочитать документацию и настройки, чтобы эти утилиты знали об изменениях, иначе это может привести к ошибкам.
Загрузите Linux, и войдите в него как root.
Используйте команду fdisk, чтобы узнать название раздела и его размер в блоках. Создайте символьную ссылку /dev/winswap, указывающую на этот раздел. Например, если этот раздел - hda7, то наберите:
# ln -s /dev/hda7 /dev/winswap |
[ЗАМЕЧАНИЕ К ЛЮБИТЕЛЯМ ЧИСТОТЫ: Пожалуйста, используйте символьную ссылку. Название этого раздела попадет в некоторые конфигурационные файлы и несоответствия могут привести к фатальным результатам.]
Узнайте размер "Набора Специальных Секторов" для диска подкачки. Это ничто иное, как общее количество секторов, требуемое на загрузочный сектор, FAT и корневой каталог. Существует несколько способов узнать это число. Наиболее простой - использовать Разд. Скрипт msinfo.sh. Используйте следующие команды:
# cp Swap-Space-HOWTO msinfo.sh # chmod +x msinfo.sh |
(Кстати, это значительно проще сделать в редакторах из KDE или GNOME)
Откройте файл msinfo.sh file, в редакторе удалите все строки, кроме файла msinfo.sh из раздела 8. После этого запустите его командой
# ./msinfo.sh /dev/winswap |
Эта программа выдаст информацию о разделе подкачки. Запишите число под названием "Общее количество специальных секторов", и проверьте, чтобы метка тома называлась "SWAP SPACE". Если это не так, то перезагрузитесь в DOS и перезапустите команду LABEL
Замечание: Вы также можете определить это число утилитами, показывающими содержание загрузочного диска, например, Norton Disk Editor или minfo из пакета mtools в Linux. В Norton Disk Editor, выберите пункт "Boot Sector" в меню Object. Запишите следующие числа:
Reserved Sectors at beginning : r FAT Copies : f Sectors per FAT : s Root directory entries : r |
Теперь, "Общее количество специальных секторов" будет равно
T = r + (s * f) + (d / 16)
Однако, использовать программу из этого HOWTO значительно проще.
Запишем "Общее Количество Специальных Секторов", как XXX.
[Необязательный шаг] Windows может оставить на этом разделе немного свободного места, даже если ему указать не делать этого. Не пытайтесь использовать свободное место, так как оно будет уничтожаться при каждом запуске Linux. Если вы хотите избежать случайного использования этого места (с последующей потерей данных), создайте на нем поддельный файл, заполняющий эту пустоту, используя следующие команды:
mkdir /mnt mount -t msdos /dev/winswap /mnt dd if=/dev/zero of=/mnt/dummy.fil umount /mnt |
оманда dd выдаст сообщение "No space left on device" (На устройстве не осталось места). Это именно то, что нам нужно.
В приглашении командной строки наберите:
# dd if=/dev/winswap bs=512 count=XXX | gzip -9 > /etc/winswap.gz ^^^ |
... где XXX надо заменить на "Общее количество специальных секторов".
Таким образом, мы создали резервную копию всех специальных секторов в компрессированной форме в файле /etc/winswap.gz
Теперь мы исправим наши инициализационные скрипты, чтобы область подкачки создавалась при каждом запуске Linux, и специальные сектора DOS/Windows восстанавливались каждый раз при завершении работы Linux.
Вместо того, чтобы вставлять команды, отвечающие за эту часть процедуры, прямо в инициализационные скрипты, мы подготовим два отдельных файла, под названиями swapinit.sh и swaphalt.sh. Пример этих файлов, который будет работать в Red Hat Linux, дан в приложениях к этому документу. Вы можете поместить эти файлы в любой каталог, но наиболее предпочтительным будет /etc/rc.d/init.d. Создайте два файла в этом каталоге и скопируйте туда скрипты, приведенные в приложениях. Самый простой способ - скопировать этот документ в файлы командами
# cp Swap-Space-HOWTO /etc/rc.d/init.d/swapinit.sh # cp Swap-Space-HOWTO /etc/rc.d/init.d/swaphalt.sh |
и затем, используя свои любимый редактор, удалить из них все, кроме необходимых скриптов. Не забудьте проставить им флаг "исполняемых" командами
# chmod +x swapinit.sh # chmod +x swaphalt.sh |
Запустите fdisk и найдите в нем размер раздела подкачки. В обоих файлах (swap????.sh) замените YYYYY на это число.
Проверьте имя скрипта завершения работы системы. В SysVinit этот файл указан в /etc/inittab; добавьте ссылку на него, если там ее нет.
# Уровень запуска 0 означает завершение работы системы l0:0:wait:/etc/brc |
(В Red Hat Linux, это, скорее всего, будет файл /etc/rc.d/init.d/halt) Если вы не в состоянии выяснить это, поищите в каталоге /etc файл, содержащий команду "swapon -a" command. Достаточно об этом!
Далее в тексте я буду предполагать, что это все-таки файл /etc/rc.d/init.d/halt (для краткости halt).
Проверьте название файла инициализации системы. В SysVinit этот файл также указан в /etc/inittab.
# Инициализация системы si::sysinit:/etc/rc.d/rc.sysinit |
Имя файла может отличаться, если у вас не Red Hat. Я предполагаю, что это файл /etc/rc.d/rc.sysinit (для краткости rc.sysinit)
Добавьте следующие строки в файл инициализации системы (rc.sysinit), вместо команды "swapon -a". Я бы советовал вам не удалять эту команду, а просто закомментировать ее, чтобы восстановить скрипт в исходное состояние, если что-то пойдет не так.
Если ваша команда swapon находится в каталоге /etc, замените команду /sbin/swapon на /etc/swapon. Если она в /bin, замените на /bin/swapon. Проделайте то же самое с mkswap.
# ----------------------------------------------------------------------- # строки удалены ФИО # Запускаем подкачку. # action "Активизируем разделы подкачки" swapon -a # ----------------------------------------------------------------------- # ---------------------------------------------------------------------- # строки добавлены ФИО # Проверяем и инициализируем область подкачки # /etc/rc.d/init.d/swapinit.sh # ---------------------------------------------------------------------- |
Самый простой путь вставить текст в файл - это использовать две виртуальных консоли. Зарегистрируйтесь на обеих как root . Используйте свой любимый редактор, чтобы открыть это HOWTO на одной консоли, и модифицируемый скрипт на второй. Выделите кусок скрипта, приведенный выше, мышью и переключитесь на вторую консоль. Установите курсор в желаемую позицию и нажмите правую кнопку мыши. Выделенный ранее текст будет вставлен в скрипт.
Добавьте следующие строки в ваш скрипт завершения системы (halt). Поместите эти строки после всех команд, которые могут потребовать подкачку. Обычно, в этом файле будет команда "swapoff -a". Сначала замените -a на /dev/winswap. Затем, сразу после этой строки вставьте следующие команды.
Предостережение |
Замечание для RedHat Linux 6.1: По-видимому, скрипт завершения работы в Red Hat Linux 6.1 автоматически находит все разделы подкачки и отключает их. Поэтому пользователям RedHat Linux 6.1 не требуется заменять команду swapoff $SWAPS на swapoff -a. В этом случае, просто добавьте команду /etc/rc.d/init.d/swaphalt.sh к файлу halt |
# ------------------------------------------------------------------------ # Изменено ФИО # заменено "swapoff -a" на "swapoff /dev/winswap" # # Отключаем подкачку, затем отключаем фалйовые системы. runcmd "Отключаем подкачку и учет ресурсов" swapoff /dev/winswap [ -x /sbin/accton ] && /sbin/accton # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Добавлено ФИО # проверяем сигнатуру области подкаки и восстанавливаем информацию о файле подкачки Windows /etc/rc.d/init.d/swaphalt.sh # ------------------------------------------------------------------------ |
Уберите комментарий со строки с разделом подкачки в файле /etc/fstab (который вы добавили ранее). (Это конечно необязательно, так как мы больше не используем fstab для разделов подкачки). Перезагрузите Linux. У вас должна быть включена подкачка на новом устройстве подкачки.