Manpages

이 름

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는 현 재 루 트 와 모 든 프 로 세 스 나 쓰 레 드 의 현 재 작 업 중 인 디 렉 토 리 (cwd)를 변 화 시 키 나 그 렇 지 않 을 수 도 있 다 . pivot_root의 caller는 루 트 나 cwd의 프 로 세 스 를 확 인 해 야 만 한 다 . 확 인 의 쉬 운 방 법 은 pivot_root 이 실 행 되 기 전 에 new_root로 루 트 , cwd를 바 꾸 는 것 이 다 .

이 것 은 또 한 현 재 프 로 세 스 에 적 용 한 다 는 것 을 주 지 한 다 :pivot_root는 cwd에 영 향 을 받 을 수 도 있 고 그 렇 지 않 을 수 도 있 다 . 그 러 므 로 그 것 은 pivot_root후 에 즉 시 chdir("/") 호 출 을 명 령 한 다 .

다 음 의 제 한 은 new_rootput_old를 적 용 한 다 :

디 렉 토 리 여 만 한 다 .

new_rootput_old는 현 재 루 트 와 같 은 파 일 시 스 템 이 아 니 어 야 한 다 .

put_oldnew_root 아 래 이 어 야 만 한 다 .

어 떠 한 다 른 파 일 시 스 템 도 put_old에 마 운 트 되 지 않 았 을 런 지 모 른 댜 .

추 가 사 용 예 제 를 위 해 pivot_root(8)를 본 다 .

주 의

new_root는 마 운 트 포 인 트 가 되 지 않 아 야 한 다 .

반 환 값

성 공 시 , 0이 반 환 된 다 . 실 패 시 ,−1이 반 환 되 고 errno는 적 절 히 설 정 된 다 .

에 러

pivot_rootstat(2)에 의 해 반 환 된 에 러 의 대 부 분 을 반 환 할 런 지 모 른 다 . 추 가 적 으 로 , 아 래 의 사 항 이 반 환 될 런 지 도 모 른 다 :

EBUSY

new_rootput_old는 현 재 루 트 파 일 시 스 템 에 있 거 나 파 일 시 스 템 이 이 미 put_old에 마 운 트 되 었 다 .

EINVAL

put_oldnew_root밑 에 없 다 .

ENOTDIR

new_rootput_old가 디 렉 토 리 가 아 니 다 .

EPERM

현 재 프 로 세 스 가 관 리 자 기 능 이 없 다 .

버 그

pivot_root는 시 스 템 의 모 든 다 른 프 로 세 스 들 의 루 트 와 cwd를 바 꾸 지 않 아 야 만 했 다 .

호 환

pivot_root는 리 눅 스 에 서 만 쓰 이 므 로 이 식 될 수 없 다 .

역 사

pivot_root는 리 눅 스 2.3.41에 서 소 개 되 었 다 .

관 련 항 목

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

역 자

ASPLINUX<man [AT] asp-linux.kr>, 2000년 7월 26