Создать 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. Прогулявшись по просторам интернета, нашел несколько подходов к тому, как это можно было бы сделать.
В целом все найденные решения можно разбить на следующие группы.
- Программы, создающие образ с готовой и настроенной системы (Distroshare Ubuntu Imager, linux live kit, linux respin, systemback и др.)
- Проекты, позволяющие собрать свой образ (yocto, linux from scratch)
- Сборка образа ручками самому (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:
Читайте также: