вторник, 29 декабря 2015 г.

Решение проблемы с загрузкой Swap в Ubuntu 14.04 & Linux Mint 17




В последнее время заметил, что после установки системы Linux Mint 17 основанной на Ubuntu 14.04 отсутствует раздел Swap. Хотя при установке определил для него раздел. Обычно когда много оперативной памяти этот раздел не совсем обязателен.

Но бывает что при отсутствии Swap не всегда работает "Ждущий режим" (заметил из личного опыта). Перейдя в GParted раздел Swap определен как "Неизвестный" (Unknown). Подумав что возникла какая-то ошибка при установке, я решил попробовать через GParted отформатировать его и прописать новые UUID в fstab как я это делал ранее. Но ситуация не поменялась, раздел свопа не подключался, хотя уже определялся как своп раздел в GParted.

Погуглив, я понял что при установке ОС если шифровать домашнюю папку, своп раздел как бы тоже шифруется случайным ключом (извиняюсь за неточную формулировку). Итого не достаточно только смены UUID, еще нужно прописать его в файле /etc/crypttab.

Вроде казалось что проблема решена, но после повторной перезагрузки своп снова не подключался. Чего то тут не хватало. Продолжив гуглить англоязычные форумы обнаружил что проблема у многих, в итоге ее вынесли в багтрекер.

Решил проблему использовав решение указанное в том же багтрекере (перевел его на русский с некоторыми изменении в описании):

1.  Отключаем автоматическое подключение cryptswap1

a. редактируем файл fstab добавляя параметр noauto

$ sudo pluma /etc/fstab

заменить это:

/dev/mapper/cryptswap1 none swap sw 0 0

на это:

/dev/mapper/cryptswap1 none swap noauto,sw 0 0

b. редактируем crypttab добавляя параметр noauto

$ sudo pluma /etc/crypttab 

это:

cryptswap1 UUID=01234567-89ab-cdef-0123-456789abcdef /dev/urandom swap,cipher=aes-cbc-essiv:sha256


меняем на:

cryptswap1 UUID=01234567-89ab-cdef-0123-456789abcdef /dev/urandom noauto,offset=6,swap,cipher=aes-cbc-essiv:sha256

ВНИМАНИЕ! Смените UUID на свои.

2. Восстанавливаем раздел подкачки

Внимание: перед запуском в терминале замените букву диска X /dev/sdaX на ту которая у вас определена системой для своп раздела. Ну и про UUID не забудьте. $ sudo mkswap --label Ubuntu\ Swap --uuid 01234567-89ab-cdef-0123-456789abcdef /dev/sdaX

3. Создайте скрипт который будет запускаться при загрузке системы 

в файл cryptswap1.conf 

$ sudo pluma /etc/init/cryptswap1.conf

вставляем это:

start on started mountall
script
 /sbin/

cryptdisks_start cryptswap1
 /sbin/swapon /dev/mapper/
cryptswap1
end script


и сохраняем.

4. Перезагружаемся и проверям систему

$ free --human
             total used free shared buffers cached
Mem: 15.7G ...
-/+ buffers/cache: ...
Swap: 16.0G ...
$ swapon --summary
Filename Type Size Used Priority
/dev/mapper/cryptswap1 ...

У меня сработало.