diff options
Diffstat (limited to 'LINUX/iso fs _ ISO9660.md')
| -rw-r--r-- | LINUX/iso fs _ ISO9660.md | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/LINUX/iso fs _ ISO9660.md b/LINUX/iso fs _ ISO9660.md new file mode 100644 index 0000000..0ca6fa5 --- /dev/null +++ b/LINUX/iso fs _ ISO9660.md @@ -0,0 +1,46 @@ +Так, а чем по своей сути вообще является 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**" образ.
\ No newline at end of file |
