Поиск по блогу :

    25 ноября 2008 г.

    Метки дисков для разных файловых систем

    Многие, наверное, сталкивались с тем, что когда куда-нибудь монтируешь диски, то в программах (например GnomeCommander) они потом отображаются как /mnt/disk и т.п. Или, например, когда вы подключаете какой-нить USB-носитель, то он отображается в системе как 'Диск 31,5 ГБ' (к примеру). Вот и я решил избавиться от таких названий, и присвоить дискам нормальные метки, как, например, в той же самой - винде.


    В отличии от винды, в линухах файловых систем поболее, поэтому рассмотрим самые распространенные.

    Установка меток через консоль

    Важно!!! Прежде чем менять или применять метки к дискам, диски должны быть ОТМОНТИРОВАНЫ. А также все манипуляции с разделами вы делаете на свой страх и риск. Бывали случаи, когда люди теряли важную информацию, не правильно следуя командам и не внимательно читая предупредительные сообщения.

    Ниже, для примера, будет использован диск /dev/sda1 и новая метка new_label.

    1. Для Ext2/3
    1.1. Устанавливаем e2fsprogs, если они не установлены:
    #
    apt-get install e2fsprogs

    1.2. Устанавливаем метку диска:
    #
    e2label /dev/sda1 new_label


    2. Для ReiserFS
    2.1. Устанавливаем reiserfsprogs, если они не установлены:
    #
    apt-get install reiserfsprogs

    2.2. Устанавливаем метку диска:
    #
    reiserfstune -l new_label /dev/sda1


    3. Для XFS
    3.1. Устанавливаем xfsprogs, если они не установлены:
    #
    apt-get install xfsprogs

    3.2. Устанавливаем метку диска:
    #
    xfs_admin -l new_label /dev/sda1


    4. Для JFS
    4.1. Устанавливаем jfsutils, если они не установлены:
    #
    apt-get install jfsutils

    4.2. Устанавливаем метку диска:
    #
    jfs_tune -L new_label /dev/sda1


    5. Для Fat32
    5.1. Устанавливаем mtools, если они не установлены:
    # $
    apt-get install mtools
    echo mtools_skip_check=1 >> ~/.mtoolsrc

    5.2. Устанавливаем метку диска:
    #
    mlabel -i /dev/sda1 ::new_label


    6. Для NTFS
    6.1. Устанавливаем ntfsprogs, если они не установлены:
    #
    apt-get install ntfsprogs

    6.2. Устанавливаем метку диска:
    #
    ntfslabel /dev/sda1 new_label



    Установка меток через gparted

    1. Прежде чем устанавливать метку для раздела или диска, отмонтируйте его и установите необходимые программы для нужной вам файловой системы. Какие это программы описано выше в разделе установка через консоль.
    2. Правой кнопкой на разделе и выбираете 'Метка' и вводите новую метку.
    2.1. Если вдруг высветится сообщение, что вы можете потерять все данные на разделе или диске, ни в коем случае, не продолжайте и еще раз перепроверьте правильность ваших действий.

    P.S. У себя менял метки для Fat32, Ext3 и NTFS разделов - все прошло без сучка и задоринки.

    19 ноября 2008 г.

    Использование UUID при монтировании дисков

    Как-то столкнулся с одной проблемкой. У меня есть IDE-карман, который я редко, но использую. Так вот, когда в этот карман вставляешь диск, а комп при этом потушен, то при загрузке мои жесткие диски меняли свои названия в каталоге /dev. Из-за этого, некоторые монтировались ни туда, куда надо, а некоторые вообще не монтировались.


    Как выяснилось, дело было в том, что я по старинке монтировал свои диски указывая название жесткого диска (например: /dev/sda1 ) и папку куда он должен монтироваться (например: /mnt/D ). Все бы ничего, но когда я вставлял жесткий в карман, то добавлялось еще одно устройство и названия жестких дисков в каталоге /dev - менялись.
    Решение такой проблеме очень простое. Вы наверное замечали, как монтируются по умолчанию ваша домашняя директория и корневая система в Убунту. Монтируются они с помощью стандарта идентификации - UUID (Universally Unique Identifier). Смысл системы в том, что каждый ваш диск идентифицируется специальным номером, который не меняется даже тогда, когда диски меняются местами в каталоге /dev. И с помощью этого идентификатора, вы можете монтировать все свои диски не задумываясь о том, что будет если вы добавите еще один диск в вашу систему и т.д.

    Использование UUID

    1. Применять идентификаторы дисков, будем в файле /etc/fstab, который отвечает за монтирование устройств при загрузке системы.
    1.1. Вот так вот, выглядела раньше запись монтирования двух моих дисков:
    /dev/sda1 /mnt/D ext3 defaults,relatime 0 0
    /dev/sda5 /mnt/E vfat iocharset=utf8,umask=000 0 0
    Теперь она выглядит вот так:
    UUID=5d94e4f6-c678-442a-a640-d20e0fd3b383 /mnt/D ext3 defaults,relatime 0 0
    UUID=4574-A323 /mnt/E vfat iocharset=utf8,umask=000 0 0
    1.2. В зависимости от файловой системы, используемой на диске, меняется и UUID (в нашем случае ext3 = 16 байтный номер, а fat32 = пара четырехзначных чисел).
    2. Как вы сами понимаете, нельзя примонтировать устройство с помощью UUID, не зная его.
    2.1. Узнать UUID устройства можно, как минимум, двумя способами. Первый:
    $
    sudo blkid

    вам будет выведен список всех устройств с их UUID и типом файловой системы.
    Второй способ:
    $
    ls -l /dev/disk/by-uuid/

    Как по мне, первый более информативен.
    3. Теперь вставляете полученные UUID нужным дискам в /etc/fstab и все, теперь вы больше никогда не столкнетесь с той проблемой, о которой я писал в начале статьи.

    10 ноября 2008 г.

    Монтирование удаленной папки с помощью sshfs

    Недавно возникла необходимость использовать удаленный сервер, чтобы удаленно работать там с проектами из svn. Доступ к серверу, только через ssh. Конечно работать с svn можно прям на удаленной машине, но вот с файлами мне проще работать на своей машине. Поэтому я и решил подключить себе нужную папку с удаленного сервера, как примонтированный диск, чтобы проводимые мною изменения сразу писались удаленно на сервер, без лишних, в дальнейшем, телодвижений.


    Так как у меня, есть только подключение через ssh, поэтому для монтирования удаленной папки я использовал файловую систему SSHFS (Secure SHell FileSystem).

    Установка и использование

    1. Устанавливаем sshfs:
    $
    sudo apt-get install sshfs

    2. Теперь монтируем удаленную папку (примерно так):
    $

    sshfs user@remote.host:/somedir /somemydir -o uid=1000,gid=1000

    где
    user - имя пользователя на удаленном сервере;
    remote.host - адрес удаленного сервера;
    /somedir - папка на удаленном сервере, которая будет монтироваться;
    /somemydir - папка на вашем компьютере, куда будет монтироваться удаленная папка;
    -o uid=1000,gid=1000 - различные параметры монтирования (подробнее смотрите в man).
    Понятное дело, все приведенные выше значения вы меняете под себя.
    3. Отмонтируется все это дело, следующей командой
    $
    fusermount -u /somemydir

    4. Добавляем автомонтирование при загрузке системы через /etc/fstab. Для этого редактируем его:
    $
    sudo nano /etc/fstab

    и добавляем туда строку (пример):
    sshfs#user@remote.host:/somedir /somemydir fuse uid=1000,gid=1000 0 0

    Монтирование, если просит пароль

    1. В большинстве случаев, автомонтирование не прокатит, так как запрашивается пароль при монтировании, а такие опции, как password и credentials для sshfs - не катят. поэтому есть, как минимум, два варианта это поправить.
    1.1. Первый - это использование RSA или DSA ключей для ssh соединения (про это я уже раньше упоминал в другой статье).
    1.2. Второй - просто не парится всякими fstab, а просто добавить в автозагрузку 'Система'->'Параметры'->'Сеансы' запуск следующей команды
    echo 'password' | sshfs user@remote.host:/somedir /somemydir -o password_stdin
    где
    password - тот самый пароль для удаленного сервера;
    password_stdin - опция которая принимает пароль передаваемый, в данном случае, через echo.
    Конечно, в этом случае пароль передается в открытом виде, но никто не мешает запихнуть эту команду в скрипт, которому присвоить нужные права, а потом этот скрипт добавить в автозагрузку.

    Проблема при монтировании. И ее решение.

    1. Бывает, что при монтировании выскакивает ошибка
    read: Connection reset by peer
    в этом случае надо послать на адрес, к которому коннектимся, какой-нить текст
    $
    ssh user@remote.host echo text

    в ответ вы получите сообщение, из которого вас интересуют строки похожие на эти:
    Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
    Offending key in /home/user/.ssh/known_hosts:2
    нас интересует именно последняя цифра, это номер строки, которую нам надо удалить, в данном случае - 2.
    2. Удаляем в файле known_hosts найденную строку:
    $
    sed -i -e '2d' /home/user/.ssh/known_hosts

    3. Снова отправляем на адрес, к которому коннектимся, строку
    $
    ssh user@remote.host echo text

    только в этот раз - появится предложение на ввод пароля для добавления ключа этого адреса в ваш список.
    Все теперь ошибка не должна появляться снова.

    Проблема: sshfs и svn. И ее решение.

    1. При работе с sshfs столкнулся с такой проблемой, что когда пытаешься работать с svn на примонтированной папке, например делать checkout, то получаешь следующую ошибку:
    svn: Can't move '.svn/tmp/entries' to '.svn/entries': Operation not permitted
    2. Лечится это, добавлением опции workaround=rename при монтировании. Пример:
    $

    sshfs user@remote.host:/somedir /somemydir -o workaround=rename,uid=1000,gid=1000

    2 ноября 2008 г.

    Проблема с выдвижением лотка CD/DVD в Ubuntu 8.10

    Перейдя на Ubuntu 8.10, понял, что версия довольно сырая и что я поспешил с переходом. Одна из мелких проблем, которая меня просто добила, заключается в том, что, когда пытаешься открыть лоток CD/DVD, он сразу же задвигается обратно.


    Как потом выяснилось, про этот баг было официально заявлено здесь и говорилось, что пофикшен он будет в дальнейших обновлениях. Ждать не охота, поэтому пофиксим сами.

    Исправляем проблему

    1. Редактируем файлик:
    #
    nano /etc/udev/rules.d/60-persistent-storage.rules

    1.1. Ищем строку
    ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
    и заменяем ее на следующую
    ENV{DEVTYPE}=="disk", KERNEL=="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
    сохраняем и нормально пользуемся CD/DVD.