Диски, приводы CD DVD RW и файловые системы - dim13/lor GitHub Wiki

Как записать компакт-диск (CD-R/CD-RW/DVD-RW)?

Можно записывать диск из консоли, можно воспользоваться программой с графическим интерфейсом. Во втором случае обычно используются программы K3B для KDE и Gnomebaker и Brasero для Gnome, отличающиеся дружественным интерфейсом, посему вопросов по их использованию почти не возникает.

Запись из консоли немного сложнее. Для начала определимся - можно писать "на лету", а можно сначала собрать образ, а потом записать его.

При работе с cdrtools, чтобы записать компакт-диск с русскими названиями файлов, чтобы MS Windows видела русские буквы, нужно собрать образ следующим образом:

user@linux$ mkisofs -jcharset koi8-r /one_of_your_folder | cdrecord -опции

или

user@linux$ mkisofs -r -jcharset koi8-r -o /path/to/image.iso  /one_of_your_folder
user@linux$ cdrecord -опции /path/to/image.iso

Вышеприведенный пример работает для локали KOI8-R. Если у вас иная локаль, подставьте свое название!

У mkisofs опция -o указывает файл, в который будет записан образ. Опция -r почти наверняка нужна, без нее диск будет читабелен только под MS Windows. Опция -J при использовании -jcharset не нужна. Параметр у опции -jcharset - это кодировка (набранная в нижнем регистре), в которой "хранятся" имена записываемых файлов. Список поддерживаемых кодировок можно узнать из вывода mkisofs -jcharset help.

После создания образа его нужно записать с помощью программы cdrecord. Например, так:

user@localhost$ cdrecord dev=1,1,0 -dao -v image.iso

Если вы хотите писать на лету, то делаете простой pipeline:

user@linux$ mkisofs -v -jcharset koi8-r -r /one_of_your_folder | cdrecord -dao -v fs=6m speed=24 dev=1,1,0 -

Обратите внимание на "лишний" знак -. Он нужен для того, чтобы программа брала данные из потока, а не из конкретного файла.

Рекомендуем прочесть man cdrecord - там хорошее и подробное описание с объяснением команд.

Проверить качество записи можно несколькими способами.

Для записи DVD-дисков из консоли нужен или патченный cdrecord, или growisofs.

Запись других файловых систем на диск

Мой пишущий привод поддерживает технологию LightScribe. Могу ли я печатать эмблемы на диски прямо в Linux?

Да, безусловно, смотрите секцию LightScribe.

Нужно ли включать эмуляцию SCSI для пишущего привода CD/DVD-RW?

Только для ядер версий 2.4.х и ниже.

Как сделать, чтобы mkisofs писал файлы вместе с папками, а не скидывал все в корень?

Чтобы mkisofs сохраняя структуру, например, папки images и htmls, выполните:

user@linux$ mkisofs -v -J -r -graft-points images=~/images htmls=~/htmls | cdrecord ...

Как сделать, чтобы русские имена файлов, записанные K3B правильно читались на MS Windows?

В K3B такой проблемы при правильно настроенной локали не возникает, но нужно при выставлении настроек записи отметить в закладке "Файловая система" галочки "Создать расширение RockRidge" и "Создать расширение Joliet", после чего нажать кнопку "Сохранить настройки пользователя" - тогда вам не придется делать это каждый раз.

Как снять образ с компакт-диска (CD/DVD), с дискеты?

Воспользоваться командой dd, например

user@linux# dd if=/dev/cdrom of=cd.iso

снимает образ с cdrom (аналогично делается для дискеты, только устройство /dev/fd0). Таким образом можно снять образ с любого раздела с любой файловой системой. Или поставить cdrtools и использовать readcd, например

user@linux# readcd dev=0,0,0 speed=16 -clone

Устройство вычисляется таким же образом, как и в cdrecord (cdrecord -scanbus)

Еще можно пользоваться командой cat:

user@linux# cat /dev/cdrom > ~/cdrom.iso

Третий и самый быстрый способ

root@linux# isoinfo -d -i /dev/cdrom | grep size
Volume set size is: 1
Logical block size is: 2048
Volume size is: 2158464
root@linux# dd if=/dev/cdrom of=cd_dvd.iso bs=2048 count=2158464 conv=notrunc,noerror

Как смонтировать образ компакт-диска?

Есть два способа - один простой, другой чуть сложнее :) Для обоих в ядре нужна поддержка loopback

Первый способ смонтирует образ x.img с файловой системой fstype в директорию /mnt/x.

root@linux# mount -o loop -t fstype x.img /mnt/x
root@linux# umount /mnt/x

Второй способ состоит в том, чтобы через losetup ассоциировать образ с /dev/loopX:

root@linux# losetup /dev/loop1 x.img
root@linux# mount -t fstype /dev/loop1 /mnt/x
root@linux# umount /mnt/x
root@linux# losetup -d /dev/loop1

Этот способ дает возможность работать с образами, на которых несколько разделов - такое часто встречается у пользователей Apple. Для этого надо только знать смещение начала раздела, которое указывается параметром -o у losetup.

Как смонтировать образ в формате .img, .bin, .cue, .nrg, .ccd, .dmg? Как сконвертировать образ из формата .img, .bin, .cue, .nrg, .ccd в iso9660?

Для начала давайте разберемся с форматами.

Формат .img - понятие относительное, потому что в .img пишет и Nero и K3B, но в случае K3B это обычный iso9660 (часто такие файлы имеют расширения .iso).

Закрытые форматы .bin или .cue можно сконвертировать с помощью программы bchunk.

Образы .dmg можно сконвертировать утилитой dmg2iso или poweriso. Последней хорошо извлекаются файлы из сжатых .dmg образов.

Образы с clonecd (ccd) можно преобразовать с помощью утилиты ccd2iso

Формат .nrg можно сконвертировать с помощью программы nrg2iso. Так же можно смонтировать nrg-образ вообще без никаких дополнительных утилит (выдержка из mount-iso-image):

mount -t udf,iso9660 -o loop,ro,offset=307200 file.nrg /каталог/монтирования

Отсюда вытекает, что конвертацию nrg - > iso можно вообще сделать тривиальным dd с опцией skip.

Как сделать раздел из файла? (Как сделать файловую систему в файле?)

Создаем файл нужного размера, делаем на нем файловую систему и монтируем ее в каталог:

root@linux:~# dd if=/dev/zero of=aaa.fs bs=1024 count=100000
root@linux:~# mkfs.ext3 -F aaa.fs
root@linux:~# mount -t ext3 -o loop aaa.fs /каталог/монтирования

Здесь имя файла - aaa.fs, и размер файловой системы - 100000 блоков по 1024 байта.

Как считать файлы с битого компакт-диска?

Если на диске фильм, например, и потеря некоторых данных не критична, можно снять образ с него вот такой командой:

user@linux# dd if=/dev/cdrom of=~/cd-image.iso bs=4b conv=noerror

Также можно использовать recoverdm, sdd или readcd из пакета cdrtools.

Как проверить читаемость записанного компакт-диска?

Простой способ - хватит подавляющему большинству людей:

user@linux# dd if=/dev/cdrom of=/dev/null

Как мне установить скорость CDROM?

Если это IDE-устройство и не используется ide-scsi (в ядрах 2.4 для записи CDR/RW), то можно пользоваться hdparm (опция -E):

root@linux# hdparm -E 8 /dev/cdrom

Если CDROM SCSI-устройство или используется ide-scsi, то hdparm не сработает. В этом случае можно попробовать программу cdspeed. Она работает с любым CDROM (IDE/SCSI), но часто сбрасывается при remount :(

root@linux# cdspeed -s 8 -d /dev/cdrom

Для приводов NEC вышеприведённое может не сработать. Для них существует утилита speedcontrol

Что где должно "лежать" в системе?

Возможно, поможет `man hier`. Если нет - Filesystem Hierarchy Standard (он же на русском)

Чем и как создать/"отформатировать" разделы под Linux?

В любой дистрибутив входит программа fdisk. Есть более удобный cfdisk, очень мощный sfdisk и parted с графическими фронтендами на gtk и qt. После создания раздела нужно создать файловую систему (то, что в MS Windows называется "отформатировать"). Делается это с помощью программы mkfs.* Вместо * идет название файловой системы. Например:

mkfs.ext3
mkfs.reiserfs
mkfs.reiser4
mkfs.xfs
mkfs.vfat

Я поменял локаль и все русские названия файлов на ext3 (по вкусу) стали нечитаемыми. Как перекодировать названия/имена файлов?

Так обычно мучаются при переходе с UTF8 на KOI8-R и наоборот. Есть специальная програмка на эту тему - convmv. Она точно работает.

Как получить доступ к разделу с ext2/ext3 под MS Windows?

Есть хорошая утилита explore2fs, помимо ext2/ext3 она понимает reiserfs. Так же для доступа к reiserfs можно использовать это - http://p-nand-q.com/download/rfstool.html

Драйверы ext2/ext3: http://sourceforge.net/projects/ext2fsd/ и http://sourceforge.net/projects/winext2fsd/

Как правильно смонтировать CD-ROM?

В /etc/fstab должна быть строка такого вида:

/dev/cdrom /mnt/cdrom iso9660 user,unhide,noauto,owner,ro,users,utf8=true 0 0

Как правильно смонтировать FAT-раздел?(vfat)

Добавить в /etc/fstab запись вида:

/dev/hda1 /mnt/dos vfat utf8=true,codepage=866,umask=000,showexec,quiet 0 0

Как заставить монтироваться флэш-карты в KDE4 с UTF8

Вот здесь человек с ником h4tr3d всё подробно расписал

Есть раздел под NTFS, как мне его увидеть из-под Linux? Как сделать видимыми русские буквы на NTFS?

Для стандартного ядерного модуля поддержки NTFS прописываем в /etc/fstab такую строчку:

/dev/hda1 /mnt/disk_c ntfs dmask=0,fmask=0111,utf8=true,ro 0 0

Для NTFS-3G:

/dev/hda1 /mnt/windows ntfs-3g silent,umask=0,locale=ru_RU.utf8 0 0

Могу ли я писать на NTFS?

Да, это уже давно не проблема. Практически во всех дистрибутивах из коробки есть ntfs-3g

Как без потери данных перевести раздел с ext3 на reiserfs, reiserfs на ext3, xfs на reiserfs и т.п.

Штатными средствами - никак. Файловые системы написаны без учета друг друга и поэтому в отличие от fat и ntfs не имеют общих корней. Тем не менее способ есть. Точнее есть утилита, которую вы можете использовать на свой страх и риск.

anyfs-tools - Скрипт anyconvertfs этого пакета позволяет сконвертировать любую файловую систему в Ext2FS/Ext3FS/XFS. Не исключено появление поддержки конвертирования и в другие ФС.

convertfs

  • Утилита есть в пакетах debian и портежах gentoo. Поддерживает LVM.

Как восстановить удалённый файл?

Почитать об этом можно здесь. Для восстановления с любых разделов можно использовать утилиту photorec. Единственное ограничение программы - в ограниченном количестве поддерживаемых типов файлов. В настоящий момент поддерживается порядка сотни типов файлов, включая популярные графические форматы, аудио, видео, архивы, тексты, pdf, офисные форматы.

Другая FS-независимая утилита 1. Кроме всего прочего, foremost также поддерживает восстановление данных с образов, созданных командой dd и подобными. Синтаксис программы крайне прост:

foremost -t тип_файлов -o выходной_каталог путь_к_устройству/образу

В отдельных случаях помогает reiserfsck --rebuild-tree, xfs_repair и e2fsck. Как показала практика, восстанавливать reiserfs с помощью reiserfsck, если на разделе лежит файл с образом reiserfs, не стоит.

Также поможет 2. На сайте программы довольно непонятная документация, поэтому посмотреть, как делать, можно тут.

Как восстановить таблицу разделов?

Попробовать утилиту 3, пользуйтесь очень осторожно. Еще есть TestDisk

Как подмонтировать одну директорию к другой?

Для Linux:

root@linux# mount --bind src_dir dest_dir

Для FreeBSD:

root@freebsd# mount -t union src_dir dest_dir

Размонтировать соответственно можно командой umount

Чем проверить жесткие диски на наличие плохих секторов (badblocks)?

В состав e2fsprogs входит программа badblocks. Можно сразу использовать ее. И есть специальный скрипт, написанный под эту программу.

Как восстановить раздел reiserfs, если на нем bad сектора?

Если

reiserfsck --check /dev/{h,s}daX

выдает can be fixed only with --rebuild-tree, а

reiserfsck --rebuild-tree /dev/{h,s}daX

прерывается с криком "не могу прочитать сектор такой-то, покупайте новый винт", информацию все еще можно восстановить. Перегружаемся с livecd, или с этой же системы, указав в параметрах ядра single. Это заставит ядро не монтировать фс и даст нам рутовый шелл. Также нам необходим любой раздел, смонтированый на запись. Подойдет дискета, флешка, в некоторых случаях можно использовать раздел, гарантированно без бэдов, предварительно подмонтировав его. Итак, запускаем

badblocks -s -o /доступное_на_запись_место/badblocks /dev/sdaX -b 4096

и идем пить чай. Опция -b указывает размер кластера, в reiserfs обычно используется 4кб. Можно указать опцию -n, это увеличит не только точность обнаружения, но и время процедуры, так что решайте сами. Подробности в man badblocks. В любом случае, в зависимости от размера винчестера, это эаймет от 20 минут до нескольких часов. В итоге мы должны получить файл badblocks в том месте, где указали, со списком плохих секторов. Теперь, помолясь, его можно скормить reiserfsck таким образом:

reiserfsck --rebuild-tree -B /доступное_на_запись_место/badblocks /dev/sdaX

Если все пройдет удачно, получим почти целое содержимое, без некоторых файлов, которое можно скопировать в более надежное хранилище. Кстати, если reiserfsck все-равно ругается на невозможность прочесть кластер, это значит что badblocks просто не обнаружило его или посчитало целым. Можно добавить его прямо в текстовый файл /доступное_на_запись_место/badblocks и заново запустить reiserfsck.

В случае, если ФС - ext{2,3} все немного проще: утилита e2fsck имеет опцию -с, которая заставляет ее искать бэды и помечать их.

Как пометить плохой сектор на жестком диске?

Запустить программу проверки fsck с ключом -c (для reiserfs не работает).

Внимание! Никогда, ни при каких обстоятельствах, не проверяйте смонтированные разделы!

Какая файловая система меньше всего подвержена фрагментации? Где взять дефрагментатор?

Файловые unix-системы практически не подвержены фрагментации из-за особенностей своего строения. Фрагментация обычно не превышает 1.5-2 процентов. Вот хорошая цитата на эту тему: "You don't need to defragment Linux filesystems. Not ext3, not ReiserFS. Defragmentation is only a conce". Поэтому с дефрагментаторами тоже туго. Был какой-то defrag, но поверьте, вам не нужны такие утилиты. Хотя существует официальный дефрагментатор для XFS - xfs_fsr. Для того, чтобы встроенные механизмы дефрагментации нормально работали на разделе должно быть некоторое количество свободного места.

Какую файловую систему выбрать?

Когда работа ведется с большими файлами, рекомендуется использовать xfs. Для множества мелких - reiserfs. Наиболее надежной является ext3. xfs теряет информацию из файлов, в которые велась запись, при потере питания. Опытным пользователям и разработчикам рекомендуем ознакомиться с экспериментальной Reiser4. Следует помнить о том, что утилиты восстановления сбойных разделов лучше всего работают с ext3, а значительного повышения производительности при использовании файловой системы отличной от ext3 на подавляющем большинстве задач не происходит.

!! Cтоит переработать вышестоящий параграф. Вообще ext4 подходит и для множества мелких файлов и для больших файлов, так-что не экспериментируйте над своими данными, ну и JFS не упомянут ни разу, хотя стоило !!

Я слышал про Reiser4, но в ядре её нет...

Основная статья: Reiser4

Я собрал новое ядро и названия разделов поменялись с sda на hda или наоборот. Что делать? Как сделать чтобы мои две флешки всегда монтировались каждая в свой каталог?

Монтировать не по названию раздела, а по его метке. Читайте man mount на предмет опций -U и -L.

Почему Linux показывает меньше свободного места на разделе, чем есть на самом деле?

Часть места на разделе по умолчанию резервируется для rootа. Это место лишним всё равно не будет --- во первых, если система не может создавать новый файл на корневом разделе, то зайти на неё может быть проблематично, во вторых, немного свободного места нужно для работы встроенных в fs механизмов борьбы с фрагментацией файлов. Отрегулировать количество зарезервированного места на ext2/ext3 можно с помощью tune2fs.

Я вставляю флешку в кардридер, но ничего не происходит

Возможно, проблема с ядром: не скомпилированы нужные модули. Стоит проверить ключи в файле /proc/config.gz или /boot/config-версия_ядра в разделе сменных накопителей. Если все в порядке, но кардридер так и не работает, есть способ запуска "вручную": после подключения флешки (скажем, в разъем, соответствующий /dev/sdd) сказать: sg_start /dev/sdd. Правами рута для этого обладать не надо. После этого флешка "оживет" (если, конечно, нет более серьезных проблем).

⚠️ **GitHub.com Fallback** ⚠️