Операционная система Linux позволяет пользователю сделать все что ему нужно, и если вы хотите Linux на флешке, то и это тоже можно. Нам даже не придется прибегать к каким-либо специальным инструментам.
Рассматривать весь процесс будем на примере Ubuntu и все будет сделано с помощью официального установщика. Нас не будет интересовать обычная запись образа на диск или работа из оперативной памяти. В конце мы получим именно полноценную операционную систему на флешке.
Сначала все делаете как обычно, выберите язык, настройки программного обеспечения и обновлений. Отличия начинаются на этапе разметки дисков. Тут вам нужно выбрать ручной вариант, потому что автоматическая разметка не позволяет сделать то, что нам нужно.
Здесь будет одно замечание, нужно, чтобы система не была загружена с той флешки, на которую вы собираетесь ее устанавливать, в противном случае установить ubuntu на флешку вы не сможете. То есть кроме установщика, к системе должна быть подключена еще одна чистая флешка. Если все было сделано правильно, то кроме основного диска /dev/sda, в окне разметки появится флешка /dev/sdb:
Для флешки будет указан ее размер, метка диска, а, также скорее всего на ней будет только один раздел. Этот раздел нужно удалить чтобы получить свободное место.
Дальше, из этого свободного места нужно создать два раздела. Первый - для данных и домашней папки, второй для системных файлов.
Первый раздел нужно создавать с файловой системой FAT32 и именно первым, чтобы с ним могла работать Windows. Например, если у вас флешка размером 16 Гб, то 5-4 Гб можно отдать под данные. Точка монтирования для этого раздела - /home:
Второй раздел применяется для системных файлов, здесь нам нужно не менее восьми гагабайт. Файловую систему лучше взять Btrfs, поскольку нам не нужна журналируемая ext4, а у btrfs есть сжатие и оптимизация для ssd. В качестве точки монтирования укажите /:
Последнее действие на этом шаге мастера - укажите устройство для загрузчика, это должна быть та же флешка, на которую вы устанавливаете систему.
Дальше установка linux на usb пройдет как обычно и больше ничего делать не придется, но после завершения останется оптимизировать систему.
Оптимизация Ubuntu для работы на флешке
Установка Ubuntu на флешку завершена, но теперь нам осталось заставить работать ее так, чтобы по минимуму записывать данные на диск. Все это нужно делать в уже установленной системе.
Большинство настроек будут проводится в файле /etc/fstab, сначала включим сжатие всех файлов и оптимизацию для ssd в btrfs, которая использована в качестве корня. Для корня у нас использовался раздел /dev/sdb2, поскольку /dev/sdb1 мы использовали для /home:
$ vi /etc/fstab
/dev/sdb1 / btrfs errors=remount-ro,noatime,nodiratime,compress=lzo,ssd,commit=60 0 1
Возможно, у вас диски в fstab будут именоваться по UUID, тогда вам придется найти запись, в которой указана точка монтирования / и файловая система btfs, а потому уже ее изменять. Рассмотрим опции:
- errors=remount-ro - перемонтировать только для чтения во время ошибок;
- noatime - не обновлять время доступа к файлам;
- nodiratime - не обновлять время доступа к папкам;
- compress=lzo - использовать сжатие lzo, это самый быстрый алгоритм zlib дает больший степень сжатия но работает дольше;
- commit=60 - по умолчанию файловая система записывает всю информацию об изменениях файлов каждые 30 секунд на диск, но с помощью этого параметра можно указать свое значение, но не более 300;
- ssd - набор оптимизаций для твердотельных накопителей.
Некоторые папки, в которые чаще всего записываются временные файлы системы можно переместить в оперативную память, для этого в конец файла /etc/fstab добавьте строки:
tmpfs /tmp tmpfs rw,size=100m 0 0
tmpfs /run tmpfs rw 0 0
tmpfs /var/lock tmpfs rw 0 0
tmpfs /var/log tmpfs rw,size=10m 0 0
tmpfs /run tmpfs rw 0 0
tmpfs /var/lock tmpfs rw 0 0
tmpfs /var/log tmpfs rw,size=10m 0 0
Ядро не пишет сразу данные на диск, а кэширует их в памяти, а записывает когда диск не будет загружен или их больше нельзя будет хранить в памяти. Для настройки параметров сброса данных на диск используются файлы /proc/sys/vm/. Приведенные ниже настройки уменьшают количество записей, за счет увеличения потребления оперативной памяти.
Максимальное время между записями данных на диск:
$ sudo sysctl -w vm.laptop_mode=120
$ sudo sysctl -w vm.dirty_writeback_centisecs=12000
$ sudo sysctl -w vm.dirty_expire_centisecs=12000
$ sudo sysctl -w vm.dirty_writeback_centisecs=12000
$ sudo sysctl -w vm.dirty_expire_centisecs=12000
Максимальное количество памяти для кэша в процентах:
$ sudo sysctl -w vm.dirty_ratio=10
Записывать данные на диск когда свободно только % памяти:
$ sudo sysctl -w vm.dirty_background_ratio=1
После этих настроек установка ubuntu на флешку завершена, система более-менее готова для использования на флешке и не будет ей так сильно вредить. Но все равно не забывайте время от времени делать резервные копии важных данных, потому что все может сломаться в самый неподходящий момент.