Серверная (www.it-simple.ru)

Быстрое развёртывание рабочих станций на Linux


Предыстория.

Пришла партия машин - около 20 штук, плюс-минус две. В новый офис. Машины одинаковые, предназначены для установки Ubuntu Linux.

Проблема в том, что машины надо подготовить к работе в очень сжатые сроки, потому что вот-вот в офис переедет большая кодла менеждеров, снабженцев, бухгалтеров и проч.
Я сторонник концепции «Лучше день потерять, а потом за пять минут долететь». Поэтому вместо того, чтобы паниковать и лихорадочно и тупо ставить системы на все машины подряд - сели и стали думать.

Конечно, предварительно был поднят локальный репозиторий (http://www.it-simple.ru/?p=240), поэтому установка убунты со всеми обновлениями не сильно зависела от скорости подключения к интернету и занимала от силы 10-15 минут. Опять же, заранее были подготовлены скрипты для установки необходимого софта, изначально в убунте отсутствующего.

И всё-таки. Полчаса времени на один компьютер - многовато.

Чтобы хоть как-то сэкономить время - надо было идти на клонирование систем. Благо и сама Ubuntu, и её лицензия легко позволяют это сделать.
В процессе раздумий была подготовлена эталонная машина.

Эталонная машина

Разметка диска:

РазделРазмерФайловая системаТочка монтирования
/dev/sda18 GBext3/
/dev/sda22 GBlinux swap-
/dev/sda3Остальное (~70 GB)ext3/home

На эталонную машину установлен весь необходимый софт, машина подключена к домену, настроено подключение к сети по DHCP, пользователь - только админ. Никакой информации о будущем пользователе, никакой персонализации.

Первое, что приходит в голову - записать весь винчестер эталонной машины (с системой и разметкой) в образ и распаковывать этот образ на каждой из 20 машин. С учётом того, что на каждом из компьютеров стояли 80-гиговые харды, распаковка образа занимала минимум 30 минут.
Выигрыша во времени - никакого.

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

Решение первое, индивидуальное

Подготавливается переносной USB-винчестер: во-первых, он делается загрузочным, во-вторых, на него заливается установочный образ Ubuntu (то есть создаётся что-то вроде установочной флешки, только в масштабах переносного винта) и, в-третьих, при загрузке с этого винчестера он сам монтируется в /media/usbdrive

На эталонной машине

Грузимся с нашего винта.
Создаём образ с загрузчиком и разметкой всего диска:

dd if=/dev/sda of=/media/usbdrive/sda-512.img bs=512 count=1

Обращаю внимание: здесь и дальше sda - это винчестер рабочих станций!
Создаём образ первого раздела, который с системой. Со сжатием gzip.

dd if=/dev/sda1 | gzip > /media/usbdrive/sda1.img

Операции создания этих образов - однократные. Занимают около 10 минут в сумме.

На пустой машине

Грузимся с нашего винта.
Восстанавливаем разметку на пустом диске с сохранённого образа:

dd if=/media/usbdrive/sda-512.img of=/dev/sda

Теперь sda1, sda2 и sda3 должны существовать.
Восстанавливаем первый раздел диска с сохранённого образа:

gzip -cd /media/usbdrive/sda1.img | dd of=/dev/sda1

Форматируем /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 минут.