Подключение Raspberry Pi к сетевому хранилищу при загрузке
В моём предыдущем руководстве я рассказал, как можно получить доступ к сетевому диску с вашего Raspberry Pi, но при выключении Raspberry Pi этот сетевой диск исчезал. А что если вы хотите иметь доступ к этому сетевому диску каждый раз, когда ваш Raspberry Pi включается? Конечно, это возможно. Я предполагаю, что ваше сетевое хранилище (NAS) работает на базе Linux или предоставляет доступ к хранилищу NFS. Большинство из них именно такие - все три моих NAS-диска, от разных производителей, работают на базе Linux.
В мире Linux задача подключения к сетевому диску называется «монтированием» диска. Это делается с помощью команды mount. На вашем Raspberry Pi уже смонтировано несколько «дисков», как вы можете увидеть, используя команду mount без параметров:
mount
Что покажет (как минимум) следующее:
/dev/root on / type ext4 (rw,noatime,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=437904k,nr_inodes=109476,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=88440k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=176860k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
Всё это, конечно, находится на SD-карте вашего Raspberry Pi. Я не буду объяснять каждую из них, так как на данном этапе не обязательно знать, что делает каждая из них. Наша задача - добавить ещё одну запись в этот список.
Создание точки монтирования
Чтобы «смонтировать» папку сетевого хранилища на вашем Raspberry Pi, вы должны сначала создать папку, на которую будете «монтировать» внешний сетевой диск. Это место на вашем Raspberry Pi, где вы найдёте все файлы с вашего сетевого хранилища. Например, перейдите в домашнюю папку и создайте новую папку:
cd ~
mkdir MyNAS
Этот каталог может быть в любом месте на вашем Raspberry Pi, и часто располагается в каталогах /media или /mnt.
Включение блокировки файлов
Будучи безопасной операционной системой, Linux имеет концепцию «блокировки» файлов, когда к ним обращается кто-то. Вы можете монтировать общие папки без этой функции, но я рекомендую использовать её для защиты ваших файлов. Вам нужно включить службу „rpcbind“, которая по умолчанию выключена. Сделайте это командой:
sudo update-rc.d rpcbind enable
Подготовка вашего NAS
Все сетевые хранилища данных (NAS) имеют встроенную систему безопасности. Это означает, что они могут ограничивать доступ к файлам и папкам в вашей домашней сети. Если вы хотите, чтобы ваш Raspberry Pi имел доступ к каким-либо файлам или папкам на NAS, вам придётся «открыть» доступ к этим файлам и папкам. Как это сделать - зависит от вашего NAS. У меня дома три штуки, и каждый из них настраивается по-разному. В зависимости от того, чем вы делитесь, способ предоставления доступа к этим файлам и папкам будет отличаться. Если, например, вы хотите поделиться музыкой или видео, то вы можете посчитать, что это нормально, если их увидит любой человек в вашей домашней сети. Если у вас есть файлы, которые вы не хотите показывать другим, вам нужно предоставить к ним доступ только определённым учётным записям пользователей.
Здесь я предполагаю, что вы собираетесь либо делиться музыкой/видео со всеми, либо любые файлы, которые ваш Raspberry Pi будет создавать, будут доступны для просмотра всем. Это означает, что вам нужно сделать папку и все папки и файлы внутри неё либо «публичными», либо доступными для «гостевой» учётной записи. Как это сделать, как я уже сказал, зависит от вашего NAS.
Определение точки монтирования
Существует файл в каталоге /etc, который называется fstab и определяет «таблицу файловых систем» (file system table). Другими словами, он указывает Raspberry Pi, какие хранилища должны монтироваться каждый раз при загрузке вашего Raspberry Pi. Вы можете включить свой сетевой диск в этот файл. Но прежде чем редактировать его, сделайте резервную копию, так как довольно легко испортить работу Raspberry Pi, случайно изменив что-то, что не следует менять в этом файле.
sudo cp /etc/fstab /etc/fstab.backup
Это важный шаг. При создании этого руководства я отредактировал fstab на моём IQaudIO Volumio Raspberry Pi2, который постоянно подключён к моему NAS с моей музыкальной коллекцией. К сожалению, я перезагрузил его с ошибкой в файле fstab, что помешало корректной загрузке. Для многих это стало бы катастрофой, но, к счастью, я смог извлечь microSD-карту из этого Raspberry Pi, подключить её как внешний диск к моему запасному Raspberry Pi2 и восстановить резервную копию файла fstab! День был спасён.
Теперь мы можем отредактировать fstab:
sudo nano /etc/fstab
И добавить строку в конец файла:
//192.168.13.2/Qmultimedia/Music /home/pi/MyNAS nfs default 0 0
Как обычно в nano, нажмите Ctrl+X для выхода, ответьте „Y“ на вопрос о сохранении и нажмите „Return“.
Папка не монтируется автоматически. Вам нужно указать вашему Raspberry Pi прочитать файл fstab и смонтировать диски. Сделайте это командой:
sudo mount -a
Эта команда прочитает файл fstab и смонтирует все диски, которые ещё не смонтированы.
Если всё прошло успешно, вы теперь должны быть в состоянии перейти в каталог и увидеть, какие файлы там находятся.
cd ~/MyNAS
ls
Это покажет все файлы и папки, к которым вы предоставили общий доступ. Если после нескольких экспериментов вы обнаружите, что что-то просто не работает, не забудьте восстановить ваш последний файл fstab перед перезагрузкой и попробуйте снова, выполнив:
sudo cp /etc/fstab.backup /etc/fstab
Заключение
Надеюсь, теперь у вас должен быть доступ к общей папке на вашем NAS. Используя эти инструкции, я подключил свой Raspberry Pi на основе „Volumio OS“ (с DAC и усилителем IQaudIO) к моему QNAP NAS, который хранит мою музыку. У меня есть ещё один Raspberry Pi, который является моим XBMC-клиентом и подключается к другому NAS для моих видеофайлов.
Хотя я не могу ответить на все вопросы, мне было бы интересно узнать о вашем опыте работы с общими сетевыми дисками. Почему бы не написать мне в Twitter @Geeky_Tim - я хотел бы услышать о ваших решениях.