четверг, 20 июля 2017 г.

Настройка Linux - перенос на другой диск

Часто бывает нужно уже настроенную операционную систему Linux перенести на другой диск вместе со всеми рюшечками, бубенчиками и свистульками. Перенести Linux с одного диска на другой довольно просто, но тут есть несколько моментов, чему данная записка дебианщика и посвящена.
Геометрия дисков источника и приёмника совпадает.
Если геометрия жёсткого диска с Linux и нового диска одинаковая (новый винчестер на компьютере точно такой же), то можно использовать наш любимый старый-добрый dd.
Для этого залогиниваемся как root (или используем sudo) и пишем в консоли:


# dd if=/dev/sda of=/dev/sdb
здесь
  • /dev/sda : диск-источник (с настроенной системой)
  • /dev/sdb : диск-приемник (на который копируем систему).
Для ускорения процесса можно задать копирование большими блоками вот так:
# dd if=/dev/sda of=/dev/sdb bs 1048576
По окончании копирования диск-приёмник готов к употреблению - разве что можно создать на нём другого пользователя или отредактировать уже имеющегося (о чём см. ниже). Кстати, если вместо /dev/sdb указать обычный файл вроде linux.img, то мы получим образ диска c Linux и можем использовать его для работы в виртуальных машинах. Разная геометрия дисков источника и приёмника.
Это приведёт к тому, что предыдущий вариант будет неэффективен и нам срочно нужен инновационный прорыв. К счастью, это потребует лишь несколько простых телодвижений, так что мы сейчас прорвёмся и отчаянно ворвёмся в наше светлое линуксовое счастье.
1. Разметка винчестера и создание файловой системы.
Для создания таблицы разделов в Linux используем команду cfdisk (есть подробное описание по разметке дисков в Linux):

cfdisk /dev/sdb
Нажимаем на New, создать раздел. Выбираем Primary (основной), когда он создастся, нажимаем Bootable (если нужно, чтобы он был загружаемый). После этого надо отформатировать раздел (например, в надёжную и стабильную файловую систему EXT3):
sudo mkfs -t ext3 /dev/sdb1
Если же вам нужно перекроить разделы, скажем, для установки Windows и Linux на одной машине, лучше всего воспользоваться Live CD Gparted. Теперь можно начинать копировать файлы с одного диска на другой. 2. Перенос Linux на другой диск или раздел.
Например, диск-источник, на котором хранятся все файлы, это /media/debian - туда примонтирован IMG-образ системы, которую нужно залить на свежий раздел. Теперь монтируем диск-приёмник куда-нибудь в укромное место (чтобы данные рекурсивно не копировались), например в пустующий в Debian каталог /srv

mount -t auto /dev/sdb1 /srv
Переходим в каталог /media/debian/ и, находясь в этом каталоге, вводим длинную команду в одну строчку:
cp -a bin/ boot/ etc/ home/ lib/ opt/ root/ sbin/ tmp/ usr/ var/ /srv
Здесь серым выделены опциональные каталоги /home и /tmp : скопировать их можно, если они вам нужны (например, можно захотеть сделать нового пользователя в новой системе). 3. Досоздаем каталоги: /dev /proc /srv /sys /mntКопировать эти каталоги НЕ НАДО, вместо это досоздаём пустые каталоги для них - это все псевдо-файловые системы (кроме /mnt естественно).
Так же стоит поменять /srv/etc/fstab на предмет монтирования корневого каталога - если новый диск будет определён как /dev/sda1, а в fstab будет указан /dev/hda1, ядро этому не обрадуется и не загрузится (что не страшно при использовании загрузчика grub). Так же вносим изменения в /srv/etc/fstab новой системы на предмет подключения swap-разделов или файлов. Например, если новый своп-раздел будет находиться на втором разделе новой системы, пишем:

/dev/sdb2   swap    swap    defaults    0  0
После этого осталось только установить загрузчик Linux.


4. Установка загрузчика Linux.

Это довольно просто сделать, загрузившись хотя бы с Knoppix. Например, при использовании загрузчика GRUB даём команду:

/sbin/grub-install --root-directory=/srv --recheck /dev/sdb
Здесь /dev/sdb это диск-приёмник (на который копируем систему). Так же можно установить загрузчик с помощью chroot:
chroot /srv grub-install /dev/sdb
Образцы конфигов, коими можно и нужно воспользоваться, должны быть на диске-источнике. В общих чертах процесс закончен - можно попробовать загрузиться с новой системы и навести финальный марафет - например, добавить новых пользователей.

Добавляем, меняем и удаляем Linux-пользователей в новой системе
Для этого залогиниваемся root-ом и начинаем борьбу с пользователями.
useradd - добавить нового пользователя

Пример - добавить пользователя roger:

useradd -gusers -Gmgmt -s/bin/sh -pxxxx -d/home/roger -m roger
Опции:
  • -d домашний каталог
  • -s задать стартовую оболочку (/bin/sh)
  • -p пароль
  • -g основная группа, к которой приписывается пользователь
  • -G другие группы к которой приписывается пользователь
  • -m создать для пользователя домашний каталог

userdel - удалить
пользователя
userdel -r roger
Опции:
  • -r удалить пользователя вместе с домашним каталогом
Опции:
  • -d домашний каталог
  • -s задать стартовую оболочку (/bin/sh)
  • -p пароль
  • -g основная группа, к которой приписывается пользователь
  • -G другие группы к которой приписывается пользователь
Опции:
  • имя_пользователя (для изменения пароля пользователя имя_пользователя)
Весь процесс переноса системы занимает от получаса до часа включая перекуры.
Внеклассное чтение
Пища для размышлений и медитаций в разных интернетах вкусна и обильна: о клонировании установленный систем, а так же о некоторых способах копирования Linux.
Так же представляет интерес метод с LVM, привнесённый в процессе дискуссии ув.тов.Анонимусом:
1) Создать LVM раздел на новом винчестере (fdisk).
2) Включить его в vg группу (vgextend).
3) Переместить все PE со старого винчестера на новый (pvmove).
4) Удалить разделы на старом винчестере из vg группы (vgreduce).

среда, 5 июля 2017 г.

Перенос системы LINUX на другой винчестер с переразбивкой разделов чницы

Первое, что нам необходимо сделать — это разметить новый жесткий диск в соответствии с желаниями и, возможно, исключив ошибки предыдущей разметки (если на исходном диске что то не нравится).

Разберем на конкретном примере моей системы. Я собираюсь перенести систему с HDD=80Gb на HDD=20Gb.

Мой диск, объемом 80Gb размечен следующим образом:

/dev/hda1 — /boot (250 Mb)
/dev/hda2 — swap (1Gb)
/dev/hda3 — extended (20Gb) (включает в себя /dev/hda5, /dev/hda6, /dev/hda7, /dev/hda8)
/dev/hda5 — / (5Gb)
/dev/hda6 — /tmp (512Mb)
/dev/hda7 — /usr (10Gb)
/dev/hda8 — /var (5Gb)
/dev/hda4 — /home (54Gb)


/home очень сильно забит информацией, потому его в клонирование я не включаю. 

Выставив перемычки как положено, я подключаю новый HDD в систему. Он принял метку hdb
Можно разметить его с помощью ЛЮБОЙ удобной для вас утилиты. Мне было проще воспользоваться GPARTED — так визуально понятнее, да и видно там сразу, сколько реально места занято данными на той или иной партиции, что поможет определить стоит ли выделять столько много (или мало) места.

Я разметил новый диск (/dev/hdb) следующим образом:

/dev/hdb1 — /boot (250 Mb)
/dev/hdb2 — swap (1Gb)
/dev/hdb3 — extended (14Gb) (включает в себя /dev/hdb5, /dev/hdb6, /dev/hdb7, /dev/hdb8)
/dev/hdb5 — / (1Gb)
/dev/hdb6 — /tmp (512Mb)
/dev/hdb7 — /var (5Gb)
/dev/hdb8 — /usr (7Gb)
/dev/hdb4 — /home (4Gb)


Следующим шагом надо подмонтировать все созданные разделы на новом HDD к существующей системе.
Для этого на существующей системе я создал директорию /backup, в которой создал поддиректории /boot, /root, /var, /usr (/tmp — не надо), в соответствии с разделами на которые я разделил новый HDD.
Далее осуществляем само монтирование:

sudo mount /dev/hdb1 /backup/boot
sudo mount /dev/hdb5 /backup/root
sudo mount /dev/hdb7 /backup/var
sudo mount /dev/hdb8 /backup/usr


Вот и подобрались к самому интересному, но отнюдь не самому простому месту, к копированию данных. 
В отличии от Windows Linux позволяет скопировать себя ПОЛНОСТЬЮ. Но надо помнить один важный момент — в системе есть аттрибуты на директории и файлы, а так же симлинки и хардлинки. Так вот необходимо так скопировать систему, чтоб все эти связи не растерялись. Для такой процедуры, по мнению больших специалистов, лучше всего подходит команда tar. 
Смысл в том, что мы НЕ БУДЕМ архивировать файлы на диск, а будем их переносить через так называемую «трубу» или «поток» на приемный HDD. 

Для упрощения процедуры переноса я написал скрипт backup.sh:

#!/bin/sh
cd /
tar -cf - dev initrd.img opt srv bin cdrom etc initrd lib sbin sys vmlinuz | (cd /backup/root; tar -xvpf -)
cd /boot
tar -cf - * | (cd /backup/boot; tar -xvpf -)
cd /var
tar -cf - * | (cd /backup/var; tar -xvpf -)
cd /usr
tar -cf - * (cd /backup/usr; tar -xvpf -)


немного объясню, что к чему:

«cd /»
— переход в root

«tar -cf — dev initrd.img opt srv bin cdrom etc initrd lib sbin sys | (cd /backup/root; tar -xvpf -)
» — заtarивание перечисленных директорий и файлов с передачей их на расtarивание на приемный HDD. 

Узнать какие директории и файлы надо переносить несложно. Просто выполните команду «ls /» тем самым получив листинг вашей системы начиная с /.
В моем случае это:

ls /
backup boot dev home initrd.img media opt root srv tmp var
bin cdrom etc initrd lib mnt proc sbin sys usr vmlinuz


Из всего этого «добра» нам нужно выделить то что будет находиться в /.
Так, как я выделил отдельные партиции на диске под /boot, /var, /tmp, /usr и /home, получается что их на данном шаге нужно пропустить. Следовательно берем только dev initrd.img opt srv var
bin cdrom etc initrd lib sbin sys vmlinuz


А с остальными проще:
cd /boot
— заходим в существующий /boot

tar -cf - * | (cd /backup/boot; tar -xvpf -) 
переносим все содержимое /boot в /backup/boot

и т.д.

Итак запускаем скрипт backup.sh и идем отдыхать на некоторое время. У меня все заняло около 10 минут. 

Теперь еще один важный момент на который я вначале не обратил внимание, за что поплатился лишним временем и головной болью. 

НЕДОСТАТОЧНО просто скопировать данные на партиции /var, /tmp, /usr.
После всех процедур переноса нам необходимо СОЗДАТЬ эти директории на приемном диске, как точки монтирования тех самых партиций (и все те точки монтирования, которые мы исключили при переносе — /home, /media, /tmp, /var, /mnt, /proc, /usr) ОБЯЗАТЕЛЬНО С ТЕМИ ЖЕ аттрибутами! То есть:

sudo mkdir /backup/root/home
sudo mkdir /backup/root/media
sudo mkdir /backup/root/tmp
sudo mkdir /backup/root/var
sudo mkdir /backup/root/mnt
sudo mkdir /backup/root/proc
sudo mkdir /backup/root/usr


какие выставить аттрибуты на директории можно узнать набрав команду ls -la / на исходной системе. Но кроме /tmp везде должен быть владелец root группа root и права 766. На /tmp надо поставить права 777.

Теперь надо на приемном HDD поправить fstab, если необходимо (если вдруг вы СОВСЕМ ПО ДРУГОМУ разметили диск). А так же поправить menu.lst загрузчика GRUB.

В UBUNTU что в fstab, что в menu.lst все диски прописаны через UUID а не просто /dev/hda.
узнать какой у вашего диска UUID можно с помощью команды: ls -l /dev/disk/by-uuid, на выводе должно получиться что то вроде:

lrwxrwxrwx 1 root root 10 2008-02-17 17:45 11815c66-5ae7-4497-9039-51de9adef664 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 78711a48-6776-4474-8fa8-87016aad83a2 -> ../../hda6
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 83fded3d-37c4-4d85-a965-a7bbe326178a -> ../../hda7
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 a60e482c-8260-48fb-a19e-f5f906d4d444 -> ../../hda8
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 bc7607fe-3bf2-4bc1-adce-8ab749a271c9 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 cacd40ea-ac88-4143-b5d9-5cb477eeb85d -> ../../hda4
lrwxrwxrwx 1 root root 10 2008-02-17 17:45 d4404ea9-0a8e-4a4c-b72d-10a5edd697be -> ../../hda5

вот нам нужны как раз цифры «11815c66-5ae7-4497-9039-51de9adef664», к примеру. Это UUID партиции swap (в моем случае).

в menu.lst правим следующие строки:

# kopt=root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro
(не смотрите что строка закомментирована, при обновлении ядра именно отсюда берется информация)

kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro quiet splash locale

и 

kernel /vmlinuz-2.6.22-14-generic root=UUID=d4404ea9-0a8e-4a4c-b72d-10a5edd697be ro single

Не забудьте тот факт, что хоть система и скопирована на диск, но она пока не умеет загружаться, потому что мы не установили загрузчик.
Делается это просто:
Берем установочный диск UBUNTU и грузимся.
переходим в консоль ctrl+f1

sudo su
grub
find /grub/stage1
root (hd0,0) сюда пишем то что выдала предыдущая команда
setup (hd0) сюда пишем то же самое но до первой запятой.
quit


Все — отсединяем диск от системы, подключаем, проверяем. У меня все заработало.

ЗЫ!

Так как я не переносил /home — то система ругнулась на то что я как пользователь есть а вот домашней папки у меня нет. Я поступил варварским способом — userdel %username%, а затем adduser %username%. 

Просто мне было НЕВАЖНО. И лень расставлять аттрибуты. А таким образом система сделала все за меня.

P.S. Не ругайте сильно за, возможно, устаревший способ, но на тот момент он работал и работал хорошо! (Тот момент можете вычислить по версии ядра упомянутого в этой статье).

вторник, 4 июля 2017 г.

SystemD Automount

SystemD Automount


SystemD Automount надстраивается над SystemD Mount - встроенного механизма монтирования файловых систем, и позволяет производить монтирование только в тот момент времени, когда вы фактически решаете обратиться к точке монтирования, например чтобы скопировать какой-нибудь файл. При чем не важно, что это за файловая система и где она находится: жестий диск, флэшка, NFS, сетевой ресурс MS Windows и т.д.. Такой способ монтирования может сэкономить немало времени при загрузке компьютера, особенно если вы собираетесь монтировать сетевую файловую систему, ведь ей для работы нужен уже настроенный сетевой интерфейс. Каждая такая файловая система должны быть описана специальным unit-файлом, чтобы SystemD знал когда, что и куда нужно смонтировать. Именоваться такой файл должен исходя из точки монтирования (то, куда относительно корневого каталога должна быть смонтирована файловая система), иметь суффикс ".mount" и располагаться в каталоге /lib/systemd/system. А automount unit-файл должен делать всё то же самое, только иметь суффикс не ".mount", а ".automount". Соответственно активным из этих двух файлов должен быть automount unit-файл, а второй просто ждать, когда его вызовет automount.

SystemD Mount

Рассмотрим синтаксис unit-файлов типа ".mount"
[Unit]
Description=

[Mount]
What=
Where=
Type=
Options=
В секции "[Unit]" одна единственная дирректива "Description=" не делает ничего, просто оставляет комментарий. Гораздо интересенее секция [Mount] - в ней диррективы "What=" указывает на то, что будем монтировать, "Where=" указывает на то, куда будем монтировать, "Type=" описывает на тип файловой системы и "Options=" указывает какие параметры монтирования следует применить. Пользуясь примером из статьи Как подключить сетевой диск Windows в Linux напишем unit-файл типа .mount для сетевого SMB ресурса MS Windows
[Unit]
Description=Mount point for cifs

[Mount]
What=//SERVER_IP/SHARE_NAME
Where=/mnt/winshare
Type=cifs
Options=user=WIN_USER_NAME,password=WIN_USER_PASSWORD
Дадим ему имя "mnt-winshare.mount" и положим в /lib/systemd/system
Перед тем, как приступить к созданию unit-файла типа .automount, желательно убедиться, что уже на этом этапе всё работает хорошо. Это можно сделать тремя командами
systemctl daemon-reload
systemctl start mnt-winshare.mount
ls /mnt/winshare
Первая команда говорит о том, что SystemD следует перечитать свою конфигурацию, так мы там что-то поменяли, вторая запускает то, что описано в unit-файле mnt-winshare.mount, и третья отображает содержимое свежепримонтированного ресурса. Если вы допустили ошибку в написании unit-файла, при его запуске SystemD может выругаться, и никакого содержимого папки мы уже не увидим. Помочь понять, что же произошло может команда
systemctl status mnt-share.mount
Она кроме всего прочего выведет последнии сообщения журнала этой службы, которые помогут понять природу ошибки. Например можно получить сообщение вида "mount error(13): Permission denied", которое указывает на неверно заданные имя пользователя и пароль к сетевому ресурсу. Ошибок бывает много и разных - внимательно читайте журнал сообщений.

SystemD Automount

Отмонтируйте ресурс, подключенный к нашей файловой системы из прошлого примера
umount /mnt/winshare
Теперь рассмотрим синтаксис unit-файлов типа ".automount", пользуясь информацией из уже созданного unit-файла mnt-winshare.mount
[Unit]
Description=Automount unit for cifs

[Automount]
Where=/mnt/winshare

[Install]
WantedBy=remote-fs.target
Синтаксис понятен. Как обычно "Description=" - это просто описание, "Where=" указывает на папку, которую SystemD будет мониторить в ожидании обращения к ней, чтобы автоматически смонтировать файловую систему, описанную в соответствующем unit-файле, а вот "WantedBy=remote-fs.target" в секции [Install] указывает на то, что unit-файл типа .automount будет активирован в момент времени, когда система будет готова к монтированию сетевых файловых систем, а именно после того, как будут сконфигурированы сетевые интерфейсы, так как цель "remote-fs.target" зависит от цели "network.target"
Всё. Не забудьте перечитать конфигурацию SystemD и активировать ваш automount unit-файл командами
systemctl daemon-reload
systemctl enable mnt-winshare.automount
Если не хотите перезагружаться, можно активировать unit вручную
systemctl start mnt-winshare.automount
Теперь при первом же обращении к папке /mnt/winshare SystemD смонтирует туда сетевой SMB ресурс.

Как подключить сетевой диск Windows в Linux

Поддержку сетевых дисков Windows в Linux обеспечивает пакет cifs-utils. Если он у вас еще не установлен, в командной строке от имени суперпользователя введите
apt-get install cifs-utils
Эта команда проверит, установлен ли указанный пакет и, если нет, установит его.
Создайте в /mnt (или любом другом месте) папку, в которую мы будем подключать сетевой диск Windows:
mkdir /mnt/winshare
И наконец само подключение сетевой папки Windows в Linux выполняется с помощью команды mount.cifs
mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o username=WIN_USER_NAME,password=WIN_USER_PASSWORD
Такая команда выполнит присоединение к фаловой системе Linux сетевого диска Windows с именем SHARE_NAME, расположенного на сервере с IP-адресом SERVER_IP от имени WIN_USER_NAME с паролем WIN_USER_PASSWORD. Следует понимать, что на стороне Windows уже логичным образом указанная папка должна быть расшарена и права на доступ к ней должны принадлежать указанному пользователю.
В большинстве случаев этого достаточно, если вы работаете от лица суперпользователя. Если же вы от лица суперпользователя производите только подключение сетевой папки Windows, а работать с ней планируете от лица обычного, непривелегированного пользователя, то в качестве опции команде mount.cifs необходимо передать значения UID и GID этого пользователя, иначе, скорее всего, вам не будут доступны операции редактирования файлов и каталогов. Получить UID и GID пользователя можно командой:
grep MY_USER_NAME /etc/passwd
Подставив вместо MY_USER_NAME имя пользователя, под которым вы работаете в Linux, вы получите примерно следующую строчку:
MY_USER_NAME:x:1000:1000:user,,,:/home/user:/bin/bash
где 3-е и 4-е поле как раз указывают на UID и GID пользователя MY_USER_NAME. Теперь просто подставим полученные значения в качестве дополнительных аргументов команды mount.cifs:
mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o username=WIN_USER_NAME,password=WIN_USER_PASSWORD,uid=1000,gid=1000
где uid=1000,gid=1000 - uid и gid, полученные из примера выше.
Напротив, если сетевой диск публичен, и для доступа к нему не нужен ни логин ни пароль, в опциях вместо имени пользователя и его пароля необходимо указать, что доступ является гостевым:
mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o guest
И наконец, чтобы в Linux автоматически подключать сетевую папку после перезагрузки, вносим соответствующую информацию в /etc/fstab (дописываем в конец файла):
//SERVER_IP/SHARE_NAME   /MOUNT_POINT_PATH   cifs   ALL_OPTIONS   0   0
Т.е. должно получиться что-то вроде
//192.168.0.1/share   /mnt/winshare   cifs user=WIN_USER_NAME,password=WIN_USER_PASSWORD,uid=1000,gid=1000   0   0
Вы скажите, что это плохо - хранить пароль в открытом виде в файле, доступном для чтения всем, и будете правы. К счастью, разработчики об это позаботились. Создаем файл с помощью редактора, например, nano:
nano /etc/credentials   #имя файла может быть любым
такого содержания:
   username=WIN_USER_NAME
   password=WIN_USER_PASSWORD
   domail=WIN_WORKGROUP
Делаем его доступным для чтения и записи только для пользователя root:
chmod 600 /etc/credentials   #указывайте файл, который создавали вы
и вместо всей обвязки из имен и паролей просто пишем в опциях credentials=/etc/credentials (или тот файл, который вы создали). Эта опция работает как при ручном монтировании сетевого диска Windows
mount.cifs //SERVER_IP/SHARE_NAME /mnt/winshare -o credentials=/etc/credentials,uid=1000,gid=1000
так и автоматическом, при внесении записи в /etc/fstab (из примера выше):
//192.168.0.1/share   /mnt/winshare   cifs   credentials=/etc/credentials,uid=1000,gid=1000   0   0
Примечание. Если вы используете дистрибутив, основанный на SystemD (Debian версии 8 и выше, Ubuntu версии 15.04 и выше, Fedora, ArchLinux...), применение файла /etc/fstab для автоматического монтирования файловых систем является нежелательным, так как SystemD использует несколько другой механизм для монтирования файловых систем, хотя он и обратно совместим с /etc/fstab. Узнать, как можно использовать возможности SystemD для монтирования файловых систем можно в статье SystemD Automount

МОНТИРОВАНИЕ ДИСКОВ В LINUX (МОНТИРОВАНИЕ WINDOWS РЕСУРСОВ В LINUX)

Mount – это утилита командной строки UNIX систем. С ее помощью можно смонтировать практически что угодно и куда угодно (В рамках разумного). Так что напишу небольшую заметочку что и как монтируется. Монтирование HDD и DVD Rom или сетевой папки в Linux делается очень просто, не зависимо от файловой системы. (Пожалуй, только если Ваш диск не развалился в RAW  ) Для начала простое монтирование HDD и CD/DVD, и закончим монтированием удаленных папок Windows.
Монтирование жестких дисков и их разделов (Монтирование разделов жесткого диска)
Перед тем как что-то куда-то монтировать нужно знать что и куда Вы будете монтировать. Поэтому начнем с того что посмотрим список всех подключенных устройств к Вашему серверу\рабочей станции. Для этого используем не хитрую команду:
1
sudo fdisk –l 
На что получим вот такой ответ:

На картинке мы видим, что на данный момент к моему компьютеру подключено два жестких диска. 500Gb и 250Gb соответственно. Диски могут быть подключены, но не примонтированы.
/dev/sda (500Gb. Диск на котором у меня установлена система)
/dev/sdb (250Gb. Диск который нам нужно смонтировать)
Теперь просмотрим примонтированные диски:
1
sudo mount
И получим вот такой ответ:

Если посмотреть первую строку вывода (/dev/sda1 on / type ext4 (rw, errors=remount-ro,commit=0)) можно сказать меня примонтирован только один раздел. Это /dev/sda1, его файловая система ext4 и он смонтирован в режиме rw (чтение запись.) в корневой раздел /
Примечание! Посмотреть информацию примонтированных устройств можно при помощи команды:
1
df –h
Значит диск /dev/sdb подключен, но не примонтирован. Теперь примонтироуем его скажем в каталог mount. Для этого создадим каталог:
1
mkdir /home/username/mount
и выполним монтирование диска командной:
1
sudo mount /dev/sdb1 /home/username/mount
Все очень просто. Сначала вызывается команда mount, первым параметром указывается что монтировать, вторым параметром куда монтировать. Данная команда монтирует диск /dev/sdb1 в каталог /home/username/mount. Где username имя вашего пользователя.
После удачного монтирования, консоль не выдаст ни каких сообщений. Теперь достаточно просто перейти в каталог mount, что бы получить доступ к вашему диску.
Монтирование NTFS дисков нужно осуществлять с указанием типа файловой системы. Для монтирования NTFS раздела укажем тип файловой системы:
1
mount -t ntfs /dev/sdb1 /home/username/mount
Теперь появился ключ «-t». Он может принимать вот такие значения:
• ntfs (Разделы NTFS)
• ntfs-3g (Разделы NTFS)
• vfat (Разделы FAT)
• iso9660 (Для монтирования CD/DVD Rom или образов ISO)
• ext3, ext4 (Для файловых систем ext3 и ext4 соответственно. Редко когда нужно указывать эти ФС явно)
Теперь немного о монтировании с указанием параметров доступа. Он указывается с помощью ключа «-o». Параметры бывают двух типов:
rw (Read/Write – Чтение/Запись)
ro (Read only – Только чтение)
Пример команды: Монтирование только для чтения:
1
mount -t ntfs –o ro /dev/sdb1 /home/username/mount
Пример команды: Монтирование для чтения и записи:
1
mount -t ntfs –o rw /dev/sdb1 /home/username/mount
Принудительное монтирование дисков. Бывает так, что диск не хочет монтироваться в Linux. Можно заставить его «силой». Опять же используем ключ «-o» только с параметром «force»:
1
mount -t ntfs –o force /dev/sdb1 /home/username/mount
Отмонтировать устройство можно используя команду umount указав или точку монтирования, или сам раздел диска:
1
sudo umount  /dev/sdb1
или
1
sudo umount  /home/username/mount
Монтирование дисков CD/DVD-ROM
Монтирование CD/DVD ROM в Linux так же осуществляется при помощи команды mount, только обязательно нужно указать тип файловой системы iso9660:
1
sudo mount -t iso9660 -o ro /dev/cdrom /home/username/CDROM
Монтирование образов дисков ISO
Для Windows написано столько программ для монтирования образов дисков, что все названия не упомнишь. К счастью в Linux это делается все той же командой mount. Только теперь ключ «-o» будет использоваться с командой loop:
1
sudo mount -t iso9660 -o loop /home/file.iso /home/username/iso
Монтирование папки Windows удаленного компьютера (“Подключение сетевого диска в Linux”)
Вот и самое интересное. Не большое отступление. Предположим что у Вас сервер. Неважно какой, на пример сервер базы данных. Вы делаете резервное копирование и хотите, что бы резервирование сразу выполнялось с сохранением данных на компьютер в сети. Примонтируем расшаренный диск на Windows машине к нашей Linux системе. Вообще монтирование сетевого диска в Linux дело не сложное. Для начала нам нужно установить пакет smbfs, так что выполним команду:
1
sudo apt-get install smbfs
Теперь создадим каталог для монтирования сетевого диска, на пример share:
1
mkdir /home/username/share
Каталог готов. Так как некоторые компьютеры требуют авторизацию по Логину и Паролю, разберем две ситуации:
1) Общий доступ для всех без авторизации. Монтирование сетевого диска будет выполняться следующей командой:
1
sudo mount -t cifs //192.168.0.0/ShareFolger /home/username/share
или указав пользователя guest, тип кодировки utf8 если ресур позволяет Чтение/Запись:
1
sudo mount -t cifs //192.168.0.0/ShareFolger /home/username/share -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
если Вам нужно иметь доступ только для чтения:
1
sudo mount -t cifs //192.168.0.0/ShareFolger /home/username/share -o guest,iocharset=utf8
2) Ресурс требует обязательной авторизации пользователя, используя Логин и Пароль:
1
sudo mount -t cifs //192.168.0.0/ShareFolger /home/username/share -o username=ИМЯ_ПОЛЬЗОВАТЕЛЯ,password=ПАРОЛЬ,iocharset=utf8,file_mode=0777,dir_mode=0777
Примечание! Замените 192.168.0.0 на IP адрес машины, на которой находится расшаренная папка.
Если вы хотите получить доступ к сетевому ресурсу не используя IP адрес, а через имя удаленного компьютера (netbios имя) то вам так же потребуется установка пакета winbind:
1
sudo apt-get install winbind
Автоматическое монтирование сетевых ресурсов в Linux
Для автоматического монтирования дисков и сетевых папок нужно будет «подправить» файл /etc/fstab.
Для ресурсов не требующих авторизации пользователей можно просто добавить в fstab например вот такую строку:
1
//192.168.0.0/ShareFolger /home/username/share cifs guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
Если же нужно использовать авторизацию на удаленной машине, то дела обстоят немного «сложнее». Для начала нужно создать файл содержащий имя пользователя и пароль к удаленной системе. Создадим его в каталоге /home.
1
sudo touch /home/ShareLoginPass1
и добавим в него всего две строчки:
1
2
username=ИМЯ ПОЛЬЗОВАТЕЛЯ
password=ПАРОЛЬ
выставим права для того что бы смотреть файл могла только система:
1
sudo chmod 700 /home/ShareLoginPass1
Далее открываем файл /etc/fstab и добавляем в него вот такую строку:
1
//192.168.0.0/ShareFolger /home/username/share cifs credentials=/home/ShareLoginPass1,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0
Примечание! Возможно вместо указания вместе с ключом -t придется указывать не cifs, а smbfs. Это актуально для всех видов монтирования сетевого диска Windows.