Наверное многие Linux-администраторы сталкивались с задачей установки Linux на большое количество компьютеров одновременно. Обычно для этого используются дистрибутивы, поддерживающие установку в silent-mode (режиме без вопросов). Например RedHat с его kickstart. Однако в ряде случаев можно поступить заметно проще.
Всё здесь написанное автор достаточно давно использует в повседневной жизни, однако идея написания этой заметки появилась только после обсуждения этой темы на openkazan.info.
Итак. Мы имеем задачу: установить Linux на все компьютеры в некоторой фирме. Необходимое программное обеспечение на всех машинах примерно одно и тоже, но задача усложняется тем, что компьютеры, в силу ряда причин, имеют различную конфигурацию.
Само собой что есть некий дистрибутив Linux, который будет прекрасно работать на всех имеющихся конфигурациях. Если к тому же в нём присутствует хорошая система автоматического определения оборудования при загрузке (а сейчас она есть практически во всех дистрибутивах), то значит половина задачи решена, поскольку мы можем установить на всех машины этот дистрибутив.
Однако проще было бы установить только на одну, а на остальные машины сделать копии. Если жёсткие диски на всех машинах одинаковы, то команда dd поможет решить эту задачу довольно быстро. Но что делать если жёсткие диски имеют разные размеры? Тут нам тоже понадобится команда dd, а так же mkfs.*, fdisk, и немного смекалки:)
Выбор дистрибутива оставим за читателем. Автор обычно использует kubuntu. Не зависимо от дистрибутива предлагается примерно следующая разметка диска (конкретные размеры разделов зависят от ситуации):
Раздел | Размер | ФС | Точка монтирования |
---|---|---|---|
sda1 | 5GB | ext3 | / |
sda2 | 1GB | swap | |
sda3 | Всё остальное пространство | ext3 | /mnt/data |
Далее устанавливаем наш дистрибутив на sda1. Всё как обычно. Настраиваем его под пользователя. Устанавливаем необходимые приложения, создаём необходимые ярлыки, создаём нужные настройки. Затем перезагружаем машину и убеждаемся что после перезагрузки система выглядит именно так как нам надо. После чего выключаем компьютер.
Далее нам понадобится любой LiveCD. Автор предпочитает использовать LFS LiveCD, однако всё тоже самое делалось и с BLIN и с Kubuntu. Да и с большинством других дистрибутивов тоже будет работать.
Подключаем к компьютеру второй жёсткий диск и загружаемся с LiveCD. Допустим что оригинальная система видна как sda а клонирование будет производиться на sdb. Начинаем копировать систему. Первым делом копируем систему разделов:
dd if=/dev/sda of=/dev/sdb count=512
Извещаем систему об изменении таблицы разделов:
fdisk /dev/sdb
Нажимаем «w» и через некоторе время fdisk сам завершит свою работу, обновив таблицу разделов.
Копируем корневой раздел системы:
dd if=/dev/sda1 of=/dev/sdb1 bs=1M
Размечаем раздел подкачки:
mkswap /dev/sdb2
Если диск-копия отличается размером от оригинала - пересоздаём третий раздел. Для этого запускаем:
fdisk /dev/sdb
Нажимаем «d», затем «3», далее «n», «p», «3», и наконец «w». Далее, независимо от того пересоздавали мы раздел или нет - нужно создать на нём файловую систему:
mkfs.ext3 /dev/sdb3
На этом клонирование машины завершено. Компьютер нужно выключить и можно приступать к созданию новой копии.
Если при создании копии нужно изменить некоторы настройки (например настройки сети) то прежде че выключать компьютер - нужно подмонтировать корневой раздел новой системы и внести необходимые изменения в конфигурационные файлы.
На этом всё. Автор надеется что эта заметка окажется полезной.
Shlomo 2008-02-03 13:59:00 (#)
Кстати, я делаю не через dd, а простым tar-ом. Главный плюс - можно восстановить отдельный файл/каталог, вместо всей системы. Второй плюс - можно сразу скидывать образ по nfs, без физического подключения носителя.