Восстановление системы из архива созданного программой fwbackups

Материал из Mageia Russian Community Wiki
Перейти к: навигация, поиск
Info-wiki-template.png
Примечание
На сегодняшний день восстановить систему с помощью программы fwbackups невозможно, так как нельзя указать папку для распаковки. Кто знает английский и у кого есть желание это исправить пообщайтесь пожалуйста с разработчиком программы.


Предполагается
  • вы уже умеете записывать загрузочные образы на диск или флешку.
  • знакомы, хотя бы в общих чертах, с консолью, с командами su, fdisk, mkdir, cd, mount, chroot, tar, а также с загрузчиком GRUB.
Если всё же нет, то почитайте об этом в интернете. Начать можете здесь:


Подготовка

Давайте определимся что нам понадобиться.

  • В первую очередь, загрузочный носитель с которого можно загрузить любой linux без установки.
В этой статье будем придерживается Mageia LiveDVD KDE, ссылка для загрузки
Attention-big.png
Внимание
Архитектура загрузочного диска и восстанавливаемой системы должны совпадать.
  • Сама резервная копия системы.
  • Немного терпения и настойчивости.


Вставляем загрузочный носитель и запускаем с него систему. Открываем консоль и вводим:

Сonsole.png
[user@mageialinux.ru ~]$ su -
вводим пароль, символы на экране не отображаются.
Сonsole.png
[root@mageialinux.ru ~]# service sshd stop
(камушек в огород)


Если вы помните на каком разделе находилась система, то можете пропустить эту часть и сразу перейти к разделу "Приступаем"

Если же нет, то читаем дальше. Посмотрим какие разделы есть на жёстком диске.

Сonsole.png
[root@mageialinux.ru ~]# fdisk -l


Для примера, вывод получился таким:

Disk /dev/sda: 20,6 GiB, 22109421568 bytes, 43182464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00010ef0
Устр-во Загрузочный Start Конец Blocks Id System
/dev/sda1 * 2048 20531069 10264511 83 Linux
/dev/sda2 20533212 43166654 11316721+ 5 Extended
/dev/sda5 20533248 24643709 2055231 82 Linux swap / Solaris
/dev/sda6 24647680 43166654 9259487+ 83 Linux

Вот некоторые способы определения системного раздела:

  • определяем по типу системы.
В колонке "System" видим различные типы для каждого раздела. Среди них есть те, которые, наверняка, не содержат файлов системы. В данном случае это типы "Extended" и "Linux swap". Осталось выбрать из 2 оставшихся.
  • определяем по флагу загрузки.
Обычно, но не всегда, загрузочный раздел и является системным.
  • определяем по размеру.
В колонке "Blocks" указан размер разделов в блоках. Часто, но не всегда, размер системного раздела меньше чем раздел /home.
Также можно вспомнить какой был размер вашего раздела и посчитать. Делается это так:
Выше в строке "Units" указано, что один блок = 1 cектору размером 512 байт.
Количество блоков для раздела /dev/sda1 10 264 511 * 512 = 5 255 429 632 Байт
В одном гигабайте 1 073 741 824 байта. Округлим для простоты до 1 000 000 000.
5 255 429 632 байт / 1 000 000 000 примерно 5,2 ГБ.
  • определяем по содержимому. Запускаем в консоли оболочку grub.
Сonsole.png
[root@mageialinux.ru ~]# /usr/sbin/grub


Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

Вспоминаем любой путь к файлу который точно находился на системном разделе, но его точно не было на других. Допустим /etc/group
В оболочку grub вводим:
grub> find /etc/group
find /etc/group
 (hd0,0)
это означает, что системным у вас был раздел /dev/sda1


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


Приступаем


Случай 1. Не запускается система


В статье, для примера, системным будет раздел /dev/sda1. Подключаем его.

Сonsole.png
[root@mageialinux.ru ~]# mkdir -p /media/sda1
mount /dev/sda1 /media/sda1


Info-wiki-template.png
Примечание
если ваша резервная копия находится на другом разделе или съёмном накопителе, то не забудьте подключить и его, предварительно создав любую другую незанятую папку в папке /media

Теперь посмотрим что на нём есть. Для этого запустим dolphin с переходом в нужную папку:

Сonsole.png
[root@mageialinux.ru ~]# dolphin /media/sda1


Через некоторое время появится окно программы dolphin.
Image 005.png

На панели инструментов нажимаем кнопку "Управление". Выбираем "Показывать скрытые файлы".
Image 006.png

И снова видим перед собой папку внешний вид которой может измениться.
Image 009.png

Затем выделяем все файлы и папки КРОМЕ той, в которой находится резервная копия. Для примера это папка home.

Info-wiki-template.png
Примечание
Если резервная копия находится на другом разделе или съёмном накопителе, то выделяйте вообще все папки и файлы.

Для тех кто не знает как это сделать:

Подводим мышь к любому значку папки или файла и видим что он изменяется. Щелкаем мышью на появившийся плюс или минус, при этом она либо выбирается, либо отменяет выбор. Если щёлкнуть ещё раз ситуация повторяется. Продолжаем процесс :) до тех пор, пока не станут выбраны все те папки которые необходимо удалить.
Это выглядит так.
Image 010.png


Attention-big.png
Внимание
Следующие действия НЕОБРАТИМО удалят информацию. Хорошо подумайте прежде чем это делать.

Жмём <SHIFT>+<DELETE> Для тех кто не понял:

На клавиатуре нажимаем и держим кнопку <SHIFT> и затем нажимаем и сразу отпускаем кнопку <DELETE>, теперь отпускаем кнопку <SHIFT>.
Info-wiki-template.png
Примечание
Иногда кнопка <DELETE> подписана как <DEL>, а кнопка <SHIFT> как длинная кнопка со значком стрелка вверх.

Появляется окно подтверждения удаления. Нажимаем кнопку "Удалить"
Image 011.png

Это окно закроется и появится следующее, которое покажет процесс удаления.
Image 012.png

После того как удаление закончится, окно с содержимым папки снова изменится. Image 013.png

Осталось только восстановить.

Давайте приступим.
Переходим в папку с резервной копией. Выбираем файл, нажимаем правую кнопку мыши. Появится контекстное меню. Выбираем "Открыть с помощью Ark"
Image 015.png

Откроется новое окно, главное окно программы архиватора "Ark". А также сразу начнётся процесс распаковки резервной копии. После этого программа покажет содержимое резервной копии. Вы можете походить по папкам и осмотреться. Затем разверните окно архиватора на весь экран.
На панели инструментов нажмите кнопку "Распаковать".
Image 016.png

Откроется окно выбора папки. Разверните и его на весь экран.
Выберете папку к которой подцеплен ваш системный раздел. Затем в правой части снимите флажок "Создавать вложенную папку", установите флажки "Закрыть Ark после распаковки" и "сохранять пути". Внизу переключите тумблер в положение "Все файлы" Если вы не выбирали папки и файлы в главном окне, то этого тумблера не будет.
Теперь нажмите внизу кнопку "OK"
Image 018.png

Это окно закроется и мы снова увидим главное окно. Справа внизу появится индикатор "Распаковка всех файлов".
Image 019.png

Если в процессе распаковки программа встретит файлы которые уже есть на вашем разделе, то появится диалоговое окно.
Установите флажок "Применить ко всем" и нажмите кнопку "Заменить".
Image 020.png

После того как архив распакуется, окно программы "Ark" закроется, и мы снова увидим обозреватель файлов Dolphin.
Теперь все файлы системы уже на месте. Отцепляем наш раздел. Для этого снова выбираем папку с восстановленными данными.
Image 005.png

С левой стороны на панели "Точки входа" видим подсвеченную строку. Наведите на неё курсор и нажмите правую кнопку мыши.
Появится контекстное меню, в нем выберете "Отключить ...". Файлы и папки справа пропадут.
Image 023.png

Теперь можете попробовать перезагрузить компьютер. Но давайте не будем торопиться. Дочитайте хотя бы следующие 2 строчки :)
Если после перезагрузки система всё равно не запустилась, то возвращайтесь и читайте дальше.

Info-wiki-template.png
Примечание
Теперь уже нет необходимости выполнять действия из раздела этой статьи под названием "Случай 1. Не запускается система"


Всё. Вперёд :)


Случай 2. Системный раздел был повреждён, был отформатирован или необходимо скопировать/восстановить систему на другом жёстком диске.


Небольшое вступление для тех кто вернулся после перезагрузки в предыдущем пункте.

Linux - система очень мощная. Она славиться в том числе и тем, что действия в ней можно выполнять по разному. Так как действия этого раздела, на данный момент, невозможно выполнить без команд набираемых в консоли, то я повторю все действия из предыдущего раздела именно в ней. Приглядитесь повнимательнее, может вам как и автору, понравится именно такой метод.


Для примера, системный раздел /dev/sda1. Если у вас не так, необходимо поменять /dev/sda1 на ваш, везде где он будет встречаться.

Открываем консоль. Вводим

Сonsole.png
[user@mageialinux.ru ~]$ su
Info-wiki-template.png
Примечание
Не стоит хранить резервные копии на системном разделе. Если всё-же это так, то перепишите их либо на соседний раздел диска либо на съёмный накопитель. Так как эта тема достойна целой статьи, то пропустим рассказ о том как это сделать.


Если у вас новый жёсткий диск, или произошёл сбой и теперь не видно раздел, то создаём таблицу структуры разделов. Для этого используем программу fdisk.
Так как это дело индивидуальное, то рассмотрим только один случай. Другую информацию вы можете найти в интернете или на форуме.

Предположим что не видно ТОЛЬКО системный раздел.
Входим в режим редактирования таблицы разделов жёсткого диска.
Сonsole.png
[root@mageialinux.ru ~]# fdisk /dev/sda


Welcome to fdisk (util-linux 2.24).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Команда (m для справки): p
Disk /dev/sda: 20,6 GiB, 22109421568 bytes, 43182464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00010ef0

Устр-во   Загрузочный     Start Конец   Blocks  Id System
/dev/sda2              20533212  43166654 11316721+  5 Extended
/dev/sda5              20533248  24643709  2055231  82 Linux swap / Solaris
/dev/sda6              24647680  43166654  9259487+ 83 Linux

Команда (m для справки): n

Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): p
Номер раздела (1,3,4, default 1): 1
First sector (2048-43182463, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-20533211, default 20533211): 

Created a new partition 1 of type 'Linux' and of size 9,8 GiB.

Команда (m для справки): p
Disk /dev/sda: 20,6 GiB, 22109421568 bytes, 43182464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00010ef0

Устр-во   Загрузочный     Start Конец   Blocks  Id System
/dev/sda1                  2048  20533211 10265582  83 Linux
/dev/sda2              20533212  43166654 11316721+  5 Extended
/dev/sda5              20533248  24643709  2055231  82 Linux swap / Solaris
/dev/sda6              24647680  43166654  9259487+ 83 Linux

Команда (m для справки): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Что здесь происходило:
Сперва посмотрели список всех доступных разделов. Команда: p Увидели что нет раздела /dev/sda1.
Затем создали новый раздел. Команда n При этом программа спросила:
какой раздел создаём. Ответили p основной
номер раздела. Ответили 1.
номер первого сектора на диске. Ответили кнопкой <Enter> и она подставила значение по умолчанию.
номер последнего сектора на диске, или смещение или размер. Ответили кнопкой <Enter> и она подставила значение по умолчанию.
Затем программа сообщила что раздел создан.
Снова посмотрели список всех доступных разделов. И убедились что запись для /dev/sda1 теперь создана.
Затем записали изменения на диск. Команда w
После этого может понадобиться перезагрузка компьютера.


Форматируем раздел.

Attention-big.png
Внимание
вся информация будет потеряна.
Сonsole.png
[root@mageialinux.ru ~]# mkfs.ext4 /dev/sda1


И подключаем его.

Сonsole.png
[root@mageialinux.ru ~]# mount /dev/sda1 /media/sda1


Для примера, резервная копия находится на /dev/sdb1 который подцеплен к /media/sdb1
Распаковываем копию

Сonsole.png
[root@mageialinux.ru ~]# tar -C /media/sda1 -xvf '/media/sdb1/fwbackups/Резервная копия-mageia4-2014-11-06_15-36.tar.gz'


Видим на экране упорядоченный хаос :) Ждём завершения.


Теперь список файлов на месте, но этого ещё не достаточно.

Восстановим загрузчик. Если уверены что с ним всё в порядке, переходите сразу к следующему абзацу.

Для этого сначала подключим необходимые нам устройства. Затем перейдём в chroot.
Сonsole.png
[root@mageialinux.ru ~]# cd /media/sda1

mkdir dev proc sys
mount --bind /dev dev
mount --bind proc /proc proc
mount --bind sysfs /sys sys

chroot .


Теперь находимся в chroot окружении.
Запускаем grub
Сonsole.png
[root@mageialinux.ru ~]# /usr/sbin/grub


Рассмотрим наиболее частый случай, когда первая часть загрузчика находится в "главной загрузочной записи", а его вторая часть на системном разделе.
Info-wiki-template.png
Примечание
Если у вас по-другому, то попробуйте применить полученные знания для своего случая, или поищите информацию в интернете.
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]
grub> root (hd0,0)  
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  20 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+20 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.
grub>quit
quit
Что здесь происходило.
После запуска, мы попали в оболочку программы grub, где она представилась и выдала приглашение о готовности.
Затем ввели команду root (hd0.0) которая указала программе, что наш системный раздел на котором загрузчик должен искать свои файлы будет в /dev/sda1.
После этого ввели команду setup (hd0) которая указала программе запустить установку первой части загрузчика в MBR. После этого программа проверила доступность всех необходимых ей файлов и выдала результат, а так же намекнула что всё прошло успешно.
После этого ввели команду quit что означает, выйти из оболочки программы.


Исправляем идентификатор.

При загрузке система определяет где какой раздел, либо по имени, например /dev/sda1, либо по, так называемому, уникальному идентификатору. Если она его не узнает, то соответственно загрузиться не сможет. Давайте это исправим.
Для начала определим, какие идентификаторы нам нужны.
Сonsole.png
[root@mageialinux.ru ~]# blkid


Для примера, вывод такой:
/dev/sda1: UUID="c4c24c57-0fcf-45b1-8c12-7b09e80af406" TYPE="ext4" PARTUUID="00010ef0-01" 
/dev/sda5: UUID="69a45232-c25c-4274-87ef-6e47aaab7dde" TYPE="swap" PARTUUID="00010ef0-05" 
/dev/sda6: UUID="96cfe508-66bd-4c54-bbab-171fbf77d40b" TYPE="ext4" PARTUUID="00010ef0-06" 
/dev/loop0: TYPE="squashfs" 
/dev/sdb1: UUID="74a7e2ae-ffc4-474d-b7f7-998d7551f408" TYPE="ext4" PARTUUID="7cbfb48a-01" 
/dev/sr0: UUID="2014-01-30-23-39-06-00" LABEL="Mageia-4-KDE4-LiveDVD" TYPE="iso9660" PTUUID="1f385bfa" PTTYPE="dos"
Для нормальной загрузки системы достаточно поправить идентификатор только у системного раздела, раздела подкачки и возможно раздела на котором находятся файлы загрузчика GRUB.
Рассмотрим всего один вариант. Файлы загрузчика находится в системном разделе и используется загрузчик grub версии <= 0.99.
Info-wiki-template.png
Примечание
Если этот вариант вам не подходит попробуйте применить описание для своего варианта, либо поищите информацию в интернете, либо спросите на форуме.
Нам нужно изменить три файла.
1. файл конфигурации загрузчика /boot/grub/menu.lst.
2. файл конфигурации программы монтирования /etc/fstab.
3. файл конфигурации системы dracut, /etc/dracut.conf,d/51-mageia-resume.conf, только если изменился идентификатор раздела подкачки.


Вот так, для примера, выглядит /boot/grub/menu.lst
timeout 10
color black/cyan yellow/cyan
gfxmenu (hd0,0)/boot/gfxmenu
default 0

title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=4f5d2c58-491e-404a-9872-fe39d1b3ab49 splash quiet resume=UUID=69a45232-c25c-4274-87ef-6e47aaab7dde vga=788
root (hd0,0)
initrd /boot/initrd.img

title linux-nonfb
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux-nonfb root=UUID=4f5d2c58-491e-404a-9872-fe39d1b3ab49 resume=UUID=69a45232-c25c-4274-87ef-6e47aaab7dde
root (hd0,0)
initrd /boot/initrd.img

title failsafe
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=failsafe root=UUID=4f5d2c58-491e-404a-9872-fe39d1b3ab49 failsafe
root (hd0,0)
initrd /boot/initrd.img

title desktop 3.12.8-2.mga4

Для нормальной загрузки необходимо изменить только одну строку в разделе title linux
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=4f5d2c58-491e-404a-9872-fe39d1b3ab49 splash quiet resume=UUID=69a45232-c25c-4274-87ef-6e47aaab7dde vga=788
на
kernel (hd0,0)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=c4c24c57-0fcf-45b1-8c12-7b09e80af406 splash quiet resume=UUID=69a45232-c25c-4274-87ef-6e47aaab7dde vga=788


Вот так, для примера, выглядит /etc/fstab до изменения
# Entry for /dev/sda1 :
UUID=4f5d2c58-491e-404a-9872-fe39d1b3ab49 / ext4 acl,relatime 1 1
# Entry for /dev/sda6 :
UUID=96cfe508-66bd-4c54-bbab-171fbf77d40b /home ext4 relatime,acl 1 2
none /proc proc defaults 0 0
# Entry for /dev/sda5 :
UUID=69a45232-c25c-4274-87ef-6e47aaab7dde swap swap defaults 0 0
и после
# Entry for /dev/sda1 :
UUID=c4c24c57-0fcf-45b1-8c12-7b09e80af406 / ext4 acl,relatime 1 1
# Entry for /dev/sda6 :
UUID=96cfe508-66bd-4c54-bbab-171fbf77d40b /home ext4 relatime,acl 1 2
none /proc proc defaults 0 0
# Entry for /dev/sda5 :
UUID=69a45232-c25c-4274-87ef-6e47aaab7dde swap swap defaults 0 0


Вот так выглядит /etc/dracut.conf,d/51-mageia-resume.conf
add_device+="UUID=69a45232-c25c-4274-87ef-6e47aaab7dde"
Так как UUID раздела подкачки не изменился, то ничего не меняем.


После этого нам нужно пересобрать initrd
Сonsole.png
[root@mageialinux.ru ~]# dracut --regenerate-all --force


:Ждём завершения работы команды.


Затем выходим из окружения chroot

Сonsole.png
[root@mageialinux.ru ~]# exit


Отцепляем устройства :)

Сonsole.png
[root@mageialinux.ru ~]# umount /media/sda1/dev

umount /media/sda1/proc
umount /media/sda1/sys
umount /media/sda1

umount /media/sdb1




Вот и всё.
Можно перезагружать компьютер.


Авторов статьи вы можете узнать на странице истории
Поругать или поблагодарить, на форуме русского сообщества Mageia