ИВАН МАКСИМОВ
На что способен дистрибутив SystemRescueCd Linux
Наверняка вам приходится сталкиваться с проблемами по восстановлению системы после сбоя и использовать для этого наборы дистрибутивов и Live-CD различного назначения. Есть ли единое и компактное решение «все в одном»?
Знакомство с дистрибутивом у меня произошло в «боевых условиях». Однажды, в один прекрасный выходной вечер, знакомый попросил посмотреть его компьютер, который перестал работать. Что ж, друзей нужно выручать, пришлось заняться работой в выходной, но вот беда, дома ничего кроме нескольких игрушек и дистрибутивов с FreeBSD и Linux не оказалось. Только случайно было записано несколько небольших Live-CD-дистрибутивов, одним из них оказался SystemRescueCd Linux. Придя к другу, была обнаружена «лежавшая» домашняя редакция ОС от одной известной корпорации, причем «лежавшая» прочно. На вопрос, какие диски с программами есть дома, мне был протянут серебристый диск, идущий в комплекте с его компьютером – той самой ОС, что уже не подавала признаков жизни. Что ж, компьютер нужен рабочим, причем срочно. Так как на предложение установить OpenSUSE был получен отказ и подходящих инструментов под рукой не оказалось, пришлось попытаться воспользоваться Live-CD SystemRescueCd Linux, который до этого я даже ни разу не загружал...
О дистрибутиве SystemRescueCd Linux
Live-CD-дистрибутив предназначен для восстановления системы после сбоя, копирования данных с поврежденных жестких дисков, тестирования аппаратной части ЭВМ, сброса забытых паролей в семействе ОС Windows NT, подготовки дисков для установки новой ОС и многого другого, но обо всем по порядку.
Дистрибутив основан на Gentoo Live-CD, версии ядра Linux 2.6.16.10. Последняя стабильная версия расположена на официальном сайте проекта.
Доступны архитектуры x86 (i586) и PPC (Pocket PC). В дистрибутиве присутствует поддержка файловых систем: ext2/3, reiserfs (включая 4), xfs, jfs, iso9660, vfat и NTFS (в режиме записи используется CaptiveNtfs). Поддерживаются сетевые службы: ssh, nfs, samba, lufs.
Первые версии данного дистрибутива свет увидел в 2003 г., на данный момент последний релиз от первого мая 2006 г. Обновления происходят не регулярно, в 2003-2004 гг. было выпущено 20 обновлений, тогда как в 2005 г. ни одного, в 2006 дистрибутив «ожил», выпущено 4 релиза. Форум проекта поддерживается на протяжении всего времени существования Live-CD. На сайте доступна документация на английском, французском и испанском языках, великого и могучего русского нет.
Закачав с официального сайта iso-образ размером 121 Мб, запишем его на диск. Сразу оговорюсь, хотя и возможна установка дистрибутива на USB-Flash, не считаю, что это рационально для дистрибутива «на все случаи жизни» – слишком большой парк машин у нас в стране не поддерживает загрузку с USB-устройств. Итак, приступим к обзору.
Загрузка
Сразу после появления меню (рис. 1) не спешите нажимать <Enter> для запуска Gentoo, кроме изменения параметров, таких как разрешения экрана, загрузки с жесткого диска или флоппи-дисковода, нам доступны небольшие, но очень полезные образы программ и утилит.
Рисунок 1. Основное загрузочное меню Sysrescuecd
Рассмотрим самые интересные параметры. Нажав <F2>, мы можем выбрать:
- Memtest86+ v1.65 – тест оперативной памяти на физические повреждения. После загрузки теста сразу начнется проверка ОЗУ с параметрами по умолчанию (полное тестирование), изменить параметры можно, зайдя в небольшое меню, нажав клавишу <C>.
- FreeDOS – ОС и небольшой набор утилит для работы с жестким диском. В №2 за 2006 г. я описывал FreeDOS [2], но напомню некоторые основы. Командой «dir /w» выведем на экран список доступных утилит (38 файлов и одна директория – небольшой выбор). Для просмотра файлов с документацией можно воспользоваться утилитами more или pg, работает «донабор» команд и названия файлов (как в bash из *nix). Из основных утилит стоит выделить: fdisk (работа с разделами), chkdsk (тест FAT-партиций на ошибки), testdisk (восстановление разделов FAT, NTFS, ext2/3, reiserfs, ufs и т. д.), presizer (изменение размера FAT-партиций). Как можно заметить, образ содержит утилиты, ориентированные в основном для работы с FAT-разделами, т.е. для ОС – клонами DOS и Windows 9х.
- GAG (Graphical-Boot-Manager) – загрузчик, аналог Lilo или Grub, работает практически со всеми распространенными ОС (DOS, Windows, Linux, BSD). Возможна одновременная загрузка до 9 операционных систем. Сразу после загрузки рекомендуется ознакомиться с документацией и часто задаваемыми вопросами (первый и второй пункты меню).
- Ranish Partition Manager – предназначен для работы с партициями, более функционален, чем стандартный fdsik. К сожалению, возможна работа в режиме создания только с файловыми системами FAT. Хотя Ranish Partition Manager и обнаруживает партиции с ufs (FreeBSD) и ext2/3 (Linux), из доступных опций имеется возможность только удалить их.
- Aida v2.12 – неплохой тест по определению «железа», но, к сожалению, успевший уже устареть (проблемы с определением новых чипов, например – nForce2). На 45 закладках будет подробно отображено аппаратное обеспечение ЭВМ. Если необходимо записать результат работы теста, выйдите из теста Aida (клавиша <Esc>) и запустите a.bat, который создаст файл report.asm.
- Dban (Darik’s Boot and Nuke) – замечательная утилита для разрушения данных на жестком диске. После загрузки будет представлено меню, в котором можно ознакомиться с документацией по работе с программой. Существует выбор методов очистки диска – менее или более эффективные (все зависит от времени и ваших целей). Если же необходимо максимально быстро уничтожить данные, а не разбираться в интерактивном меню с тонкостями dban, сразу после загрузки наберите команду «autonuke». Будьте очень внимательны, данные невозможно будет восстановить.
- Ntpass (Offline NT Password and Registry editor) – программа для сброса забытых паролей и редактирования реестра в ОС Windows семейства NT. Сразу после загрузки будет предложено выбрать раздел с Windows-системой или автоматическое подключение всех FAT- и NTFS-разделов. Сделано это для того, чтобы была возможность выбрать для работы конкретную ОС (будет отображен полный путь до папок с Windows-системами). Если на компьютере установлена всего одна Windows, смело следуйте указаниям мастера в автоматическом режиме. В конце его работы вам будет задан вопрос на подтверждение сброса пароля или начала работы с реестром в режиме записи.
Итак, еще даже не загрузив Gentoo, мы уже получили богатый набор утилит различного назначения. Даже пользователь, не искушенный в Linux, легко сможет воспользоваться данным Live-CD, так как большинство утилит содержат интуитивный понятный интерфейс (чаще всего из псевдографики). Перейдем к обзору основной системы.
Обзор Gentoo
Выбрав удобный видеорежим, запустите систему. Во время загрузки вас спросят, какую кодовую страницу следует использовать (русская за номером 31). Добравшись до строки приглашения, можно будет увидеть небольшие подсказки по работе с системой (рис. 2), работа ведется по умолчанию от пользователя root.
Рисунок 2. Строка приглашения c основными подсказками
После загрузки будет доступно 1388 команд (полноценный Linux, это вам не busybox). Никаких графических оболочек типа KDE или GNOME нет (кроме Midnight Commander), хотя, собственно, зачем они нужны на административном диске? В качестве командного интерпретатора (шелла) используется zsh версии 4.2.0, любители bash смогут найти последний по стандартному пути /bin/bash.
При беглом обзоре стандартных утилит хотелось бы выделить их разнообразие:
- Редакторы текста – vim, nano, zile, joe и графический qtinyeditor.
- Архиваторы – gzip, zip, rar, tar, arj, dar.
- Утилиты для записи CD и DVD – cdrecord, cdrtools, dvd-rw-tools.
- Веб-браузеры – links и lynx.
- Сканер Nmap (версии 3.55).
- Пакет утилит для работы с файлами ОС DOS – Mtools (mmount, mformat,..).
- Набор утилит – ntfstools (ntfsclone, ntfsresize,...).
- Антивирус ClamAV (версии 0.75.1, обновление баз от 26 февраля 2006 г.).
- Утилиты для работы с партициями – GNU Parted, Qtparted, Partimage.
Как видно из списка выше, для решения различных задач можно выбирать инструменты, которые удобнее, привычнее или функциональнее.
Так как дистрибутив ориентирован на задачи для работы с жесткими дисками, были приведены скриншоты утилит с графическим интерфейсом GNU Parted (рис. 3), Qtparted (рис. 4) и Partimage (рис. 5) для ознакомления с ними.
Рисунок 3. Интерфейс GNU Parted
Рисунок 4. Инферфейс Qtparted
Рисунок 5. Интерфейс Partimage
Первые две – программы для создания/удаления партиций (намного функциональнее fdisk), поддерживают файловые системы ext2/3, raiserfs, FAT, NTFS. Замечу лишь то, что GNU Parted не имеет возможности отката действий. Как видно, интерфейсы у них подобные Partition Magic и очень простые.
PartImage – утилита для создания клонов копий партиций (аналог ghost и arcronix), очень жаль, что у данной утилиты поддержка NTFS на экспериментальной стадии, и разработчики предупреждают нас о возможных проблемах при клонировании ntfs дисков, но данную функцию можно выполнить и утилитой ntfsclone.
Не буду останавливаться на описании всех стандартных утилит, думаю, большинство пользователей уже знакомы с mtools, сканером nmap и другими программами. Но рассматривая далее задачу по пересборке дистрибутива, мы все же коснемся нескольких примеров работы различных утилит.
Пересборка дистрибутива
Меня дистрибутив устраивал во многом, но все же нужно было добавить один скрипт для автоматизации клонирования рабочих станций. Многие из нас пересобирали дистрибутивы, основанные на Knoppix, и знают, что эта задача не совсем тривиальна и занимает много времени. Чаще всего в начале нужно создать образ дистрибутива, распаковать его, найти в нем корневую файловую систему (очень часто это небольшой gzip-архив) и заархивированный образ системы (Cloopfs). В SystemRescueCd Linux основной архив находится в корне диска, его объем около 100 Мб (sysrcd.dat запакован Cloop) для работы с ним нам поможет скрипт sysresccd-custom. Итак, рассмотрим подробно разборку и сборку дистрибутива.
Загрузим Gentoo и выделим место на жестком диске для распаковки cloop-образа системы, для этого примонтируем партицию командой:
mount /dev/hda1 /mnt/temp1
Создадим образ с файловой системой ext2:
dd if=/dev/zero of=/mnt/temp1/fs.iso bs=1M count=1200
mkfs.ext2 /mnt/temp1/fd.iso
Примонтируем созданную файловую систему в /mnt/custom, должен заметить, что образ нужно монтировать именно в эту директорию (она уже имеется на диске):
mount -o loop /mnt/temp1/fd.iso /mnt/custom
Теперь распакуем файл-архив sysrcd.dat:
sysrescue-custom extract
Процесс распаковки, как уже упоминалось, занимает долгое время, с этим, к сожалению, ничего поделать нельзя. После распаковки, зайдя в директорию /mnt/custom/, мы увидим нашу систему, которую можно уже изменять. В качестве примера добавим скрипт MyLanCloon в папку bin. Сам скрипт рассмотрим далее.
Теперь снова запакуем систему (в cloopfs) командой:
sysrescue-costom cloop 300 20000
Должен заметить, что процесс запаковки идет еще дольше, чем распаковка.
Разработчики приготовили для нас еще один сюрприз, после архивирования в cloop мы можем создать файл autorun в папке /mnt/custom/customcd/isoroot/, который выполнится при загрузке системы. Это может быть удобно для установки каких-либо небольших параметров, например установки сети:
#!/bin/bash
ifconfig eth0 192.168.1.200 netmask 255.255.255.0
route add default gw 192.168.1.1
mount -t nfs 192.168.1.10:/home/users /mnt/temp1/
В данном примере мы устанавливаем сетевую оснастку и по протоколу nfs подключаемся к нашему файловому серверу (к домашней папке нужного пользователя).
Удобна установка кодовой страницы в системе на стадии загрузки, если помните, ее необходимо вводить каждый раз (номер 31). Чтобы задать русскую кодовую страницу для нашего будущего дистрибутива, выполним команду:
sysresccd-custom setkmap ru
Теперь создадим главный iso-образ, который позже мы запишем на диск:
sysresccd-custom isogen mysyscd
mysyscd – метка тома будущего диска. Образ и его md5-хеш будут расположены в папке /mnt/custom/customcd/isofile/.
Все готово, можно записывать образ на CD и грузиться в систему. Все данные операции можно было выполнить и стандартными утилитами cloop-util и cdrtool, но это заняло бы больше времени плюс, как уже упоминалось, без соответствующих навыков неопытные пользователи столкнулись бы с проблемами. Если все же любопытно, что делает скрипт sysresccd-custom, его можно найти в папке /usr/sbin/.
Скрипт MyLanCloon
Я специально вынес скрипт в отдельный раздел, во-первых, из-за его большого размера, а во-вторых, из-за необходимости рассмотреть его подробнее.
Задача: написать скрипт для автоматизации процесса создания и копирования iso-образов клиентских машин на файловый сервер. Копирование будет производиться по протоколу SMB, идентификация образов рабочих станций будет по их MAC-адресу.
Задача тривиальна, и многие используют для её решения большие и зачастую дорогие программные комплексы (Acronix, Ghost…), но скрипт во многом заменяет подобные программы и обладает замечательным свойством – бесконечной расширяемостью. Так как SystemRescueCd Linux обладает богатым инструментарием для работы с партициями и файловыми системами, наши возможности будут ограничены только фантазией (в *nix-области).
#!/bin/bash
# Установка параметров сети
ifconfig eth0 192.168.1.200 netmask 255.255.255.0
route add default gw 192.168.1.1
# Монтирование сетевой папки
mount.smb //192.168.1.10:/Files/ /mnt/temp1/
# Определение MAC-адреса
MACADDRES="`strings /sys/class/net/eth0/address`"
echo "Mac addres is ${MACADDRES}"
# Определение файловых систем
# FAT
dd if=/dev/hda1 bs=512 count=1 | strings | grep FAT
if [ $? -eq 0 ]; then
FS="1"
fi
# NTFS
dd if=/dev/hda1 bs=512 count=1 | strings | grep NTFS
if [ $? -eq 0 ]; then
FS="2"
fi
# Процедура сохранения образа
do_save()
{
# Сохранение FAT-образа
if [ $FS -eq 1 ]; then
partimage -z1 -o -b -d save /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}
exit 1
fi
# Сохранение NTFS-образа
if [ $FS -eq 2 ]; then
ntfsclone --save-image /dev/hda1 -o /mnt/temp1/arhiv/${MACADDRES}
exit 1
fi
}
# Процедура загрузки образа
do_load()
{
# Загрузка FAT-образа
if [ $FS -eq 1 ]; then
partimage -b restore /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}.000
exit 1
fi
# Загрузка NTFS-образа
if [ $FS -eq 2 ]; then
ntfsclone --restore-image -O /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}
exit 1
fi
}
# Основная функция
case "$1" in
save)
do_save;;
load)
do_load;;
esac
Итак, рассмотрим скрипт подробнее.
Установка параметров сети – стандартными командами ifconfig и route задаем IP-адреса локальной машины и роутера.
Монтирование сетевой папки – монтирование происходит по протоколу smb, сделано это из соображений совместимости с Windows-сетевыми ресурсами, так как файловый сервер может быть и не под управлением ОС Linux. Желающие могут выбрать nfs-протокол, конечно же, если данный сервер установлен в сети. Если требуется обеспечить безопасность при копировании iso-образов, можно задействовать lufs (Linux users file system) и производить монтирование сетевой папки по ssh-протоколу. Также по lufs можно монтировать папки ftp-серверов. Выбирать есть из чего, все зависит от доступных средств, организации сети и ваших предпочтений.
Определение MAC-адреса – как я уже говорил, для идентификации образов рабочих станций мы будем использовать их MAC-адреса. В переменную MACADDRES заносится MAC рабочей станции, впоследствии задействуем его.
Определение файловых систем – так как мы точно не знаем, какая файловая система используется Windows, для начала определим ее. Зная, что в первых 512 байтах жесткого диска (цилиндр 0, головка 0, сектор 1) находится Master Boot Record, проверим, FAT ли это или NTFS. Должен заметить, я исходил из предположения, что на рабочих станциях установлена одна ОС и находится на hda1 (диске C), если установлено 2-3 или более ОС, следует редактировать скрипт либо для выбора конкретной ОС, либо для клонирования всего диска (если необходимо сохранить все операционные системы).
FAT и NTFS – проверяем, какая файловая система на устройстве hda1. Если FAT, то в переменную FS будет занесено значение 1, если NTFS – 2. В дальнейшем это значение нам понадобится для выбора утилит клонирования.
Процедура сохранения образа – как уже упоминалось выше, partimage работает стабильно только с FAT-файловыми системами (FAT12, FAT16 и FAT32) ОС Windows, но при этом обладает большими возможностями. Собственно из-за этого скрипт и разделен на две части: для работы с FAT или NTFS. Из интересных возможностей Partimage стоит выделить то, что он определяет занятое пространство на диске и копирует только его, а не диск целиком (как dd), при этом может очень эффективно архивировать iso-образ (в среднем компрессия составляла 50%).
Сохранение FAT-образа – утилитой partimage сохраняем FAT-образ. Рассмотрим подробно ключи:
partimage -z1 -o -b -d save /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}
где:
- z1 – уровень компрессии (z0 – быстрая запаковка, но «слабая» компрессия, z2 – максимальная компрессия, но длительное время запаковки);
- o – если файл с данным именем существует, перезаписать его;
- b – не запрашивать параметры у пользователя в интерактивном меню;
- d – не запрашивать у пользователя дополнительное описание для образа;
- save – указываем partimage, что необходимо копировать информацию с устройства в файл;
- /dev/hda1 – это наш жесткий диск. И последний параметр – имя файла образа, оно будет равно значению переменной MACADDRES.
Сохранение NTFS-образа – для создания образов дисков с файловой системой ntfs воспользуемся утилитой ntfsclone из состава ntfstools. О параметрах ntfsclone:
ntfsclone --save-image /dev/hda1 -o /mnt/temp1/arhiv/${MACADDRES}
где:
- save-image – сохранение образа;
- /dev/hda1 – наш жесткий диск;
- o – путь и имя файла образа (будьте внимательны, параметр «-о» в нижнем регистре).
Должен отметить, что ntfsclone, хоть и копирует только занятое пространство на диске, не умеет сжимать образ. В данном случае можно прямо в потоке произвести запаковку, используя gzip, но эта операция займет дополнительное время.
Процедура загрузки образа – распаковывает образ системы. Опять же задействуем для развертывания образов обе утилиты: partimage для FAT-разделов и ntfsclone для NTFS.
Загрузка FAT-образа:
partimage -b restore /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}.000
где:
- b – не запрашивать параметры у пользователя в интерактивном меню;
- restore – восстановление образа;
- /dev/hda1 – жесткий диск. Последний параметр – путь до образа, имя файла будет равно значению переменной MACADDRES, плюс расширение «.000».
Загрузка NTFS-образа:
ntfsclone --restore-image -O /dev/hda1 /mnt/temp1/arhiv/${MACADDRES}
где:
- restore-image – восстановление образа;
- O – путь до устройства для образа (будьте внимательны, параметр «-O» в верхнем регистре);
- /dev/hda1 – наш жесткий диск. И как всегда, последний параметр – путь до файла образа нашей системы.
Основная функция – основной оператор выбора case: если в консоли выполнить скрипт с параметром save – выполнится рассматриваемая выше процедура сохранения образа, если load – сработает процедура загрузки образ. Примеры: «MyLanCloon save» или «MyLanCloon load».
Все, скрипт готов к работе в составе SystemRescueCd Linux для автоматизации работы по клонированию образов операционных систем рабочих станций. Конечно, скрипт далек от идеального – не хватает проверок на существование файлов, подтверждений на выполняемые действия и других «красивых» процедур. Например, можно расширить основную функцию case вот таким образом:
case "$1" in
[Ss][Aa][Vv][Ee])
do_save;;
[Ll][Oo][Aa][Dd])
do_load;;
esac
В этом случае уже не будет иметь значения, в каком регистре набираются параметры save и load. Еще одной очень полезной функцией было бы создание процедуры для установки мастер-образа на «чистый» жесткий диск. Но скрипт получился и так громоздким, мы бы совсем отвлеклись от основного обзора дистрибутива SystemRescueCd Linux и его утилит. Если у вас есть желание доработать скрипт, но не хватает опыта в подобных вещах, очень рекомендую документ «Advanced Bash Scripting» на русском языке, расположенный по адресу.
Выводы
SystemRescueCd Linux – функциональный, быстрый, современный дистрибутив, подходящий для работы как с домашними машинами, так и в небольших корпоративных сетях (после необходимых доработок).
Форум проекта поддерживается на протяжении всего существования дистрибутива, несмотря на некоторые «паузы» в выпуске новых релизов.
К положительным моментам относится наличие скрипта sysresccd-custom, который позволяет легко пересобрать дистрибутив.
Как многие, наверное, успели заметить, размер дистрибутива (121 Мб) позволяет хранить на диске мастер-образ Windows-системы (до ~580 Мб, что вполне достаточно), также из-за компактности SystemRescueCd Linux можно записать на miniCD, что добавляет дистрибутиву еще один плюс.
На этом все, удачной работы!
Приложение
Альтернативы SystemRescueCd Linux
Emergencu CD [4] – спасательный дистрибутив, основанный на Gentoo Linux версии ядра 2.4.22. Cодержит графический интерфейс IceWM, достаточно компактен (~180 Мб), но последний релиз от 28 октября 2003 г. Поддерживает большинство наиболее распространенных файловых систем (FAT, ext2/3, NTFS, ...) и сетевых служб (smb, nfs, ssh,...). Программы для работы с партициями Partimage и gpart. Дистрибутив в принципе богат утилитами и компактен, но за 3 прошедших года, к сожалению, успел устареть.
INSERT LiveCD [5] – основанный на Knoppix 4.0.2 версии ядра Linux kernel 2.6.12.5. Последняя доступная версия 1.3.6 от 24 февраля 2006 года. Дистрибутив поддерживает файловые системы ext2/3, reiserfs, FAT, NTFS (для режима записи используется captive или ntfstools) и другие. Включены сетевые службы nfs, smb, cifs, ssh и afs. Дистрибутив – наиболее близкий конкурент SystemRescueCd Linux, но есть одна странность. На официальном сайте, в ChangeLog говорится о выпуске версии 1.3.8 от 10.10.2006, но на ftp дистрибутива данной версии нет. Возможно, это ошибка, а, может быть, когда вы будете держать журнал в руках, версия дистрибутива и «объявится»?
- http://www.sysresccd.org – официальный сайт дистрибутива Sysrescuecd Linux.
- Максимов И. FreeDos – новый взгляд на старые вещи. //«Системный администратор», №2, февраль 2006 г. – C. 32-37.
- http://gazette.linux.ru.net/rus/articles/abs-guide/index.html – «Advanced Bash-Scripting Guide. Искусство программирования на языке сценариев командной оболочки».
- http://emergencycd2.sourceforge.net/index.ru.html – официальный сайт Cool Linux CD и Emergency CD.
- http://www.inside-security.de – официальный сайт дистрибутива INSERT LiveCD.