Как я могу заставить мой Raspberry Pi использовать сервер NFS для корневой файловой системы вместо SD-карты?
Я хотел бы иметь возможность настроить мой Raspberry Pi на использование его корневой файловой системы на удаленном компьютере через NFS для повышения производительности, резервного копирования и разработки. Как я могу это сделать?
Ответы:
Короткая версия
Вам все еще понадобится SD-карта для начальной загрузки, но после этого SD-карте ничего кроме / boot не понадобится.
Детали
Я сделал это только на машине с Linux. Теоретически это возможно на любой машине, которая может экспортировать файловые системы NFS.
Самый простой способ подготовить корневую файловую систему - скопировать ту, которая предоставлена существующими образами. В качестве отправной точки я использовал официальный образ Debian 6 :
Смонтируйте корневой раздел из этого образа, используя петлевое устройство. Для начала корневого раздела вам потребуется смещение в изображении, в данном случае это второй раздел в изображении:
Второй раздел начинается в блоке (или секторе) 157696, поэтому смещение равно (512 * 157696) = 80740352:
С установленным изображением вы, вероятно, захотите скопировать это куда-нибудь более постоянное, чтобы избежать использования петлевого устройства навсегда. Я сделал том LVM2 и установил его в / mnt / rpi-root, поэтому я сделал:
Теперь нам нужно экспортировать файловую систему, поэтому нам нужно добавить строку вроде:
в / etc / exports на сервере NFS, где 192.168.1.2 - адрес Raspberry Pi. После добавления этого запуска
exportfs -rv
перечитайте список экспорта. (См. Export (5) для более сложных опций, включая подстановочные знаки / подсети, а не отдельные хосты)Вы также можете пропустить этот шаг и создать корневую файловую систему с нуля, используя что-то вроде
multistrap
.Теперь нам нужно создать SD-карту, которая выполняет начальную загрузку и загружается с использованием этого общего ресурса NFS. Я сделал это, взяв первый раздел официального образа и скопировав его на SD-карту, где SD-карта - / dev / sdx:
и затем, поскольку это скопировало только первый раздел, отредактировав таблицу разделов с помощью fdisk, удалив два раздела, которые мы не скопировали.
После этого я смонтировал раздел с SD-карты и отредактировал с него файл cmdline.txt:
где 192.168.1.1 - адрес сервера NFS. Если вы не хотите использовать DHCP, вы можете установить альтернативные способы IP-адреса, см. Этот документ для получения дополнительной информации.
После этого вы можете отключить SD-карту и загрузить Rapsberry Pi с корнем NFS. Вы также можете манипулировать файловой системой со стороны сервера или других клиентов NFS по своему усмотрению (например, QEMU + binfmt_misc , снимки LVM, системы резервного копирования и т. Д.)
Дополнительные вещи
Если вы используете ip = dhcp, вам, вероятно, нужно закомментировать строку:
в / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces), чтобы избежать ситуации, когда переключение между ранним загрузочным DHCP и обычным более поздним вызывает сообщение, подобное:
Если вы хотите загрузить множество устройств из одного корня, вам нужно позаботиться о предоставлении «local» / tmp (возможно, tmpfs) и других тонкостей, чтобы избежать проблем с несколькими машинами, пытающимися записать в одни и те же файлы.
источник
/home/user/Documents/raspisRootFolder
и клиентfstab
просто монтируют все это на/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
из/etc/fstab
, хотя я думаю , что оно не будет , не вызывая никаких проблем , если вы оставите его в.