Перейти к содержимому

Как создать iso образ linux

  • автор:

Sorry, you have been blocked

This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.

What can I do to resolve this?

You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.

Cloudflare Ray ID: 7e7605decc04bf26 • Your IP: Click to reveal 64.176.67.13 • Performance & security by Cloudflare

Introduction

For an introductory explanation of ISO images and burning them see IsoImage.This page details how to create an ISO (.iso) file from a CD or DVD.

Why would I want to do this?

Creating an iso image from a non-music CD or DVD

GUI (Ubuntu 20.04.1 LTS, Focal Fossa)

  1. Insert the CD or DVD.
  2. Wait for the disk icon to display in the Dock. Your CD or DVD has now been mounted and can be read by Ubuntu.
  3. Click the "Show Applications" icon in the Dock to display a Search box.
  4. In the Search box, type "disks", then click the Disks application to open it.
  5. In Disks, click the "CD/DVD Drive" entry on the left to display the CD or DVD volume. (Don’t touch anything else in Disks unless you know what you’re doing.)

You can check your new .iso file by double-clicking it to mount it, then browsing it as you would if it were a CD or DVD.

Command line

dd if=/dev/cdrom of=file.iso (assuming /dev/cdrom is where the CD is mounted, and file.iso is the name you want to give the ISO, in the current directory)

Creating an iso image from a music CD or DVD

  1. Insert the CD or DVD.
  2. Wait for Sound Juicer to pop-up with the songs on the disc
  3. Close Sound Juicer

The icon of the CD can also be found on the Desktop after the disc has been inserted. This icon can also be used for steps 5 — 10.

Listening the audio tracks of an iso image from a music CD

To be completed.

CreateIsoFromCDorDVD (последним исправлял пользователь lauracowen 2020-11-16 15:29:42)

The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details

Как создать ISO-файл в Ubuntu

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

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

С помощью файлов ISO вы можете:

  • Создать установочный диск путем записи на USB или CD/DVD.
  • Монтировать как виртуальный диск.
  • Использовать для установки ОС или программ.

Использование утилиты genisoimage

В Linux можно создать ISO-образ из папки с помощью утилиты genisoimage, используя аргумент командной строки. Вы можете использовать genisoimage для автоматического резервного копирования данных с возможностью исключения некоторых отдельных файлов, если это необходимо. Она также поддерживает подстановочные знаки.

Установка genisoimage

Обновите список доступных пакетов командой

apt update

Установите genisoimage командой ниже

Установка genisoimage

Использование genisoimage

Основной синтаксис команды следующий:

-o определяет имя файла ISO, который вы хотите создать, а затем каталог, в котором вы хотите создать резервную копию или сохранить ISO-файл.

Например, я хочу создать ISO-файл из каталога /home/user/Documents/backup и сохранить его как файл backup.iso:

genisoimage -o backup.iso /home/user/Documents/backup

Используйте genisoimage для создания файла ISO.

Он создаст файл backup.iso и сохранит его в текущем каталоге.

Использование команды dd в Терминале для создания ISO-файла

В основном с помощью команды dd можно создавать копии данных, будь то файлы или папки, разделы или CD/DVD-диски. Мы также можем использовать команду dd для создания файлов ISO.

Основной синтаксис команды dd следующий:

If= Указывает команде, откуда вводить исходные данные.

Of= Указывает команде, где определить выходные данные.

Например, я введу следующую команду для копирования и сохранения содержимого диска в виде ISO-файла с именем diskimage.iso:

Создание ISO-файла с помощью команды dd

ISO-образ с именем diskimage.iso будет создан в текущем каталоге.

Использование утилиты Brasero для создания файла ISO

Для создания ISO-файла можно использовать утилиту Brasero для записи дисков Linux. Старые версии Ubuntu включают встроенную утилиту Brasero. Однако в 16.04 и более новых версиях вам придется вручную установить эту утилиту.

Чтобы установить Brasero, нажмите Ctrl+Alt+T для запуска Терминала.

Введите следующую команду в Терминале:

Установка Brasero

После завершения установки откройте приложение.

Чтобы открыть приложение Brasero, нажмите клавишу windows или щелкните на значке dash в левом нижнем углу рабочего стола, чтобы открыть меню Dash.

Откройте Brasero

Затем найдите приложение Brasero, набрав его название в строке поиска. Когда приложение появится, нажмите на него, чтобы открыть.

Иконка Brasero выглядит следующим образом

В окне приложения Brasero нажмите на опцию Data project.

Создание проекта данных в Brasero

Затем нажмите на значок +, чтобы начать добавлять файлы в новый проект.

Добавление файлов в проект Data

В появившемся окне выберите отдельные файлы или каталоги и нажмите на кнопку Add.

Добавить папку

Вы заметите, что файлы добавлены в приложение. Нажмите на Записать.

Проект нового диска данных

Выберите место для сохранения ISO-файла. Укажите имя ISO-файла с расширением .iso и нажмите на кнопку Create Image.

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

По завершении вы получите уведомление об успешном создании образа.

Образ данных успешно создан

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

Создаем свой загрузочный диск Linux

В статье описывается, как создать собственный загрузочный диск Linux (оптический диск или флешку), добавить в него только нужные программы и убрать все лишнее. Полученный образ в экспериментах занял менее 25 Мб. Он позволяет быстро загружаться, работать в текстовом режиме, создавать, редактировать, удалять файлы на разных файловых системах, имеет поддержку русского языка. За основу взят Debian.

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

Порядок загрузки Linux

Подготовка

Для начала необходимо создать пустой каталог livecd, в котором будет проводиться дальнейшая работа. В нем необходимо создать подкаталог iso, в котором будет формироваться образ диска. Используемые в статье названия файлов и каталогов не являются обязательными. Если какое-то название является обязательным, об этом будет указано.

Добавление загрузчика UEFI

Для добавления загрузчика UEFI понадобятся файлы, которые могут отсутствовать на компьютере. Чтобы их получить, необходимо установить ряд пакетов:

Далее в каталоге livecd необходимо создать вспомогательные файлы:

Загрузчик добавляется командой:

В результате в каталоге iso появятся два файла: grub.cfg и efiboot.img.

Добавление загрузчика BIOS

На древних компьютерах UEFI отсутствует. Вместо этого там используется BIOS. Чтобы создаваемый диск мог загружаться на таких компьютерах тоже, необходимо добавить загрузчик BIOS. Для получения файлов необходимо установить ряд пакетов:

Далее в каталоге livecd необходимо создать вспомогательный файл (отступ не обязателен):

После этого нужно выполнить команды:

В результате в каталоге iso появится еще ряд файлов.

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

Образ (файл livecd.iso) создается командой:

Далее эта команда будет называться (1). Образ записывается на оптический диск командой:

Образ записывается на флешку командой (будем считать, флешка является устройством /dev/sdz):

Указывать нужно саму флешку, а не раздел на ней, то есть /dev/sdz , но не /dev/sdz1 .

Удалить linux с флешки и отформатировать ее обратно можно командой:

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

Проверить созданный образ можно как на настоящем компьютере, так и с помощью виртуальной машины. Например, в VMware можно создать новую виртуальную машину без жесткого диска, но с CD-приводом, в качестве образа указать файл livecd.iso. Переключение между UEFI и BIOS осуществляется в настройках этой виртуальной машины в разделе Options – Advanced – Firmware type.

Переключение между UEFI и BIOS в VMware

При загрузке в режиме UEFI отобразится меню загрузчика:

Загрузчик GRUB

Загрузчик попытается загрузить Linux, но поскольку он еще не добавлен, отобразится сообщение об ошибке «file /linux not found».

При загрузке в режиме BIOS отобразится меню загрузчика:

Загрузчик Syslinux

Поскольку Linux еще не добавлен, это меню уйдет в бесконечный цикл.

Добавление ядра Linux

Ядро Linux обычно хранится в каталоге /boot и представляет собой файл с названием «vmlinuz-XXX», где XXX — версия ядра. Добавить текущее ядро в создаваемый образ можно командой:

После этого в каталоге iso появится файл linux. Далее необходимо пересобрать образ командой (1), указанной выше в разделе «Создание образа и диска».

Чтобы не зависеть от версии ядра, указанной здесь командой « cp $(ls -t … » ядро не просто копируется, а переименовывается в linux без указания версии. Именно это имя файла указано вторым элементом в файлах grub.cfg и syslinux.cfg в строке « linux linux ». Если в каталоге /boot имеется несколько ядер, можно использовать любое, главное, запомнить его версию. Далее в статье будет рассматриваться использование текущего ядра.

После добавления ядра загрузчики UEFI и BIOS перестанут ругаться на его отсутствие и запустят его выполнение. В свою очередь ядро успешно запустится и, в условиях отсутствия файловой системы, выдаст сообщение об ошибке «Kernel Panic. Unable to mount root fs».

Добавление файловой системы

В данной статье в качестве корневой файловой системы рассматривается использование временной файловой системы, которая размещается в оперативной памяти (initramfs). Для ее создания необходимо создать в каталоге livecd подкаталог initramfs, в нем пустой файл с названием init. Файл с таким названием почему-то обязательно должен быть и находиться в корне файловой системы, иначе ядро проигнорирует такую initramfs. Далее необходимо выполнить команды:

В результате в подкаталоге iso появится файл init.ram. Его необходимо указать в файле grub.cfg, добавив перед закрывающей фигурной скобкой строку « initrd /init.ram ».

В конец файла syslinux.cfg нужно добавить строку « initrd init.ram» .

После этого необходимо пересобрать образ командой (1), указанной выше в разделе «Создание образа и диска». Теперь при загрузке Linux будет сообщать об ошибке «Kernel Panic. No working init found». В данном случае это сообщение означает, что ядро успешно запустилось и даже признало файловую систему initramfs, нашло в нем файл init и попыталось его запустить, но не получилось, потому что этой пустой файл.

Минимальный работающий init

В каталоге initramfs нужно создать следующую структуру файлов:

В initramfs должен получиться один подкаталог lib с двумя файлами в нем, одна символическая ссылка lib64 и один файл init. В скобках указано, какие файлы нужно взять из текущего работающего компьютера. Файлы должны быть исполняемыми. Далее необходимо пересобрать образ командами:

Далее эти команды будут называться командой (2).

Если все сделать правильно, получится минимальный работающий образ с командной строкой. В моем случае его размер составил чуть более 12 Мб. В командной строке не работают никакие команды, они будут добавлены позже. Если по-прежнему отображается сообщение об ошибке «No working init found», необходимо проверить:

Названия файлов, каталога и символической ссылки.

Права доступа: в каталог можно зайти, файлы должны быть исполняемыми.

Файлы предназначены для одной архитектуры x86_64. На некоторых компьютерах могут одновременно быть установлены 32 и 64 битные версии программ и библиотек. Узнать архитектуру файла можно командой objdump -p <имя файла> . В начале вывода должна быть строка типа «формат файла elf64-x86-64».

Если завершить работу командной строки командой exit , ядро выдаст ошибку «Kernel Panic. Attempted to kill init». Командная строка была первым и единственным процессом (PID=1) и после его завершения ядро не знает, что делать дальше.

Наполнение initfamfs простыми программами

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

По сложившейся традиции программы размещаются в каталоге bin. В каталоге initramfs нужно создать подкаталог bin и скопировать туда файл ls из одноименного каталога работающей системы.

Многие программы в своей работе используют вспомогательные so-файлы (программные библиотеки), без которых они не запустятся. Узнать, какие so-файлы нужны программе, можно с помощью уже упоминавшейся команды objdump -p <имя файла> .

Вывод команды « objdump -p ls »:

Файл libc.so.6 в initfamfs уже есть, а вот файл libselinux.so.1 нужно найти на работающем компьютере и скопировать в каталог initramfs/lib к другим so-файлам. Список каталогов, в которых нужно искать требуемый so-файл, можно взять из файлов /etc/ld.so.conf и /etc/ ld.so.conf.d/*. Библиотека libselinux.so.1 в свою очередь также зависит от других библиотек. С помощью команды objdump -p libselinux.so.1 можно узнать, что кроме уже имеющихся файлов libc.so.6 и ld-linux-x86-64.so.2 дополнительно требуется libpcre2-8.so.0. На работающей системе этот файл представляет собой символическую ссылку на файл libpcre2-8.so.0.11.0. При копировании в initramfs можно оставить имеющуюся структуру, т.е. скопировать libpcre2-8.so.0 как символическую ссылку и далее скопировать файл libpcre2-8.so.0.11.0. Можно поступить по-другому и скопировать файл libpcre2-8.so.0.11.0, переименовав его в libpcre2-8.so.0. Команда objdump -p libpcre2-8.so.0 показывает, что каких-либо других so-файлов, отсутствующих в initramfs, больше не требуется. В результате должна получиться следующая структура каталога initramfs:

В скобках указана символьная ссылка.

При копировании so-файлов нужно не забывать проверять их архитектуру, если на компьютере есть файлы разных архитектур.

С помощью команды (2) из раздела «Минимальный работающий init» можно пересоздать образ, запустить и убедиться, что команда ls работает.

Автоматизация наполнения initfamfs простыми программами

В предыдущем разделе показано, что добавление простых программ требует рекурсивного поиска и копирования дополнительных so-файлов. Эту задачу можно автоматизировать, написав свой скрипт, либо используя программу copyso. При ее использовании достаточно указать требуемые для копирования программы, после чего выполнить еще несколько команд, чтобы сформировать оставшуюся часть структуры каталогов. В каталоге livecd необходимо заново создать пустой подкаталог initramfs и выполнить следующие команды:

Первая команда копирует программы dash, ls, ln, mkdir, cat, mount. Остальные нужны, чтобы правильно сформировать структуру каталогов.

Получившаяся структура каталогов

В скобках указаны символьные ссылки.

После этого можно командой (2) из раздела «Минимальный работающий init» пересоздать образ, запустить и убедиться, что добавленные команды работают.

Добавление программ посложнее

Универсальный способ копирования сложных программ в initramfs предложить сложно. В самый неожиданный момент времени такая программа может обратиться к какому-нибудь файлу, который нигде не указан, но подразумевается автором программы и даже создается при штатной установке. Описываемый в статье способ подразумевает копирование существующих программ, а не их полноценную установку. Однако можно предложить способ, основанный на особенностях deb-пакетов в операционной системе Debian. В каталоге /var/lib/dpkg/info есть list-файлы для каждого установленного пакета. В этих list-файлах содержится перечень файлов, созданных при установке пакета. Не все из них являются обязательными, но, как сказано выше, с каждым нужно разбираться индивидуально либо копировать все, что есть. Для копирования всего пакета можно использовать следующий скрипт:

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

Если добавить таким образом Midnight Commander (команда mc ), можно убедиться, что он запустится (условно). Скорее всего, таким вы его еще не видели.

Добавление модулей ядра

Модули ядра это файлы с расширением «ko», которые расположены в подкаталогах каталога /lib/modules/<версия ядра>/. Есть модули для работы с жесткими дисками, с разными файловыми системами, с устройствами USB и т.д. Составление перечня модулей, необходимых для каждого конкретного устройства, в данной статье не рассматривается. Предполагается, читатель знает, какие именно модули ему нужны.

Доя добавления нужных модулей в initramfs нужно скопировать их в формируемую файловую структуру с сохранением пути. Например, модуль для работы с жесткими дисками /lib/modules/6.0.0-6-amd64/kernel/drivers/scsi/sd_mod.ko нужно скопировать в initramfs/lib/modules/6.0.0-6-amd64/kernel/drivers/scsi/sd_mod.ko, создав недостающие каталоги (на момент написания статьи использовалось ядро версии 6.0.0-6-amd64).

Как и so-файлы, ko-файлы могут требовать для своей работы наличия других ko-файлов. Эти зависимости указаны в файле /lib/modules/<version>/modules.dep. В частности, sd_mod.ko зависит от scsi_mod.ko, scsi_common.ko, crc64.ko и других. Их также необходимо скопировать с сохранением пути и учетом того, что они, в свою очередь, могут зависеть от других модулей и так далее рекурсивно.

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

Первая команда копирует модули ahci и sd_mod в initramfs. Вторая копирует информацию о модулях (функционале ядра), которые уже встроены в ядро. Последняя команда создает информацию о зависимостях модулей друг от друга. Стоит отметить, что речь идет только о дисках SATA. При работе в VMware, если жесткий диск представлен как SCSI, дополнительно необходим модуль mptspi. При работе с другими дисками, например NVMe, нужны свои модули. Также понадобится программа modprobe:

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

При использовании других типов дисков, отличных от SATA, необходимо загрузить соответствующие им модули. После выполнения указанных команд в каталоге /dev/ появятся устройства типа sda, sda1, sda2, обозначающие найденные жесткие диски и разделы на них. Для автоматической загрузки всех имеющихся модулей можно использовать команду:

Использующиеся здесь программы find и basename нужно заранее добавить в образ. Чтобы эта команда выполнялась автоматически, нужно создать загрузочный скрипт:

Этот скрипт нужно сохранить в файл initramfs/init вместо созданной ранее символической ссылки, и сделать его исполняемым.

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

Скрипт добавления популярных модулей

Если при загрузке отображаются такие сообщения:

Файл init действительно лежит в корне формируемой файловой системы и он исполняемый (chmod +x init);

Если это бинарный файл, то для него есть необходимые so-файлы;

Если это скрипт, то для него есть интерпретатор, указанный в первой строке и размещенный именно по указанному пути (напр. #!/usr/bin/dash);

Для интерпретатора есть необходимые so-файлы.

Настройка консоли

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

Чтобы в Midnight Commander заработали клавиши со стрелками, необходимо добавить в образ нужный файл командами:

Чтобы Midnight Commander стал цветным, необходимо добавить цвета в образ:

Чтобы Midnight Commander не выдавал сообщение «Pipe failed» при попытке редактирования файлов:

Чтобы отображался текст на русском языке, нужно добавить русский шрифт:

а в скрипт «init» добавить команду загрузки шрифта:

Чтобы можно было вводить с клавиатуры текст на русском языке, нужно добавить русскую раскладку клавиатуры:

а в скрипт «init» добавить команду загрузки этой раскладки:

Чтобы в командной строке работали клавиши со стрелками, нужно вместо dash использовать bash.

Чтобы отображались имена файлов на русском языке, нужно добавить в образ локаль:

а в скрипт «init» добавить команду загрузки локали:

Итого

На основе представленной информации создан небольшой набор скриптов (2 шт.) для создания загрузочного диска. Для работы с ними необходимо:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *