| Universal Linux Installer |
|
Время от времени почти у любого человека, профессионально или полупрофессионально связанного с компьютерами, появляется насущная необходимость точного копирования операционки вместе с установленными пакетами либо на другой идентичный или схожий компьютер, либо на тот же самый в качестве восстановления резервной копии. А еще лучше, чтобы диск для восстановления имел также функции полнофункционального livecd, так? В этой статье я расскажу о том, как сделать такой диск для компьютера под управлением OS Linux (в данном случае — rpm-based, хотя это не очень принципиально), не ограниченный по возможностям ничем, кроме возможностей самого Linux.
Реализация Итак, Fedora 8 livecd KDE. Сейчас, конечно, есть уже 10-я версия, но суть дела это никак не меняет. Рассмотрим из чего состоит этот диск и как это можно использовать.
Это самый важный файл, поэтому его мы и заменим. Хотя, конечно, можно этого и не делать. Но если сделать, то можно установить в Live-систему только те пакеты, которые нужны и тем самым сделать образ минимальным по размеру и при этом содержащим максимум полезных функций. Нетрудно заметить, что название этого файла совпадает с названием файловой системы squashfs. Поэтому для работы с ним (и с ней, соответственно) нужна поддержка со стороны операционки. Для этого нужна поддержка со стороны ядра (которая для современных ядер уже давно вроде как присутствует по умолчанию) и пакетик squashfs-tools от Fedora. Это обязательно, тк формат squashfs может меняться от дистрибутива к дистрибутиву, в частности, образ может быть сжат различными способами. Когда необходимые элементы в наличии, можно примонтировать образ. Например, так:
Далее, внутри /tmp/img теперь должен находиться образ диска live-системы в формате ext3 – ext3fs.img. Конечно, дальше с ним работать куда легче. Монтируя его аналогичным образом, но без ro, можно без труда определить, что это просто корневая файловая система от федоры. Что это значит? Это значит, что мы, абсолютно просто установив федору на один раздел без swap и скопировав раздел с помощью dd, получим файл образа, которым можно использовать в squashfs.img. Это позволит создать именно ту live-систему, которую мы захотим. Теперь я расскажу, что именно и зачем сделал с этим образом я, чтобы достигнуть поставленных задач. Прежде всего, установка системы для live-образа была проведена из варианта минимальной установки путем расширения нужными пакетами (например, KDE и ruby). Обязательно стоит найти в интеренете и добавить в руби библиотеку session.rb – она нужна для исполнения shll-скриптов без проблем. Далее, для KDE был исправлен профиль пользователя таким образом, чтобы ничего, кроме пустого рабочего стола, видно не было. Но, меню и горячие клавиши вызова командной строки никуда не делись, что и позволяет проводить работу в режиме live-системы при указанном выше требовании к скрытности такой возможности. Итак, что мы получаем в итоге: система полнофункциональна, но эта функциональность скрыта, причем скрыта так, что добраться до нее очень легко, например, нажав Alt+F2. Также стоит добавить автовход под рутом да и пароль тоже удалить можно. Время перейти к обеспечению функционирования в режиме восстановления (установки или называйте как хотите). Да, для дальнейшего следует также положить в /root rpm'ник с ядром той системы, которую нужно будет восстанавливать или устанавливать — это важно только если установка будет проводиться на машину с отличной от предыдущей конфигурацией sata-контроллера. Простота — залог успеха, а так же малых затрат времени на реализацию этой простоты. Поэтому диалоговые окошки программы для восстановления сделаны на ruby с применением библиотек ruby-gtk2. Собственно, это и есть gtk2-диалог с измененными параметрами конкретных страниц. Чтобы он запускался при старте положим его в /root/.kde/Autostart. Про сам скрипт стоит добавить несколько предложений. Когда он писался, показалось удобным вынести саму функциональность восстановления в отдельный шелл-скрипт. Посему возникла необходимость синхронизации действий руби и шелл, например, при отображении процесса копирования и соответствующей ему полосы-индикатора. Эта необходимость преодолена с помощью использования /dev/shm – системы виртуальных файлов, где само наличие файла и будет признаком завершения того или иного процесса. Сам скрипт для руби — вещь сложная и работающая со скрипом. Так что буду описывать отдельные фишки, существенные для работы этого скрипта. Во-первых, во избежание всяких проблем с указанием путей выполняется специальный shell-скрипт, который создает ссылки для всего, что требуется. В нем ничего сложного нет, просто один раз стоит посмотреть что и куда монтируется в live-os. Во-вторых, как уже было сказано, функциональную нагрузку несет на себе shell-скрипт, параметры которому, а именно — вид конкретного действия (которое можно и поменять), — передается в руби-скрипте в зависимости от нажатых галочек. Больше в скрипте диалога ничего функционального нет, поэтому перейдем к рассмотрению скрипта установки, про который написано чуть выше. Как проще всего создать образ файловой системы. Очевидно, с помощью dd. Но такой метод сопряжен с необходимостью дополнительного сжатия и вообще требует больше места, чем если бы файлы этой файловой системы были заархивированы tar и пожаты gzip в процессе архивирования. Поэтому я так и сделал. Собственно скрипт представлен ниже.
#!/bin/bash if [ $UID = 0 ] then rm -rf /home/sda1.tar.gz /home/sda3.tar.gz ; echo "Making archives" cd / tar -zcvf /home/sda1.tar.gz usr bin boot dev etc lib media misc mnt opt root sbin selinux srv tmp var ; cd /home tar -zcvf /home/sda3.tar.gz *; echo "Ready" else echo "You are not root. Exit" exit fi
Вот собственно и все. Это достаточно просто, и вдобавок остается огромный простор для модификации и прочего творчества. Среди представленных для скачивания файлов: Universal Linux Installer.iso – образ live-cd без архивов с системой и с установщиком на USB FLASH (narod yandex downloader) maketar.sh – скрипт создания этих самых архивов находится внутри образа. Для редактирования iso-образа под Linux рекомендую пользоваться пакетом isomaster. |
