The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

pivot_root (2)
  • >> pivot_root (2) ( Русские man: Системные вызовы )
  • pivot_root (2) ( Linux man: Системные вызовы )
  • pivot_root (8) ( Linux man: Команды системного администрирования )
  •  

    НАЗВАНИЕ

    pivot_root - изменяет корневую файловую систему  

    СИНТАКСИС

    #include <linux/unistd.h>

    _syscall2(int,pivot_root,const char *,new_root,const char *,put_old)

    int pivot_root(const char *new_root, const char *put_old);  

    ОПИСАНИЕ

    pivot_root перемещает корневую систему текущего процесса в каталог put_old и устанавливает каталог new_root новой корневой файловой системы текущего процесса. pivot_root обычно используется при загрузке, когда система запускает временную файловую систему (например, initrd), а затем подключает настоящую корневую файловую систему, делая тем самым ее корневой для всех процессов и подпроцессов. pivot_root может изменить (или не изменить) текущие корневые и рабочие каталоги процессов или подпроцессов, использующих старый корневой каталог. Для запуска процесса, вызывающего pivot_root, Вы должны убедиться в том, что процессы, корневой или рабочий каталог которых являются старым корневым каталогом текущего процесса, работали нормально в каждом случае. Самый простой способ убедиться в этом - сменить их корневой и рабочий каталог на new_root до вызова pivot_root. Содержимое предыдущего абзаца, на самом деле, является не совсем определенным, потому что реализация pivot_root может измениться в будущем. На момент написания этого документа pivot_root изменяет корневой и рабочий каталоги каждого процесса или подпроцесса на new_root, если они указывают на старый корневой каталог. Это необходимо для того, чтобы подпроцессы ядра не занимали старый корневой каталог, даже если они вообще не обращались к файловым системам. В будущем, возможно, будет создан механизм, заставляющий подпроцессы ядра освобождать старый корневой каталог, что позволит удалить этот довольно навязчивый механизм из pivot_root. Заметьте, что все это относится и к текущему процессу pivot_root , который может изменить (а может и не изменить) его рабочий каталог. По этой причине рекомендуется вызывать chdir("/") сразу после вызова pivot_root. На new_root и put_old накладываются следующие ограничения:
    -
    Они должны быть каталогами.
    -
    new_root и put_old не могут быть в одной файловой системе с текущим корневым каталогом.
    -
    put_old должен быть в дереве каталогов new_root, т.е., путем добавления положительного количества /.. к put_old можно получить каталог, равный new_root.
    -
    К put_old не должны быть подключены файловые системы.

    См. также страницу pivot_root(8), в которой приведены дополнительные примеры. Если текущий корневой каталог не является точкой подключения файловой системы (например, после chroot(2) илиpivot_root, см. ниже), то к put_old подключается не старый корневой каталог, а точка подключения его файловой системы.  

    ЗАМЕЧАНИЯ

    new_root может и не быть точкой подключения файловой системы. В этом случае в /proc/mounts будет указана точка подключения файловой системы, содержащей новый корневой каталог new_root (/).  

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    При удачном завершении вызова возвращаемое значение равно нулю. При ошибке оно равно -1, а переменной errno присваивается номер ошибки.  

    НАЙДЕННЫЕ ОШИБКИ

    pivot_root может возвращать (в errno) любые коды ошибок, как и stat(2). К тому же, pivot_root может возвращать:
    EBUSY
    new_root или put_old находятся в текущей корневой файловой системе, или какая-то файловая система уже подключена к put_old.
    EINVAL
    put_old не находится в дереве каталогов new_root.
    ENOTDIR
    new_root или put_old не являются каталогами.
    EPERM
    Текущий процесс не имеет прав суперпользователя.
     

    НАЙДЕННЫЕ ОШИБКИ

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

    СООТВЕТСТВИЕ СТАНДАРТАМ

    pivot_root - это функция, специфичная для Linux. Не рекомендуется использовать ее в программах, портируемых на другие системы.  

    ПРИМЕЧАНИЯ ПО ИСТОРИИ

    pivot_root был впервые реализован в ядре Linux версии 2.3.41.  

    СМ. ТАКЖЕ

    chdir(2), chroot(2), initrd(4), pivot_root(8), stat(2)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ЗАМЕЧАНИЯ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    ПРИМЕЧАНИЯ ПО ИСТОРИИ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру