Диски, приводы CD DVD RW и файловые системы - dim13/lor GitHub Wiki
Можно записывать диск из консоли, можно воспользоваться программой с графическим интерфейсом. Во втором случае обычно используются программы 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.
Только для ядер версий 2.4.х и ниже.
Чтобы mkisofs сохраняя структуру, например, папки images и htmls, выполните:
user@linux$ mkisofs -v -J -r -graft-points images=~/images htmls=~/htmls | cdrecord ...
В K3B такой проблемы при правильно настроенной локали не возникает, но нужно при выставлении настроек записи отметить в закладке "Файловая система" галочки "Создать расширение RockRidge" и "Создать расширение Joliet", после чего нажать кнопку "Сохранить настройки пользователя" - тогда вам не придется делать это каждый раз.
Воспользоваться командой 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
Если это 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 (он же на русском)
В любой дистрибутив входит программа fdisk. Есть более удобный cfdisk, очень мощный sfdisk и parted с графическими фронтендами на gtk и qt. После создания раздела нужно создать файловую систему (то, что в MS Windows называется "отформатировать"). Делается это с помощью программы mkfs.* Вместо * идет название файловой системы. Например:
mkfs.ext3
mkfs.reiserfs
mkfs.reiser4
mkfs.xfs
mkfs.vfat
Я поменял локаль и все русские названия файлов на ext3 (по вкусу) стали нечитаемыми. Как перекодировать названия/имена файлов?
Так обычно мучаются при переходе с UTF8 на KOI8-R и наоборот. Есть специальная програмка на эту тему - convmv. Она точно работает.
Есть хорошая утилита 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/
В /etc/fstab должна быть строка такого вида:
/dev/cdrom /mnt/cdrom iso9660 user,unhide,noauto,owner,ro,users,utf8=true 0 0
Добавить в /etc/fstab запись вида:
/dev/hda1 /mnt/dos vfat utf8=true,codepage=866,umask=000,showexec,quiet 0 0
Вот здесь человек с ником h4tr3d всё подробно расписал
Для стандартного ядерного модуля поддержки 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-3g
Штатными средствами - никак. Файловые системы написаны без учета друг друга и поэтому в отличие от fat и ntfs не имеют общих корней. Тем не менее способ есть. Точнее есть утилита, которую вы можете использовать на свой страх и риск.
anyfs-tools - Скрипт anyconvertfs этого пакета позволяет сконвертировать любую файловую систему в Ext2FS/Ext3FS/XFS. Не исключено появление поддержки конвертирования и в другие ФС.
- Утилита есть в пакетах 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
В состав e2fsprogs входит программа badblocks. Можно сразу использовать ее. И есть специальный скрипт, написанный под эту программу.
Если
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
Я собрал новое ядро и названия разделов поменялись с sda на hda или наоборот. Что делать? Как сделать чтобы мои две флешки всегда монтировались каждая в свой каталог?
Монтировать не по названию раздела, а по его метке. Читайте man mount на предмет опций -U и -L.
Часть места на разделе по умолчанию резервируется для rootа. Это место лишним всё равно не будет --- во первых, если система не может создавать новый файл на корневом разделе, то зайти на неё может быть проблематично, во вторых, немного свободного места нужно для работы встроенных в fs механизмов борьбы с фрагментацией файлов. Отрегулировать количество зарезервированного места на ext2/ext3 можно с помощью tune2fs.
Возможно, проблема с ядром: не скомпилированы нужные модули. Стоит
проверить ключи в файле /proc/config.gz или
/boot/config-версия_ядра в разделе сменных накопителей. Если
все в порядке, но кардридер так и не работает, есть способ запуска
"вручную": после подключения флешки (скажем, в разъем, соответствующий
/dev/sdd) сказать: sg_start /dev/sdd
. Правами рута для этого обладать
не надо. После этого флешка "оживет" (если, конечно, нет более
серьезных проблем).