den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Нашел очень толковый FAQ, выкладываю
Как записать компакт-диск (CD-R/CD-RW/DVD-RW)?
Можно записывать диск из консоли, можно воспользоваться программой с графическим интерфейсом. Во втором случае обычно используются программы K3B или XCDroast, отличающиеся дружественным интерфейсом, посему вопросов по их использованию почти не возникает.
Запись из консоли немного сложнее.
Для начала определимся - можно писать "налету", а можно сначала собрать образ, а потом записать его.
При работе с 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 - там хорошее и подробное описание с объяснением команд.
Проверить качество записи можно несколькими способами.
Как сделать, чтобы mkisofs писал файлы вместе с папками, а не скидывал все в корень?
Чтобы mkisofs сохраняя структуру, например, папки images и htmls, выполните:
user@linux$ mkisofs -v -J -r -graft-points images=~/images htmls=~/htmls | cdrecord ...
Как сделать, чтобы русские имена файлов, записанные xcdroast/k3b правильно читались на MS Windows?
В xcdroast кодировка указывается в "Скомпоновать дорожки->Параметры ISO9660 закладка Входная кодировка". Выходную оставьте по умолчанию (default). Если при указании кодировки все равно русских букв в MS Windows не видно, (например, в RedHat 9 без обновлений), попробуйте обновить свой mkisofs.
В 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
Графические программы XCDRoast и K3B тоже способны снимать имиджи.
О монтировании образов читайте следующий вопрос.
Как смонтировать имидж компакт-диска? (Как получить доступ к содержимому образа в iso9660)?
Есть два способа - один простой, другой чуть сложнее
Для обоих в ядре нужна поддержка loopback
root@linux# mount -o loop -t fstype x.img /mnt/x замонтирует образ x.img с файловой системой fstype в директорию /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.
О снятии образов читайте предыдущий вопрос.
О монтировании образов не в формате iso9660 читайте следующий вопрос о преобразовании образов в формат iso9660.
Заметим, что существует ядерный модуль cdemu, позволяющий монтировать образы bin/cue без преобразования в iso9660.
Как смонтировать имидж в формате .img/.bin/.cue/.nrg/.ccd? Как сконвертировать имидж из формата .img/.bin/.cue/.nrg/.ccd в iso9660?
Для начала давайте разберемся с форматами.
Формат .img понятие относительное, потому что в .img пишет и Nero и K3B, но в случае K3B это обычный iso9660 (часто такие файлы имеют расширения .iso).
Файлы .bin/.cue можно записать с помощью cdrdao или сконвертировать с помощью программы bchunk.
Формат .nrg можно сконвертировать с помощью программы nrg2iso. На сайте помимо исходников есть rpm.
Соответственно, чтобы подмонтировать такой образ, его нужно сконвертировать и дальше действовать как обычно.
Небольшое дополнение от Valerius:
Можно смонтировать nrg-образ вообще без никаких дополнительных утилит (высмыкнуто из mount-iso-image):
mount -t udf,iso9660 -o loop,ro,offset=307200 file.nrg /каталог/монтирования
Отсюда вытекает, что конвертацию nrg - > iso можно вообще сделать тривиальным dd с опцией skip.
Образы с clonecd (ccd) можно преобразовать с помощью утилиты ccd2iso
Как сделать раздел из файла? (Как сделать файловую систему в файле?)
Создаем файл нужного размера, делаем на нем файловую систему и монтируем ее в каталог:
root@linux:~# dd if=/dev/zero of=aaa.fs bs=1024 count=100000
root@linux:~# mkfs.ext2 -F aaa.fs
root@linux:~# mount -t ext2 -o loop aaa.fs /mnt/
Здесь имя файла - aaa.fs, и размер файловой системы - 100000 блоков по 1024 байта.
Как считать файлы с битого компакт-диска?
Если на диске фильм, например, и потеря некоторых данных не критична, можно снять образ с него вот такой командой:
user@linux# dd if=/dev/cdrom of=~/cd-image.iso bs=4b conv=noerror
Или подробнее,
user@linux# dd if=/dev/cdrom of=~/cd.iso conv=noerror,sync
user@linux# mkdir ~/iso
root@linux# mount -o loop ~/cd.iso ~/iso
user@linux# cp ~/iso/ruleznyi_film.avi ~
root@linux# umount ~/iso
user@linux# del cd.iso
user@linux# mplayer -ao arts ~/ruleznyi_film.avi
Также можно использовать recoverdm ( http://www.vanheusden.com/recoverdm), sdd ( http://freshmeat.net/projects/sdd), readcd из пакета cdrtools.
Для надежности можно выставить скорость чтения с CD-ROM поменьше.
Как проверить читаемость записанного компакт-диска?
Простой способ - хватит подавляющему большинству людей: user@linux# dd if=/dev/cdrom of=/dev/null Если все скопируется, значит все в порядке.
Сложный способ: скриптом http://fine.kalinovka.net/articles/hobby/lorFAQ/files/chindisk.tgz, написанным Obidos. Вызов: `chindisk /mnt/cdrom` Скрипт отловит ошибки с нечитаемыми не на физическом, а на логическом уровне каталогами/файлами (например, где-то неверно выставили права).
И можно воспользоваться специальной программой.
Как мне установить скорость CDROM?
Если это IDE-устройство и не используется ide-scsi (в ядрах 2.4 для записи CDR/RW), то можно пользоваться hdparm (команда -E):
root@linux# hdparm -E 8 /dev/cdrom
Аргумент команды -E - желаемая скорость (в данном случае 8x)
Вместо hdparm можно использовать eject:
eject -x 8 /dev/cdrom
Если CDROM SCSI-устройство или используется ide-scsi, то hdparm не сработает. В этом случае можно попробовать программу cdspeed ( http://linuxfocus.org/~guido). Она работает с любым CDROM (IDE/SCSI), но часто сбрасывается при remount
Использование:
root@linux# cdspeed -s 8
Cкорость 8х, устройство по умолчанию /dev/cdrom, если устройство, например, /dev/hdc, то:
root@linux# cdspeed -s 8 -d /dev/hdc
Появились сообщения о том, что программа не работает с приводами, подключенными по USB.
Что где должно "лежать" в системе?
Возможно, поможет `man hier`. Если нет - Filesystem Hierarchy Standard
Чем и как создать/"отформатировать" разделы под linux?
В любой дистрибутив входит программа fdisk (а во многие еще и cfdisk, очень простая в использовании, но менее мощная). После создания раздела нужно создать файловую систему (то, что в MS Windows называется "отформатировать"). Делается это с помощью программы mkfs.* Вместо * идет название файловой системы. Например:
mkfs.ext3
mkfs.vfat
mkfs.reiserfs
Я поменял локаль и все русские названия файлов на ext3 (по вкусу) стали нечитаемыми. Как перекодировать названия файлов?
Обычно мучаются при переходе с utf8 на koi8-r и наоборот. Есть специальная програмка на эту тему. convmv. Она точно работает.
Есть еще скрипт, но работает он или нет - не в курсе. Если кто рискнет проверить - сообщите о результатах. http://linux.alhimia.ru/projects/bash-scripts/NLS_repair/.
И еще можно испытать такой скрипт:
find . -depth | while read f ; do
dir="${f%/*}"
file="${f##*/}"
nfile=`iconv -f koi8-r -t cp1251 <<<"$file"`
if [ $? == 0 ]
test "$nfile" = "$file" || mv "$f" "$dir/$nfile" || echo "$f"
else
echo "$f"
fi
done
Как перекодировать русские названия файлов в транслит?
WARNING!!! При неопределённых условиях оба нижеприведённых варианта имеют проблемы с utf-8
A1: Нужна программа translit и 2 нижеуказанных скрипта. http://rpm.pbone.net/index.php3/stat/4/idpl/423272/com/translit-1.03-1.i386.rpm.html
$ cat tr-walker.sh
----------------------------------------
#!/bin/bash
TPWD=`pwd`
`/usr/local/bin/mp3-translit.pl`;
for f in *; do
cd "$TPWD/$f";
TTPWD=`pwd`
echo "Converting: $TTPWD";
`/usr/local/bin/mp3-translit.pl`;
cd "$TPWD";
done
$ cat mp3-translit.pl
--------------------------------------
#!/usr/bin/perl -w
use strict;
use File::Copy;
my $dirName=$ARGV[0];
$dirName ||='.';
my $file=;
my $cnt=0;
opendir(DIR, "$dirName") or die "Can't opendir $dirName: $!";
while (defined($file=readdir(DIR))) {
next if $file=~/^\.\.?$/;
my $trFile=getTRname($file);
if (-f $file) { `chmod 0644 "$file"` };
if (-d $file) { `chmod 0755 "$file"` };
move("$dirName/$file","$dirName/$trFile");
}
closedir(DIR);
sub getTRname {
my $input=$_[0];
my $trFile=`echo "$input" | iconv -f UTF-8 -t KOI8-R | translit koi8-phg.rus`;
$trFile=~s/[^a-zA-Z0-9\_\-\.\ ]//gs;
$trFile=~s/\.+/\./g;
$trFile=~s/\ /_/g;
$trFile=~s/\_+/\_/g;
$trFile=~s/\-+/\-/g;
return $trFile;
}
A2: Можно попробовать скрипт предложенный rymis (find . -exec translit.sh {} \
#!/bin/sh
NAME=""
TRANSLIT=""
TRTBL_l="s/ш/sh/g; s/ч/ch/g; s/щ/sh\'/g; s/ё/jo/g; s/ж/zh/g; s/э/je/g; s/ъ/\'/g; s/ь/\'/g; s/ю/ju/g; s/я/ja/g"
TRTBL_h="s/Ш/SH/g; s/Ч/CH/g; s/Щ/SH\'/g; s/Ё/JO/g; s/Ж/ZH/g; s/Э/JE/g; s/Ъ/\'/g; s/Ь/\'/g; s/Ю/JU/g; s/Я/JA/g"
translit()
{
local cnm
cnm="$NAME"
cnm=`echo -n $cnm | tr "абвгдезийклмнопрстуфхцы" "abvgdezijklmnoprstufxcy"`
cnm=`echo -n $cnm | tr "АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ" "ABVGDEZIJKLMNOPRSTUFXCY"`
cnm=`echo -n $cnm | sed "$TRTBL_l"`
cnm=`echo -n $cnm | sed "$TRTBL_h"`
TRANSLIT="$cnm"
}
rename_file()
{
NAME="$1"
if [ "x$NAME" != "x" ] ; then
translit
echo "mv $NAME $TRANSLIT"
mv "$NAME" "$TRANSLIT"
fi
}
if [ "x$1" = "x" ] ; then
echo Uses translit.sh filename 1>&2
exit 1
fi
rename_file "$1"
Как посмотреть раздел ext2/ext3 под MS Windows?
Для NT и win 9.x - explore2fs: http://uranus.it.swin.edu.au/~jn/linux/
ext2 драйверы:
http://sourceforge.net/projects/ext2fsd/
http://sourceforge.net/projects/winext2fsd/
Plug-in под TotalCommander для ext2/3 и reiserfs - http://www.ghisler.com/plugins.htm
Как увидеть раздел ReiserFS из-под Windows?
Зайдите сюда - http://p-nand-q.com/download/rfstool.html
Plug-in под TotalCommander для ext2/3 и reiserfs - http://www.ghisler.com/plugins.htm
Как правильно смонтировать CD-ROM?
В /dev можно сделать ссылку c названием cdrom на /dev/hdx, где x - IDE-устройство. Для scsi-устройств, или ide, работающих в режиме эмуляции scsi это может быть scd0.
/etc/fstab:
/dev/cdrom /mnt/cdrom iso9660 user,unhide,noauto,owner,ro,users,iocharset=koi8-r 0 0
После этого cdrom можно монтировать командой mount /dev/cdrom.
Если используемая locale utf8, а не koi8-r, то iocharset=utf8.
Как правильно смонтировать FAT-раздел?
Добавить в /etc/fstab запись вида
/dev/hda1 /mnt/dos vfat iocharset=koi8-r,codepage=866,nouser,suid,rw,umask=000,showexec,quiet 0 0
Где, /dev/hda1 - /это FAT-раздел, а koi8-r - используемая в вашей системе локаль. Если локаль другая, пропишите ее!
Для suse все нужно сделать через YAST.
Все файлы на FAT-разделе отображаются исполняемыми, noexec тоже не помогает. Как это убрать?
В данном случае noexec не поможет, добавьте в /etc/fstab параметр showexec
При копировании файлов на раздел fat32 mc выдает сообщение об ошибке, но файлы копирует. Что делать?
Посмотреть как этот раздел прописан у вас в fstab - не хватает параметра quiet. Пример строчки здесь.
Есть раздел под NTFS, как мне его увидеть из-под Linux? Как сделать видимыми русские буквы на NTFS? Могу ли я писать на NTFS?
Прописываем в /etc/fstab строчку вроде
для локали koi8-r:
/dev/hda1 /mnt/disk_c ntfs dmask=0,fmask=0111,iocharset=koi8-r,ro 0 0
для локали utf8:
/dev/hda1 /mnt/disk_c ntfs dmask=0,fmask=0111,utf8,ro 0 0
где /dev/hda1 - название вашего диска, а /mnt/disk_c - каталог, который вы под него создали. В новых ядрах вместо "iocharset=..." лучше использовать "nls=...".
В ядрах дистрибутивов RedHat по умолчанию поддержка NTFS не собирается. Поэтому нужно зайти в любой репозиторий дополнительных программ и скачать пакет с поддержкой под свое ядро или собрать ядро самостоятельно, включив поддержку.
Настроить sudo на предмет разрешения вызова mount/umount с определёнными параметрами.
Начнем с того, что это опасно и вы можете повредить свои данные на NTFS. Не говорите, что не предупреждал. Существует три способа:
Собрать ядро с поддержкой записи на NTFS. На ядрах 2.4.x запись возможна только на NTFS от NT4.0, на ядрах 2.6 на любой NTFS. Однако есть одно но: вы можете писать в уже созданный файл (т.е. изменять его). Вы не сможете создать новый файл!
Вы можете купить (или найти в какой-нибудь p2p сети) 'Paragon NTFS driver for linux'. Сайт компании: http://www.ntfs-linux.com Наилучший способ. Стоит все удовольствие $70. Одна маленькая неприятность - не работает с ядрами серии 2.6.х
Продукт обратной разработки под названием captive. Позволяет читать и писать на NTFS. Недостаток: он медленно пишет и ему нужна пара файлов из MS Windows (причем один из них - драйвер NTFS). http://www.jankratochvil.net/project/captive
Как перейти с ext2 на ext3?
Собираем ядро с поддержкой ext3. Если ext2 была жестко вкомпилена в ядро (т.е. не модулем и вы не пользуетесь initrd), то так же собираем ext3.
Грузимся, в /etc/fstab пишем вместо ext2 ext3. Затем перегружаемся и грузимся с компашки (можем не перегружаться и просто смонтировать систему в read only) и даем команду вроде этой:
root@linux# tune2fs -j /dev/hda1
(hda1 - меняете на свой раздел). Перегружаемся. Если все работает, собираем ядро без поддержки ext2 - она не нужна.
Как без потери данных перевести раздел с ext3 на reiserfs, reiserfs на ext3, xfs на reiserfs и т.п.
Вы уже догадались? НИКАК. И об этом написано в руководстве к тому же reiserfs, которое вы не читали. Переход с fat32 на ntfs на живом разделе обусловлен лишь тем, что ntfs специально писали с этим расчетом. Но никто не будет портить новую файловую систему лишь для того, чтобы оставить совместимость.
Поэтому берете в руки tar, бэкапите весь раздел и делаете новую файловую систему, после чего копируете все обратно из архива.
Если кто-то узнает информацию о переходе с reiserfs3 на reiserfs4, пишите.
Как восстановить удаленный файл на ext2 (возможно 3)
Можно почитать об это здесь
И попробовать утилиту testdisk
Как восстановить таблицу разделов?
для начинающих пользователей
Попробовать утилиту gpart. Пользуйтесь очень осторожно.
Для тех кто понимает что делает
рекомендации unDEFER:
Если я полетела именно таблица разделов, а не файловыв системы, то в поиске началов разделов могут помочь примерно следующие команды:
# chmod a+r /dev/hda
$ for i in `seq 0 24321`; do \
echo -n "$i: "; dd if=/dev/hda bs=8225280 count=1 skip="$i" 2>/dev/null | file -; \
done | grep -E "(XFS)|(ext[23])"
Где 24321 -- вы должны заменить на количество цилиндров в своём винте.
А 8225280 на размер цилиндра на своём винте.
Их можно узнать командой:
# sfdisk -l /dev/hda | head -n3
Disk /dev/hda: 24321 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Для примера, вот что выдаёт sfdisk для hda2
# sfdisk -l /dev/hda | grep -E "(Device)|(hda2)"
Device Boot Start End #cyls #blocks Id System
/dev/hda2 2432 2443 12 96390 83 Linux
И мы можем убедиться, что та команда его найдёт:
$ for i in `seq 2432 2432`; do \
echo -n "$i: "; dd if=/dev/hda bs=8225280 count=1 skip="$i" 2>/dev/null | file -;
done | grep -E "(XFS)|(ext[23])"
2432: /dev/stdin: Linux rev 1.0 ext3 filesystem data (needs journal recovery)
Т.е. команда правильно находит Start'ы -- а end'ы вы и сами расчитаете
В конце не забудьте
# chmod o-r /dev/hda
Проверил ext3 с помощью e2fsck на разделе, смонтированном на запись. Утилита нашла кучу ошибок и вроде как их исправила. Когда я зашел на диск, оказалось, что половины файлов нет, у папок поменялись названия и т.п. Как все исправить?
Долго исправлялось? Тогда уже, наверно, никак. Можно глянуть предыдущий вопрос, может что выйдет.
Как подмонтировать одну директорию к другой?
Для Linux:
root@linux# mount --bind src_dir dest_dir
Для FreeBSD:
root@freebsd# mount -t union src_dir dest_dir
Размонтировать соответственно можно комадной
root@linux# umount dest_dir
Как создать жесткую ссылку на директорию?
Согласно man ln можно:
В существующих реализациях, если команда ln может создавать жесткую ссылку на каталог, то она может это делать только от лица суперпользователя. POSIX запрещает системному вызову link(2) и утилите ln создавать жесткие ссылки на каталоги (но не запрещает создавать жесткие ссылки на файлы, которые находятся на других файловых системах).
Директории также можно примонтировать одну к другой).
Чем проверить жесткие диски на наличие плохих секторов (badblocks)?
В состав e2fsprogs входит программа badblocks. Можно сразу использовать ее. И есть специальный скрипт, написанный под эту программу.
Как пометить плохой сектор на жестком диске?
Запустить программу проверки fsck с ключом -c.
Внимание! Никогда, ни при каких обстоятельствах, не проверяйте смонтированные разделы!
Как сделать так, чтобы при подключении нового винта система автоматически его монтировала?
Воспользоваться скриптом hdmount проекта Алхимия (я, jackill, им сам пользуюсь и уже давно). |
|