Як завжди в таких випадках ані містики, ані фантастики, ні тим більше прогресивних наукових технологій я описувати не буду, просто в мене є (я ще не визначився шкідлива вона чи корисна) звичка давати статтям такі-от назви.
Завдання просте: є типова задача, є комп'ютер перфектно налаштований саме під неї. Тепер треба те ж програмне забезпечення з тими ж налаштуваннями встановити ще на N+1 комп'ютерів.
Класичний варіант: на кожному комп'ютері інсталюєте систему, потім потрібні програми, потім все налаштовуєте і перевіряєте. Якби я був не настільки лінивим можливо я б так і робив, але зайве працелюбство у списку моїх недоліків не значиться.
Тому, як казав класик «ми пойдьом другім путьом» і замість довго виконувати рутинні операції з налаштування і перевірки будемо швидко виконувати рутинні операції з виготовлення клонів готової налаштованої системи. Якби мова йшла про Windows, то далі би йшов опис різних програм з допомогою яких можна робити образи одних дисків і потім розгортати їх на інші. Але я стараюся триматися подалі від продуктів життєдіяльності дядька Біллі і тому всі подальші дії будуть відбуватися на Linux'i.
Отже по кроках. Спочатку підготовча частина — виконується один раз:
— видираємо з налаштованої машини жорсткий диск
— підключаємо його до іншого комп'ютера
— монтуємо в який-небудь каталог
— витираємо все зайве (наприклад чистимо каталог /tmp , різні кеші, тощо)
— пакуємо це все в якомога менший архів
tar -cf — * | xz -9c — >~/PerfectImage.tar.xz
— записуємо параметри файлової системи
blkid /dev/xxx>> ~/PerfectFSParams.txt
— від'єднуємо диск і повертаємо його на місце
Подальші дії проводимо з кожним новим комп'ютером (той факт, що він новий і на ньому є гарантійні наклейки важливий — без цього ми могли б просто підключити до нього диск з налаштованого ящика і переписувати все набагато швидше):
— завантажуємося з установочного диска будь-якого дистрибутива в режимі відновлення
— командою fdisk створюємо аналогічні розділи на новому харді
— створюємо файлові системи з аналогічними параметрами
mkfs.яка_треба -U ідентифікатор -L мітка /dev/xxx
— монтуємо нову файлову систему
— копіюємо по мережі або, якщо є флешка достатнього розміру, то флешкою файл PerfectImage.tar.xz і, при потребі (в мене така потреба була), сам архіватор xz, а краще відразу його утиліту xzcat
— розпаковуємо все на свої місця
./xzcat PerfectImage.tar.xz | tar -xf -
(я знаю, що новим версіям tar'a можна xz передати як параметр і обійтися без конвейєра, але по-перше я не пам'ятаю як, а по-друге в оболонку відновлення дуже часто включають досить примітивну версію tar'a, яку тільки так і можна змусити працювати)
— переходимо в «нову» систему
chroot /mnt/newsystem
su -
— відновлюємо завантажувач. На класичних x86 системах найпопулярніших варіантів два — GRUB i LILO. LILO відновлюється командою lilo (/sbin/lilo, якщо є проблеми зі шляхами), GRUB переважно після установки залишає скрипт відновлення /boot/grub/install.sh, або, якщо чомусь його немає, то можна полазити кілька хвилин по Internet'y i написати його самостійно.
— виходимо, вимикаємо мережу (якщо вмикали), перезавантажуємося
— міняємо мережні параметри (ім'я комп'ютера, IP-адресу, тощо) і вмикаємо мережу
— при потребі підлаштовуємо X-сервер під нове обладнання
— працюємо!!!
В моєму випадку розділ був один, якщо ж їх декілька, то відповідні пункти слід виконати для кожного з них. Загалом процес досить легко піддається автоматизації. Єдине що справді доводиться робити вручну: створити розділи на новому диску (диски різні і задати розміри в скрипті одні для всіх не вдається), скопіювати по мережі або через флешку заготовлені файли і відновити завантажувач. Решта — створення файлових систем з правильними ідентифікаторами і мітками, їх монтування та розгортання архівів — все це легко пишеться в примітивному скрипті. По-ідеї відновлення завантажувача також можна б було туди якось приплести, але це вже не така тривіальна задача і придумувати щось заради однієї команди, просто тому, що її треба виконати не в середовищі відновлення, а в новій системі — не знаю як Вам, а мені було влом.
Ще один момент, що вимагає пояснення — навіщо я ношуся з ідентифікаторами і мітками файлових систем як з писаною торбою. Все це через те, що у мене вони прописані в initrd.img — образі завантажувального RAM-диска і в мене варіанти: або переробляти initrd.img для кожного клонованого ящика, або задати параметри старого ящика при створенні клона. Ясно що я собі зайвий геморой створювати не буду...
P.S. Не використовуйте схожі прийоми в особистому житті — розмножайтеся звичними способами ;-)
Працює на AutoGenCMS 0.2.6