LINUX.ORG.RU

busybox + nfsv4: прогать самому?

 ,


0

1
/ # mount 10.115.10.1:/ /ro -t nfs -o vers=4,ro -v
mount: NFSv4 not supported
mount: mounting 10.115.10.1:/ on /ro failed

https://github.com/mirror/busybox/blob/master/util-linux/mount.c#L959

Я правильно понимаю, что в busybox отсутствует код для монтирования nfsv4 и его надо тащить руками?

nfs - это модуль ядра, mount - системный вызов ядра, причем тут busybox?

sparks ★★★★
()

Да.

Либо кодить, либо v3, либо nfs-utils.


Но я не удержусь и спрошу - а зачем тебе v4 в ro, да еще из bb?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

в busybox отсутствует код для монтирования nfsv4 и его надо тащить руками

спроси чувака с ником vodz, вроде в его версии есть nfs4

http://www.simtreas.ru/~dzo/Changelog.html

правда там какой-то глюконат - на ubuntu 14.04 amd64 даже make allyesconfig завершается с ошибкой

anonymous
()

Отвечу сам на своё сообщение

#define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2)

/*
 * Unfortunately, the kernel prints annoying console messages
 * in case of an unexpected nfs mount version (instead of
 * just returning some error).  Therefore we'll have to try
 * and figure out what version the kernel expects.
 *
 * Variables:
 *	KERNEL_NFS_MOUNT_VERSION: kernel sources at compile time
 *	NFS_MOUNT_VERSION: these nfsmount sources at compile time
 *	nfs_mount_version: version this source and running kernel can handle
 */
static void
find_kernel_nfs_mount_version(void)
{
	int kernel_version;

	if (nfs_mount_version)
		return;

	nfs_mount_version = 4; /* default */

	kernel_version = get_linux_version_code();
	if (kernel_version) {
		if (kernel_version < KERNEL_VERSION(2,2,18))
			nfs_mount_version = 3;
		/* else v4 since 2.3.99pre4 */
	}
}

Или собирай свежий или собери свой nfsmount всего один системный вызов

sparks ★★★★
()

сам спросил, сам отвечаю.

В старом ядре не было нужных деталей внутри самого ядра, поэтому в busybox есть код, который помогал старому ядру.

Теперь вместо всего этого есть несколько строковых параметров: чего монтировать, куда монтировать и какие опции.

Так что надо в настройках busybox просто отключить опцию монтирования NFS. После этого NFS будет монтировать ядро, а не сам busybox и всё сразу станет лучше.

max_lapshin ★★★★★
() автор топика
Ответ на: комментарий от anonymous

спроси чувака с ником vodz, вроде в его версии есть nfs4

И не мудрено, в busybox nfs-у почти не уделяется внимания.

даже make allyesconfig

Взяли бы да и отправили проблему. Я уже забыл, когда делал allyesconfig, так как и писал и юзал это для себя, то есть с определенным набором апплет.

vodz ★★★★★
()
Ответ на: комментарий от vodz

И не мудрено, в busybox nfs-у почти не уделяется внимания.

потому что самый распространённый случай когда nfs зачем-то нужна - отладка, корень на nfs и ядро само монитирует его, просто указываешь ему где этот корень в парметрах

Взяли бы да и отправили проблему

anonymous
()
Ответ на: комментарий от anonymous

потому что самый распространённый случай когда nfs зачем-то нужна - отладка,

Не надо умничать. nfs-у в системах с busybox можно найти гораздо больше применений. Так лично я так делаю размножитель систем на одинаковые аппаратные платформы.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Так лично я так делаю размножитель систем на одинаковые аппаратные платформы.

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

anonymous
()
Ответ на: комментарий от anonymous

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

У меня достаточно опыта, чтобы самому разобраться какой я фуфел или нет делаю. Как и всем тем, кто использует нативную сетевую fs на «малодисковом» железе. Без анонимных икспертов ЛОРа.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 2)
Ответ на: комментарий от vodz

У меня достаточно опыта

дело не в опыте, опытные гомосеки дырки тоже не по назначению используют. Не майнстримно это :) поэтому в базибоксе нет, кому надо легко внешнюю утилиту могут использовать - зачем это в бинарник базибокса запихивать.

anonymous
()
Ответ на: комментарий от vodz

Правильно тебе говорят, на самом деле. Если ты грузишь железки по сети, то можно и нормальную систему грузить (я так и делаю, например), а не с busybox’ом. А если в железки ничего кроме укушенного busybox’a не влезает, то совершенно непонятно что с этими железками тогда можно вообще делать, кроме как загружать. Это, несомненно, интересно, но совершенно бессмысленно.

У busybox’а масса ограничений, на самом деле, он годится только если у тебя в какой-нибудь флешке места кот наплакал.

Stanson ★★★★★
()
Ответ на: комментарий от anonymous

Не майнстримно это :)

Плевать на мэйнстримные миллионы мух. Тоже мне критерий нашли.

поэтому в базибоксе нет, кому надо легко внешнюю утилиту могут использовать - зачем это в бинарник базибокса запихивать.

Что поэтому? У вас нет логики. Если не надо, то и не засовывайте. Где мне надо, там я и засовываю. Весь принцип busybox в этом и состоит.

vodz ★★★★★
()
Ответ на: комментарий от Stanson

У busybox’а масса ограничений, на самом деле, он годится только если у тебя в какой-нибудь флешке места кот наплакал.

Не надо мне рассказывать о busybox. Остальное - см. выше.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Не надо мне рассказывать о busybox.

Видимо, всё-же надо, если про NFSv4 не в курсе.

То какие претензии к busybox? Грузите что хотите, логика то где?

Зачем грузить busybox если можно загрузить полноценную систему? С нормальным mount и всем остальным, от ping до bash.

Что если nfs там нужен и помещается, причём внутрь он помещается плотнее по определению, то железка превращается с сетевой fs.

Вот это вот не распарсил вообще.

Ваши идиосинкразии к сетевой fs оставьте при себе.

Откуда идиосинкразии? Да я, блин, сам её использую, просто не через жопу.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Видимо, всё-же надо, если про NFSv4 не в курсе.

Что я там не в курсе?

Зачем грузить busybox если можно загрузить полноценную систему?

Да элементарно. Железка может полностью работать автономно, а когда надо иногда ей или по желанию человека - монтирует сетевую fs. Кто вам сказал, что сетевая fs это только корень? Мир, знаете, весьма разнообразен.

С нормальным mount и всем остальным, от ping до bash.

Вот у меня там нормальные mount и ping (см. мой Changelog). А на dash я не только тоже умею, я начинал в 80-х на гораздо хужих по фичам sh-ах.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Что я там не в курсе?

В libreELEC’овский busybox года два назад NFSv4 добавили.

Да элементарно. Железка может полностью работать автономно

И почему она автономно не может работать с полноценной системой?

Вот у меня там нормальные mount и ping (см. мой Changelog). А на dash я не только тоже умею, я начинал в 80-х на гораздо хужих по фичам sh-ах.

И в чем тогда смысл такого busybox’а если он не будет на порядки меньше стандартных утилит?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

В libreELEC’овский busybox года два назад NFSv4 добавили.

Ну это не моя проблема, что кто-то там не в основную ветку добавил, это к ТС-у, я не бегаю и не ищу, а взял и добавил и уже больше чем 2 года назад.

И почему она автономно не может работать с полноценной системой?

Ну вот у меня дома может полноценные системы могут быть и не включены вовсе, а могут быть и включены. Видите разницу?

И в чем тогда смысл такого busybox’а если он не будет на порядки меньше стандартных утилит?

Я уже имел весьма неприятные разговоры с авторами его на эту тему, которым видители не понравилось, что мои порты полноценные. Где основная работа проводится к отключаемым фичам в самих апплетах и очень тяжелой работе с оптимизацией по объёму. Можете почитать maillist busybox-а. К таким апплетам относится, кстати, и dash, да, там мой копирайт стоит в busybox, если вы не в курсе.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Ну вот у меня дома может полноценные системы могут быть и не включены вовсе, а могут быть и включены. Видите разницу?

Разницу-то вижу, не понимаю нафига. Во всех девайсах с линуксом которые у меня есть и с которыми я имел дело более чем достаточно памяти, чтобы хватало места для полноценной системы. И единственная причина наличия busybox’а в роутерах - это мизерный объём SPI flash.

Я уже имел весьма неприятные разговоры с авторами его на эту тему, которым видители не понравилось, что мои порты полноценные. Где основная работа проводится к отключаемым фичам в самих апплетах и очень тяжелой работе с оптимизацией по объёму. Можете почитать maillist busybox-а. К таким апплетам относится, кстати, и dash, да, там мой копирайт стоит в busybox, если вы не в курсе.

Ну так в этом и есть смысл busybox’а - чтобы можно было ужать его настолько, чтобы вся система влезла в какие-нибудь сраные 4Mb флешки. А если грузиться по сети, как ТС - размер ограничен не флешкой, а RAM, которой даже в роутерах уже давно более чем достаточно чтобы полноценную базовую систему вместить.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ну так в этом и есть смысл busybox’а - чтобы можно было ужать его настолько, чтобы вся система влезла в какие-нибудь сраные 4Mb флешки.

На ядрах 2.2 у меня с работало куча рутеров в филиалах с ужатием до дискеты на 1.4Мб. Ну в самом деле, неужели непонятно, что это смешно, когда одному из авторов объясняют смысл его работы, за которую он взялся по нужной ему причине?

vodz ★★★★★
()
Ответ на: комментарий от vodz

На ядрах 2.2 у меня с работало куча рутеров в филиалах с ужатием до дискеты на 1.4Мб.

О том и речь - ТСу-то не надо это всё на дискету упихивать. Он же по сети машины грузит, лишний мегабайт на nfs-utils вообще ничего не изменит.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

О том и речь - ТСу-то не надо это всё на дискету упихивать.

Я тот тут причём? Вот с ним и спорьте. Мне надо - я сделал и не страдаю. Если вы не заметили, я даже ТСу и не предлагал, это был неизвестный анонимус, я его не просил.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Я тот тут причём?

Да не при чём в общем-то.

Вот с ним и спорьте.

С ним скучно.

Мне надо - я сделал и не страдаю.

А вот с такими людьми гораздо интереснее. :)

Stanson ★★★★★
()
Ответ на: комментарий от max_lapshin

Так что надо в настройках busybox просто отключить опцию монтирования NFS.

Неожиданно.

Точно помню, в каких-то доках явно было что busybox не умеет v4, и сомнений не возникало, ибо в коде есть #define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2) и if (nfsvers > MAX_NFSPROT || mountvers > MAX_NFSPROT) bb_error_msg("NFSv%d not supported", nfsvers);

Deleted
()
Ответ на: комментарий от Deleted

в busybox есть специальный код для старых ядер.

В свежих ядрах всё внутри, поэтому busybox ничего не знает об nfs4, nfs5,nfs6 и т.п.: он просто передает опции в ядро как есть.

Т.е. если выключить специальную обработку nfs из busybox, то всё заработает само собой.

max_lapshin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.