Быстрое и простое клонирование Linux на большое количество компьютеров

()

Наверное многие Linux-администраторы сталкивались с задачей установки Linux на большое количество компьютеров одновременно. Обычно для этого используются дистрибутивы, поддерживающие установку в silent-mode (режиме без вопросов). Например RedHat с его kickstart. Однако в ряде случаев можно поступить заметно проще.

Всё здесь написанное автор достаточно давно использует в повседневной жизни, однако идея написания этой заметки появилась только после обсуждения этой темы на openkazan.info.

Итак. Мы имеем задачу: установить Linux на все компьютеры в некоторой фирме. Необходимое программное обеспечение на всех машинах примерно одно и тоже, но задача усложняется тем, что компьютеры, в силу ряда причин, имеют различную конфигурацию.

Само собой что есть некий дистрибутив Linux, который будет прекрасно работать на всех имеющихся конфигурациях. Если к тому же в нём присутствует хорошая система автоматического определения оборудования при загрузке (а сейчас она есть практически во всех дистрибутивах), то значит половина задачи решена, поскольку мы можем установить на всех машины этот дистрибутив.

Однако проще было бы установить только на одну, а на остальные машины сделать копии. Если жёсткие диски на всех машинах одинаковы, то команда dd поможет решить эту задачу довольно быстро. Но что делать если жёсткие диски имеют разные размеры? Тут нам тоже понадобится команда dd, а так же mkfs.*, fdisk, и немного смекалки:)

Выбор дистрибутива оставим за читателем. Автор обычно использует kubuntu. Не зависимо от дистрибутива предлагается примерно следующая разметка диска (конкретные размеры разделов зависят от ситуации):

РазделРазмерФСТочка монтирования
sda15GBext3/
sda21GBswap 
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

На этом клонирование машины завершено. Компьютер нужно выключить и можно приступать к созданию новой копии.

Если при создании копии нужно изменить некоторы настройки (например настройки сети) то прежде че выключать компьютер - нужно подмонтировать корневой раздел новой системы и внести необходимые изменения в конфигурационные файлы.

На этом всё. Автор надеется что эта заметка окажется полезной.

Ключевые слова: dd, fdisk, mkfs, mkswap, клонирование.

Комментарии:

Shlomo 2008-02-03 13:59:00 (#)

А ещё, желательно, не плодить конфигурации, а брать однотипные компы одного и того же бренда. Много проще обслуживать и воостанавливать систему после аппаратной проблемы.

Кстати, я делаю не через dd, а простым tar-ом. Главный плюс - можно восстановить отдельный файл/каталог, вместо всей системы. Второй плюс - можно сразу скидывать образ по nfs, без физического подключения носителя.

MooSE 2008-02-03 14:16:06 (#)

1. С tar свои заморочки. Ведь загрузчик так не перенесётся:)

2. С dd тоже можно поступить весело. Только не совсем dd. Я бы сказал netcat ;)

Shlomo 2008-02-03 15:45:12 (#)

ну да, загрузчик ставлю отдельно, chroot-нувшись в новоустановленную систему. Вобщем, gentoo-way ;-)

MooSE 2008-02-03 16:53:49 (#)

Долго:) Надо быстро и качественно:)

Shlomo 2008-02-03 17:49:18 (#)

10-15 минут на комп, в зависимости от размера образа. С гигабиткой ещё быстрее.
К тому же даже CDrom не нужен - первичная загрузка для установки образа идет по сети, / смонтирован по nfs.

MooSE 2008-02-03 19:38:27 (#)

У нас восемь минут на копию. Работаем по два человека:)

Genix 2008-02-04 17:01:23 (#)

не так давно делал систему которая стартует с диска и развертывает cpio на систему с sata или hdd винтом (брался первый в системе и бился пропорционально).
после чего устанавливался загрузчик и система готова.
делалось для установки в массовом режиме на серийный компьютеры

MooSE 2008-02-05 12:28:21 (#)

Здесь примерно тоже самое. Просто в силу специфики задач - такой способ предпочтительнее...

sungreen 2008-02-05 22:08:36 (#)

... имхо, под boot, home можно сделать отдельные разделы ...
... конечно это вкусовщина и анахронизм, но (имхо) более практично при пучковании и обновлении ...

Shlomo 2008-02-05 22:50:27 (#)

под home - обязательно. Дистрибутивов/операционок много, а home один.
А вот для /boot не обязательно, но желательно.

Shlomo 2008-02-11 13:27:39 (#)

Может кому пригодится, инструкцию написал для моих знакомы, желающих себе домой поставить мой уже настроенный линукс.

Инструкция по установке gentoo из tar образа.

0) Для установки необходимо:
а) gentoo minimal CD >= 2007.0 (50Mb) или linux reecovery CD.
б) Место на жестком диске для установки >= 12Gb
в) образ для установки (gentoo-workstation32.tar.bz2)

1) Загрузиться с minimal CD. В самом начале, при выборе ядра, написать "gentoo docache". Далее, при выборе раскладки, просто нажать enter.

2) Разбить диск
а) выяснить имя диска:
для IDE ls /dev/hd*
для SATA ls /dev/sd*
б) Создать нужные разделы. Внимание!! Ошибочные действия могут повредить данные на диске!
Можно воспользоваться приложениями: cfdisk, fdisk, parted.
Команды для fdisk: m - справка, d - удалить раздел, n - создать новый раздел, t - изменить тип раздела (82 - swap, 83 - linux), p - вывести текущую таблицу разделов на экран.
Пример: fdisk /dev/sda (sda - мой диск для примера)
p - смотрим текущую таблицу
d [спрсит номер раздла для удаления] 2 - удалили раздел 2
n [спрсит тип раздела] p (основной) [спросит номер] 2 (номер нового раздела) [спросит первый цилиндр] enter (по умолчанию) [спросит последний цилиндр] +512M (хотим диск под swap размером 512Мб) - создали раздел размером 512Мб
t [спросит тип] 82 (swap) - указали тип нового раздела linux swap
n -> p -> 3 -> enter -> enter - аналогично создали системный раздел на всем оставшемся месте. Тип по умолчанию 83 (linux).
p - перепроверим таблицу
w - если всё устраивает, запишем новую таблицу на диск. Если нет - то q.

3) Создать ФС. Внимание! Неправильное указание имени раздела, может повредить данные!
а) mkswap /dev/sda2 - создаём swap на разделе sda2
б) mkfs.ext3 -j -O dir_index /dev/sda3 - форматируем системный раздел

4) Примонтировать системный раздел
mount /dev/sda3 /mnt/gentoo

5) Примонтировать носитель с образом.
Допустим, у вас образ на DVD-диске, тогда:
а) eject - вынуть minimal CD
б) вставить диск с образом
в) mkdir /mnt/obraz создать точку монтирования
г) mount /dev/hda /mnt/obraz - смонтировать ide Cdrom

6) Проверить целостность образа
cd /mnt/obraz; md5sum -c gentoo-workstation32.tar.bz2.DIGEST

7) Распаковать образ:
cd /mnt/gentoo; tar xjpf /mnt/obraz/gentoo-workstation32.tar.bz2

8) Создадим необходимые каталоги
а) mkdir proc sys tmp
б) chmod 1777 tmp

9) Смонтируем некоторые важные каталоги из текущей системы в нашу новую:
а) mount -o bind /dev dev
б) mount -t proc proc proc

9) Переходим в свежеустановленную систему для настройки
а) cd - выйдем из /mnt/gentoo
б) chroot /mnt/gentoo /bin/bash
в) env-update
г) source /etc/profile
д) export LANG="en_US.UTF8"

10) Отредактируем таблицу монтирования - файл fstab
а) nano /etc/fstab
б) в строке "/dev/sda4 / ..." меняем /dev/sda4 на наш системный раздел
в) в строке "/dev/sda2 none swap ..." меняем /dev/sda2 на нащ swap раздел
г) выход - ctrl+x

11) Отредактировать конфиг загрузчика
а) nano /boot/grub/grub.conf
б) изменить названия разделов. Необходимо знать, что в терминологии grub нумерация начинается с 0, и нет разницы нежу sata и ide винчестерами. Так, радел sda3 в grub называется (hd0,2), где 0 - номер диска, а 2 - номер раздела. Изменить строки root (hd0,3) и rootnoverify (hd0,0) (для винды).
в) Изменить параметр ядра root=/dev/sda4 на соответсвующий вашему (/dev/sda3 в моём примере)
г) выход - ctrl+x

12) Установить загрузчик
а) grub - вход в консоль grub
б) root (hd0,2) - укажем, на каком разделе у нас установлен grub (наш рутовый раздел). Можно дополнять Tab-ом
в) setup (hd0) - куда установить загрузчик. Ставим загрузчик в mbr первого диска (рекомендуется)
г) quit - выход из консоли grub

13) Если нужно включить поддержку своих устройств, то можно сконфигурировать ядро
а) cd /usr/src/linux
б) make menuconfig - выбираем нужные нам устройства. выход по esc, сохраняем
г) make && make modules_install - компилируем новое ядро и ставим модули
д) cp /boot/bzImage /boot/bzImage.bkp - сохраняем предыдущее, рабочее ядро на всякий случай
е) cp arch/i386/boot/bzImage /boot/bzImage - устанавливаем новое ядро

14) Устанавливаем новый пароль root-а
passwd

15) Добавляем обычного пользователя
addmyuser <имя пользователя>

16) Завершаем установку
а) exit - выход из chroot окружения
б) umount /mnt/gentoo/proc
в) umount /mnt/gentoo/dev
г) umount /mnt/gentoo
д) umount /mnt/obraz
е) reboot

Чтобы после загрузки новой системы запустить X-ы, выполнить /etc/init.d/xdm start
Добавить в автозагрузку rc-update add xdm default

Shlomo 2008-02-11 18:40:34 (#)

ах да, addmyuser:
#!/bin/bash
if [[ $1 == '' ]]
then
echo "Usage: $0 < username >"
else
useradd -m -g users -G wheel,audio,cdrom,video,cdrw,usb,plugdev,games,vmware,ftpusers $1
passwd $1
fi
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE