[devel] [Fwd: [(nowhere)] fopen() calls __open]
Anton Farygin
=?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Пт Май 12 23:56:52 MSD 2006
Alexander Bokovoy wrote:
> Anton Farygin пишет:
>> Alexander Bokovoy wrote:
>>> Интересная дискуссия по поводу того, как делать "перекрытия"
>>> файловых операций для glibc. В свете ближнего и среднего будущего о
>>> smbsh и аналогах, похоже, придется забыть. Все же,
>>> autofs/automount более грамотный подход.
>> Вообще очень странно, что они не смогли перекрыть fopen(), ибо в
>> fakechroot (лежит в Sisyphus) fopen() и fopen64() прекрасно
>> перекрываются.
>>
>> Другой вопрос, что это перекрытие естественно не работает для
>> статически слинкованных приложений.
>>
>> А во всём остальном - всё прекрасно. перекрываются все операции с
>> файлами.
> Ты невнимателен. Невозможно перекрыть вызовы внутри glibc. Чтобы
> "закрыть все", необходимо перекрывать все высокоуровневые и
> низкоуровневые операции, а не только одну из этих групп. Очевидно, что
> fakechroot это делает, но тут я сомневаюсь, что он делает это полностью
> -- попользовав его в scratchbox-е, я увидел некоторое количество
> странностей в поведении.
Странностей там хоть отбавляй.
Кстати, если ты последний раз смотрел его достаточно давно - попробуй
ещё раз. Я в течении последнего года добавил в него некоторое количество
не перекрытых ранее операций.
>
> Понятно, что компилятор, make и аналогичные программы используют
> относительно несложные шаблоны файловых операций, а вот реальные
> приложения могут цеплять и более тяжелые случаи и тогда начнутся
> проблемы. Я пытался гонять под fakechroot ту же Самбу (в qemu-arm), она
> даже не поднялась, в то время как на реальном устройстве все было чудесно.
>
Да, это известно - в этом случае конечно надо выяснять кто именно
остаётся не перекрытый и перекрывать его в том числе.
собственно именно таким образом он и разрабатывался.
Кстати, в debian fackechroot полностью переписали, может быть список
перекрытых операций там более полон. Но в любом случае - это всё
выглядит как закат солнца вручную... перекрывать из userspace это не
получится.. а вот если бы кто-то сделал fakechroot на уровне ядра.. это
было бы интересно. Но в твоём случае это скорее всего не поможет.
Rgds,
Rider
Подробная информация о списке рассылки Devel