nfsroot с aufs3 на сервере, странное поведение - read only root fs при загрузке

Здравствуйте.

Я пытаюсь реализовать сетевую загрузку рабочей станции с сервера. Выполнил настройку согласно http://gentoo.org/doc/en/diskless-howto.xml (за исключением части про формирование /diskless/192.168.1.21 и экспорт частей / через nfs, по причине некорректной работы - некорректная загрузка, usr и прочее не монтируется -> работать практически невозможно).
После

mount -o bind / /diskless/192.168.1.21

- загрузка происходит корректно. Но мне нужно внести некоторые изменения в корневую файловую систему для клиента. Создаю /home/overlay, После

mount -t aufs -o br=/home/overlay:/ aufs /diskless/192.168.1.21

вношу изменения, загружаюсь. Корень монтируется, изменения вносимые оверлеем aufs3 работают, но root fs не перемонтируется для записи в процессе загрузки. Попытка

mount -n -o remount,rw / -v 

оканчивается печальным

mount.nfs: mount(2): Invalid argument

хотя вызов

mount.nfs master:/diskless/192.168.1.21/ / -n -v -o rw,sync,remount,hard,intr,nolock

прокатывает на ура - / перемонтируется для записи и корректно работает.
Корень при загрузке с bind / для /diskless/192.168.1.21/ монтируется с опциями

192.168.1.1:/diskless/192.168.1.21/ on / type nfs (rw,relatime,vers=3,rsize=1024,wsize=1024,namlen=255,hard,nolock,proto=udp,port=65535,timeo=7,retrans=3,sec=sys,local_lock=all,addr=192.168.1.1)

а при загрузке с aufs3 для /diskless/192.168.1.21/ с

master:/diskless/192.168.1.21 on / type nfs (rw,sync,hard,intr,nolock,rsize=8192,wsize=8192,vers=4,addr=192.168.1.1,clientaddr=192.168.1.21)

но указание опций bind в fstab при загрузке с aufs3 ничего не меняет

Не пойму какая клиенту разница какая фс экспортируется в nfs на сервере?
И что делать дабы обойти этот досадный глюк?

почитайте про опции экспорта.

почитайте про опции экспорта.

В смысле про опции которые

В смысле про опции которые сказываются в /etc/exports? Они остаются неизменными для обоих случаев, я лишь вызываю /etc/init.d/nfs reload после перемонтирования каталога.

Arago написал(а): Я пытаюсь

Arago написал(а):
Я пытаюсь реализовать сетевую загрузку рабочей станции с сервера. Выполнил настройку согласно http://gentoo.org/doc/en/diskless-howto.xml (за исключением части про формирование /diskless/192.168.1.21 и экспорт частей / через nfs, по причине некорректной работы - некорректная загрузка, usr и прочее не монтируется -> работать практически невозможно).

Недавно решала подобную задачу. Сначала сделала для монтирования корня в rw, потом перевела в ro. Все в итоге завелось, хотя сначала были аналогичные проблемы. Не знаю, насколько вам это поможет, но на всякий случай. Мой fstab клиента тут: http://pastebin.com/h8rszSf7, /etc/exports сервера тут: http://pastebin.com/trzkmfL6. Для rw - только заменить в них опцию монтирования. Итоговые заметки:

*проверить наличие всех точек монтирования. и еще посмотреть на эту тему ман: http://gentoo.org/doc/en/diskless-howto.xml.
*/bin, /sbin и /lib (->/lib64) принадлежат rootfs клиента и синкаются с фс сервера. rsync -avz для сохранения символьных ссылок и прав. /etc копируется с серверного.
*lib -> lib64
*etc/mtab -> proc/mounts
*файлы с suid из /usr/bin chmod o+r
*на rootfs сразу usr/bin/syslog-ng
*runlevels

sysinit: devfs, dmesg, udev
boot: bootmisc, fsck, hostname, hwclock, localmount, modules, mtab, net.lo, netmount, procfs, root, rpc.idmapd, swap, sysctl, termencoding, urandom
default: consolefont, cupsd, dbus, keymaps, local, syslog-ng, udev-postmount, vixie-cron
nonetwork: local

*для монтирования nfs-шар с сохранением прав на сервере и клиенте должны быть запущены rpc.idmapd с одинаковыми конфигами /etc/rpc.idmapd.conf (как минимум, определен Domain)
*домашние директории нужных пользователей должны быть не readonly:

#cat local.d/local.start 
    #!/bin/bash
    mount -t tmpfs tmpfs /home/ksu
    mount -t tmpfs tmpfs /root
    chown -R ksu:ksu /home/ksu

*не забыть открыть все необходимое на сервере в iptables:

-N nfs
-A INPUT -p udp --dport 111 -j nfs
-A INPUT -p tcp --dport 111 -j nfs
-A INPUT -p tcp --dport 2049 -j nfs
-A INPUT -p udp --dport 2049 -j nfs
-A INPUT -p tcp --dport 32769 -j nfs
-A INPUT -p udp --dport 32769 -j nfs
-A INPUT -p tcp --dport 892 -j nfs
-A INPUT -p udp --dport 892 -j nfs
-A INPUT -p tcp --dport 875 -j nfs
-A INPUT -p udp --dport 875 -j nfs
-A INPUT -p tcp --dport 662 -j nfs
-A INPUT -p udp --dport 662 -j nfs
-A INPUT -p tcp --dport 48306 -j nfs
-A INPUT -p udp --dport 48306 -j nfs
-A nfs -j ACCEPT -s 192.168.0.0/24

про 48306 сказал tcpdump. возможно, может быть другим.

*не забыть включить в клиентском ядре поддержку сетевой и видео)
*в etc/conf.d/net config_eth0=( "noop" )
*права на etc/sudoers 440 и прочие прелести
*подменить Xorg.conf на рабочий под клиентом
*etc/make.conf проверить на предмет VIDEO_CARDS и INPUT_DEVICES, собрать xorg-drivers с недостающими, потянет за собой дрова xf86.
*сервисы стартовать предпочтительно из local.start, предварительно добавив необходимые части (например, /var/lib/iptables/rules-save для iptables). возможно, имеет смысл для таких настроек сделать отдельную небольшую nfs-шару.
*/var/log в tmpfs, но логи складывать на сервер
*каждой машине - по своему hostname
*подумать на предмет size= в /etc/fstab у tmpfs. по умолчанию - "half of the memory".
*отключить fsck на клиенте, создав файл /etc/fastboot

Обратите особое внимание на runlevels.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".