пятница, 12 августа 2011 г.

Простой и полный backup Вашего Debian/Ubuntu  на live cd/dvd и live-usb-key своими руками

                               

 

    Что ж, всем доброго времени суток и - начнём.У Вас ведь уже установлен Debian или Ubuntu?Да?Возможно Вы хотели сохранить его,как есть,со всеми настройками,на live cd/dvd ,live-usb-key,но не знали как,или найденные Вами инструменты для подобной задачи работали не так,как Вам бы хотелось,а?Тогда Вам сюда!..

     Я,как можно доступнее расскажу Вам,как сделать простой и полный backup  Вашего тукса своими руками,запаять это дело в live cd/dvd,закатать на usb с persistent mod & ,вообще...

     Для начала не помешает скачать live cd/dvd нужных Вам систем:

Для Ubuntu  - здесь:
http://releases.ubuntu.com/

Для Debian - здесь:
http://www.debian.org/distrib/
http://www.debian.org/CD/live/#choose_live
  
     Теперь - к делу:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                 LIVE CD/DVD

1)Перво-наперво обновите свою установленную систему,перепроверте все настройки,зависимости,почистите кэш пакетов,обновите grub & initramfs(обязательно!!!),установите ubiquity-frontend-gtk[kde] для ubuntu.

Для Debian речь пойдёт отдельно,ниже*

$cd && sudo aptitude install ubiquity-frontend-gtk ubiquity-casper ubiquity && echo 'sudo apt-get update && sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get -f install && sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove' > aptup && chmod +x aptup && echo 'sudo update-grube && sudo update-initramfs -u' > gbiup && chmod + x gbiup && sudo ./aptup && sudo ./gbiup                   ---   как-то так...

2)Запишите образ live cd/dvd ubuntu/debian на болванку,перезагрузитесь,загрузитесь с диска в live mod,откройте терминал и выполните следующее:

$sudo su

$#mkdir /mnt/fs && fdisk -l                  ---     создадим каталог для монтирования установленной системы и посмотрим на каком точно разделе она установлена.

$#sudo mount /dev/sda[x] /mnt/fs && mksquashfs /mnt/fs /где/больше/места/filesystem.squashfs     ---     примонтируем нашу систему на разделе /dev/sda[x] и запустим создание её полного бэкапа в архив filesystem.squashfs,по окончании действа:

$#chmod 777 /где/больше/места/filesystem.squashfs        ---      сделаем файл доступным "всем-всем-всем".

$#umount /mnt/fs && exit         ---размонтируемся и выйдем из рута

$file-roller      ---     запустим штатный менеджер архивов,найдём iso-образ скачанного live cd/dvd и распакуем его в папку (строго!) iso в той же директории,где и образ,закроем менеджер архивов (теперь он нам не помощник),создадим в этой же директории файл repack_iso.sh и открыв его в gedit вставим туда текст вот такого простого скрипта:

#!/bin/bash

IMAGE=ubuntu-custom.iso
BUILD=iso

# Запаковываем содержимое iso/ в образ ubuntu-custom.iso
echo ">>> Calculating MD5 sums..."
rm $BUILD/md5sum.txt
(cd $BUILD/ && find . -type f -print0 | xargs -0 md5sum | grep -v "boot.cat" | grep -v "md5sum.txt" > md5sum.txt)
echo ">>> Building iso image..."

mkisofs -r -V "Ubuntu OEM install" \
            -cache-inodes \
            -J -l -b isolinux/isolinux.bin \
            -c isolinux/boot.cat -no-emul-boot \
            -boot-load-size 4 -boot-info-table \
            -o $IMAGE $BUILD/

который умеет не только собрать распакованный образ обратно в *.iso,но сначала пересчитает чексум md5sum.txt для его составных частей - без этого новый образ live cd/dvd ubuntu откажется запускаться и выдаст ошибку...(потом,вы же почитаете man grep и т.д. составных скрипта,я в вас верю %-)) )

Ну,и - кульминационный момент - найдём созданный архив filesystem.squashfs,вырежем его и вставим в папку casper распакованного образа ubuntu,в терминале:

$cd /где/лежит/образ && sudo chmod 777 -R iso && rm /где/лежит/образ/iso/casper/filesystem.squashfs && mv /где/лежит/filesystem.squashfs /где/лежит/образ/iso/casper/filesystem.squashfs                   ---     будьте предельно внимательны!,пишите правильные пути к файлам,ну,или открывайте терминалы в наутилусах по папкам их хранения ))  ; и :

$cd /где/лежит/образ && ls && sudo ./repack_iso.sh && sudo chmod 777 ubuntu-custom.iso                 ---    перейдём  в директорию со скриптом,образом и его распакованной версией в папке iso и соберём новый образ ubuntu-custom.iso,которому опять же ссудим все права доступа.

Запишем это дело на болванку и попробуем загрузиться,если не получится,перечитайте вышесказанное ещё раз внимательнее,повторите процесс и задумайтесь,если делался бэкап lucid ,а образ natty,то что не так?...

(&& можно не использовать и вводить команды по отдельности -)) )
      Для простого развёртывания бэкапа на произвольный раздел ж/д без загрузок с live cd/dvd можно использовать команду unsquashfs:
$ unsquashfs --help
SYNTAX: unsquashfs [options] filesystem [directories or files to extract]
   -v[ersion]      print version, licence and copyright information
   -d[est] <pathname>   unsquash to <pathname>, default "squashfs-root"
   -n[o-progress]      don't display the progress bar
   -p[rocessors] <number>   use <number> processors.  By default will use
            number of processors available
   -i[nfo]         print files as they are unsquashed
   -li[nfo]      print files as they are unsquashed with file
            attributes (like ls -l output)...
$sudo fdisk -l
$sudo mkdir /mnt/fs && sudo mount /dev/sda[X] /mnt/fs
$sudo unsquashfs /где/лежит/filesystem.squashfs -d /mnt/fs
$sudo chmod 777 -R /mnt/fs
$sudo umount /mnt/fs
$sudo mount /dev/sda[X] /mnt
$sudo mount --bind /dev /mnt/dev
$sudo mount --bind /proc /mnt/proc
$sudo chroot /mnt
$#grub-install /dev/sda && grub-install --recheck /dev/sda
$#exit
$sudo umount /mnt/dev /mnt/proc /mnt && sudo reboot
profit

     * Не стану настаивать,но советую,всё же добавить в /etc/sources.list  репозиторий remastersys: http://geekconnection.org/remastersys/debian.html ,установить его и сделать бэкап системы с его помощью.Зачем?А есть таки один ньюанс - он создаст образ с упрощённой структурой каталогов и даже,если этот live cd/dvd не будет грузиться,с ним в дальнейшем будет проще работать,чем со стандартным live cd/dvd debian,используя,как обёртку для того,что мы сможем делать быстрее и надёжнее сами,как будет описанно ниже.
     Собственно,делаем то же,что и в случае с live cd/dvd ubuntu,коль скоро ubuntu is based on debian! - только filesystem.squashfs созданный с установленной системы,следует переместить в папку live распакованного образа,ну и чуток подправить скрипт запаковки,заменив ubuntu на debian,и - вперёд,на испытания!Современные стандартные debian-live образы,вроде как,оснащены графическим инсталлером и пунктом меню загрузки live,используя который,можно загрузиться и работать в live mod режиме,введя,если при загрузке выбросит в консоль :
$sudo rm /etc/X11/xorg.conf && sudo /etc/init.d/gdm[kdm] restart
или попытаться установить live систему куда-нибудь на жесткий диск - лично у меня получалось,и не раз...но,мало ли,что...
      Короче,если установлен remastersys,то в его составе присутствует remastersys installer,который вполне юзабилен и прост,проще убунтовского инсталятора,но если придерживаться чистоты эксперимента:"...своими руками..." - то можно обойтись и так:

#загрузиться с cd

#задать пароль рута
sudo passwd root

#стать рутом
su

{#задать пароль пользователя
passwd user} - нужно только при установке со стандартного debian-live

#создать точку монтирования
mkdir /sda[X] - где Х это номер целевого раздела

#mount the partition
mount /dev/sda[X] /sda[X]

#копировать содержимое live cd исключив ненужное(опционально!это бэкап вашей системы,не включайте в {} упомянутые системные каталоги,если они не были пусты на момент бэкапа!)
rsync -a / /sdaX/ --exclude=/{sdaX,live,sys,proc,media}/

#создать proc, sys, & media папки
mkdir /sda[X]/proc /sda[X]/sys /sda[X]/media

#chroot в корень скопированной системы
chroot /sda[X]/

#install grub - will only setup grub for this installation
grub-install /dev/sda
update-grub

#exit chroot
exit

#reboot
reboot

     Также,должен отметить,что простой и полный бэкап практически любой linux-системы,можно произвести с практически любого linux-live-cd простым монтированием файловой системы в заданный каталог и архивированием онного в свободное место на другом локальном разделе,с последующим восстановлением на заранее подготовленный(отформатированный) локальный раздел,где угодно и когда душа пожелает,обычной распаковкой архива на целевой раздел из live cd менеджером архивов,с последующим рекурсивным заданием прав доступа к директории монтирования корня целевого раздела для долгого и счастливого использования волшебной командой:
$sudo chmod 777 -R /mnt/fs              ---        если,конечно,не нужна рабочая live-система для всяких шаманских танцев с бубном...

      Собственно,это всё про live cd/dvd 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                LIVE-USB-KEY


     Так уж повелось,венда видит только первый по списку раздел воткнутой флэшки,а стало быть,коли другая половина девайса отведена под данные,хоть на FAT,хоть на NTFS-овском разделе,их вам всё равно не видать,не загрузившись с этой самой live-usb,а это время,часто ненужные нервы консервативных владельцев десктопов на венде,воспринимающих линь,чуть ли не как распространяемый врагами вирус(и не без причин,но не об этом...) Wink ,и ещё раз время,когда речь заходит о медленных домашних компах,а нужный сет программ для превращения их системы в хотя бы подобие рабочей станции был сброшен именно на флэшку под любимой Бунтой,от лени,али от спешки,а-то и по простой нехватке свободных болванок....Знакомо?Нет?Ну,товарищи,это вы просто жизни ещё не видели... 
     Работается это дело чисто в графике,за исключением пары мелких штришков,прогами "Создание загрузочного диска" из меню Система-Администрирование и "Редактор разделов Gparted" оттуда же  + любой менеджер архивов:
1)Вставляем флэшку,как запустится следуем в меню Система-Администрирование-"Создание загрузочного диска",запускаем наш live-usb-creator-gtk(~kde) и выбрав образ своего live cd/dvd,форматируем фляху,выбираем опцию сохранения данных пользователя в отдельном файле casper-rw,запускаем установку и ждём финал,затем перевтыкаем девайс.
2)Получив загрузочный девайс с опцией PERSISTENT MODE,перезагружаться,как предложено,не спешим,а кликаем "Open in terminal" на рабочем столе или Alt+F2 -> gnome-terminal ,или что там у кого,
и пишем:
 $sudo fdisk -l                                              -   и в выводе в самом низу смотрим,как называется ваша флэшка (/dev/sd[a,b,c,d,e,f])
$ sudo cp /dev/sdx /tmp/ubu/ubu.iso       -   единственно в sdх нужно х заменить своей буквой,открыть каталог /tmp/ubu в файловом менеджере и лицезреть,как загрузочный раздел свежеиспечённой флэшки бэкапится в файл ubu.iso после ввода вами пароля пользователя в терминале.
3)Готово?Запускаем Gparted,в правом верхнем углу находим кнопку с выпадающим меню видов носителей партиций,выбираем флэшку (/dev/sd[a,b,c,d,e,f]) и отмонтируем единственный,сейчас,на ней раздел,затем его,раздел,удаляем и,держа в уме его былой размер,разбиваем флэшку на два или больше раздела,давая второму или третьему тот самый размер удалённого (что бы поместилось всё что было),применяем изменения,перевтыкаем флэшку,жмём Alt+F2 ->gksu nautilus[dolphin] ,идём в каталог /media,находим свой девайс,на отображающей его папке правый клик,выбираем Свойства-Права и меняем принадлежность пользователя,присваивая себе и выдавая себе же все доступные права.Закрываем наш root file manager и в обычном FM находим наш ubu.iso в папке /tmp/ubu,кликаем на нём правой кнопкой мыша и выбираем "Открыть с помощью Менеджер архивов" из меню Открыть в программе.Распаковываем iso на подготовленный под live-usb систему раздел флэшки (/dev/sd[a,b,c,d,e,f]) и
4)Устанавливаем пакет syslinux :
$sudo aptitude install syslinux
Если "уже установлена самая последняя версия программы..." - то:
$sudo aptitude reinstall syslinux                                  -  что бы самый свежий был,и ещё пару строчек:
$su
Пароль
$#dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdx                                                  -         в sdx заменяем букву х  флэшки на свою
Записываем загрузчик syslinux:
$# syslinux -d /syslinux /dev/sdx2                                                                      -        в sdx2  заменяем букву и цифру флэшки и раздела флэшки на свои
     Вот и всё,теперь на первый раздел флэшки можно накидать чего надо что бы было видно под вендой,а на втором поселилась живая Бунта
     Впрочем,не совсем всё...ммм,а ведь,если увлечься настройками на свежеиспечённой ubuntu-live-usb,файл casper-rw заполнится и возможность вносить изменения будет утеряна,да?(((Нет!))),говорю я,думаю,курю...ну,маны,конечно,и - вот оно!!
    
#!/bin/sh
#Переход в DATA
cd /media/DATA && mkdir /media/squash /media/cow /media/aufs

#Копируем старый сквош
cp /media/SYS/casper/filesystem.squashfs /media/DATA/filesystem.squashfs && chmod 777 filesystem.squashfs

#Монтируем что надо
unionfs-fuse -o  cow \-o allow_other /media/squash=ro:/media/cow=rw /media/aufs &&
mount -t squashfs -o loop /media/SYS/casper/filesystem.squashfs /media/squash && mount -t ext2 -o loop /media/SYS/casper-rw /media/cow


#Компилим новый сквош
mksquashfs /media/cow filesystem1.squashfs && chmod 777 filesystem1.squashfs

#Размонтирумся
umount /media/squash /media/cow /media/aufs

#Заменяем
rm /media/SYS/casper/filesystem.squashfs && cp /media/SYS/casper-rw /media/DATA/casper-rw  && mv -f filesystem1.squashfs /media/SYS/casper/filesystem.squashfs

#Форматим live-rw
cd /media/SYS && /sbin/mkfs.ext2 -F casper-rw

#Перевтык
#cd && umount /dev/sdf && mount /dev/sdf


      Такой,вот,скриптик.Немного поясню:предположим,что второй,загрузочный,раздел нашей флэшки,с установленной ubuntu-live-usb,имеет метку SYS и будет смонтирован при подключении флэшки в /media/SYS;/media/DATA будет в роли промежуточного хранилища данных и может быть смонтированным локальным разделом;/media/aufs /media/squash/media/cow - специальные точки монтирования для организации unionfs из смонтированного образа filesystem.squashfs и смонтированного /dev/null флэшки - casper-rw.Тогда мы открываем в терминале сеанс root-а,используя $su - иначе рискуем нарваться на облом в исполнении скрипта при манипуляциях с файлами -и далее,по порядку исплнения скрипта:переходим в директорию /media/DATA,откуда и будут проистекать все последующие манипуляции(!);копируем файл filesystem.squashfs с флэшки в /media/DATA и выдаём ему все права доступа,как к файлу,и как к архиву,содержащему вложенные папки,рекурсивно;монтируем скопированный filesystem.squashfs в /media/squash и монтируем файл сохранённых состояний casper-rw с флэшки на /media/cow и сводим нашу aufs(unionfs) в /media/aufs;создаём обновлённый образ скопированной файловой системы ubuntu-live-usb с учётом наложенных в aufs данных из casper-rw и выдаём продукту этого действа полные права на доступ,как,так,и рекурсивно;по завершению компиляции всё размонтируем;удаляем с флэшки старый filesystem.squashfs в /media/SYS/casper,копируем (на всякий случай сбоя) старый casper-rw в /media/DATA,на случай n-ой надобности,выдаём равноценные права доступа к каталогу /media/SYS/casper рекурсивно,чтобы вставка обновлённого сквоша не напоролась на ошибку с правами и перемещаем обновлённый сквош на законное место,переименовывая согластно чину;переходим на загрузочный раздел флэшки и форматируем casper-rw в ext2,стирая все данные; и выходим из режима суперпользователя.Теперь,все сделанные ранее надругательства над ubuntu-live-usb,впечатаны во фрейм образа файловой системы read only - filesystem.squashfs - и мы можем перезагрузить комп,чтобы загрузиться с флэшки в чистом live режиме и убедиться,что внесённые изменения пропечатались в янтаре...такое,вот,шаманство -))

      Кстати,а у Вас прописан чистый live режим загрузки с usb-key в /syslinux/sislinux.cfg или /syslinux/live.cfg ,или /syslinux/menu.cfg (от способа сотворения live cd/dvd...)?Обязательно пропишите,причём первым пунктом меню загрузки:
label live non persist
    menu label Live Non Persistent
    kernel /live[casper]/vmlinuz
    append initrd=/live[casper]/initrd.img boot=live[casper] config  quiet splash --

соответственно, /live... - для debian , а /casper... - для ubuntu.



Good luck for all of us...only of us...
With respect,Deblanck.

2 комментария:

  1. бери пример http://zaydencorporation.blogspot.com

    ОтветитьУдалить
  2. Очень хорошая заметка, но есть вопрос, как создать образ установленной и настроенной системы centos 6.3, чтоб записать на несколько DVD с дальнейшей установка на других ПК?

    ОтветитьУдалить