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


Больше места или сделаем swap общим - часть 3


  • Создать swap на разделе, который для этого выделен;
  • Подключить только что созданный swap;
  • Работать;
  • При получении команды на перезагрузку или выключение питания сделать раздел, используемый под swap, обычным диском DOS;
  • Остановить работу компьютера или перезагрузить его.
  • 2. Задачи Windows:

    • Создать win386.swp на диске, созданном на этапе 1;
    • Работать;
    • При получении команды на перезагрузку или выключение питания завершить работу или повиснуть :).

    Теперь займемся реализацией.

    Прежде всего нужно отключить swap раздел Linux'а (я предполагаю, что именно это место на диске мы хотим сделать общим для свопа Windows и Linux). Для этого скажем 'cat /proc/swaps' и далее 'swapoff $device', где $device - имя раздела, который у Вас используется как swap раздел (это имя будет написано в выводе предыдущей команды в графе Filename).


    Далее все действия выполняем от пользователя root. Создадим раздел, который будет использоваться как swap. Процесс создания подробнее описывать не буду - здесь вроде все должно быть понятно. Берется досовский или линуховый fdisk и - вперед (те кому не нравится fdisk могут пользоваться другими утилитами, например, parted, Partition Magic и т.д.). Форматируем этот раздел в FAT16 (мне кажется, что для windows свопа FAT16 более предпочтительный вариант, чем FAT32 в плане скорости и меньшего размера самой таблицы размещения файлов). Для форматирования можно использовать как штатные досовские средства, так и mkdosfs из пакета dosfstools. Partition Magic, если мне не изменяет память, сразу же сам форматирует создаваемый раздел;

    Здесь и далее по тексту я предполагаю, что для свопа мы используем /dev/hda6. Вы, в свою очередь вместо него используете имя того раздела, который выделили под swap. Итак в командной строке Linux'а даем команду 'mount -t vfat /dev/hda6 /mnt/temp', чем монтируем /dev/hda6 в каталог /mnt/temp (естественно он должен существовать к этому моменту);

    Затем забьем нулями содержимое этого досовского диска (зачем - расскажу позднее). Для этого скажем в командной строчке 'dd if=/dev/zero of=/mnt/temp/zeros'. Команда завершится сообщением о том, что на устройстве назначения больше нет места и сколько записей произведено;

    На всякий случай отмонтируем /dev/hda6 командой 'umount /mnt/temp' (это может делать и не обязательно, но так мы будем уверены, что в кэше ничего не осталось и все нули дошли до адресата :). Теперь примонтируем его снова 'mount -t vfat /dev/hda6 /mnt/temp' и удалим файл zeros командой 'rm -f /mnt/temp/zeros'. Теперь опять отмонтируем /dev/hda6 ('umount /mnt/temp');
    Теперь у нас есть раздел с пустой fat16 и нулями в области данных.
    У меня нет информации о том, как рассчитать сколько занимает места на разделе таблица размещения для FAT16. На диске емкостью 250М мне хватало примерно пяти мегабайт (те кто заинтересован разобраться во всем до конца могут попробовать найти старую досовскую программу TechHelp - там наверняка будет информация о DOS FAT). Возможно и меньшее число могло бы быть использовано, но мне нравиться цифра 5 ;). Вы спросите зачем нам это нужно? Для того, чтобы после использования Linux'ом раздела /dev/hda6 для свопа, можно было бы легко восстановить на диске таблицу размещения файлов.

    Командой 'dd if=/dev/hda6 of=/etc/winswap bs=1k count=5000' мы создадим копию нашей таблицы в файле /etc/winswap. Команда последовательно скопирует пять тысяч блоков (count=5000) размером в один килобайт (Block Size = 1К) с исходного устройства или файла (Input File) в устройство или файл назначения (Output File). Получившийся файл занимает почти 5 мегабайт. Но мы же очень жадные люди на мегабайты, верно? Поэтому мы говорим 'gzip -9 /etc/winswap'. В результате пятимегабайтный winswap превращается в пятикилобайтный(!) winswap.gz (помните, мы забили диск нулями, а это значит, что файл очень хорошо сожмется. Ключ -9 задает максимальный уровень компрессии).

    Теперь настало время позаботиться собственно о пункте 1.г. Для этого открываем на редактирование файл /etc/init.d/halt и делаем поиск слова 'swap'. Вы увидите что-нибудь вроде: # Turn off swap, then unmount file systems. SWAPS=`awk '! /^Filename/ { print $1 }' /proc/swaps` [ -n "$SWAPS" ] && runcmd $"Turning off swap: " swapoff $SWAPS




    - Начало -  - Назад -  - Вперед -



    Книжный магазин