TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #205 7.67K
Как получить доступ к данным iso образа?

Когда я решал проблему с переделкой iso образа - первой ступенью была задача понять то, как можно получить доступ к его внутрянке. Тыкался-мыкался и что-то, вроде, понял) Об этом и поговорим.

Так, а чем по своей сути вообще является iso файл? Грубо говоря, это несжатый архив с точной копией данных блочного устройства (hdd, ssd, cd) в формате файловой системы ISO9660:


$ file linuxmint-22.1-xfce-64bit.iso

linuxmint-22.1-xfce-64bit.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) ... (bootable)


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

1) он представляет собой архив - его можно распаковать;
2) он содержит файловую систему ISO9660 - его можно монтировать;

Начнем с "распакоуки". Для этого можем воспользоваться утилитой 7z:


$ sudo apt install p7zip-full
$ 7z x linux*.iso -o./extract


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

Второй способ - монтировать образ и скопировать его содержимое.

В привычном для нас понимании, монтирование относится к блочным устройствам (usb, ssd, hdd), которые содержат определенную файловую систему (exFAT, ext, zfs). Такой механизм позволяет нам получить доступ к содержимому носителей.

Но вот в чем дело, iso файл не является блочным устройством и его нельзя просто так примонтировать... Ничего, есть решение - механизм loop device.

Loop device — это виртуальное блочное устройство, которое позволяет использовать обычный ресурс с файловой системой, как физический девайс. Через него можно смонтировать образ и получить доступ к его файловой системе.

Посмотреть то, какое устройство с каким ресурсом соотносится, можно через команду losetup:


$ sudo losetup -a
/dev/loop13: [64512]:2672215 (/path/to/output.iso)


Для того, чтобы создать и монтировать "loop device", используем mount:


$ sudo mount -o loop test.iso ./mnt_point


Теперь, т.к. файловая система ISO9660 является "read-only", нам нужно скопировать все содержимое образа в отдельный каталог:


$ mkdir new_mnt_point
$ cp -rT mnt_point new_mnt_point


Далее "по уму" редактируем образ и пересобираем его с помощью mkisofs:


$ sudo mkisofs -o ./new.iso -quiet -R -b boot/grub/bios.img -no-emul-boot -boot-load-size 4 -boot-info-table ./new_mnt_point


Если все сделано правильно, на выходе мы получим "bootable" образ.

LinuxCamp | #filesystem
  • 🔥 46
  • 👍 25
  • 👏 5
  • ❤ 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →