Клонування завантажувальної USB-накопичувача на інший розмір


11

ТЕХНІКА: 2 8 Гб флеш-накопичувачі
DISTRO: Mint 9 Xfce стійкий Live Cd

Один флеш-накопичувач USB має два розділи:
1) розділ FAT32 700MB Mint 9, розділ
2) casper-rwрозділ ext3 7,3 Гб

МЕТА:
Я хочу зробити дублікат цієї флеш-пам’яті USB, оскільки я не хочу знову проходити час установки та налаштування з нуля.

ДОСВІД:
1) Я виявив, що ddце не працює для цієї роботи, оскільки якщо одна з моїх флеш-накопичувачів навіть на 1 Мб відрізняється за розміром, який іноді є, то копія пошкоджується.

2) Я виявив, що використання gpartedта попереднє форматування другого диска, як першого, а потім rsyncкожного розділу окремо не працює, тому що деякі файли не копіюються, а диск залишається незавантаженим.

Я хочу зберегти свою робочу паличку і просто зробити її копії та налаштувати палички для своїх друзів. Таким чином, якщо я підхоплю ще одну палицю, я завжди буду базувати, просто сидіти і чекати.


який завантажувач ви використовуєте (syslinux?). Будь ласка, подумайте про те, щоб видалити цю пошту з вашої публікації, вона не додасть ніякого значення вашому запитанню.
Мат

Я використовував інсталятор mint live usb, тому все було автоматично. Я сподіваюся, що процес клонування дозволить уникнути роботи з завантажувачами та скопіювати мою поточну конфіденційну програму завантаження
Джошуа Робісон

Відповіді:


5

Вступ

Для накопичувача з розділами для ПК (що саме ви знайдете на більшості USB-накопичувачів) завантажувач складається з крихітної частини на самому початку диска (завантажувач першого етапу, у завантажувальному секторі накопичувача) та більша частина в іншому місці (завантажувач другого етапу, у файлі). Дані першого етапу містять фізичне розташування на етапі 2. Якщо ви скопіюєте весь пристрій (те, що ви намагалися dd), частина першого етапу знаходиться в тому ж фізичному місці, і палиця працює, але нова палиця повинна бути не менше ніж великий, як оригінал. Якщо ви відтворили розділи та скопіювали файли, ви пропустите етап 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
n p 2       # new primary partition 2...
_ _         # ... using all available space
w q         # 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, яка змінює розмір файлової системи), але вам потрібно з'ясувати правильні аргументи - перейти на сектори ( 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

хм. Чи не можу я просто використовувати head, щоб просто скопіювати перший 300mb або близько другого розділу у файл img? Хіба це не відріже весь порожній простір / порожні блоки в кінці файлу?
Джошуа Робісон

1
@Joshua: Ні, тому що немає жодної причини, щоб усі дані файлу були в перших 300 Мб, і навіть якщо це не так, ви не можете просто взяти частину такої файлової системи. Потрібно зробити дійсну файлову систему потрібного розміру. Вам також потрібно мати розділ правильного розміру; розмір розділу зберігається у завантажувальному секторі. Якщо ви вважаєте за краще починати з зображення мінімального розміру та збільшувати його за бажанням, я додав спосіб зробити це у своїй відповіді.
Жил "ТАК - перестань бути злим"

хм. Я намагався скопіювати файли раніше, але чомусь усе не скопіювалось. Я спробував rsync теж із судо. і я думаю, що я спробував su root і зробив це теж .... Це просто не працює для мене. Я впевнений, що накопичувачі не були встановлені ... все одно. Я вирішив скоротити диск в gparted, а потім зробити з них файли img, а потім відновити їх на меншому диску. Попереднє скорочення в gparted було єдиним простим рішенням, яке я міг знайти. Дякуємо за вашу допомогу.
Джошуа Робісон

Ваша відповідь, ймовірно, правильна і, швидше за все, зробить те, що я прошу. Це занадто складно для мене. Тож я пішов із методом gparted попереднього скорочення.
Джошуа Робісон

чи є друкарська помилка в цьому рядку head -c 512 </dev/sdb >/bev/sdc?
антоніо

3

~ $: sudo apt - отримати встановити gddrescue ddrescue

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

;

Синтаксис: утиліта / джерело / привід / пункт призначення / диск - верболаз

Коментар: показує прогрес та перевірку помилок, щоб ви знали, чи прийнятно це чи десь зависає. Ви також можете додати b = потрібні блоки розміру. "gddrescue" - це версія "ddrescue" на основі gui, але я використовую лише DDrescue, як написано вище, оскільки він працює без проблем.


2
Зауважте, що відповідний формат є ddrescue -v /dev/sda /dev/sdb(параметри виходять першими перед іменами пристроїв / файлів). Дякуємо, що вказали на цей інструмент! Набагато простіше, ніж використовувати dd!
xmnboy

0

Нещодавно я клонував мою Kali в реальному часі зашифрованою стійкістю від 16 Гб до 64 ГБ 3.0 USB, Моя хост ОС - це Windows 10 pro. Я не намагався клонувати за допомогою будь-якого дистрибутива Linux, я впевнений, що відповіді вище - те, що вам потрібно, але для будь-яких користувачів Windows; Я використовував помічник розділів диска AOMEI. Супер простий у використанні, використовував його для розділення мого SSD, щоб відповідати Ubuntu, але я відступив.

Я повинен був переконатися, що USB, який я клонував, вже відформатований для живого завантаження. Підключено як до USB, так і просто натиснувши правою кнопкою миші на 8 ГБ накопичувач; натиснувши на copyпотім вибраний диск на 64 Гб, він запитає вас про купу речей на кшталт "ви впевнені, що це правильний диск, все буде стерто" весь цей джаз. Просто прочитайте його і переконайтеся, що все в порядку, вам дійсно не потрібно багато робити.

Просто зачекайте, коли процес закінчиться, і ви все налаштовані. Випробуваний сказав USB і все працювало!

Я вважав, що це принаймні для мене спосіб клонування живих дистрибутивів від USB до USB.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.