Создать img образ ubuntu

Обновлено: 07.07.2024

Для создания образа жесткого диск не обязательно использовать утилиты на подобии Acronis True Image или Norton Ghost, достаточно простой утилиты dd, которая входит в состав большинства Unix-подобных операционных систем (Linux, FreeBSD, Solaris и т.д.) В статье рассмотрен простой способ создания резервной копии образа жесткого диска при помощи dd. Первым делом необходимо подготовиться к резервному копированию. В данной статье введем следующие обозначения:

При необходимости нужно подставить собственные значения.

Подготовка к созданию образа жесткого диска

Первым делом необходимо загрузиться с любого доступного Live-CD диска, имеющего утилиту dd, и войти в командную строку в качестве суперпользователя. Создаем точку монтирования для проведения резервного копирования.

Монтируем жесткий диск на который необходимо сохранить образ.

Создание образа жесткого диска

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

Для сокращения размера образа жесткого диска его можно сжать любым архиватором.

dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img
Восстановление образа жесткого диска

Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа.

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

При использовании сжатия параллельно необходимо разархивировать образ.

gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M
Миграция системы на другой жесткий диск

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

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

Статистика копирования в dd

Главный минус в dd — это отсутствие наглядного представления статистики выполнения процедуры копирования. Однако этот минус можно легко обойти. Достаточно подключиться к другому терминалу.

Определить номер процесса, под которым запущена dd.

Периодически посылать данному процессу команду kill -USR1 номер_процесса_dd .

На днях, работая над дипломом, столкнулся с необходимостью создания образа Ubuntu для одноплатника с уже установленным ROS (Robot Operating System – операционная система роботов). Если кратко, то диплом посвящен управлению группой роботов. Роботы оснащены двумя колесами и тремя дальномерами. Управляется все это дело из ROS, который крутится на плате ODROID-C2.

Фото робота


Робот Ladybug. Сорри за плохое качество фото

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

  1. Программы, создающие образ с готовой и настроенной системы (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback и др.)
  2. Проекты, позволяющие собрать свой образ (yocto, linux from scratch)
  3. Сборка образа ручками самому (liveCD customization и русский аналог, плюс статья на хабре)

Использование решений из первой группы казалось самым простым и привлекательным вариантом, однако создать образ live-системы для ODROID у меня так и не получилось. Решения второй группы также мне не подошли из-за достаточного высокого порога вхождения. Сборка ручками по имевшимся туториалам также не подходила, т.к. в моем образе не было сжатой файловой системы.
В итоге наткнувшись на видео про chroot (chroot — change root, ссылка на видео в конце поста) и его возможности, решено было использовать его. Далее опишу свой частный случай кастомизации Ubuntu для разработчиков робототехники.

Исходные данные:

  • Весь процесс модификации образа (за исключением записи на SD-карту с использованием balenaEtcher) выполнялся в операционной системе Ubuntu 18.04.
  • Операционная система, сборку которой модифицировал – Ubuntu 18.04.3 mate desktop версия.
  • Машина, на которой должна работать собранная система – ODROID-C2.

Подготовка образа

Скачиваем образ Ubuntu для ODROID с официального сайта

Создаем директорию, в которую будем монтировать образ

Определяем раздел, на котором располагается файловая система

Ищем раздел с файловой системой в формате ext2, ext3 или ext4. Нам нужен адрес начала раздела (выделен красным на скрине):

Скрин консоли с разбиением на раздела

Примечание. Расположение файловой системы можно также посмотреть с помощью утилиты parted.

Нужный нам раздел начинается с блока 264192 (у вас цифры могут отличаться), размер одного блока — 512 байт, перемножаем их, чтобы получить отступ в байтах.

Переходим в папку со смонтированной системой и чрутимся в ней

/livecd/mnt — полный путь до директории со смонтированной системой
bin/sh — оболочка (можно также заменить на bin/bash)
Теперь можно уже заниматься установкой необходимых пакетов и приложений.

Установка ROS

Я ставил ROS последней версии (ROS Melodic) по официальному туториалу.

Обновляем список пакетов

Здесь у меня возникала ошибка:

Она связана с тем, что срок действия ключа для подписи пакетов истек. Для обновления ключей набираем:

Готовим систему для установки ROS

Устанавливаем ROS
К сожалению, мне не удалось поставить desktop версию ROS, поэтому устанавливал только базовые пакеты:

Примечание 1. В процессе установки иногда возникала ошибка:

Исправлялась с помощью очистки кэша утилиты apt:

Примечание 2. После установки просорситься (source) командой:

не получится, т.к. мы не запускали bash, поэтому ее НЕ надо набирать в терминале.

Устанавливаем необходимые зависимости

Настраиваем права доступа
Поскольку мы зачрутились и, фактически, выполняем все действия от имени root собираемой системы, то и ROS будет запускаться только с правами суперпользователя.
При попытке запустить roscore без sudo возникает ошибка:

Чтобы ошибка не возникала, рекурсивно изменим права доступа к домашнему каталогу пользователя ROS. Для этого набираем:

Доустанавливаем пакеты rviz и rqt

Финальные штрихи

    Выходим из chroot:

Все! Теперь с помощью balenaEtcher можно записать образ системы на SD-карту, вставить в ODROID-C2, и у вас будет Ubuntu с установленным ROS!

Есть файловые системы, которые поддерживают сокращение своего размера до размера данных, т.е. можно в два клика сократить размер раздела, выкинув всё пустое пространство, оставив на разделе только данные.

Примеры таких систем (те что проверял сам):

Всё просто: перед снятием образа запустил gparted и сократил размер раздела до минимального, чтобы свободного места оставалось не более 1%.

Дальше скопировать разметку диска и сами разделы через dd или ddrescue . Будет гораздо быстрее, чем делать образ через тот же Acronis.

Но обо всем по порядку, начну с того, что для работы нужна загрузочная флешка Linux , лучше с GUI, диск с которого снимаем образ и диск куда образ записывать.
В моем примере про Windows я работал с домашнего Ubuntu Linux, снимал образ с соседнего диска на ФС своего Ubuntu Linux.

В примере про Linux - я это делал на очень слабеньком компьютере, загружался с USB-флешки Альт-Линукс, образ снимал и разворачивал с локального SATA диска, образ записывал на внешний USB HDD диск.

Но все эти работы можно выполнять с флешки, если на флешке достаточно места.

Перенос ОС копированием файловых систем (из образа ФС)

1. Перенос операционной системы копированием файловой системы выполняется с минимальными затратами времени и позволяет решать задачи администрирования:

  • восстанавливать работоспособность системы после фатального сбоя;
  • разворачивать объемные системы по числу компьютеров с похожей архитектурой и программным обеспечением;
  • переносить систему при модернизации оборудования.

2. Для сравнения: установка операционной системы Альт-Линукс с базовыми настройками занимает не менее 30 минут на каждый экземпляр установки и требует интерактивного вмешательства администратора.

Перенос операционной системы копированием файловой системы занимает от пары минут и может выполняться одновременно (параллельно) на нескольких компьютерах одним администратором.

3. Перенос операционной системы копированием файловой системы выполняется в два этапа:

  • создание образа файловой системы;
  • восстановление операционной системы из образа.

4. Основные способы создания образа ФС:

  • копирование раздела файловой системы (блочный метод);
  • копирование файлов ОС и восстановление архитектуры ФС (файловый метод).

5. В инструкции представлены оба метода с применением к разным задачам. У каждого метода есть свои плюсы и минусы.

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

Например, для файловой системы EXT4 или NTFS перед снятием архива размер раздела можно сократить до объема занимаемых данных, КПД метода в этом случае будет очень высок.

Но если исходная файловая система не может быть изменена в меньшую сторону, например XFS, то при наличии большого объема незанятого данными пространства, при архивировании - большая часть времени уйдет на сохранение пустого пространства раздела, КПД метода в этом случае будет не так хорош, как в предыдущем примере.

7. Файловый метод — очень зависит от Операционной системы и файловой системы, на которой она развернута. Для ОС Linux — это предпочтительный метод, т. к. он может быть применен фактически для любой файловой системы Linux.

XFS и EXT4 Linux лучше архивировать файловым методом.

8. Пример блочного архивирования файловой системы на примере переноса OS Windows NTFS.

8.1. Обычно для работы Windows использует два раздела — скрытый, размером от 512 Мб и системный, обычно это Диск С Windows. Дополнительные диски для копирования — не рассматриваем, т. к. их можно скопировать простым копированием файлов, они не влияют на работу ОС Windows и могут быть добавлены к системе в любой момент. При желании их так же можно скопировать блочным методом вместе с скрытым и системным разделами.

8.2. Этап создания образа ФС блочным методом.

8.2.1. Посмотреть разделы исходного диска с Windows fdisk

sudo fdisk -l

Диск /dev/sdb: 1,84 TiB, 2000398934016 байт, 3907029168 секторов

Disk model: Hitachi HUA72302

Единицы: секторов по 1 * 512 = 512 байт

Размер сектора (логический/физический): 512 байт / 512 байт

Размер I/O (минимальный/оптимальный): 512 байт / 512 байт

Тип метки диска: dos

Идентификатор диска: 0xb75549a0

Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип

/dev/sdb1 * 63 1028159 1028097 502M 7 HPFS/NTFS/exFAT

/dev/sdb2 1028160 132102143 131073984 62,5G 7 HPFS/NTFS/exFAT

Идентификаторы разделов и их файловой системы узнать командой blkid

/dev/sdb1: LABEL="System Reserved" UUID="38143AA4143A6552" TYPE=" ntfs " PARTUUID="b75549a0-01"

/dev/sdb2: UUID="94ECB0E5ECB0C332" TYPE=" ntfs " PARTUUID="b75549a0-02"

8.2.2. В примере /dev/sdb1 — скрытый раздел Windows, /dev/sdb2 — системный раздел Windows.

8.2.3. Подключить системный раздел Windows в папку /mnt:

sudo mount -t ntfs /dev/sdb2 /mnt

8.2.4. Удалить файлы виртуальной и кэша памяти, можно на этом этапе удалить другие файлы - которые не понадобятся на новой системе и далее отключить системный раздел:

sudo umount /mnt

8.2.5. сократить раздел до минимального, не более 1-10% свободного места. Например к размеру данных добавить +200 МиБ. Для изменения размера задействовать графическую утилиту gparted (установка sudo apt-get install gparted):

Довольно часто бывает нужно создать образ оптического диска. В Windows для создания образа диска обычно используются посторонние программы, например, Nero или WinImage. В Linux мы будем пользоваться только средствами операционной системы.

1. Создание и монтирование образов
Образ CD/DVD-диска можно создать с помощью команды dd:

dd if=/dev/cdrom of=

Вместо /dev/cdrom надо подставить имя файла устройства вашего привода CD/DVD (обычно этого делать не приходится, поскольку ссылка /dev/cdrom устанавливается самой системой на ваш привод CD/DVD).
Указанная команда создаст файл образа cd.iso, который будет записан в ваш домашний каталог. Аналогично с помощью этой команды можно создать и образ дискеты — только вместо /dev/cdrom нужно указать имя файла устройства /dev/fd0.
Что можно сделать с ISO-образом в Windows? Его можно записать на чистую болванку или же открыть в специальной программе (например, ISOpen или UltraISO) для изменения. В Linux открыть образ можно с помощью средств самой операционной системы.
Для этого его надо просто подмонтировать к корневой файловой системе с помощью команды следующего формата:

— опция -o loop означает, что будет монтироваться не файл устройства, а образ диска, который записан на жесткий диск;
— параметр -t 9660 задает тип файловой системы образа: iso9660 (стандартная файловая система для CD/DVD);
— после файловой системы указывается файл образа, например,

/cd.iso;
— последний параметр — это точка монтирования, каталог, к которому будет подмонтирован образ (напомню, что каталог должен существовать).

ПРИМЕЧАНИЕ
В большинстве случаев команду mount нужно выполнять от имени пользователя root или с помощью команд sudo ИЛИ su.

В нашем случае для монтирования образа

/cd.iso к каталогу /mnt/image нужно выполнить команду:

После этого можно обращаться к образу как к обычному каталогу:

2. Запись образов на болванку

Предположим, у вас есть файл образа cd.iso, и нужно записать его на компакт-диск, но вы не хотите (или не имеете возможности) использовать графические программы вроде Nero или k3b. В этом случае вам нужно использовать программу cdrecord (пакет называется аналогично). Команда для записи образа на болванку CD-R очень проста и выглядит так:

Для записи DVD-R используется аналогичная команда:

В этой команде вам нужно изменить параметр dev — это идентификатор устройства CD/DVD. Если в вашей системе установлен только один привод CD/DVD, и он же является пишущим, тогда, скорее всего, у него будет идентификатор 0,0,0.
Но если у вас несколько приводов CD/DVD (например, обычный и пишущий), вы должны ввести следующую команду:

Команда выведет список CD/DVD, установленных в вашей системе. Вам надо запомнить идентификатор нужного привода и использовать его при записи образа диска

Для очистки DVD-RW диска используется команда:

Для быстрой очистки CD-RW введите команду:

Если нужно произвести полную, а не быструю очистку, замените blank=fast на blank=all.

3. Программа mkisofs

Иногда нужно создать образ CD/DVD не с оригинального диска, а с каталогов файловой системы. Другими словами — у вас есть файлы и каталоги, которые вам нужно записать на CD/DVD. Технология CD/DVD не позволяет записывать файлы и каталоги непосредственно на носитель — вам нужно создать каталог, поместить в него все файлы и каталоги, которые вы хотите записать на оптический диск, затем создать по этому каталогу ISO-образ, а потом записать его на болванку.
Скопируйте все необходимые вам файлы в каталог

/cd. Затем выполните команду:

Эта команда создаст по каталогу

mkisofs -r -jcharset utf8 -o

Указание кодировки необходимо для правильного отображения русскоязычных имен файлов и ката¬логов под управлением MS Windows.
После создания ISO-образа его нужно записать на носитель с помощью команды cdrecord, как было показано ранее. После записи не забудьте удалить образ, чтобы он не занимал места на диске.
Существует способ записи каталога на CD/DVD без создания промежуточного ISO-образа. Для этого служит команда:

mkisofs -jcharset кодировка /каталог | cdrecord -опции

4.Преобразование образов дисков

Иногда нужно записать созданный в другой программе образ диска, формат которого отличается от ISO9660. Наиболее часто встречаются образы дисков в форматах IMG, BIN, CUE, NRG, CCD.
Если у файла образа «расширение» (в Linux нет понятия «расширение», поэтому данное слово взято в кавычки) img, то это еще не означает, что формат образа ISO9660. Одни программы, например, k3b, действительно, создают образ в формате ISO9660 и записывают его в файл с расширением img, a другие — могут записывать в файл с таким же расширением образы диска в собственных форматах.
Файлы .bin/.cue можно записать на диск с помощью программы cdrdao или преобразовать в ISO с помощью программы bchunk.
Nero записывает образы диска в формате NRG, который можно преобразовать в ISO с помощью программы nrg2iso. Если вам нужно открыть NRG-образ, чтобы просмотреть его содержимое, вы это можете сделать с помощью команды:

mount -t udf,iso9660 -o loop,ro,offset=307200 файл.nrg точка_монтирования

Образ в формате CloneCD (ccd) можно преобразовать в ISO с помощью программы ccd2iso.

5. Создание и монтирование файлов с файловой системой

Иногда (например, для создания мини-дистрибутива) нужно создать файл, содержащий собственную файловую систему. Первым делом нужно создать пустой файл, потом создать в нем файловую систему, а затем подмонтировать этот файл к корневой файловой системе. Все это можно сделать с помощью трех команд:

Первая команда создает пустой файл размером почти 100 Мбайт (100 000 Кбайт), вторая команда создает в этом файле файловую систему типа ext2, третья — монтирует файл к каталогу /mnt/disk.

6. Создание файловой системы
В разд. 5 с помощью команды mkfs.ext2 мы создали файловую систему в файле. С помощью этой команды мы можем создать файловую систему на разделе жесткого диска, например: mkfs.ext2 /dev/hda1.
Вообще, создать файловую систему нужного типа (если эта файловая система поддерживается ядром вашей системы) можно с помощью команды mkf s. <имя_файловой_системы>, например:

mkfs.ext3
mkfs.vfat mkfs.reiserfs

Подробнее прочитать об этом можно, введя команду:

7.Проверка и восстановление файловой системы

Для проверки файловой системы используется программа fsck:

Например: fsck /dev/hda5.
Перед использованием этой команды надо размонтировать проверяемую файловую систему.
Если требуется проверить корневую файловую систему, то следует загрузиться с LiveCD и запустить fsck для проверки нужного раздела.
Если же жесткий диск «посыпался» (то есть появились «плохие» блоки), нужно, не дожидаясь полной потери данных, произвести следующие действия:

ПРИМЕЧАНИЕ
Программа fsck может проверять не только файловые системы ext2/ext3. Для проверки, например, vfat можно использовать команду fsck.vfat <раздел>.

8.Смена корневой файловой системы.Команда chroot

Предположим, мы поставили Windows после Linux, и программа установки Windows перезаписала начальный загрузчик. Теперь Windows загружается, a Linux — нет. Что делать? Нужно загрузиться с LiveCD и выполнить команду:

Например, если Linux была установлена в раздел /dev/hda5, то нужно ввести команду:

Данная команда сменит корневую файловую систему — то есть вы загрузите ядро Linux с LiveCD, a затем сделаете подмену корневой файловой системы. Вам останется только ввести команду записи загрузчика (например, lilo) для восстановления начального загрузчика.

sudo dpkg -i ntfs-3g*

После установки пакета можно примонтировать NTFS-раздел:

Понятно, что нужно указать ваш раздел и вашу точку монтирования. Если надо обеспечить автоматическое монтирование NTFS-раздела, то в файл /etc/fstab следует добавить запись, подобную этой:

раздел каталог ntfs-3g defaults,nls=utf8,umask=007,gid=46

У модуля ntfs-3g все равно есть ограничения — например, вы не сможете изменять сжатые файлы (хотя сможете их читать) и читать зашифрованные файлы.

10. Ограничение скорости CD/DVD

Программа hdparm позволяет ограничить скорость оптического привода (CDROM/DVDROM) — иногда это требуется, чтобы информация была считана без ошибок (как правило, если поверхность носителя информации немного повреждена). Рассмотрим команду ограничения скорости:

Множитель — это и есть скорость, например, I× соответствует скорости 150 Кбит/с для CD и 1385 Кбит/с для DVD. Чтобы установить вторую (2×, 300 Кбит/с) скорость чтения для CD, используется команда:

Для ограничения скорости DVD можно использовать команду:

11. Монтирование каталога к каталогу

В Linux можно подмонтировать не только каталог к устройству, но и каталог к каталогу. Делается это с помощью все той же команды mount, запущенной с параметром --bind:

Читайте также: