Начну с сути идеи — куча одинаковых компов, на них требуется установить ОС Windows XP с одинаковым набором программ. Первая мысль — настроить один эталонный компьютер, снять с него образ жесткого диска и развернуть на остальных компьютерах.
Acronis не подходил по «религиозным соображениям» компании.
Поискав DIY решение, наткнулся на замечательную вещь ntfsclone из пакета ntfsprogs.
Следует заметить, что в компьютерах отсутсвует привод оптических дисков, переностного в конторе нет, следовательно остается два варианта — бегать с отверткой и приводом поочередно к каждой машине или же воспользоваться флешкой. Вариант с флешкой мне нравился больше. Поэтому на нем остановился и принялся за изучение вопроса.
Что бы приступить к созданию спасительной флешки нам потребуется:
1) Компьютер с установленной ОС из семества Linux.
2) Флешка объем особой роли не играет, чем больше — тем лучше.
3) Установочный образ Debian/Ubuntu (Лично я выбрал Ubuntu Server 10.04)
Я выбрал вариант установки ОС на флешку при помощи копирования раздела VirtualBox'a (vdi).
1) Установка VirtualBox.
— Устанавливаем необходимые пакеты для VirtualBox:
apt-get install qemu-utils virtualbox-ose
— Запустим VirtualBox
— Создаем виртуальную машину оперативы берем 512мб или более, создаем новый файл жесткого диска и называем его произвольно, главное его размер — он должен быть чуть меньше размера заготовленной флешки (у меня флешка была на 7.6Gb я взял раздел как 7.5Gb)
— Как привод выбираем ISO образ дистрибутива той ОСи которую хотим поставить на флешку (в моем случае UbuntuServer 10.04)
— Запускаем виртуальную машину.
2) Установка ОС на виртуальную машину.
— Идем по пунктам как при стандартной установке, останавливаемся на разбивке жесткого диска — SWAP раздел делать крайне не советую, флешка может умереть быстро (мой вариант разбивки был элементарен — все свободное пространство в корень)
— Продолжаем установку дальше без вопросов.
— По завершении установки советую засунуть /tmp в tmpfs — причины две, небольшое ускорение работы а так же уменьшение износа флешки.
tmpfs /tmp tmpfs size=100M 0 0
— Перезапускаем машину, если все нормально идем дальше.
3) Подготавливаем операционную систему.
Хотел бы отметит еще один факт, установкой систем будет заниматся человек совершенно не знакомый с семейством Linux, в связи с этим задача несколько осложняется, надо сделать так что бы человеку не пришлось лазить по консольке и искать нужные команды, поэтому было решено сделать GUI на основе dialog.
— Даем себе рутовые привилегии
sudo -s
— Создаем нужные папки где будут храниться скрипты и сам образ системы.
mkdir /recovery
mkdir /recovery/img
mkdir /recovery/shell
— Далее необходимо что при запуски системы сразу загружался скрипт.
touch /recovery/shell/start.sh
chmod +x /recovery/shell/start.sh
nano /etc/init/tty1.conf
В файле tty1.conf лежат настройки запуска первой виртуальной консоли, коментим exec /sbin/getty -8 38400 tty1 и дописываем туда exec /recovery/shell/start.sh > /dev/tty1 все вывод работы скрипта будет отправлен в первую виртуальную консоль.
— далее для работы нам потребуется бинарник ntfsclone из пакета ntfsprogs.
apt-get install ntfsprogs
— Для красоты скриптов нужен пакет dialog.
apt-get install dialog
— Переходим к самому простому — скриптам, для создания образа и востановления системы.
nano /recovery/shell/start.sh
#!/bin/bash
dialog --title "Recovery"
--backtitle "RecoveryShell"
--yesno "Are you sure you want recovery OS?" 7 60
response=$?
case $response in
0) clear ; /recovery/shell/start_recovery.sh;;
1) clear ; /recovery/shell/exit.sh;;
255) clear ; /recovery/shell/create_img.sh;
esac
^X
Немного прокоментирую — тут мы создали простой yes/no диалог, однако есть и 3 вариант — двойное нажатие клавиши ESC, так мы попадаем на скрипт создания образа.
— Пишем скрипт востановление образа.
nano /recovery/shell/start_recovery.sh
#!/bin/bash
gunzip -c /recovery/img/backup.img.gz | ntfsclone -r -O /dev/sda1 -
^X
— Пишем скрипт создания образа.
nano /recovery/shell/create_img.sh
#!/bin/bash/
ntfsclone --save-image -o - /dev/hda1 | gzip -c > /recovery/img/backup.img.gz
^X
— Пишем скрипт выхода.
nano /recovery/shell/exit.sh
#!/bin/bash
reboot
^X
— В целом подготовка ОС закончена.
4) Перенос виртуального жесткого диска на флешку(выполнять на компьютере где установлен VirtualBox).
— Конвертируем VDI в RAW (используется на жестких дисках)
VBoxManage clonehd -f vdi -O raw input.vdi output.img
Где input.vdi файл жесткого диска виртуальной машины.
— Копирование RAW образа на флешку.
dd output.img /dev/sdc
Где /dev/sdc флешка.
А теперь запаситесь терпением т.к. копирует крааайне медленно ( у меня ушло порядка 3-4 часов).
5) Run it!
— Если все верно сделали то вставляем флешку и радуемся результату.
Автор: Paramedic