Intereting Posts

Клонирование загрузочного USB-накопителя на ручку разного размера

ОБОРУДОВАНИЕ: 2 USB-накопителя на 8 ГБ
DISTRO: Mint 9 Xfce persistent Live Cd

Один USB-накопитель имеет два раздела:
1) FAT32 700MB Mint 9 раздел
2) ext3 7.3GB casper-rw partition

ЦЕЛЬ:
Я хочу сделать дубликат этого флеш-накопителя USB, потому что я больше не хочу проходить время установки и настройки с нуля.

ОПЫТ:
1) Я обнаружил, что dd не работает для этой работы, потому что, если один из моих флеш-накопителей имеет размер 1 МБ по-разному, что иногда бывает, то копия будет повреждена.

2) Я обнаружил, что использование gparted и preformatting второго диска, такого как первый, а затем rsync каждого раздела по отдельности не работает, потому что по какой-то причине некоторые файлы не копируются, и диск остается не загружаемым.

Я хочу сохранить свою рабочую палочку и просто сделать ее копии и настроить палки для моих друзей. Таким образом, если я пойду на другую палочку, у меня всегда будет моя базовая палочка, которая сидит рядом, ожидая.

Введение

Для диска с ПК-разделами (именно это вы найдете на большинстве USB-накопителей), загрузчик состоит из крошечной части в самом начале диска (загрузчик этапа 1 в загрузочном секторе диска) и большую часть в другом месте (загрузчик этапа 2, в файле). Данные этапа 1 содержат физическое местоположение этапа 2. Если вы копируете все устройство (то, что вы пробовали с dd ), часть 1-го этапа находится в одном и том же физическом месте, и палочка работает, но новая палка должна быть не менее как оригинал. Если вы воссоздаете разделы и скопируете файлы, вы потеряете этап 1, так как это не файл.

Я думаю (но я не проверял), что этап 2 находится в первом (FAT32) разделе. Если это так, вы можете скопировать этот раздел оптом и скопировать загрузочный сектор, а затем отредактировать таблицу разделов так, чтобы второй раздел занимал точно оставшееся место и копировал файлы на втором разделе. Вы можете также сохранить сырое изображение загрузочного сектора и первого раздела в файле на жестком диске (но вы также можете клонировать их с USB-накопителя).

Создание клона другого размера

Ниже я вызываю устройство, содержащее оригинальную палку /dev/sdb и устройство, содержащее клон /dev/sdc ; замените имена по мере необходимости. При необходимости создайте точки монтирования. Я предполагаю, что раздел FAT32 (в начале диска) пронумерован 1, а раздел ext3 пронумерован 2; при необходимости заменяйте разные цифры.

Первая часть, если клонирование из палки:

 head -c 512 </dev/sdb >/dev/sdc partprobe /dev/sdc cat </dev/sdb1 >/dev/sdc1 

Первая часть, если клонирование из файлов изображений:

 cat boot_sector.img >/dev/sdc partprobe /dev/sdc cat first_partition.img >/dev/sdc1 

Вызов partprobe необходим, чтобы ядро ​​перезагрузило таблицу разделов с диска (она находится в загрузочном секторе, а первая команда в любом из сценариев выше изменяет загрузочный сектор). Если вы опустите его, либо вы получите ошибки, либо ядро ​​тихо напишет мусор на палку.

Чтобы сделать файлы изображений:

 head -c 512 </dev/sdb >boot_sector.img cat /dev/sdb1 >first_partition.img 

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

 sed -e 's/ *#.*//' <<EOF | tr -s ' ' '\n' | tr -d _ | fdisk /dev/sdc d 2 # delete partition 2 np 2 # new primary partition 2... _ _ # ... using all available space wq # write and quit EOF 

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

 partprobe /dev/sdc mke2fs -j /dev/sdc2 mount /dev/sdc2 /media/sdc2 cp -a /media/sdb2/ /media/sdc2/ umount /media/sdc2 

Упрощенный метод создания большего клона

Если вы предпочитаете, вы можете сохранить изображение всей палки. Вы сможете использовать это изображение непосредственно на любой палочке, которая по крайней мере такая же большая: просто скопируйте это изображение на новую палочку с cat <whole.img >/dev/sdc , затем запустите partprobe /dev/sdc (или отключите и верните его обратно), чтобы перечитать таблицу разделов.

Затем, если хотите, вы можете увеличить клон. В этом порядке:

  1. Увеличьте раздел. К сожалению, я не знаю, как это сделать простым способом. parted может сделать это с помощью команды move (не resize , которая изменяет resize файловой системы), но вам нужно выяснить правильные аргументы – переключиться на сектора ( unit s ), чтобы избежать ошибок округления.
  2. Увеличьте файловую систему. Эта часть проста: просто запустите resize2fs /dev/sdc2 чтобы файловая система использовала весь размер раздела.

Если вы начинаете с большей палки, чем необходимо, вы можете сжать ее, выполнив описанные выше шаги в обратном порядке (сначала сжимайте файловую систему с помощью resize2fs , а затем сжимайте раздел с помощью parted ).

Кроме того, вы можете сначала скопировать палку в файл изображения, а затем работать с этим файлом изображения. Чтобы получить доступ к разделам, используйте устройство цикла , в частности, связывая часть файла с диском . Вот эскиз шагов, если вы хотите сжать изображение (предупреждение, непроверенный, тщательно и дважды проверить математику).

 fdisk -lu whole.img # note starting sector of partition 2: $S losetup -fs -o $(($S * 512)) whole.img # Let $D be the desired size of partition 2, in kB resize2fs /dev/loop0 $ # replace /dev/loop0 by whatever losetup prints losetup -d /dev/loop0 parted whole.img # Use parted to resize the second partition dd if=/dev/null of=/file/to/truncate seek=1 bs=$(($S/2+$D+1))k 

~ $: sudo apt-get install gddrescue ddrescue

~ $: ddrescue / dev / sda / dev / sdb -v

;

Синтаксис: утилита / источник / привод / назначение / привод –verbose

Комментарий: показывает прогресс и проверку ошибок, чтобы вы знали, приемлемо ли это или где-то повеситься. Вы также можете добавить b = любые блоки размера, которые вы хотите. «gddrescue» – это версия «ddrescue» на основе gui, но я использую только ddrescue, как написано выше, так как она работает без проблем.