Видео смотреть бесплатно

Смотреть молодые видео

Официальный сайт mydebut 24/7/365

Смотреть видео бесплатно

19.10.09 03:59 Kraplax

How-to`sСоздание live-usb для бэкапа/восстановления системы

Каждый раз, когда мне приходится делать резервную копию системы я искал незанятую USB флэшку, на которую заливал установочный образ ArchLinux и грузился в него. В этом способе был очень неприятный момент — мне приходилось искать незанятую USB флэшку размером >512 MiB, при том что под рукой всегда лежала SD карточка на 64 MB, которой для нужд бэкапа и восстановления вполне хватило бы. Но с SD карточкой была одна проблема — редкий дистрибутив мог загрузиться с нее на моем Eee PC 900. Перепробовав с дюжину различных мелких дистрибутивов, ни один из которых мне не подошел полностью, я решил сделать свою live систему.

Подготовка


Что понадобится:


  • USB Флэшка или SD/MMC/CF/... карта памяти

  • Рабочая Linux система, желательно с полным набором для компиляции либо с любым пакетным менеджером

  • Ядро Linux, не требующее дополнительных модулей для работы
Размер носителя не играет роли — самая маленькая карта памяти, которую я смог найти была размеров в 64 мегабайта, чего с лихвой хватает для создания полноценной системы для бэкапа/восстановления.
Насчет ядра — я использую свое ядро, в котором необходимые модули вкомпилированы, а поддержка initrd отключена. Если у вас уже есть ядро, которое для работы с дисками не требует дополнительных модулей, то можете использовать его. Если такого ядра у вас нет — скачайте исходный код ядра с ftp://kernel.org/ и соберите его вручную. В этой статье я не буду описывать как нужно собирать ядро.
Условимся, что устройство флэшки — /dev/sdc.

BusyBox


Сразу хочу сказать, что я использовал BusyBox — утилиту, заменяющую очень большой набор других утилит, пусть и с немного урезаным функционалом. Фокус ее в том, что в зависимости от того, как вы ее запустите — так она себя и будет вести. Например, если сделать символьную ссылку на busybox с именем ln, то мы получим ln. Если ссылка будет называться dd — получим dd. При весе в 1,5 мегабайта и без зависимостей — это просто чудо.
Если запустить busybox без парамтров, то вы увидите список доступных в вашей версии утилит, чьи функции может заменить busybox. Если размер вам очень важен, то можете собрать BusyBox из исходников, отключив ненужный функционал и уменьшив тем самым размер бинарного файла. Я же использовал готовый пакет из репозиториев.

Подготовка устройства:


С помощью fdisk создайте на устройстве флэшки один раздел и сделайте его загрузочным.
fdisk /dev/sdc
Сначала удалите все разделы на этом устройстве. Скорее всего раздел только один, поэтому введите d один раз. Затем создайте новый первичный раздел. Нажмите n, [Ввод], p, [Ввод], 1, [Ввод], [Ввод], [Ввод]. Сделайте этот раздел загрузочным — введите a. Чтобы записать новую таблицу разделов на устройство — нажмите w.
Теперь создайте новую файловую систему на первом разделе флэшки. В качестве файловой системы я выбрал Ext2 — ее поддержка давно есть везде, а журналирование в такого рода системе не имеет особого смысла. Для форматирования раздела в Ext2 выполните следующую команду:
mke2fs -m 0 -N 2000 /dev/sdc1
-m 0 отключит резервирование места под root (что бы это ни значило)
-N 2000 обеспечит достаточное количество inod'ов.

Собираем систему


Смонтируйте новый раздел в отдельную директорию (например, /newroot):
1
2
mkdir /newroot
mount /dev/sdc1 /newroot
В каждом дистрибутиве Linux есть набор обязательных директорий. Создайте следующие директории:
1
2
3
4
5
6
7
/bin
/boot
/dev
/etc
/proc
/sbin
/var
Необязательными являются /sys, /lib, /var, /mnt, /usr и /home — можете создать их позже, если в них появится необходимость.

/DEV


Для начала заполним каталог /dev необходимыми устройствами. Таковыми являются console, kmem, mem, null, ram0 и tty1. Скопируйте их прямо из вашей рабочей системы с помощью
cp -dpR /dev/DEVICE /newroot/dev
где DEVICE — каждый из вышеперечисленных устройств. Параметры -dpR обеспечат копирование самих файлов, а не их содержимого, а также сохранит все права доступа к ним. Если вам не по душе такой способ — можете делать более трудоемким, но, возможно, более правильным путем — с помощью ls -l узнайте главный и меньший номера каждого из устройств и создайте их с помощью mknod.
Кроме вышеупомянутых обязательных устройств скопируйте также ваши устройства жестких дисков (hd* и sd*), а также с десяток терминальных устройств (tty*). Возможно, вам также понадобится loop*. Скопируйте также остальные файлы устройств по мере необходимости.

/ETC


В этом каталоге должны храниться настройки системы. Обязательными файлами здесь будут rc (в разных системах называется по-разному), inittab, fstab, passwd, group и shadow. Хотя, group, возможно и не является обязательным, но проверить это я не пытался.
После того как скопируете эти файлы в свою новую систему необходимо будет отредактировать следующие файлы:

inittab — его запускает /bin/init. Он определяет поведение системы при разных уровнях исполнения. Подробнее о формате записей в файле inittab вы можете прочитать в
man inittab
Однако есть очень важный момент: в отличии от стандартного inittab, версия для busybox не должна содержать поля id и runlevel. Мой примитивный inittab выглядит следующим образом:
# /etc/inittab

::sysinit:/etc/rc

# Spawn some gettys
::respawn:/sbin/getty -L 115200 tty1 vt100
::respawn:/sbin/getty -L 115200 tty2 vt100
::respawn:/sbin/getty -L 115200 tty3 vt100
::respawn:/sbin/getty -L 115200 tty4 vt100

# Stuff to do when restarting the init process
::restart:/sbin/init

# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot


fstab — здесь все как обычно. Только указываете в качестве корневой системы не ваш жесткий диск, а флэшку.

passwd и shadow — в этих файлах оставьте только запись для root. Остальные вам не понадобятся. Кроме того, возможно вы захотите изменить домашнюю директорию и оболочку командной строки по умолчанию. Обычно в качестве оболочки прописан /bin/bash или /bin/zsh, но в busybox есть только примитивный sh. Конечно, никто не мешает сделать символьную ссылку bash —> sh.

rc — срипт загрузки, прописанный в вашем inittab. Он может быть суперсложный и включать в себя другие rc.скрипты, однако для простых систем можно его сильно упростить (пример моего rc):
#!/bin/sh

# Uncomment next line, if you have sane rc.conf and are able to use it
#/etc/rc.conf

PS1=[rescue-system]:
PATH=/sbin:/bin:/usr/bin

/bin/mount -av
/bin/hostname localhost

/BIN


В этот каталог установлен busybox. Этого можно добиться разными способами. Например, если вы собираете его вручную, то при конфигурировании добавьте параметр --prefix=/newroot. Если вы используете менеджер пакетов, то почитайте справку к нему — должна быть опция, которая позволяет указать корневую директорию для устанавливаемого пакета. Например в ArchLinux, в pacman это ключ -r:
pacman -S busybox -r /newroot -b /var/lib/pacman
Параметр -b необходим, потому что pacman не сможет найти базу пакетов внутри /newroot.
После установки перейдите в каталог /newroot/bin. Запустите busybox и определитесь с тем, какие встроенные утилиты вам нужны, а какие — нет. Для каждой из утилит сделайте символьную ссылку на busybox с соответствующим утилите именем. Например:
ln -s ./busybox ./cd
Обязательно сделайте ссылки с именами sh, login и mount!

/SBIN


Перейдите в эту директорию и создайте необходимые ссылки на ../bin/busybox. Вообще разделение на две директории — /bin и /sbin — в этой системе особого смысла не имеет, так как пользователь всего один, и тот root.
Обязательно сделайте ссылки с именами init, getty, poweroff, shutfown, reboot, halt!

/BOOT


В этот каталог скопируйте только ваше ядро и назовите его vmlinuz.

Устанавливаем GRUB


Установка загрузчика GRUB производится командой grub-install:
grub-install --root-directory=/newroot /dev/sdc
После того, как установка завершится, создайте простой файл меню GRUB (/boot/grub/menu.lst):
title Boot rescue blob
root (hd0,0)
kernel /boot/vmlinuz rootdelay=6 root=/dev/sdc1 rw

В строке root, возможно, придется изменить устройство, однако на моем Eee PC 900 при выборе в BIOS загрузки с карты памяти GRUB определил ее именно так.
Кроме того, важным параметром является rootdelay — без него ядро не успевало найти устройство кардридера и я получал:
Kernel Panic :VFS :Unable to mount root fs on /dev/sdc1

Заключение


Вот, собственно и все. Теперь вы можете перезагрузиться и опробовать новую систему. Конечно, с BusyBox вы вряд ли получите супер функциональную систему, однако система будет способна на многое с точки зрения обслуживания рабочей системы. Кроме того, так как этот вариант live-OS не использует сжатых образов файловой системы, то все изменения, которые вы внесете в нее останутся после перезагрузки, поэтому вы можете смело дополнять функционал скриптами прямо во время использования и не бояться потерять ваши наработки.
Конечно, здесь много еще чего можно оптимизировать, и я этим буду постепенно заниматься, однако, для базовых нужд создания резервных копий диска и их восстановления система вполне готова.



razum2um 19.10.09 07:25 # +1
Замечательно написано. Отдельное спасибо за ln`ы к busybox и --rootdelay

примечания:
mount -o loop /dev/sdc1 /newroot

эм? мы ж вроде раздел монтируем, а не файл, зачем loop?

cp -dpR /dev/DEVICE /newroot/dev

cp -a ...?

Если вы используете менеджер пакетов, то почитайте справку к нему — должна быть опция, которая позволяет указать корневую директорию для устанавливаемого пакета

для gentoo
ROOT=/newroot emerge busybox

Кроме того, так как этот вариант live-OS не использует сжатых образов файловой системы

Да, оно мож и удобней, что менять ее проще, но в тот же размер сжатая в lzma, скажем, система будет пофункциональней. Даже с иксами. Скоро нам расскажут про slitaz..

Каждый раз, когда мне приходится делать резервную копию системы

Ну я понимаю, что так оно корректнее (копировать), но если потерпеть и не записывать на корень, можно обойтись (я обхожусь) cp -ax / /backup. Но ясно, что восстанавливать надо откуда-то еще...
Kraplax 19.10.09 12:22 # +0
cp -a ...?
Да, судя по ману - похоже что и этот вариант подойдет.
зачем loop?
Да, loop не нужен. Начинал делать по старинной инструкции, в которой предлагалось сделать сжатую корневую систему и т.п., поэтому сначала я пытался делать файл с фс и монтировать его, а потом заливать на флэшку. В итоге запямятовал и проскользнула ошибка. Спасибо.
сжатая в lzma, скажем, система будет пофункциональней. Даже с иксами.
Ну, во-первых функционала busybox мне хватает с лихвой. При этом дистрибутив занимает всего 8 из 64 метров. Так что место еще есть и так. Во-вторых:
здесь много еще чего можно оптимизировать

А насчет rootdelay - когда буду у большого компа - скину пару ссылок на источники. Среди них был неплохой документик.
chemikadze 19.10.09 08:03 # +0
Я предпочитаю unetbootin + какой-нибудь маленький livecd.
Kraplax 19.10.09 12:09 # +0
Я точно так же предпочитал. Только, как я уже сказал - ни один из перепробованных не смог заработать таким способом и при этом иметь достаточный функционал.
ZogG 19.10.09 09:17 # +1
title Boot rescue blob
root (hd0,0)
kernel /boot/vmlinuz rootdelay=6 root=/dev/sdc1 rw

не понял, почему ты указал первый жесткий, и ты не прописал граб в MBR/boot sector
, то есть полетит граб на компе, не зайдет систему с флешки
ZogG 19.10.09 09:24 # +0
устанавливаем так
#grub
>
>root (hdx,0)
>setup (hdx)


x- номер флешки (к примеру есть только один жесткий и флешка, тогда 1 (счет начинается с 0)

Kraplax 19.10.09 12:25 # +0
grub-install --root-directory=/newroot /dev/sdc1
Устанавливаем вот так, а не то, как вы написали. Зачем нам использовать отдельную утилиту в интерактивном режиме, если а) одна команда bash может быть использована в скрипте для автоматизации процесса и б) гадать какие есть команды и что они делают в командной строке grub не очень-то хочется?
Username 19.10.09 09:31 # +0
кстати да
Kraplax 19.10.09 12:08 # +0
Граб прописывается с помощью grub-install, который используется.
Прописал первый, потому что граб при загрузке видит мою карту памяти как первый из дисков,а потом уже винты. Такая вот странность, но что тут поделать.
xtavras 19.10.09 11:42 # +0
оффтоп: а ты Арч на флэшку чем заливал? Просто когда я делаю это через unetbootin, он при загрузке спотыкается на каком то пункте и стоит, заработало только при скачивании img образа и записи стандартным dd, но этот способ мне не нравится, так как флэшка становится размером с образ, и приходится снова форматить ее и размечать.
Kraplax 19.10.09 12:06 # +0
Я так же с помощью dd делал. Погляди, я писал установку Arch на Eee 900 - там подрбоно описано как и что я делал.
xtavras 19.10.09 12:13 # +0
Ну да, я делал точно также, проблем не было, просто говорю мне сам способ не сильно нравится
Kraplax 19.10.09 12:26 # +0
Ну, там размер-то восстановить проще пареной репы =) Причем, решение есть даже в этом посте ;-)
Да и на винде тоже можно восстановить прежний размер.
xtavras 19.10.09 13:40 # +0
Не восстановлю то я без проблем с dd,fdisk и mkfs, но для этого нужен линукс, а у меня была ситуация, когда я по забывчивости брал с собой в гости эту флэщку и скинуть на нее что-то большое соответственно уже не мог, как сделать в винде я кстати не знаю.
Kraplax 19.10.09 14:03 # +1
Правой кнопкой по моему компьютеру, пункт Управление. Слева выбираем Запоминающие устройства - Управление дисками. Находим флэшку, удаляем раздел, создаем новый.
xtavras 19.10.09 14:18 # +0
слушай, я идиот, когда пробовал тоже самое меня испугало "удалить раздел", хотя тот же dd делает тоже самое)))

Лучшие блоги (все 105)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 2088 из 158 городов)
Топ пользователей Топ блогов
В сети: ner_uto, divius, fun, exelens, Uzix

Новенькие: residum, ksn135, lestat, warzon, Extender
welinux.ru

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн