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

Материал из MediaWiki
Перейти к навигации Перейти к поиску

Как записать компакт-диск (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, и размер файловой системы — 100 000 блоков по 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 с UTF-8

Вот здесь — http://hatred.homelinux.net/wiki/zhurnal:2008-08-12_09.22_kde4_i_montirovanie_fleshki — человек с ником 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.

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

Почитать об этом можно на http://linuxdoc.ru/HOWTO/mini/index-E.html. Для восстановления с любых разделов можно использовать утилиту photorec. Единственное ограничение программы — в ограниченном количестве поддерживаемых типов файлов. В настоящий момент поддерживается порядка сотни типов файлов, включая популярные графические форматы, аудио, видео, архивы, тексты, pdf, офисные форматы.

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

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

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

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

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

Попробовать утилиту [2], пользуйтесь очень осторожно. Еще есть 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.

В случае, если ФС — ext2 или ext3 все немного проще: утилита 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. Правами рута для этого обладать не надо. После этого флешка «оживет» (если, конечно, нет более серьезных проблем).