Предыстория.
Пришла партия машин - около 20 штук, плюс-минус две. В новый офис. Машины одинаковые, предназначены для установки Ubuntu Linux.
Проблема в том, что машины надо подготовить к работе в очень сжатые сроки, потому что вот-вот в офис переедет большая кодла менеждеров, снабженцев, бухгалтеров и проч.
Я сторонник концепции «Лучше день потерять, а потом за пять минут долететь». Поэтому вместо того, чтобы паниковать и лихорадочно и тупо ставить системы на все машины подряд - сели и стали думать.
Конечно, предварительно был поднят локальный репозиторий (http://www.it-simple.ru/?p=240), поэтому установка убунты со всеми обновлениями не сильно зависела от скорости подключения к интернету и занимала от силы 10-15 минут. Опять же, заранее были подготовлены скрипты для установки необходимого софта, изначально в убунте отсутствующего.
И всё-таки. Полчаса времени на один компьютер - многовато.
Чтобы хоть как-то сэкономить время - надо было идти на клонирование систем. Благо и сама Ubuntu, и её лицензия легко позволяют это сделать.
В процессе раздумий была подготовлена эталонная машина.
Разметка диска:
Раздел | Размер | Файловая система | Точка монтирования |
---|---|---|---|
/dev/sda1 | 8 GB | ext3 | / |
/dev/sda2 | 2 GB | linux swap | - |
/dev/sda3 | Остальное (~70 GB) | ext3 | /home |
На эталонную машину установлен весь необходимый софт, машина подключена к домену, настроено подключение к сети по DHCP, пользователь - только админ. Никакой информации о будущем пользователе, никакой персонализации.
Первое, что приходит в голову - записать весь винчестер эталонной машины (с системой и разметкой) в образ и распаковывать этот образ на каждой из 20 машин. С учётом того, что на каждом из компьютеров стояли 80-гиговые харды, распаковка образа занимала минимум 30 минут.
Выигрыша во времени - никакого.
В итоге созрело два решения. Первое - индивидуальное для каждой машины. Его мы оставили на будущее, для грядущих мелких партий компьютеров или вообще для одиночных поступлений. Второе - сетевое, которое успешно и применили.
Подготавливается переносной USB-винчестер: во-первых, он делается загрузочным, во-вторых, на него заливается установочный образ Ubuntu (то есть создаётся что-то вроде установочной флешки, только в масштабах переносного винта) и, в-третьих, при загрузке с этого винчестера он сам монтируется в /media/usbdrive
Грузимся с нашего винта.
Создаём образ с загрузчиком и разметкой всего диска:
Обращаю внимание: здесь и дальше sda - это винчестер рабочих станций!
Создаём образ первого раздела, который с системой. Со сжатием gzip.
Операции создания этих образов - однократные. Занимают около 10 минут в сумме.
Грузимся с нашего винта.
Восстанавливаем разметку на пустом диске с сохранённого образа:
Теперь sda1, sda2 и sda3 должны существовать.
Восстанавливаем первый раздел диска с сохранённого образа:
Форматируем /dev/sda2 как swap, /dev/sda3 как ext3.
После этого перезагружаемся в свежую систему и монтируем /dev/sda3 в /home по UUID (http://www.it-simple.ru/?p=3439).
На подготовку каждой рабочей станции уходит около 10 минут.
Одно слово: UDPcast (http://udpcast.linux.lu/index.html).
UDPcast - это утилита для передачи файлов, которая может отправлять данные нескольким компьютерам в локальной сети одновременно. Это может использоваться, например, для того, чтобы установить целый ряд компьютерных рабочих мест за один раз. Преимущество UDPcast по сравнению с другими методами (nfs, ftp, неважно) состоит в том, что UDPcast использует возможности Ethernet UDP: установка 15 машин не займёт больше времени, чем установка только двух.
UDPcast может быть запущен с прилагаемого загрузочного образа busybox для установок ОС, или с командной строки - для других целей. Udpcast может быть загружен с компакт-диска, дискеты, или через сеть, используя PXE или Etherboot. Файл конфигурации (udpcfg.txt) может быть включен в эти загрузочные носители, чтобы пропустить меню настроек программы.
Создаётся загрузочный носитель, для определённости пусть это будет флешка.
Подготовить и скачать образ можно по этому адресу: http://udpcast.linux.lu/bootmedia.html (http://udpcast.linux.lu/bootmedia.html)
Все рабочие станции, включая эталонную, надо подключить к сети. Неплохо, если в сети работает DHCP, но можно и без него.
С флешки загружается эталонный компьютер. При загрузке настраивается сетевая карта, выбирается рабочее устройство (sda) и машина ставится в режим «передатчика», он же sender. Флешку можно вынимать сразу после загрузки.
С этой же флешки загружаются все пустые компьютеры. С одной разницей: они ставятся в режим «приёмника», он же receiver.
На экране эталонной машины можно видеть, как устанавливается соединение с каждой загруженной рабочей станцией-приёмником.
После того, как эталонная машина и все «пустышки» будут загружены, надо инициировать передачу данных, нажав пробел на эталоне. Эталон, он же передатчик, считывает данные со своего винчестера и отправляет их UDP-пакетом в сеть. Каждый из приёмников получает пакет, записывает его на свой винчестер и рапортует об этом передатчику.
Машины-приёмники иногда отваливаются при заливке. Теряется связь, совсем.
В этом случае передатчик пытается связаться с приёмником, тратит на это несколько минут и только потом продолжает рассылку, вычеркнув инвалида из списка.
Простота использования, возможность создания «файла ответов», поддержка сжатия данных и многое-многое другое.
Установка 20 новых компьютеров заняла около 40 минут.