Ещё несколько полезных упражнений с dd и образами.
Начнём с тривиала, сделать бекап mbr:
rm ~/sda.mbr
dd if=/dev/sda of=~/sda.mbr bs=512 count=1
Скопировать таблицу разделов с sda на sdb, рассово верный способ:
dd if=/dev/sda of=/dev/sdb skip=446 seek=446 bs=1 count=64
Более надёжный, если винт не размечен (скопируем ещё и сигнатуру 55 AA):
dd if=/dev/sda of=/dev/sdb skip=446 seek=446 bs=1 count=66
Или в файл:
rm ~/sda.mbr
dd if=/dev/sda of=~/sda.mbr skip=446 seek=446 bs=1 count=66
Скопировать начальный загрузчик с sda на sdb, рассово верный способ:
dd if=/dev/sda of=/dev/sdb bs=1 count=446
Короткий для NT (только лоадер, не копируем NT signature и тд):
dd if=/dev/sda of=/dev/sdb bs=1 count=440
А вот в файл сложнее (если мы хотим чтоб он был похож на мбр). Вариант для nt (можо заменить назначение на винт и таким образом сделать загрузочный диск для windows, останется только создать разделы, выбрать загрузочный и скопировать в них файлы os):
rm ~/sda.mbr
#сам код
dd if=/dev/sda of=~/sda.mbr bs=1 count=440
#генерим новую NT signature
dd if=/dev/urandom of=~/sda.mbr bs=1 seek=440 count=4
#Забиваем нулями оставшееся место
dd if=/dev/zero of=~/sda.mbr bs=1 seek=444 count=2
dd if=/dev/zero of=~/sda.mbr bs=1 seek=446 count=64
#дописываем сигнатуру
dd if=/dev/sda of=~/sda.mbr bs=1 skip=510 seek=510 count=2
Для всего остального:
rm ~/sda.mbr
#загрузочный код
dd if=/dev/sda of=~/sda.mbr bs=1 count=446
#Забиваем нулями оставшееся место
dd if=/dev/zero of=~/sda.mbr bs=1 seek=446 count=64
#дописываем сигнатуру
dd if=/dev/sda of=~/sda.mbr bs=1 seek=510 count=2
Cнять образину с винта и упаковать:
dd if=/dev/sda bs=4096|pv|gzip -9|dd of=~/my.img.gz
Не ровня акронису конечно, особенно в плане скорости, но в экстренных ситуациях спасает.
После распаковки образ можно смонтировать:
#распаковываем (понадобится много места)
cat ~/my.img.gz | gunzip > ~/my.img
#перезагружаем модуль loop чтобы он нам дал посмотреть разделы
modprobe -r loop
modprobe loop max_part=63
#подключаем как виртуальное устройство
losetup -f ~/my.img/
#определяем разделы
blockdev --rereadpt /dev/loop0
Тут надо заметить сильно от дистра зависит напрмер в некоторых можно не перегружать модуль а использовать опцию -p в loosetup тогда и последняя команда не нужна. Иногда вместо неё понадобится набрать что-то типа partprobe /dev/loop0 -s или сделать как то так:
mount -o loop ~/my.img
kpartx -av ~/my.img
В любом случае результатом должны быть появившиеся в /dev ссылки на разделы нашего диска loop0p1 loop0p2 и т.д. Соответсвенно теперь можно их смонтировать или скормить виртуалке, причем смонтировать даже на запись.
mkdir /mnt/lo0p1
mount /dev/loop0p1 /mnt/lo0p1 -t <тип файловой> -o rw
Ну вот пожалуй и всё что пришло на ум...
Начнём с тривиала, сделать бекап mbr:
rm ~/sda.mbr
dd if=/dev/sda of=~/sda.mbr bs=512 count=1
Скопировать таблицу разделов с sda на sdb, рассово верный способ:
dd if=/dev/sda of=/dev/sdb skip=446 seek=446 bs=1 count=64
Более надёжный, если винт не размечен (скопируем ещё и сигнатуру 55 AA):
dd if=/dev/sda of=/dev/sdb skip=446 seek=446 bs=1 count=66
Или в файл:
rm ~/sda.mbr
dd if=/dev/sda of=~/sda.mbr skip=446 seek=446 bs=1 count=66
Скопировать начальный загрузчик с sda на sdb, рассово верный способ:
dd if=/dev/sda of=/dev/sdb bs=1 count=446
Короткий для NT (только лоадер, не копируем NT signature и тд):
dd if=/dev/sda of=/dev/sdb bs=1 count=440
А вот в файл сложнее (если мы хотим чтоб он был похож на мбр). Вариант для nt (можо заменить назначение на винт и таким образом сделать загрузочный диск для windows, останется только создать разделы, выбрать загрузочный и скопировать в них файлы os):
rm ~/sda.mbr
#сам код
dd if=/dev/sda of=~/sda.mbr bs=1 count=440
#генерим новую NT signature
dd if=/dev/urandom of=~/sda.mbr bs=1 seek=440 count=4
#Забиваем нулями оставшееся место
dd if=/dev/zero of=~/sda.mbr bs=1 seek=444 count=2
dd if=/dev/zero of=~/sda.mbr bs=1 seek=446 count=64
#дописываем сигнатуру
dd if=/dev/sda of=~/sda.mbr bs=1 skip=510 seek=510 count=2
Для всего остального:
rm ~/sda.mbr
#загрузочный код
dd if=/dev/sda of=~/sda.mbr bs=1 count=446
#Забиваем нулями оставшееся место
dd if=/dev/zero of=~/sda.mbr bs=1 seek=446 count=64
#дописываем сигнатуру
dd if=/dev/sda of=~/sda.mbr bs=1 seek=510 count=2
Cнять образину с винта и упаковать:
dd if=/dev/sda bs=4096|pv|gzip -9|dd of=~/my.img.gz
Не ровня акронису конечно, особенно в плане скорости, но в экстренных ситуациях спасает.
После распаковки образ можно смонтировать:
#распаковываем (понадобится много места)
cat ~/my.img.gz | gunzip > ~/my.img
#перезагружаем модуль loop чтобы он нам дал посмотреть разделы
modprobe -r loop
modprobe loop max_part=63
#подключаем как виртуальное устройство
losetup -f ~/my.img/
#определяем разделы
blockdev --rereadpt /dev/loop0
Тут надо заметить сильно от дистра зависит напрмер в некоторых можно не перегружать модуль а использовать опцию -p в loosetup тогда и последняя команда не нужна. Иногда вместо неё понадобится набрать что-то типа partprobe /dev/loop0 -s или сделать как то так:
mount -o loop ~/my.img
kpartx -av ~/my.img
В любом случае результатом должны быть появившиеся в /dev ссылки на разделы нашего диска loop0p1 loop0p2 и т.д. Соответсвенно теперь можно их смонтировать или скормить виртуалке, причем смонтировать даже на запись.
mkdir /mnt/lo0p1
mount /dev/loop0p1 /mnt/lo0p1 -t <тип файловой> -o rw
Ну вот пожалуй и всё что пришло на ум...
Комментариев нет:
Отправить комментарий