Я знаю, как создавать одноразовые RAM-диски, но не знаю, как сделать следующее:
Я понимаю, что для этого потребуется много оперативной памяти, но есть физические ограничения, как это можно настроить?
Вы можете полностью разместить свою среду в ОЗУ, но:
Вот! Окружение полностью в ОЗУ!
/ home
в ОЗУ: / home
в RAM-диск mount bind
RAM-диск к / home
Так что все, что технологически возможно , но непрактично , так как:
rsync
данных, которые вы хотите сохранить. Примечание 1: Я использую в качестве примера USB-накопитель, он также может быть разделом / диском на вашем ПК, но USB-накопитель упростит задачу, так как вы также можете скопировать USB-накопитель на другой USB-накопитель. придерживаться резервной копии этой среды.
Я работаю над двумя решениями для моей команды, которой нужно использовать GIMP в Ubuntu. В вашем случае GIMP будет заменен набором инструментов разработчика.
(Примечание: в вашем случае, если вы хотите сохранить содержимое RAM-диска, вам придется использовать предложения Fabby и Zeiss, и вам больше не нужно монтировать / tmp
и / var / tmp
описывается ниже как RAM-диск)
Проблемы, которые я решаю:
/ var / tmp
и / tmp
в дополнение к домашнему каталогу. Никаких следов не должно оставаться ни в одном из этих файлов без явного отключения липкого бита в этих каталогах (иначе некоторые программы могут сломаться) sudo
. Решение 1. В соответствии с предложением Fabby в разделе «Возможность 2 (низкая сложность)»
Создайте две учетные записи: первая - это учетная запись по умолчанию, созданная во время установки дистрибутива (в Ubuntu обычно это учетная запись имеет права sudo
). Скажем, учетная запись по умолчанию admin
, а домашний каталог - / home / admin
, а вторая учетная запись, скажем, developer
, а домашний каталог установлен как / ramdisk
. При создании второй учетной записи убедитесь, что она не создает домашний каталог. Учетная запись разработчика
не должна иметь прав sudo
. пароль учетной записи root
должен быть заблокирован, чтобы не было соблазна использовать su
при работе под учетной записью разработчика
. Если вы крайне параноик, вы хотели бы использовать chroot
для разработчика
и не сохранять программы с set-uid в chrooted каталоге.
Протестируйте все (например, установите .gitconfig
, gitignore
, .bashrc
и несколько других файлов конфигурации), пока все не будет работать нормально. Убедитесь, что TMPDIR = / ramdisk / tmp
установлен в .bashrc
, поэтому даже временные каталоги могут быть созданы на большом RAM-диске теми программами, которые поддерживают TMPDIR
.
После тестирования отключите функцию автоматического обновления в соответствии с инструкциями, применимыми к вашему дистрибутиву.Это необходимо, потому что я также рекомендую монтировать / tmp
и / var / tmp
на RAM-диск минимально возможного размера (см. 5 ниже), и ваши программы автоматического обновления могут в конечном итоге испортят вашу систему.
Скопируйте / home / admin
в отдельный каталог, скажем, в / var / inventory / devtools-home
. Удалите все, что явно не требуется как часть исходного образа из / var / inventory / devtools-home
, чтобы сохранить его как можно меньше. Создайте ZIP-файл / var / inventory / devtools-home
- образ домашнего каталога.
Добавьте запись в / etc / fstab
для RAM-диска ( tmpfs
) необходимого размера, смонтированного на / ramdisk
, и смонтируйте параметры как uid = developer, gid = developer, mode = 700, default, noatime, nodev, nosuid, noexec
.
Обновите / etc / fstab
, чтобы смонтировать / tmp
и / var / tmp
как tmpfs
, если ваш дистрибутив не использует ОЗУ диск для этих каталогов. (Я стараюсь, чтобы он был как можно меньше).
Добавьте задание cron с помощью @reboot
, чтобы распаковать образ домашнего каталога разработчика в / ramdisk
и chown -R developer.developer / ramdisk
. Вы можете использовать службы загрузки или эквивалент rc.local
, поддерживаемый вашим дистрибутивом.
Перезагрузитесь и все протестируйте. Для нормальной работы авторизуйтесь как разработчик
. Перезагрузите компьютер, и все следы будут потеряны, и вы снова получите новую копию домашнего каталога с его конфигурацией по умолчанию.
Если вам нужно выполнить обновления или добавить новые инструменты, войдите в систему как admin
, отключите / tmp
и / var / tmp
, выполните обновления, а затем перезагружаем сервер. Если вы хотите изменить настройки по умолчанию в домашнем каталоге, выполните шаги (2) и (3) выше и создайте новый образ домашнего каталога.
Решение 2. Центральный загрузочный сервер PXE (Высокая сложность по сравнению с решением выше)
(в настоящее время я работаю над этим решением, поэтому все шаги могут быть неточными)
Решение 1 хорошо для одноразовой машины. Если вы хотите создать целую среду для нескольких рабочих столов в локальной сети, описанное выше может оказаться слишком громоздким для управления. Однако вы не хотите терять возможности использования высокоскоростного процессора и большого объема оперативной памяти современных настольных компьютеров. В таком случае рекомендуется использовать центральный сервер загрузки PXE вместо центрального сервера терминалов. Не вдаваясь в подробности, вам понадобится следующее:
/ etc
как отдельный раздел / каталог для каждого устройства из-за возможности другой конфигурации дисплея.