Эталонные образы системы можно создавать в виде файлов filename.img.bz2 или filename.cpio.bz2. Это лучше делать на размонтированых файловых системах, а потому необходимо взять эталонный диск и поставить его в достаточно мощный компьютер с работающей системой и достаточным количеством свободного дискового пространства.
Возможны два варианта получение эталонного образа.
Если все компьютеры имеют одинаковые жёсткие диски, можно использовать утилиту dd для создания точной копии эталона. Чтобы после клонирования удостовериться, что полученный диск в является точной копией, можно предварительно записать в файл геометрию эталонного командой sfdisk -l. Результат работы этой программы для диска, например, размером 10 Гб может быть следующим:
Disk /dev/hdd: 1247 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hdd1 0+ 446 447- 3590496 83 Linux /dev/hdd2 447 498 52 417690 82 Linux swap /dev/hdd3 499 1246 748 6008310 5 Extended /dev/hdd4 0 - 0 0 0 Empty /dev/hdd5 499+ 1246 748- 6008278+ 83 Linux
Далее делаем сжатый образ:
$ dd if=/dev/hdd | bzip2 -9 -c > Junior_hdd.img.bz2 20044080+0 records in 20044080+0 records out
Выкладываем образ на свой FTP-сервер:
$ cp Junior_hdd.img.bz2 /var/ftp/pub/
Загрузив компьютер, на который нужно установить систему, с подготовленной дискеты и получив образ второго этапа установки с FTP-сервера, можно дать команду:
$ getftp <IP_FTP_SERVER> /pub/Junior_hdd.img.bz2 | \ bzip2 -d -c | dd of=/dev/hda
и получить точную копию эталонной машины.
Если на компьютерах установлены разные диски, работать на уровне жёсткого диска (/dev/hda) нельзя и придётся перейти на уровень разделов (/dev/hda1, /dev/hda2 и т.д.). В этом может помочь утилита cpio, которая архивирует все типы файлов (в том числе устройства и сокеты) со всеми свойствами и правами. При использовании cpio необязательно обнулять диск, поскольку она работает уже поверх файловой системы.
Сделаем архив эталонного корневого раздела, предполагая, что он находится в /dev/hdd1, и выкладываем его на FTP-сервер:
$ mount /dev/hdd1 /mnt/disk $ cd /mnt/disk $ find ./ | cpio -o | bzip2 -9 -c > /tmp/hda1.cpio.bz2 $ cp /tmp/hda1.cpio.bz2 /var/ftp/pub/
Точно так же обрабатываются и остальные разделы, содержащие информацию. Раздел подкачки проще создать вручную прямо на месте в “спасательном” режиме.
Загрузив компьютер, на который нужно установить систему, с подготовленной дискеты и получив образ второго этапа установки, нужно вручную создать соответствующие разделы. Каждый из них должен иметь размер не меньше, чем необходимо для размещения информации, хранящейся в образах. Их необходимо отформатировать и смонтировать, например, в /mnt/disk.
Чтобы воссоздать раздел /, примонтированый в /mnt/disk, нужно сделать следующее:
$ cd /mnt/disk $ getftp <IP_FTP_SERVER> /pub/hda1.cpio.bz2 | \ bzip2 -d -c| cpio -i -make-directories
Далее нужно повторить аналогичные операции для остальных разделов. По окончании копирования не забудьте про установку LILO или GRUB в новую систему.
Если на диске FTP-сервера мало свободного места, то будет разумно скопировать образы на CD-RW и монтировать их в структуру каталогов FTP-сервера. С учётом того, что работы по массовому клонированию систем происходят обычно не каждый день, такое экономное использование дискового пространства можно во многих случаях считать оптимальным.