четверг, 10 октября 2013 г.

Клонируем пингвинов или как быстро сделать много одинаковых рабочих окружений с синхронизацией.


У меня задача была такой: есть несколько школьников(до 10 человек) со своими ноутбуками. На них винда разных версий и степени рабочести. Хотелось как-то задешево сделать им всем одинаковое рабочее окружение на их компьютерах, ничего им не сломав. И совсем хорошо потом иметь между этими окружениями какую-то синхронизацию. Решал я это так:
Вообще ничего сверъестественного я не делал, пост больше как подтверждение возможности реализации такой идеи.
А что делал-то:
1. Купил флешки kingston на 8GB.
2. Поставил на одну из них Xubuntu через VirtualBox(можно и обычным методом, но это нужно выключать компьютер и внимательно выбирать диск при разметке. Установка через VB таких проблем лишена)
3. Загрузился снова через VirtualBox, поставил обновления и нужный софт, настроил синхронизацию.
4. С помощью dd клонировал эту флешку на все остальные.
Собственно всё. Теперь немного подробнее.

Вот флешки:


Для теста взял 4 штуки, если проблем не выявится, докуплю еще.

Ставим линукс.

Качаем образ нужного линукса:
wget http://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/12.04.3/release/xubuntu-12.04.3-desktop-i386.iso
Создаём виртуальную машину
Подключаем флешку.
Немного отмечу процесс разбивки диска. Сейчас в компьютерах относительно много ОЗУ(от 1ГБ), и восьмигиговая флешка по сравнению с этим не такая большая. Поэтому я предпочитаю отдавать всё под / и не делать swap. Если так почему-то вообще нельзя делать никогда, расскажите мне почему.

Включаем и настраиваем.

Поставился, теперь попробуем в него загрузиться. По умолчанию VirtualBox так не умеет, но несложно его научить. Хотя официальный представить Oracle и уверяет, что это невозможно. Нужно добавить своего пользователя в группу disk
usermod -aG disk triklozoid
После этого перелогиниться и выполнить такую команду:
sudo VBoxManage internalcommands createrawvmdk -filename ~/temp/usbdisk.vmdk -rawdisk /dev/sdb
где
~/temp/usbdisk.vmdk это где создать файла диска
а
/dev/sdb устройство вашей флешки
В настойках виртуальной машины добавляем диск:
На этом этапе могут появиться какие-нибудь ошибки доступа, нужно проверять права на свежесозданный файл ~/temp/usbdisk.vmdk
Теперь включаем машину, она должна нормально загрузиться с флешки.
Делаем sudo apt-get update && sudo apt-get upgrade(yum, pacman, emerge или что там у вас).
Устанавливаем нужные приложения, настраиваем что нужно.

Про синхронизацию

Для синхронизации я использовал клиент Яндекс.Диска под линукс.
Качаем cтавим настраиваем по официальным докам.
Я использовал такую схему: Зарегистрировал один новый аккаунт на яндексе. Сделал папку у себя и дал доступ на чтение новому аккаунту. И авторизовался в линукс клиенте новым аккаунтом.
Можно конечно как-то усложнить схему и сделать на каждой флешке отдельный аккаунт, но мне лень. :-)

Клонирование.

После того, как настройка всего закончена, можно приступить к магии dd.
Хотя команда очень простая, совсем не магическая, если кто знает магические ключи, которые улучшают всё в миллион раз, делитесь.
КОМАНДУ ЗАПУСКАТЬ АККУРАТНО, С УСТРОЙСТВАМИ НЕ ОШИБАТЬСЯ
А то всё потрёте нафиг.
dd if=/dev/sdb of=/dev/sdc bs=16M
if - откуда
of - куда
bs - размер блока

Конец

Собственно на этом всё, всё работает, можно пробовать. Работает достаточно шустро(особенно питоновая консоль :-)), проблем с железом пока не было. Кроме синхронизации папки с файлами, хотелось бы конечно и набор пакетов тоже синхронизировать, например, через puppet, но на первое время хватит и такого.

Продолжение...