ΠΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ.
1. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΡΡΠΎΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ°Π· ΠΠ€Π‘. Π Π°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dd. ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π±Π»ΠΎΠΊΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ 512 Π±Π°ΠΉΡΠΎΠ²) ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΡΡΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ /dev/zero.
Π€Π°ΠΉΠ» disk-image ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10 ΠΠ±Π°ΠΉΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
% dd if=/dev/zero of=/trap/disk-image count=20480
20480+0 records in
20480+0 records out
% ls -l /tmp/disk-image
-rw-rw---- 1 root root 10485760 Mar 8 01:56 /trap/disk-image
2. Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ Π±Π°ΠΉΡΠ°ΠΌΠΈ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π² Π½Π΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ. ΠΠΎΠΌΠ°Π½Π΄Π° mke2fs ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠ° ext2 (ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΆΠ΅ΡΡΠΊΠΈΡ Π΄ΠΈΡΠΊΠ°Ρ Linux-ΡΠΈΡΡΠ΅ΠΌ). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π»ΠΎΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΎΠ½Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅:
% mke2fs -q /tmp/disk-image
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
disk-image is not a block special device.
Proceed anyway? (y,n) y
ΠΠΏΡΠΈΡ -q ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΉΠ» disk-image ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ» ΠΆΠ΅ΡΡΠΊΠΈΠΉ Π΄ΠΈΡΠΊ Π΅ΠΌΠΊΠΎΡΡΡΡ 10 ΠΠ±Π°ΠΉΡ.
3. Π‘ΠΌΠΎΠ½ΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mount, ΡΠΊΠ°Π·Π°Π² ΡΠ°ΠΉΠ» ΠΎΠ±ΡΠ°Π·Π° Π΄ΠΈΡΠΊΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°ΡΡ ΠΎΠΏΡΠΈΡ -ΠΎ loop=ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ_ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ_ΡΠ²ΡΠ·ΠΈ. ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΏΠ΅ΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /tmp/virtual-fs, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½Π΅Ρ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ€Π‘.
% mkdir /tmp/virtual-fs
% mount -ΠΎ loop=/dev/loop0 /tmp/disk-image /tmp/virtual-fs
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°Π· Π΄ΠΈΡΠΊΠ° ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΠΆΠ΅ΡΡΠΊΠΎΠΌΡ Π΄ΠΈΡΠΊΡ Π΅ΠΌΠΊΠΎΡΡΡΡ 10 ΠΠ±Π°ΠΉΡ.
% df -h /tmp/virtual-fs
Filesystem Size Used Avail Use% Mounted on
/tmp/disk-image 9.7M 13k 9.2M 0% /tmp/virtual-fs
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
% cd /tmp/virtual-fs
% echo 'Hello, world!' > test.txt
% ls -l total 13
drwxr-xr-x 2 root root 12288 Mar 8 02:00 lost+found
-rw-rw---- 1 root root 14 Mar 8 02:12 test.txt
% cat test.txt
Hello, world!
ΠΠ°ΡΠ°Π»ΠΎΠ³ lost+found Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ mke2fs.[21]
ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ:
% cd /tmp
% umount /tmp/virtual-fs
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΡΠ°ΠΉΠ» disk-image ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΠ€Π‘. ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌ β Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½Π° Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
Π€Π°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Ρ Π½ΡΠ»Ρ, Π° ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°. ΠΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΅ΡΡΡ IDE-Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄ CD-ROM, Π΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ /dev/hda. ΠΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π΄Π»Ρ SCSI-Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ: /dev/scd0. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ»ΠΊΠ° /dev/cdrom. Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΎ Π·Π° Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄ΠΎΠΌ CDROM, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» /etc/fstab.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² ΡΠ°ΠΉΠ». Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΏΠΎΠ»Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°, Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
% cp /dev/cdrom /tmp/cdrom-image
Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΅ΠΌΠΊΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π· ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ Π² Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /mnt/cdrom:
% mount -ΠΎ loop=/dev/loop0 /tmp/cdrom-image /mnt/cdrom
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΠ°Π· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠ΅, Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΡ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ iso9660.
6.6. ΠΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mount Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π½ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ΄Π½Π° ΠΈΠ· ΡΡΡΠΎΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
none on /dev/pts type devpts (rw,gid=5,mode=620)
ΠΠ½Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° devpts ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /dev/pts. ΠΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Π½ΠΈ Ρ ΠΊΠ°ΠΊΠΈΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ Linux ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ /proc (ΠΎ Π½Π΅ΠΉ ΠΏΠΎΠΉΠ΄Π΅Ρ ΡΠ΅ΡΡ Π² Π³Π»Π°Π²Π΅ 7, ''Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° /proc").
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ /dev ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /dev/pts ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ³ΠΎ "Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅" ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΎΡΡΠ°ΠΆΠ°Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°ΠΌ. ΠΠ‘ Linux ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ /dev/pts. ΠΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ: ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠ΅ΠΊΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ. ΠΠΎΠΌΠ΅Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /dev/pts.
6.6.1. ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ
Π£Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΎ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ps. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ Π² ΠΎΠΏΡΠΈΠΈ -ΠΎ ΡΡΠΎΠ»Π±Π΅Ρ tty, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΠΎΡΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°:
% ps -o pid,tty,cmd
PID TTY CMD
28832 pts/4 bash
29287 pts/4 ps -o pid,tty,cmd
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΎΠΊΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π» 4.
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /dev/pts:
% ls -l /dev/pts/4
crw--w---- 1 samuel tty 136, 4 Mar 8 02:56 /dev/pts/4
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π» β ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π° Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π»Π°Π΄Π΅Π»Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π».
Π‘ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π° ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΡΠΊΡΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ps -o pid,tty,cmd. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Π½Π°ΠΏΡΠ°Π²ΡΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ 7, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ°ΠΊΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
% echo "Hello, other window!" > /dev/pts/7
ΠΠ°Π΄Π°Π½Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅. ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ, Π·Π°ΠΏΠΈΡΡ 7 ΠΈΡΡΠ΅Π·Π½Π΅Ρ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /dev/pts.
ΠΡΠ»ΠΈ Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ps Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π΅ΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π° Π½Π΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ΅ΡΠΌΠΈΠ½Π°Π»:
% ps -ΠΎ pid,tty,cmd
PID TTY CMD
29325 tty1 -bash
29353 tty1 ps -o pid,tty,cmd
6.7. Π€ΡΠ½ΠΊΡΠΈΡ ioctl()
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ioctl() β ΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°ΠΉΠ»Π° ΡΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ. ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΡΡΠΎ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΠΎΡΠ°, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. Π Π°Π·Π½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°ΠΏΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ioctl() ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ΄Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π½Π° man-ΡΡΡΠ°Π½ΠΈΡΠ΅ ioctl_list. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ioctl() Π½ΡΠΆΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ Π²ΡΡ ΠΎΠ΄ΡΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π½Π°ΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 6.2. (cdrom-eject.c) ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°#include <fcntl.h>
#include <linux/cdrom.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
/* ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. */
int fd = open(argv[1], O_RDONLY);
/* ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°. */
ioctl(fd, CDROMEJECT);
/* ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π°. */
close(fd);
return 0;
}
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.2 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΠΎΡΠΎΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ° ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π° CD-ROM. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ: ΠΈΠΌΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π° CD-ROM. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ioctl() Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ° CDROMEJECT. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² ΡΠ°ΠΉΠ»Π΅ <linux/cdrom.h> ΠΈ ΡΠ»ΡΠΆΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΄Π°.