Fichiers ISO 9660

Mise à jour : Debian 11.2 / Bullseye

On s'intéresse ici aux fichiers image au format ISO9660, principalement ceux destinés à l'installation des distributions linux : affichage, vérification des propriétés, utilisation comme cdrom virtuel avec qemu, ...

Sommaire

1 - Exploration

$ cp debian-11.1.0-amd64-netinst.iso cd.iso

1.1 - Méthode par extraction en ligne de commande

$ sudo aptitude install p7zip-full
$ 7z l cd.iso
.....

Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2021-10-09 11:10:23 D.... .disk
2021-10-09 11:09:14 ..... 5 5 .disk/base_components
2021-10-09 11:10:01 ..... 0 0 .disk/base_installable
2021-10-09 11:09:14 ..... 13 13 .disk/cd_type
2021-10-09 11:09:14 ..... 74 74 .disk/info
2021-10-09 11:10:23 ..... 1103 1103 .disk/mkisofs
2021-10-09 11:09:14 ..... 34 34 .disk/udeb_include
2021-10-09 11:09:18 D.... EFI
2021-10-09 11:09:18 D.... EFI/boot
.......
..... 2048 2048 [BOOT]/1-Boot-NoEmul.img
..... 2654208 2654208 [BOOT]/2-Boot-NoEmul.img
------------------- ----- ------------ ------------ ------------------------
2021-10-09 11:10:23 453210019 453210019 1140 files, 458 folders

$ mkdir cd_extract
$ mv cd.iso cd_extract/
$ cd cd_extract/
$ 7z x cd.iso

$ ls
autorun.inf dists g2ldr.mbr pics README.source
boot doc install pool README.txt
'[BOOT]' EFI install.amd README.html setup.exe
cd.iso firmware isolinux README.mirrors.html tools
css g2ldr md5sum.txt README.mirrors.txt win32-loader.ini
$ cat README.txt 
Debian GNU/Linux 11.1.0 "Bullseye" - Official amd64 NETINST
20211009-10:07
........

1.2 - Méthode par boucle de montage en ligne de commande

$ sudo mount -o loop cd.iso /mnt
mount: /mnt: Attention: périphérique protégé en écriture, monté en lecture seule.
$ ls /mnt
autorun.inf doc install pool README.txt
boot EFI install.amd README.html setup.exe
......

$ cat /mnt/.disk/info
Debian GNU/Linux 11.1.0 "Bullseye" - Official amd64 NETINST 20211009-10:0721:23

1.3 - Extraction en mode graphique

$ sudo aptitude install file-roller
$ file-roller cd.iso

2 - Informations

2.1 - Taille du cd virtuel

$ ls -ln cd.iso 
-rw-r--r-- 1 1000 1000 396361728 18 déc. 21:21 cd.iso

# équivalent à
$ du --apparent-size --block-size=1 cd.iso
396361728 cd.iso

# équivalent à
$ du -b cd.iso
396361728 cd.iso
$ ls -lnh cd.iso
-rw-r--r-- 1 1000 1000 378M 18 déc. 21:21 cd.iso

# équivalent à
$ du --apparent-size --block-size=h cd.iso
378M cd.iso

# équivalent à
$ du --apparent-size -Bh cd.iso
378M cd.iso
$ qemu-img info cd.iso
image: cd.iso
file format: raw
virtual size: 378 MiB (396361728 bytes)
disk size: 378 MiB

2.2 - Informations détaillées sur le formatage 9660

$ isoinfo -d -i cd.iso 
CD-ROM is in ISO 9660 format
System id:
Volume id: Debian buster-DI-rc1 amd64 n
Volume set id:
Publisher id:
Data preparer id: XORRISO-1.4.6 2016.09.16.133001, LIBISOBURN-1.4.6, LIBISOFS-1.4.6, LIBBURN-1.4.6
Application id:
Copyright File id:
Abstract File id:
Bibliographic File id:
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 195584
El Torito VD version 1 found, boot catalog is in sector 1018
Joliet with UCS level 3 found
Rock Ridge signatures version 1 found
Eltorito validation header:
Hid 1
Arch 0 (x86)
ID ''
Key 55 AA
Eltorito defaultboot header:
Bootid 88 (bootable)
Boot media 0 (No Emulation Boot)
Load segment 0
Sys type 0
Nsect 4
Bootoff 92B 2347

2.3 - Images hybrides

$ sudo wipefs -n cd.iso 
DEVICE OFFSET TYPE UUID LABEL
cd.iso 0x8001 iso9660 2021-10-09-10-10-23-00 Debian 11.1.0 amd64 n
cd.iso 0x1fe dos
cd.iso 0x200 gpt
cd.iso 0x179ffe00 gpt
cd.iso 0x0 mac
$ head -c 512 cd.iso |hexdump -C
00000000 45 52 08 00 00 00 90 90 00 00 00 00 00 00 00 00 |ER..............|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 33 ed fa 8e d5 bc 00 7c fb fc 66 31 db 66 31 c9 |3......|..f1.f1.|
00000030 66 53 66 51 06 57 8e dd 8e c5 52 be 00 7c bf 00 |fSfQ.W....R..|..|
00000040 06 b9 00 01 f3 a5 ea 4b 06 00 00 52 b4 41 bb aa |.......K...R.A..|
00000050 55 31 c9 30 f6 f9 cd 13 72 16 81 fb 55 aa 75 10 |U1.0....r...U.u.|
00000060 83 e1 01 74 0b 66 c7 06 f3 06 b4 42 eb 15 eb 02 |...t.f.....B....|
00000070 31 c9 5a 51 b4 08 cd 13 5b 0f b6 c6 40 50 83 e1 |1.ZQ....[...@P..|
00000080 3f 51 f7 e1 53 52 50 bb 00 7c b9 04 00 66 a1 b0 |?Q..SRP..|...f..|
00000090 07 e8 44 00 0f 82 80 00 66 40 80 c7 02 e2 f2 66 |..D.....f@.....f|
000000a0 81 3e 40 7c fb c0 78 70 75 09 fa bc ec 7b ea 44 |.>@|..xpu....{.D|
000000b0 7c 00 00 e8 83 00 69 73 6f 6c 69 6e 75 78 2e 62 ||.....isolinux.b|
000000c0 69 6e 20 6d 69 73 73 69 6e 67 20 6f 72 20 63 6f |in missing or co|
000000d0 72 72 75 70 74 2e 0d 0a 66 60 66 31 d2 66 03 06 |rrupt...f`f1.f..|
000000e0 f8 7b 66 13 16 fc 7b 66 52 66 50 06 53 6a 01 6a |.{f...{fRfP.Sj.j|
000000f0 10 89 e6 66 f7 36 e8 7b c0 e4 06 88 e1 88 c5 92 |...f.6.{........|
00000100 f6 36 ee 7b 88 c6 08 e1 41 b8 01 02 8a 16 f2 7b |.6.{....A......{|
00000110 cd 13 8d 64 10 66 61 c3 e8 1e 00 4f 70 65 72 61 |...d.fa....Opera|
00000120 74 69 6e 67 20 73 79 73 74 65 6d 20 6c 6f 61 64 |ting system load|
00000130 20 65 72 72 6f 72 2e 0d 0a 5e ac b4 0e 8a 3e 62 | error...^....>b|
00000140 04 b3 07 cd 10 3c 0a 75 f1 cd 18 f4 eb fd 00 00 |.....<.u........|
00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 1c 24 00 00 00 00 00 00 70 d4 3e 60 00 00 80 00 |.$......p.>`....|
000001c0 01 00 00 3f 60 79 00 00 00 00 00 d0 0b 00 00 fe |...?`y..........|
000001d0 ff ff ef fe ff ff dc 0f 00 00 40 14 00 00 00 00 |..........@.....|
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|

3 - Utilisation

3.1 - CD virtuel

3.2 - Création d'un media amovible

3.3 - Modification du contenu

$ sudo mount -o loop cd.iso /mnt

$ mkdir iso

$ rsync -a -H -exclude=TRANS.TBL /mnt/ iso

$ chmod -R +w-- iso

Annexe - Création d'une image à partir d'un médium

$ sudo isoinfo -d -i /dev/sdb |grep -i -E "block size|volume size"
Logical block size is: 2048
Volume size is: 192000
$ sudo dd if=/dev/sdb of=cd.iso bs=2048 count=192000 status=progress conv=fsync iflag=fullblock
$ ls -l cd.iso 
-rw-r--r-- 1 root root 393216000 févr. 27 16:41 cd.iso

$ sudo chown <user>:<user> cd.iso