Linux add files to iso

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

Решение

Подготовка

Снимаем образ с компакт-диска. Работа с образом быстрее, да и резервная копия никогда не помешает.

Создаём папку для монтирования образа, аналог «подключения виртуального диска» в виндах. В зависимости от места создания, возможно, придётся делать от имени суперпользователя. Лично у меня эта папка была создана однократно и именно для таких целей — для подключения образов дисков.

Монтируем образ компакт-диска в папку. Только от имени суперпользователя.

Создаём папку для копирования содержимого диска, в которой будем изменять файлы. Путь к cd-dir должен быть указан либополный, либо относительно текущего каталога. У меня обычно это папка в домашнем каталоге.

Копируем файлы с образа в папку.

Размонтируем образ, он нам больше не нужен. Тоже от имени суперпользователя. Если этого не сделать сейчас, образ будет автоматически размонтирован при перезагрузке.

Изменение содержимого

Всё содержимое компакт-диска сейчас у нас находится в папке cd-dir. Редактируем его по усмотрению.

Сборка каталога в образ

А вот эта задача уже посложнее. Стандарт загрузочного компакт-диска подразумевает наличие на нём двух файлов: загрузочного каталога и собственно образа загрузчика.

Например, в Ubuntu 8.04 эти два файла находятся в папке isolinux. Образ загрузчика — isolinux.bin, загрузочный каталог — boot.cat.

Загрузочный каталог — файл размером 2 килобайта, его содержимое роли не играет.
Особый интерес представляет образ загрузчика.

Немного теории.
BIOS не умеет грузиться с CD-ROMа, но умеет считывать с него информацию. Специально для загрузки с компакт-дисков была введена спецификация El Torito, El Torito Bootable CD Specification. Суть её в следующем: BIOS сканирует все дисковые системы компьютера, и по стандарту ISO9660 (формат хранения данных на компакт-дисках), эмулирует образ загрузчика как жёсткий диск (или флоппик), после чего происходит загрузка с этого диска в обычном режиме.

Нужно найти оба этих файла, после чего собрать образ компакт-диска из каталога:

mkisofs -r -iso-level 4 -b boot.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o cdimage-new.iso cd-dir/

boot.bin — полный путь к образу загрузчика относительно корня компакт-диска
boot.cat — полный путь к загрузочному каталогу относительно корня компакт-диска
-no-emul-boot — нужен в том случае, когда образ загрузчика не является точным образом загрузочного флоппи, включая размер
-boot-load-size 4 — задаёт число загрузочных секторов, ключ нужен для совместимости с «глючными» биосами, которых много. Если параметр будет не 4, то некоторые экземпляры откажутся запускаться
-boot-info-table — также для совместимости

Получившийся диск записываем командой:

Умолчания

/dev/cdrom — файл-устройство привода компакт-дисков
cdimage-orig.iso — образ диска до редактирования
cdimage-new.iso — образ отредактированного диска
/mnt/vcd/ — каталог для монтирования образов
cd-dir — каталог для редактирования содержимого диска

Дополнительно

ISO9660 — стандарт файловой системы для хранения данных на дисках CD. Формат введён для независимости доступа к дискам от рабочей платформы (Windows, Linux, и т.д.)

Есть несколько уровней спецификации:

1. Формат имён файлов — 8.3, как в DOS. Не больше 8 символов в имени каталога. Не больше 8 вложенных каталогов. В именах используются только буквы латинского алфавита. Фрагментация файлов не допускается.
2. Имена файлов ограничены 32 символами. Набор символов в именах неограничен.
3. Допускается фрагментация файлов (необходимо для пакетной или инкрементной записи CD).
4. (ISO9660-2) Максимальная длина пути — 207 символов. Нет ограничения на вложенные папки. Символа «.» (точка) в именах файлов не носит особого значения.

Читайте также:  How to delete environment variable linux

Общее ограничение ISO9660 — размер файла не может превышать 2GB.

Расширение стандарта, называемое Joliet, добавляет поддержку длинных имён файлов и не-ASCII символов в именах.

Источник

интегрировать в образ ubuntu свои файлы

Есть ubuntu-14.04-desktop-i386.iso, необходимо добавить в него каталог с файлами. Образ должен остаться загрузочным (с него будет производиться установка как и обычно)
Как это сделать ?

Распаковать iso образ, т.е. смонтировать и скопировать с него в отдельную директорию все файлы.
Смонтировать squashfs образ, скопировать с него куда-либо все файлы, поместить в директорию со скопированными файлами файлы, которые вы хотите добавить.
Посредством mksquashfs собрарать новый squashfs образ из файлов в директории, куда были скопированы файлы из squashfs образа и скопированы целевые файлы.
Поместить новый squashfs образ, естественно с тем же именем, что и исходный с заменой, в директорию, куда скопированы файлы из iso образа.
Посредством mkisofs или аналогичной команды соберите загрузочный iso образ.

Более детально по работе с mksquashfs читайте

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

был же какой-то специальный софт для создания васян-сборочек

Я и написал soft для модификции файлов в установочном диске. А так, был проект remastersys для создания установочного iso диска на основе установленной Ubuntu, но его разработку забросил автор.

А что вас не устраивает в написанном выше? Это как раз те инструменты, которыми и собираются LiveCD диски.

меня устраивает, но я не ТС

гдето так я и предполагал, но squashfs мне наверно не нужен, а самый интересный момент с загрузчиком и непонятен )

но squashfs мне наверно не нужен

Что же вы тогда хотите изменить в iso образе? Как бы вся запускаемая система и находится в squashfs образе.

а самый интересный момент с загрузчиком и непонятен )

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

Именно так это и делается.

Что же вы тогда хотите изменить в iso образе?

ничего не хочу изменить, надо добавить
не вижу в ubuntu-14.04-desktop-i386.iso squashfs образов

Ну так вперёд к чтению документации по загрузчику,

ага, спасибо за совет, сходил в гугл

смог распаковать образ и загрузчик с помощью 7z

обратно образ собирается, но загрузчик не подцепляется — при загрузке пишет img cheksumm error

команда такая: mkisofs -v -o ubuntu-14.04-desktop-i386-my.iso -JR -iso-level 3 -joliet-long -l -no-emul-boot -boot-load-size 4 -b boot/Bootable_NoEmulation.img ./CD

гдето тут я ошибся, но пока не пойму где

mkisofs -v -o ubuntu-14.04-desktop-i386-my.iso -cache-inodes -r -J -l -b «isolinux/isolinux.bin» -c «isolinux/boot.cat» -no-emul-boot -boot-load-size 4 -boot-info-table ./CD

Читайте также:  Удаление неиспользуемых ядер astra linux

так грузится в виртуалке, сейчас на реальную флешку запишу и проверю

нет, с флешки не хочет грузиться, хотя она и определяется как CDROM

но и собранный iso в виртуалке грузится «не до конца», через какоето время начинает ругаться initramfs что не может найти live file system

более простая задача: есть образ ubuntu-14.04-desktop-i386.iso, распаковываю его командой 7z x ubuntu-14.04-desktop-i386.iso
как собрать обратно (ничего не меняя) ?
команду сборки брал из https://help.ubuntu.com/community/LiveCDCustomization
новый образ собирается и в виртуалке грузится
но если его записать на флешку (через dd), то с флешки не грузится
с исходного ubuntu-14.04-desktop-i386.iso флешка грузится

isoinfo показывает для нового образа:
El Torito VD version 1 found, boot catalog is in sector 133
тогда как для исходного:
El Torito VD version 1 found, boot catalog is in sector 240

Зачем тебе его распаковывать и запаковывать обратно? Открой тем же file-roller и просто добавь нужные файлы.

и загрузчик будет ок и ты пробовал, а не просто написал как предыдущие советчики ?

Ты сам-то пробовал? Всё должно работать.

крусадером попробовал, но и не надеялся что заработает
file-roller с iso работает только чтение: http://en.wikipedia.org/wiki/Comparison_of_file_archivers

ничего не хочу изменить, надо добавить

А добавление чего-либо во что-либо это разве не изменение исходного чего-либо?

не вижу в ubuntu-14.04-desktop-i386.iso squashfs образов

Поищи самый большой по размеру файл в образе — это и будет squashfs образ. Можешь так же взять и распаковать initramfs и посмотреть имя squashfs файла в сценарии init в initramfs.

так грузится в виртуалке, сейчас на реальную флешку запишу и проверю

Скажи, зачем ты собираешь iso образ, если собираешься грузить систему с флешки? Ты в курсе, что ты можешь попросту скопировать на флешку все файлы, установить на флешку любой загрузчик, хоть syslinux, хоть grub2, написать соответствующий конфиг для загрузчика и всё будет готово.

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

но и собранный iso в виртуалке грузится «не до конца», через какоето время начинает ругаться initramfs что не может найти live file system

Кхм, как бы весь нюанс в том, что тебе нужно разобраться как сценарий init в initramfs ищет файловую систему (носитель), который он должен смонтировать и на котором находится squashfs образ, который он будет монтировать вторым этапом. Скорее всего у файловой системы в iso образ должна быть определённая метка (label). Распакую initramfs и посмотри что делается в сценарии init, как он определяет нужную ему файловую систему. Ну либо читай документацию по initramfs из состава Ubuntu, там есть прочие параметр передаваемые ядру, которые обрабатывает сценарий init и посредством которых ты можешь указать где ему искать squashfs образ и имя этого образа.

но если его записать на флешку (через dd), то с флешки не грузится с исходного ubuntu-14.04-desktop-i386.iso флешка грузится

А чего ты хочешь, что бы iso образ можно было записать командой dd на флешку и он грузился с неё после этого, то iso образ в начале нужно сделать гибридным (hybrid), в составе пакета syslinux есть соответствующая утилита.

isoinfo показывает для нового образа: El Torito VD version 1 found, boot catalog is in sector 133 тогда как для исходного: El Torito VD version 1 found, boot catalog is in sector 240

а не просто написал как предыдущие советчики ?

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

Читайте также:  Установка нескольких ос linux windows

kostik87 ★★★★★ ( 16.05.15 16:07:31 MSK )
Последнее исправление: kostik87 16.05.15 16:10:42 MSK (всего исправлений: 1)

remastersys закрылся и не развивается, где-то ещё во времена Ubuntu 12.x, так что современный дистрибутив им не соберёшь, к тому же ТС так и не написал что он конкретно хочет. С другой стороны приведённых данных и так с лихвой хватает, надо лишь прочитать указанные материалы и подумать.

file-roller с iso работает только чтение

Кто тебе такую глупость сказал? Лучше закрой википедию, открой file-roller и сам проверь.

Предыдущие советчики тебе всё правильно написали, просто ты думать не хочешь, а ждёшь, что тебе напишут что делать как для ребёнка.

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

я не использую гноме, проверить мне сложно это быстро
но проверю в понедельник

ты столько понаписал, а конкретно почему образ не создается у меня и так не ответил, хотя я привел полную команду создания (а значит и маны я почитал и в гугле был)

меня устроит команда, которой собирался исходный образ ubuntu-14.04-desktop-i386.iso разработчиками ubuntu, но где ее искать я пока не знаю

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

Где же он у тебя не создаётся? Ты же сам написал команду, которой создавал iso образ:

x905

поправил команду:

mkisofs -v -o ubuntu-14.04-desktop-i386-my.iso -cache-inodes -r -J -l -b «isolinux/isolinux.bin» -c «isolinux/boot.cat» -no-emul-boot -boot-load-size 4 -boot-info-table ./CD

так грузится в виртуалке, сейчас на реальную флешку запишу и проверю

Проверил команду, создал образ, только без первого ключа ‘-v’, в VirtualBox всё прекрасно загружается.

меня устроит команда, которой собирался исходный образ ubuntu-14.04-desktop-i386.iso разработчиками ubuntu, но где ее искать я пока не знаю

Обращайся к разработчикам, но они там собирают образ утилитой xorriso, что видно в выводе isoinfo.

Теперь к вопросу, что у тебя что-то не загружается. Я тебе ответил, что если ты хочешь записывать посредством dd свой собранный образ на флешки, то тебе его в начале нужно сделать гибридным, есть утилита isohybrid, а так же перловый скрипт isohybrid.pl. Вот пока ты не сделаешь образ гибридным записывать его на флешку посредством dd смысла нет.

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

Ну и сходи ещё раз перечитай моё прошлое сообщение.

Источник

Оцените статью
Adblock
detector