Снять образ с загрузочного компакт-диска, изменить файлы в образе и записать результат на другой компакт-диск.
Решение
Подготовка
Снимаем образ с компакт-диска. Работа с образом быстрее, да и резервная копия никогда не помешает.
Создаём папку для монтирования образа, аналог «подключения виртуального диска» в виндах. В зависимости от места создания, возможно, придётся делать от имени суперпользователя. Лично у меня эта папка была создана однократно и именно для таких целей — для подключения образов дисков.
Монтируем образ компакт-диска в папку. Только от имени суперпользователя.
Создаём папку для копирования содержимого диска, в которой будем изменять файлы. Путь к 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 символов. Нет ограничения на вложенные папки. Символа «.» (точка) в именах файлов не носит особого значения.
Общее ограничение 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
так грузится в виртуалке, сейчас на реальную флешку запишу и проверю
нет, с флешки не хочет грузиться, хотя она и определяется как 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
а не просто написал как предыдущие советчики ?
Предыдущие советчики тебе всё правильно написали, просто ты думать не хочешь, а ждёшь, что тебе напишут что делать как для ребёнка. Так не получится, включай голову, ну или предлагай оплату за чтение с тобой по ролям документации и объяснение.
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 смысла нет.
Ну и как я тебе уже сказал, начинай думать, включай голову, ну или предоставляй оплату, что бы кто-либо думал за тебя.
Ну и сходи ещё раз перечитай моё прошлое сообщение.