Нет никакой необходимости добавлять /dev/winswap в файл /etc/fstab. Скорее всего, это вообще нельзя делать (если только как комментарий).
Если ваш Linux однажды аварийно прекратит работу без выполнения /etc/rc.d/init.d/halt, то вам придется перезагрузиться, загрузить Linux и выйти из него корректно - только в этом случае подкачка в Windows будет работать нормально. Есть другой способ - дать команду FORMAT X: и создать файл подкачки Windows снова. Еще один путь был вроде очевиден - в файл AUTOEXEC.BAT DOS поместить некую программу-эквивалент /.../halt из Linux. Я пытался не раз написать подобную программу, но это ни к чему, кроме проблем, не привело! Первое и главное, что происходило - восстановление всех специальных секторов не удовлетворяет DOS. Скорее всего, необходимо также исправлять какие-то внутренние структуры DOS, чтобы он нормально понимал наличие диска, иначе DOS выдает примерно следующую ошибку:
Invalid media type reading drive X: Abort, Retry or Fail ? |
Еще одним способом восстановления раздела подкачки Windows является следующий: загрузите Linux, отключите подкачку (как было описано выше) и затем дайте следующие команды:
# swapoff -a # zcat /etc/winswap.gz > /dev/winswap # reboot |
Зачем необходимо удалять каталог RECYCLED? В соответствии с тем, что было описано выше, вы должны удалить каталог RECYCLED. Это необходимо потому, что мы будем сохранять и восстанавливать только сектора с начала раздела по корневой каталог включительно, но не более того. Другой нашей задачей является то, чтобы диск X: восстанавливался в "нормальном" состоянии и без ошибок. Если мы бы не удалили каталог RECYCLED, то сам он конечно бы восстановился, но его содержимое, а точнее точки "." и ".." не восстановились бы, и ScanDisk выдавал бы ошибку. Чтобы этого не случилось, мы удаляем каталог RECYCLED и, таким образом, восстанавливаться будет только строка, отвечающая за файл win386.swp.
Если FDISK из DOS сообщает, что наш раздел является "логическим диском DOS", то его номер 5 (т.е. /dev/hda5) или больше. В этом случае он *НЕ* является разделом, называемым "расширенным", с номером 4 или меньше!! Если ваш fdisk в Linux не показывает логические разделы, то у вас нерабочая версия fdisk (В Slackware 2.2, например, был такой fdisk.) Вы можете использовать "cfdisk", если он у вас есть, или вам придется найти работающий fdisk.
При отключенной подкачке Linux вынужден все обрабатывать в основной памяти самостоятельно. Если в вашей системе немного памяти, скажем 16 Мб, то некоторые большие приложения, запускаемые в процессе загрузки системы, могут функционировать не совсем корректно. Например, вы можете получить следующее сообщение в процессе загрузки:
Finding module dependencies Out of memory |
Я не думаю, что это может вызвать какие-то проблемы до возврата к нормальному режиму подкачки. Но предосторожности никогда не помешают. Как вы узнаете из того, что написано ниже, Linux может использовать файл подкачки, вместо раздела. Поэтому, если вам кажется, что Linux не будет работать нормально, используя только основную память, создайте временный файл подкачки, который можно использовать до тех пор, пока не восстановите подкачку на разделе. Этот файл подкачки лучше всего разместить в корневом каталоге. Подсчитайте минимальный размер файла подкачки, который вам будет необходим. Скорее всего он будет равен размеру вашей основной памяти. Создайте файл подкачки следующими командами (предполагаем, что он размером 16 Мб):
# dd if=/dev/zero of=/swap bs=1024 count=16384 # mkswap /swap 16384 # sync |
После этого поместите команду swapon /swap сразу после swapon -a в файле rc.sysinit. Таким образом ваша система будет настроена на использование файла подкачки, что, наверно, исключит ошибки типа "Не хватает памяти". После того, как вы получите работающий раздел подкачки (т.е. после исполнения всех инструкций этого HOWTO), вы можете убрать строку swapon /swap, которую добавили в файл rc.sysinit.
Пожалуйста, не пишите мне, пока не проверите дважды правильность копирования скриптов из этого документа. Больше половины проблем с применением этого Мини-HOWTO возникали из-за опечаток при переписывании скриптов. (Используйте копирование и вставку, если это возможно!). Даже неправильное использование пробелов может вызвать ошибку . Например, если при загрузке вы получаете ошибку типа
Verifying swap space...Linux signature found swapon: /dev/winswap invalid argument |
то, скорее всего, вы опечатались в скрипте. Еще раз перепроверьте все ваши скрипты.
Иногда скрипт не может определить принадлежность раздела ни к Linux, ни к Windows, и появляется ошибка "Сигнатура не найдена". Я пока еще точно не знаю, почему это происходит, но на этот случай я шесть раз запускаю в скриптах swap????.sh, код определения сигнатуры, перед тем, как выдавать ошибку. Обычно DOS-сигнатура находится с первого раза, но иногда на моей системе она обнаруживается со 2-го, 5-го раза или не обнаруживается даже после 12 попыток.. Вы можете просто увеличить количество попыток до 12 или 24, ничего страшного в этом нет. Однажды на моей системе скрипт не мог определить сигнатуру даже после 50 попыток! Если такая ситуация возникнет, то вы можете создать в вашем домашнем каталоге символьную ссылку на файл swapinit.sh и запускать его при запуске системы.
# ln -s /etc/rc.d/init.d/swapinit.sh swapinit.sh # ./swapinit.sh |
Однако. я еще подметил, что если несколько раз запускать этот скрипт, то сигнатуры начинают определяться без проблем с первого раза.
Для увеличения надежности
В вашем Linux запускается нечто очень важное, или у вашей системы очень мало основной памяти, и приложения просто перестают работать? Вы настроили совместное с Windows использование раздела подкачки. Но, иногда, ваша система не может определить соответствующие сигнатуры и запрещает подкачку вообще. На свой собственный страх и риск вы можете удалить логику проверки сигнатур, но есть более приемлемое решение.
Сначала прочтите советы, приведенные выше, и создайте файл подкачки в корневом каталоге вашего Linux, назвав его /swap. Его размер установите таким, какой вам необходимо. Затем откройте файл swapinit.sh и измените последний оператор if следующим образом:
if [ $activated -ne 1 ] ; then echo "Сигнатура подкачки не найдена после $loopcount попыток (Swap signature not found after $loopcount tries)" echo "Активизирую файл подкачки (Activating swap file)" swapon /swap exit 1 fi |
Таким образом, если на разделе подкачки отсутствуют необходимые сигнатуры, то мы разрешаем использование файла подкачки. Так как файл подкачки находится в корневом каталоге, а ядро Linux не запускается без подключения корневой файловой системы, то получается, что файл подкачки всегда будет нормально активизироваться. Вместо создания и хранения файла подкачки, использующего впустую дисковое пространство, вы можете изменит код скрипта, включив в него повторное создание файла подкачки на ходу.
Более эффективное использование дискового пространства Как мы уже показали, Linux и Windows могут совместно использовать раздел подкачки. Но что делать, если Windows не нужен такой большой файл подкачки, полностью занимающий раздел подкачки Linux? В этом случае, вы можете на разделе подкачки иметь свободное место (уменьшите размер файла подкачки Windows до необходимых размеров). Подкачка Windows-программ обрабатывается Windows самостоятельно. Но некоторые DOS-программы, например, Turbo C++ Compiler, Norton DOS и т.п. также создают свои файлы подкачки. В этом случае возможно их настроить таким образом, чтобы они свои личные файлы подкачки создавали на нашем разделе, вместо обычного местоположения. Это увеличит свободное место на основных дисках. Более того, некоторые из этих программ "забывают" удалить свои файлы подкачки, что приводит к неэффективному использованию дискового пространства. Но, используя нашу настройку, вы, каждый раз после завершения работы в Linux, получаете чистый раздел подкачки, тем самым исключая необходимость поиска и удаления старых файлов подкачки DOS-программ. Например, вы можете указать Turbo C++ использовать для подкачки, скажем, диск E:, запустив его командой
C:\CLAN>TC /RE |
Swapping = E:\ |
Что делать, если раздел подкачки отформатирован как FAT32 ? К сожалению, нельзя отформатировать этот раздел в формате FAT32. Во-первых, Linux не может иметь раздел подкачки больше 128MB. Это означает, что если он больше 128MB, то часть этого раздела просто не используется. А Windows откажется конвертировать в FAT32 раздел размером 128MB.
Новый формат области подкачки Linux известны два формата областей подкачки - так называемые "новый" и "старый". По умолчанию вы будете использовать "старый" формат области подкачки с сигнатурой "SWAP-SPACE". Если вы хотите использовать "новый" формат этой области, то замените фразу "SWAP-SPACE" во всех приведенных здесь скиптах на "SWAPSPACE2". Также добавьте опцию -v1 к команде mkswap в скрипте swapinit.sh:
/sbin/mkswap -v1 /dev/winswap YYYYY |
И, в дополнение к этому, запустите следующие команды:
# swapoff /dev/winswap # mkswap -v1 /dev/winswap YYYYY # swapon /dev/winswap |
При использовании "нового" формата размер области подкачки может достигать 2 Гб на i386-платформах. Это означает, что вы можете использовать этот раздел больше чем 512 Мб, которые Windows может преобразовать в FAT32. Кто-нибудь, помогите мне с записью "Набора Специальных Секторов" с раздела FAT32.